htmlgraph 0.24.2__tar.gz → 0.26.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.
Files changed (429) hide show
  1. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/PKG-INFO +91 -64
  2. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/README.md +85 -63
  3. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/gemini-extension.json +1 -1
  4. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/pyproject.toml +17 -1
  5. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/__init__.py +20 -1
  6. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/agent_detection.py +26 -10
  7. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/analytics/cross_session.py +4 -3
  8. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/analytics/work_type.py +52 -16
  9. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/analytics_index.py +51 -19
  10. htmlgraph-0.26.1/src/python/htmlgraph/api/__init__.py +3 -0
  11. htmlgraph-0.26.1/src/python/htmlgraph/api/main.py +2263 -0
  12. htmlgraph-0.26.1/src/python/htmlgraph/api/static/htmx.min.js +1 -0
  13. htmlgraph-0.26.1/src/python/htmlgraph/api/static/style-redesign.css +1344 -0
  14. htmlgraph-0.26.1/src/python/htmlgraph/api/static/style.css +1079 -0
  15. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/dashboard-redesign.html +812 -0
  16. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/dashboard.html +794 -0
  17. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/activity-feed-hierarchical.html +326 -0
  18. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/activity-feed.html +1020 -0
  19. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/agents-redesign.html +317 -0
  20. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/agents.html +317 -0
  21. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/event-traces.html +373 -0
  22. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/features-kanban-redesign.html +509 -0
  23. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/features.html +509 -0
  24. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/metrics-redesign.html +346 -0
  25. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/metrics.html +346 -0
  26. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/orchestration-redesign.html +443 -0
  27. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/orchestration.html +163 -0
  28. htmlgraph-0.26.1/src/python/htmlgraph/api/templates/partials/spawners.html +375 -0
  29. htmlgraph-0.26.1/src/python/htmlgraph/atomic_ops.py +560 -0
  30. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/base.py +55 -1
  31. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/bug.py +17 -2
  32. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/chore.py +17 -2
  33. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/epic.py +17 -2
  34. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/feature.py +25 -2
  35. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/phase.py +17 -2
  36. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/spike.py +27 -2
  37. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/track.py +14 -0
  38. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/__init__.py +4 -0
  39. htmlgraph-0.26.1/src/python/htmlgraph/cigs/reporter.py +818 -0
  40. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cli.py +1427 -401
  41. htmlgraph-0.26.1/src/python/htmlgraph/cli_commands/__init__.py +1 -0
  42. htmlgraph-0.26.1/src/python/htmlgraph/cli_commands/feature.py +195 -0
  43. htmlgraph-0.26.1/src/python/htmlgraph/cli_framework.py +115 -0
  44. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/__init__.py +2 -0
  45. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/base.py +21 -0
  46. htmlgraph-0.26.1/src/python/htmlgraph/collections/session.py +189 -0
  47. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/spike.py +7 -1
  48. htmlgraph-0.26.1/src/python/htmlgraph/collections/task_delegation.py +236 -0
  49. htmlgraph-0.26.1/src/python/htmlgraph/collections/traces.py +482 -0
  50. htmlgraph-0.26.1/src/python/htmlgraph/config.py +113 -0
  51. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/converter.py +41 -0
  52. htmlgraph-0.26.1/src/python/htmlgraph/cost_analysis/__init__.py +5 -0
  53. htmlgraph-0.26.1/src/python/htmlgraph/cost_analysis/analyzer.py +438 -0
  54. htmlgraph-0.26.1/src/python/htmlgraph/dashboard.html +7458 -0
  55. htmlgraph-0.24.2/src/python/htmlgraph/dashboard.html → htmlgraph-0.26.1/src/python/htmlgraph/dashboard.html.backup +2246 -248
  56. htmlgraph-0.26.1/src/python/htmlgraph/dashboard.html.bak +7181 -0
  57. htmlgraph-0.26.1/src/python/htmlgraph/dashboard.html.bak2 +7231 -0
  58. htmlgraph-0.26.1/src/python/htmlgraph/dashboard.html.bak3 +7232 -0
  59. htmlgraph-0.26.1/src/python/htmlgraph/db/__init__.py +38 -0
  60. htmlgraph-0.26.1/src/python/htmlgraph/db/queries.py +790 -0
  61. htmlgraph-0.26.1/src/python/htmlgraph/db/schema.py +1584 -0
  62. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/deploy.py +26 -27
  63. htmlgraph-0.26.1/src/python/htmlgraph/docs/API_REFERENCE.md +841 -0
  64. htmlgraph-0.26.1/src/python/htmlgraph/docs/HTTP_API.md +750 -0
  65. htmlgraph-0.26.1/src/python/htmlgraph/docs/INTEGRATION_GUIDE.md +752 -0
  66. htmlgraph-0.26.1/src/python/htmlgraph/docs/ORCHESTRATION_PATTERNS.md +710 -0
  67. htmlgraph-0.26.1/src/python/htmlgraph/docs/README.md +533 -0
  68. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/version_check.py +3 -1
  69. htmlgraph-0.26.1/src/python/htmlgraph/error_handler.py +544 -0
  70. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/event_log.py +2 -0
  71. htmlgraph-0.26.1/src/python/htmlgraph/hooks/.htmlgraph/.session-warning-state.json +6 -0
  72. htmlgraph-0.26.1/src/python/htmlgraph/hooks/.htmlgraph/agents.json +72 -0
  73. htmlgraph-0.26.1/src/python/htmlgraph/hooks/.htmlgraph/index.sqlite +0 -0
  74. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/__init__.py +8 -0
  75. htmlgraph-0.26.1/src/python/htmlgraph/hooks/bootstrap.py +169 -0
  76. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/cigs_pretool_enforcer.py +2 -2
  77. htmlgraph-0.26.1/src/python/htmlgraph/hooks/concurrent_sessions.py +208 -0
  78. htmlgraph-0.26.1/src/python/htmlgraph/hooks/context.py +318 -0
  79. htmlgraph-0.26.1/src/python/htmlgraph/hooks/drift_handler.py +525 -0
  80. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/event_tracker.py +496 -79
  81. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/orchestrator.py +6 -4
  82. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/orchestrator_reflector.py +4 -4
  83. htmlgraph-0.26.1/src/python/htmlgraph/hooks/post_tool_use_handler.py +257 -0
  84. htmlgraph-0.26.1/src/python/htmlgraph/hooks/pretooluse.py +766 -0
  85. htmlgraph-0.26.1/src/python/htmlgraph/hooks/prompt_analyzer.py +637 -0
  86. htmlgraph-0.26.1/src/python/htmlgraph/hooks/session_handler.py +637 -0
  87. htmlgraph-0.26.1/src/python/htmlgraph/hooks/state_manager.py +504 -0
  88. htmlgraph-0.26.1/src/python/htmlgraph/hooks/subagent_stop.py +309 -0
  89. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/task_enforcer.py +39 -0
  90. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/validator.py +15 -11
  91. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/models.py +111 -15
  92. htmlgraph-0.26.1/src/python/htmlgraph/operations/fastapi_server.py +230 -0
  93. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestration/headless_spawner.py +344 -29
  94. htmlgraph-0.26.1/src/python/htmlgraph/orchestration/live_events.py +377 -0
  95. htmlgraph-0.26.1/src/python/htmlgraph/pydantic_models.py +476 -0
  96. htmlgraph-0.26.1/src/python/htmlgraph/quality_gates.py +350 -0
  97. htmlgraph-0.26.1/src/python/htmlgraph/repo_hash.py +511 -0
  98. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/sdk.py +348 -10
  99. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/server.py +194 -0
  100. htmlgraph-0.26.1/src/python/htmlgraph/session_hooks.py +300 -0
  101. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/session_manager.py +131 -1
  102. htmlgraph-0.26.1/src/python/htmlgraph/session_registry.py +587 -0
  103. htmlgraph-0.26.1/src/python/htmlgraph/session_state.py +436 -0
  104. htmlgraph-0.26.1/src/python/htmlgraph/system_prompts.py +449 -0
  105. htmlgraph-0.26.1/src/python/htmlgraph/templates/orchestration-view.html +350 -0
  106. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/track_builder.py +19 -0
  107. htmlgraph-0.26.1/src/python/htmlgraph/validation.py +115 -0
  108. htmlgraph-0.26.1/tests/hooks/__init__.py +1 -0
  109. htmlgraph-0.26.1/tests/hooks/test_bootstrap.py +586 -0
  110. htmlgraph-0.26.1/tests/hooks/test_concurrent_sessions.py +758 -0
  111. htmlgraph-0.26.1/tests/hooks/test_context.py +490 -0
  112. htmlgraph-0.26.1/tests/hooks/test_event_tracker.py +1343 -0
  113. htmlgraph-0.26.1/tests/hooks/test_hybrid_event_capture.py +481 -0
  114. htmlgraph-0.26.1/tests/hooks/test_prompt_analyzer.py +1257 -0
  115. htmlgraph-0.26.1/tests/hooks/test_session_handler.py +1097 -0
  116. htmlgraph-0.26.1/tests/hooks/test_state_manager.py +1126 -0
  117. htmlgraph-0.26.1/tests/hooks/test_system_prompt_persistence.py +913 -0
  118. htmlgraph-0.26.1/tests/hooks/test_system_prompt_persistence_integration.py +758 -0
  119. htmlgraph-0.26.1/tests/integration/test_dashboard_spawner_display.py +505 -0
  120. htmlgraph-0.26.1/tests/integration/test_orchestrator_spawner_delegation.py +645 -0
  121. htmlgraph-0.26.1/tests/integration/test_post_compact_delegation.py +644 -0
  122. htmlgraph-0.26.1/tests/integration/test_spawner_integration.py +538 -0
  123. htmlgraph-0.26.1/tests/integration/test_spawner_observability_e2e.py +593 -0
  124. htmlgraph-0.26.1/tests/integration/test_spawner_tool_tracking.py +434 -0
  125. htmlgraph-0.26.1/tests/python/conftest.py +60 -0
  126. htmlgraph-0.26.1/tests/python/test_activity_feed_ui.py +356 -0
  127. htmlgraph-0.26.1/tests/python/test_agent_attribution.py +244 -0
  128. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_agent_detection.py +18 -7
  129. htmlgraph-0.26.1/tests/python/test_atomic_ops.py +599 -0
  130. htmlgraph-0.26.1/tests/python/test_cli_pydantic_models.py +361 -0
  131. htmlgraph-0.26.1/tests/python/test_cli_rich_output.py +463 -0
  132. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_collection_filter.py +47 -26
  133. htmlgraph-0.26.1/tests/python/test_cost_analyzer.py +761 -0
  134. htmlgraph-0.26.1/tests/python/test_dashboard_attribution.py +597 -0
  135. htmlgraph-0.26.1/tests/python/test_delegation_fk_fix.py +256 -0
  136. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_delete.py +19 -5
  137. htmlgraph-0.26.1/tests/python/test_error_handling.py +215 -0
  138. htmlgraph-0.26.1/tests/python/test_event_tracing.py +673 -0
  139. htmlgraph-0.26.1/tests/python/test_feature_track_linkage_phase1.py +376 -0
  140. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_handoff.py +4 -0
  141. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_lifecycle.py +2 -1
  142. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_orchestration.py +8 -4
  143. htmlgraph-0.26.1/tests/python/test_parent_child_event_linking.py +367 -0
  144. htmlgraph-0.26.1/tests/python/test_parent_child_linking.py +287 -0
  145. htmlgraph-0.26.1/tests/python/test_parent_linking_integration.py +322 -0
  146. htmlgraph-0.26.1/tests/python/test_post_tool_use_handler.py +273 -0
  147. htmlgraph-0.26.1/tests/python/test_pre_commit_hooks.py +333 -0
  148. htmlgraph-0.26.1/tests/python/test_quality_gates.py +432 -0
  149. htmlgraph-0.26.1/tests/python/test_repo_hash.py +647 -0
  150. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_sdk_get_active_work_item.py +10 -2
  151. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_sdk_parent_session.py +9 -5
  152. htmlgraph-0.26.1/tests/python/test_sdk_sqlite_integration.py +347 -0
  153. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_session_continuity.py +30 -11
  154. htmlgraph-0.26.1/tests/python/test_session_integration.py +667 -0
  155. htmlgraph-0.26.1/tests/python/test_session_registry.py +662 -0
  156. htmlgraph-0.26.1/tests/python/test_session_state_manager.py +337 -0
  157. htmlgraph-0.26.1/tests/python/test_spawner_agents.py +558 -0
  158. htmlgraph-0.26.1/tests/python/test_spawner_routing.py +482 -0
  159. htmlgraph-0.26.1/tests/python/test_sqlite_schema.py +596 -0
  160. htmlgraph-0.26.1/tests/python/test_traces_collection.py +499 -0
  161. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_transcript_linking.py +7 -4
  162. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_work_queue.py +12 -3
  163. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_cigs_cli.py +2 -2
  164. htmlgraph-0.26.1/tests/test_cigs_cost_reporter.py +607 -0
  165. htmlgraph-0.26.1/tests/test_hybrid_event_capture.py +710 -0
  166. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_sdk_api_surface.py +9 -2
  167. htmlgraph-0.24.2/src/python/htmlgraph/hooks/pretooluse.py +0 -299
  168. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/.gitignore +0 -0
  169. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/agent-coordination/README.md +0 -0
  170. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/agent-coordination/demo.py +0 -0
  171. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/create_auth_track_demo.py +0 -0
  172. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/create_htmlgraph_dev_track.py +0 -0
  173. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/README.md +0 -0
  174. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/agents.json +0 -0
  175. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/demo.py +0 -0
  176. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-api-graph.html +0 -0
  177. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-api-overview.html +0 -0
  178. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-api-sdk.html +0 -0
  179. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-example-advanced.html +0 -0
  180. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-example-basic.html +0 -0
  181. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-index.html +0 -0
  182. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-installation.html +0 -0
  183. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/documentation-site/features/doc-quickstart.html +0 -0
  184. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/handoff-demo.py +0 -0
  185. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/README.md +0 -0
  186. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/agents.json +0 -0
  187. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/demo.py +0 -0
  188. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/features/feat-276c615f.html +0 -0
  189. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/features/feat-7a6f797d.html +0 -0
  190. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/features/note-ai-agents.html +0 -0
  191. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/features/note-graph-db.html +0 -0
  192. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/features/note-htmlgraph.html +0 -0
  193. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/knowledge-base/features/note-web-standards.html +0 -0
  194. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/parallel_task_coordination.py +0 -0
  195. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/routing-demo.py +0 -0
  196. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/sdk_demo.py +0 -0
  197. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/README.md +0 -0
  198. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/demo.py +0 -0
  199. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/index.html +0 -0
  200. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/styles.css +0 -0
  201. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/task-001.html +0 -0
  202. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/task-002.html +0 -0
  203. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/task-003.html +0 -0
  204. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/task-004.html +0 -0
  205. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/task-005.html +0 -0
  206. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/examples/todo-list/task-006.html +0 -0
  207. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/GEMINI.md +0 -0
  208. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/README.md +0 -0
  209. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_deploy.md +0 -0
  210. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_end.md +0 -0
  211. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_feature-add.md +0 -0
  212. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_feature-complete.md +0 -0
  213. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_feature-primary.md +0 -0
  214. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_feature-start.md +0 -0
  215. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_git-commit.md +0 -0
  216. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_help.md +0 -0
  217. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_init.md +0 -0
  218. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_plan.md +0 -0
  219. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_recommend.md +0 -0
  220. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_serve.md +0 -0
  221. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_spike.md +0 -0
  222. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_start.md +0 -0
  223. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_status.md +0 -0
  224. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/command_track.md +0 -0
  225. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/hooks/hooks.json +0 -0
  226. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/hooks/scripts/post-tool.sh +0 -0
  227. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/hooks/scripts/session-end.sh +0 -0
  228. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/packages/gemini-extension/hooks/scripts/session-start.sh +0 -0
  229. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/js/htmlgraph.js +0 -0
  230. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/agent_registry.py +0 -0
  231. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/agents.py +0 -0
  232. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/analytics/__init__.py +0 -0
  233. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/analytics/cli.py +0 -0
  234. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/analytics/dependency.py +0 -0
  235. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/archive/__init__.py +0 -0
  236. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/archive/bloom.py +0 -0
  237. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/archive/fts.py +0 -0
  238. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/archive/manager.py +0 -0
  239. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/archive/search.py +0 -0
  240. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/attribute_index.py +0 -0
  241. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/__init__.py +0 -0
  242. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/insight.py +0 -0
  243. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/metric.py +0 -0
  244. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/builders/pattern.py +0 -0
  245. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/autonomy.py +0 -0
  246. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/cost.py +0 -0
  247. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/messages_basic.py +0 -0
  248. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/messaging.py +0 -0
  249. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/models.py +0 -0
  250. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/pattern_storage.py +0 -0
  251. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/patterns.py +0 -0
  252. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/posttool_analyzer.py +0 -0
  253. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/cigs/tracker.py +0 -0
  254. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/bug.py +0 -0
  255. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/chore.py +0 -0
  256. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/epic.py +0 -0
  257. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/feature.py +0 -0
  258. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/insight.py +0 -0
  259. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/metric.py +0 -0
  260. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/pattern.py +0 -0
  261. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/phase.py +0 -0
  262. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/collections/todo.py +0 -0
  263. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/context_analytics.py +0 -0
  264. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/dependency_models.py +0 -0
  265. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/deployment_models.py +0 -0
  266. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/__init__.py +0 -0
  267. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/docs_version.py +0 -0
  268. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/metadata.py +0 -0
  269. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/migrations.py +0 -0
  270. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/template_engine.py +0 -0
  271. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/templates/_sections/cli_reference.md.j2 +0 -0
  272. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/templates/_sections/core_concepts.md.j2 +0 -0
  273. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/templates/_sections/sdk_basics.md.j2 +0 -0
  274. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/templates/base_agents.md.j2 +0 -0
  275. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/docs/templates/example_user_override.md.j2 +0 -0
  276. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/edge_index.py +0 -0
  277. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/event_migration.py +0 -0
  278. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/exceptions.py +0 -0
  279. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/extensions/gemini/GEMINI.md +0 -0
  280. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/extensions/gemini/README.md +0 -0
  281. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/extensions/gemini/gemini-extension.json +0 -0
  282. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/extensions/gemini/hooks/hooks.json +0 -0
  283. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/extensions/gemini/hooks/scripts/post-tool.sh +0 -0
  284. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-end.sh +0 -0
  285. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-start.sh +0 -0
  286. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/file_watcher.py +0 -0
  287. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/find_api.py +0 -0
  288. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/git_events.py +0 -0
  289. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/graph.py +0 -0
  290. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/hooks-config.example.json +0 -0
  291. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/installer.py +0 -0
  292. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/post-checkout.sh +0 -0
  293. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/post-commit.sh +0 -0
  294. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/post-merge.sh +0 -0
  295. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/post_tool_use_failure.py +0 -0
  296. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/posttooluse.py +0 -0
  297. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/pre-commit.sh +0 -0
  298. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/pre-push.sh +0 -0
  299. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/hooks/task_validator.py +0 -0
  300. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/ids.py +0 -0
  301. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/index.d.ts +0 -0
  302. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/learning.py +0 -0
  303. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/mcp_server.py +0 -0
  304. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/operations/README.md +0 -0
  305. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/operations/__init__.py +0 -0
  306. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/operations/analytics.py +0 -0
  307. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/operations/events.py +0 -0
  308. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/operations/hooks.py +0 -0
  309. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/operations/server.py +0 -0
  310. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestration/__init__.py +0 -0
  311. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestration/model_selection.py +0 -0
  312. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestration/task_coordination.py +0 -0
  313. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +0 -0
  314. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestrator.py +0 -0
  315. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestrator_mode.py +0 -0
  316. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/orchestrator_validator.py +0 -0
  317. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/parallel.py +0 -0
  318. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/parser.py +0 -0
  319. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/planning.py +0 -0
  320. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/query_builder.py +0 -0
  321. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/reflection.py +0 -0
  322. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/routing.py +0 -0
  323. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/scripts/__init__.py +0 -0
  324. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/scripts/deploy.py +0 -0
  325. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/services/__init__.py +0 -0
  326. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/services/claiming.py +0 -0
  327. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/session_warning.py +0 -0
  328. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/setup.py +0 -0
  329. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/spike_index.py +0 -0
  330. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/styles.css +0 -0
  331. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/sync_docs.py +0 -0
  332. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/templates/AGENTS.md.template +0 -0
  333. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/templates/CLAUDE.md.template +0 -0
  334. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/templates/GEMINI.md.template +0 -0
  335. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/track_manager.py +0 -0
  336. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/transcript.py +0 -0
  337. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/transcript_analytics.py +0 -0
  338. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/types.py +0 -0
  339. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/watch.py +0 -0
  340. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/src/python/htmlgraph/work_type_utils.py +0 -0
  341. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/benchmarks/README.md +0 -0
  342. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/benchmarks/__init__.py +0 -0
  343. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/benchmarks/bench_graph.py +0 -0
  344. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/benchmarks/conftest.py +0 -0
  345. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/multi_agent/README.md +0 -0
  346. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/multi_agent/__init__.py +0 -0
  347. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/multi_agent/test_agent_quirks.py +0 -0
  348. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/multi_agent/test_git_continuity_spine.py +0 -0
  349. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/test_cigs_hook_flow.py +0 -0
  350. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/test_cigs_integration.py +0 -0
  351. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/test_cigs_learning.py +0 -0
  352. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/test_deployment_workflow.py +0 -0
  353. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/test_handoff_routing.py +0 -0
  354. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/integration/test_multi_agent_coordination.py +0 -0
  355. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/js/README.md +0 -0
  356. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/js/test_htmlgraph.html +0 -0
  357. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/operations/__init__.py +0 -0
  358. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/operations/test_hooks.py +0 -0
  359. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/operations/test_server.py +0 -0
  360. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/__init__.py +0 -0
  361. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_analytics.py +0 -0
  362. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_archive_manager.py +0 -0
  363. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_archive_search.py +0 -0
  364. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_auto_spike.py +0 -0
  365. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_cigs_pretool_enforcer.py +0 -0
  366. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_claiming.py +0 -0
  367. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_cli_commands.py +0 -0
  368. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_cross_agent_attribution.py +0 -0
  369. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_cross_session_analytics.py +0 -0
  370. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_dashboard_ui.py +0 -0
  371. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_deploy.py +0 -0
  372. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_drift_parent_activity.py +0 -0
  373. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_drift_queue_cleanup.py +0 -0
  374. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_edge_index.py +0 -0
  375. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_event_index.py +0 -0
  376. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_event_query.py +0 -0
  377. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_find_api.py +0 -0
  378. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_git_events.py +0 -0
  379. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_graph_traversal.py +0 -0
  380. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_headless_spawner.py +0 -0
  381. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_headless_spawner_parent_session.py +0 -0
  382. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_ids.py +0 -0
  383. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_install_hooks.py +0 -0
  384. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_mcp_server.py +0 -0
  385. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_mcp_stdio_transport.py +0 -0
  386. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_models.py +0 -0
  387. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_orchestrator_circuit_breaker.py +0 -0
  388. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_orchestrator_cli.py +0 -0
  389. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_orchestrator_enforce_hook.py +0 -0
  390. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_orchestrator_mode.py +0 -0
  391. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_pattern_storage.py +0 -0
  392. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_plugin_update_preservation.py +0 -0
  393. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_post_tool_use_failure.py +0 -0
  394. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_posttooluse_cigs.py +0 -0
  395. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_pre_work_validation_integration.py +0 -0
  396. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_query_builder.py +0 -0
  397. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_query_cache.py +0 -0
  398. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_query_compilation.py +0 -0
  399. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_reflection.py +0 -0
  400. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_routing.py +0 -0
  401. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_sdk_discoverability.py +0 -0
  402. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_session_cleanup.py +0 -0
  403. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_session_start_cigs.py +0 -0
  404. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_session_start_info_validation.py +0 -0
  405. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_stop_cigs.py +0 -0
  406. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_system_overhead_drift.py +0 -0
  407. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_template_system.py +0 -0
  408. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_todo_collection.py +0 -0
  409. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_track_loading.py +0 -0
  410. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_update_preserves_incoming_edges.py +0 -0
  411. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_user_prompt_submit_cigs.py +0 -0
  412. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_validate_work_hook.py +0 -0
  413. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_version_migration.py +0 -0
  414. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_violation_tracker.py +0 -0
  415. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/python/test_work_type.py +0 -0
  416. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_agent_routing.py +0 -0
  417. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_autonomy_recommender.py +0 -0
  418. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_cigs_cost_calculator.py +0 -0
  419. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_cigs_imperative_messages.py +0 -0
  420. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_cigs_messages_basic.py +0 -0
  421. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_cli_output_snapshots.py +0 -0
  422. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_cli_sdk_parity.py +0 -0
  423. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_deployment_models.py +0 -0
  424. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_event_log.py +0 -0
  425. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_orchestrator_validator.py +0 -0
  426. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_pattern_detector.py +0 -0
  427. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_sdk_operations.py +0 -0
  428. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_transaction_snapshot.py +0 -0
  429. {htmlgraph-0.24.2 → htmlgraph-0.26.1}/tests/test_transcript.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: htmlgraph
3
- Version: 0.24.2
3
+ Version: 0.26.1
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
@@ -19,11 +19,14 @@ Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Topic :: Database
20
20
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
21
  Requires-Python: >=3.10
22
+ Requires-Dist: aiosqlite>=0.19.0
23
+ Requires-Dist: fastapi>=0.104.0
22
24
  Requires-Dist: jinja2>=3.1.0
23
25
  Requires-Dist: justhtml>=0.6.0
24
26
  Requires-Dist: pydantic>=2.0.0
25
27
  Requires-Dist: rich>=13.0.0
26
28
  Requires-Dist: typing-extensions>=4.0.0; python_version < '3.11'
29
+ Requires-Dist: uvicorn>=0.24.0
27
30
  Requires-Dist: watchdog>=3.0.0
28
31
  Provides-Extra: deploy
29
32
  Requires-Dist: invoke>=2.2.0; extra == 'deploy'
@@ -35,7 +38,9 @@ Requires-Dist: pdoc>=14.0.0; extra == 'dev'
35
38
  Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
36
39
  Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
37
40
  Requires-Dist: pytest>=7.0.0; extra == 'dev'
41
+ Requires-Dist: pyyaml>=6.0; extra == 'dev'
38
42
  Requires-Dist: ruff>=0.1.0; extra == 'dev'
43
+ Requires-Dist: tomli>=2.0.0; (python_version < '3.11') and extra == 'dev'
39
44
  Provides-Extra: sqlite
40
45
  Requires-Dist: aiosqlite>=0.19.0; extra == 'sqlite'
41
46
  Description-Content-Type: text/markdown
@@ -81,71 +86,47 @@ This bootstraps:
81
86
  - `.htmlgraph/index.sqlite` analytics cache (rebuildable; gitignored via `.gitignore`)
82
87
  - versioned hook scripts under `.htmlgraph/hooks/` (installed into `.git/hooks/` with `--install-hooks`)
83
88
 
84
- ### Python
89
+ ### Python (SDK - Recommended)
85
90
 
86
91
  ```python
87
- from htmlgraph import HtmlGraph, Node, Edge, Step
88
-
89
- # Initialize graph from directory
90
- graph = HtmlGraph("features/")
91
-
92
- # Create a node
93
- node = Node(
94
- id="feature-001",
95
- title="User Authentication",
96
- type="feature",
97
- status="in-progress",
98
- priority="high",
99
- steps=[
100
- Step(description="Create auth routes"),
101
- Step(description="Add middleware"),
102
- Step(description="Implement OAuth"),
103
- ],
104
- edges={
105
- "blocked_by": [Edge(target_id="feature-002", title="Database Schema")]
106
- }
107
- )
108
-
109
- # Add to graph (creates HTML file)
110
- graph.add(node)
111
-
112
- # Query with CSS selectors
113
- blocked = graph.query("[data-status='blocked']")
114
- high_priority = graph.query("[data-priority='high']")
115
-
116
- # Graph traversal
117
- path = graph.shortest_path("feature-001", "feature-010")
118
- deps = graph.transitive_deps("feature-001")
119
- bottlenecks = graph.find_bottlenecks()
120
-
121
- # Get lightweight context for AI agents (~50 tokens)
122
- print(node.to_context())
123
- # Output:
124
- # # feature-001: User Authentication
125
- # Status: in-progress | Priority: high
126
- # Progress: 0/3 steps (0%)
127
- # ⚠️ Blocked by: Database Schema
128
- # Next: Create auth routes
129
- ```
130
-
131
- ### Agent Interface
132
-
133
- ```python
134
- from htmlgraph.agents import AgentInterface
135
-
136
- agent = AgentInterface("features/", agent_id="claude")
137
-
138
- # Get next available task
139
- task = agent.get_next_task(priority="high")
140
-
141
- # Get lightweight context
142
- context = agent.get_context(task.id)
143
-
144
- # Update progress
145
- agent.complete_step(task.id, step_index=0)
146
-
147
- # Complete task
148
- agent.complete_task(task.id)
92
+ from htmlgraph import SDK
93
+
94
+ # Initialize (auto-discovers .htmlgraph directory)
95
+ sdk = SDK(agent="claude")
96
+
97
+ # Create and configure a feature with fluent API
98
+ feature = sdk.features.create("User Authentication") \
99
+ .set_priority("high") \
100
+ .set_description("Implement OAuth 2.0 login") \
101
+ .add_steps([
102
+ "Create login endpoint",
103
+ "Add JWT middleware",
104
+ "Write integration tests"
105
+ ]) \
106
+ .save()
107
+
108
+ print(f"Created: {feature.id}")
109
+
110
+ # Work on features
111
+ with sdk.features.edit(feature.id) as f:
112
+ f.status = "in-progress"
113
+ f.agent_assigned = "claude"
114
+ f.steps[0].completed = True
115
+
116
+ # Query features
117
+ high_priority_todos = sdk.features.where(status="todo", priority="high")
118
+ for feat in high_priority_todos:
119
+ print(f"- {feat.id}: {feat.title}")
120
+
121
+ # Create and configure a track with TrackBuilder
122
+ track = sdk.tracks.builder() \
123
+ .title("Q1 Security Initiative") \
124
+ .priority("high") \
125
+ .add_feature("feature-001") \
126
+ .add_feature("feature-002") \
127
+ .create()
128
+
129
+ print(f"Created track: {track.id}")
149
130
  ```
150
131
 
151
132
  ### HTML File Format
@@ -203,6 +184,43 @@ HtmlGraph nodes are standard HTML files:
203
184
  - **Deployment Automation** - One-command releases with version management
204
185
  - **Unified Backend** - Operations layer shared by CLI and SDK for consistency
205
186
 
187
+ ## Orchestrator Architecture: Flexible Multi-Agent Coordination
188
+
189
+ HtmlGraph implements an orchestrator pattern that coordinates multiple AI agents in parallel, preserving context efficiency while maintaining complete flexibility in model selection. Instead of rigid rules, the pattern uses **capability-first thinking** to choose the right tool (and model) for each task.
190
+
191
+ **Key Principles:**
192
+ - ✅ **Flexible model selection** - Any model can do any work; choose based on task fit and cost
193
+ - ✅ **Dynamic spawner composition** - Mix and match spawner types (Gemini, Copilot, Codex, Claude) within the same workflow
194
+ - ✅ **Cost optimization** - Use cheaper models for exploratory work, expensive models only for reasoning
195
+ - ✅ **Parallel execution** - Independent tasks run simultaneously, reducing total time
196
+
197
+ **Example: Parallel Exploration with Multiple Spawners**
198
+
199
+ ```python
200
+ # All run in parallel - each uses the best tool for the job
201
+ Task(subagent_type="gemini-spawner", # FREE exploration
202
+ prompt="Find all authentication patterns in src/auth/")
203
+
204
+ Task(subagent_type="copilot-spawner", # GitHub integration
205
+ prompt="Check GitHub issues related to auth",
206
+ allow_tools=["github(*)"])
207
+
208
+ Task(subagent_type="claude-spawner", # Deep reasoning
209
+ prompt="Analyze auth patterns for security issues")
210
+
211
+ # Orchestrator coordinates, subagents work in parallel
212
+ # Total time = slowest task (not sum of all)
213
+ # Cost = optimized (cheap exploration + expensive reasoning only)
214
+ ```
215
+
216
+ **Spawner Types:**
217
+ - **Gemini Spawner** - FREE exploratory research, batch analysis (2M tokens/min)
218
+ - **Copilot Spawner** - GitHub-integrated workflows, git operations
219
+ - **Codex Spawner** - Code generation, coding completions
220
+ - **Claude Spawner** - Deep reasoning, analysis, strategic planning (any Claude model)
221
+
222
+ → [Complete Orchestrator Architecture Guide](docs/orchestrator-architecture.md) - Detailed patterns, cost optimization, decision framework, and advanced examples
223
+
206
224
  ## Comparison
207
225
 
208
226
  | Feature | Neo4j | JSON | HtmlGraph |
@@ -257,6 +275,15 @@ uv run python
257
275
 
258
276
  MIT
259
277
 
278
+ ## System Prompt & Delegation Documentation
279
+
280
+ For Claude Code users and teams using HtmlGraph for AI agent coordination:
281
+
282
+ - **[System Prompt Quick Start](docs/SYSTEM_PROMPT_QUICK_START.md)** - Setup your system prompt in 5 minutes (start here!)
283
+ - **[System Prompt Architecture](docs/SYSTEM_PROMPT_ARCHITECTURE.md)** - Technical deep dive + troubleshooting
284
+ - **[Delegation Enforcement Admin Guide](docs/DELEGATION_ENFORCEMENT_ADMIN_GUIDE.md)** - Setup cost-optimal delegation for your team
285
+ - **[System Prompt Developer Guide](docs/SYSTEM_PROMPT_DEVELOPER_GUIDE.md)** - Extend with custom layers, hooks, and skills
286
+
260
287
  ## Links
261
288
 
262
289
  - [GitHub](https://github.com/Shakes-tzd/htmlgraph)
@@ -39,71 +39,47 @@ This bootstraps:
39
39
  - `.htmlgraph/index.sqlite` analytics cache (rebuildable; gitignored via `.gitignore`)
40
40
  - versioned hook scripts under `.htmlgraph/hooks/` (installed into `.git/hooks/` with `--install-hooks`)
41
41
 
42
- ### Python
42
+ ### Python (SDK - Recommended)
43
43
 
44
44
  ```python
45
- from htmlgraph import HtmlGraph, Node, Edge, Step
46
-
47
- # Initialize graph from directory
48
- graph = HtmlGraph("features/")
49
-
50
- # Create a node
51
- node = Node(
52
- id="feature-001",
53
- title="User Authentication",
54
- type="feature",
55
- status="in-progress",
56
- priority="high",
57
- steps=[
58
- Step(description="Create auth routes"),
59
- Step(description="Add middleware"),
60
- Step(description="Implement OAuth"),
61
- ],
62
- edges={
63
- "blocked_by": [Edge(target_id="feature-002", title="Database Schema")]
64
- }
65
- )
66
-
67
- # Add to graph (creates HTML file)
68
- graph.add(node)
69
-
70
- # Query with CSS selectors
71
- blocked = graph.query("[data-status='blocked']")
72
- high_priority = graph.query("[data-priority='high']")
73
-
74
- # Graph traversal
75
- path = graph.shortest_path("feature-001", "feature-010")
76
- deps = graph.transitive_deps("feature-001")
77
- bottlenecks = graph.find_bottlenecks()
78
-
79
- # Get lightweight context for AI agents (~50 tokens)
80
- print(node.to_context())
81
- # Output:
82
- # # feature-001: User Authentication
83
- # Status: in-progress | Priority: high
84
- # Progress: 0/3 steps (0%)
85
- # ⚠️ Blocked by: Database Schema
86
- # Next: Create auth routes
87
- ```
88
-
89
- ### Agent Interface
90
-
91
- ```python
92
- from htmlgraph.agents import AgentInterface
93
-
94
- agent = AgentInterface("features/", agent_id="claude")
95
-
96
- # Get next available task
97
- task = agent.get_next_task(priority="high")
98
-
99
- # Get lightweight context
100
- context = agent.get_context(task.id)
101
-
102
- # Update progress
103
- agent.complete_step(task.id, step_index=0)
104
-
105
- # Complete task
106
- agent.complete_task(task.id)
45
+ from htmlgraph import SDK
46
+
47
+ # Initialize (auto-discovers .htmlgraph directory)
48
+ sdk = SDK(agent="claude")
49
+
50
+ # Create and configure a feature with fluent API
51
+ feature = sdk.features.create("User Authentication") \
52
+ .set_priority("high") \
53
+ .set_description("Implement OAuth 2.0 login") \
54
+ .add_steps([
55
+ "Create login endpoint",
56
+ "Add JWT middleware",
57
+ "Write integration tests"
58
+ ]) \
59
+ .save()
60
+
61
+ print(f"Created: {feature.id}")
62
+
63
+ # Work on features
64
+ with sdk.features.edit(feature.id) as f:
65
+ f.status = "in-progress"
66
+ f.agent_assigned = "claude"
67
+ f.steps[0].completed = True
68
+
69
+ # Query features
70
+ high_priority_todos = sdk.features.where(status="todo", priority="high")
71
+ for feat in high_priority_todos:
72
+ print(f"- {feat.id}: {feat.title}")
73
+
74
+ # Create and configure a track with TrackBuilder
75
+ track = sdk.tracks.builder() \
76
+ .title("Q1 Security Initiative") \
77
+ .priority("high") \
78
+ .add_feature("feature-001") \
79
+ .add_feature("feature-002") \
80
+ .create()
81
+
82
+ print(f"Created track: {track.id}")
107
83
  ```
108
84
 
109
85
  ### HTML File Format
@@ -161,6 +137,43 @@ HtmlGraph nodes are standard HTML files:
161
137
  - **Deployment Automation** - One-command releases with version management
162
138
  - **Unified Backend** - Operations layer shared by CLI and SDK for consistency
163
139
 
140
+ ## Orchestrator Architecture: Flexible Multi-Agent Coordination
141
+
142
+ HtmlGraph implements an orchestrator pattern that coordinates multiple AI agents in parallel, preserving context efficiency while maintaining complete flexibility in model selection. Instead of rigid rules, the pattern uses **capability-first thinking** to choose the right tool (and model) for each task.
143
+
144
+ **Key Principles:**
145
+ - ✅ **Flexible model selection** - Any model can do any work; choose based on task fit and cost
146
+ - ✅ **Dynamic spawner composition** - Mix and match spawner types (Gemini, Copilot, Codex, Claude) within the same workflow
147
+ - ✅ **Cost optimization** - Use cheaper models for exploratory work, expensive models only for reasoning
148
+ - ✅ **Parallel execution** - Independent tasks run simultaneously, reducing total time
149
+
150
+ **Example: Parallel Exploration with Multiple Spawners**
151
+
152
+ ```python
153
+ # All run in parallel - each uses the best tool for the job
154
+ Task(subagent_type="gemini-spawner", # FREE exploration
155
+ prompt="Find all authentication patterns in src/auth/")
156
+
157
+ Task(subagent_type="copilot-spawner", # GitHub integration
158
+ prompt="Check GitHub issues related to auth",
159
+ allow_tools=["github(*)"])
160
+
161
+ Task(subagent_type="claude-spawner", # Deep reasoning
162
+ prompt="Analyze auth patterns for security issues")
163
+
164
+ # Orchestrator coordinates, subagents work in parallel
165
+ # Total time = slowest task (not sum of all)
166
+ # Cost = optimized (cheap exploration + expensive reasoning only)
167
+ ```
168
+
169
+ **Spawner Types:**
170
+ - **Gemini Spawner** - FREE exploratory research, batch analysis (2M tokens/min)
171
+ - **Copilot Spawner** - GitHub-integrated workflows, git operations
172
+ - **Codex Spawner** - Code generation, coding completions
173
+ - **Claude Spawner** - Deep reasoning, analysis, strategic planning (any Claude model)
174
+
175
+ → [Complete Orchestrator Architecture Guide](docs/orchestrator-architecture.md) - Detailed patterns, cost optimization, decision framework, and advanced examples
176
+
164
177
  ## Comparison
165
178
 
166
179
  | Feature | Neo4j | JSON | HtmlGraph |
@@ -215,6 +228,15 @@ uv run python
215
228
 
216
229
  MIT
217
230
 
231
+ ## System Prompt & Delegation Documentation
232
+
233
+ For Claude Code users and teams using HtmlGraph for AI agent coordination:
234
+
235
+ - **[System Prompt Quick Start](docs/SYSTEM_PROMPT_QUICK_START.md)** - Setup your system prompt in 5 minutes (start here!)
236
+ - **[System Prompt Architecture](docs/SYSTEM_PROMPT_ARCHITECTURE.md)** - Technical deep dive + troubleshooting
237
+ - **[Delegation Enforcement Admin Guide](docs/DELEGATION_ENFORCEMENT_ADMIN_GUIDE.md)** - Setup cost-optimal delegation for your team
238
+ - **[System Prompt Developer Guide](docs/SYSTEM_PROMPT_DEVELOPER_GUIDE.md)** - Extend with custom layers, hooks, and skills
239
+
218
240
  ## Links
219
241
 
220
242
  - [GitHub](https://github.com/Shakes-tzd/htmlgraph)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "htmlgraph",
3
- "version": "0.24.2",
3
+ "version": "0.26.1",
4
4
  "description": "HtmlGraph session tracking and documentation for Gemini CLI. Ensures proper activity attribution, feature awareness, and continuous work tracking.",
5
5
  "author": "Shakes",
6
6
  "license": "MIT",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "htmlgraph"
3
- version = "0.24.2"
3
+ version = "0.26.1"
4
4
  description = "HTML is All You Need - Graph database on web standards"
5
5
  authors = [{name = "Shakes", email = "shakestzd@gmail.com"}]
6
6
  readme = "README.md"
@@ -26,6 +26,9 @@ dependencies = [
26
26
  "rich>=13.0.0",
27
27
  "jinja2>=3.1.0",
28
28
  "typing_extensions>=4.0.0; python_version < '3.11'",
29
+ "fastapi>=0.104.0",
30
+ "uvicorn>=0.24.0",
31
+ "aiosqlite>=0.19.0",
29
32
  ]
30
33
 
31
34
  [project.optional-dependencies]
@@ -38,6 +41,8 @@ dev = [
38
41
  "ruff>=0.1.0",
39
42
  "invoke>=2.2.0",
40
43
  "pdoc>=14.0.0",
44
+ "tomli>=2.0.0; python_version < '3.11'",
45
+ "pyyaml>=6.0",
41
46
  ]
42
47
  sqlite = [
43
48
  "aiosqlite>=0.19.0",
@@ -105,8 +110,19 @@ python_version = "3.10"
105
110
  warn_return_any = true
106
111
  warn_unused_ignores = false # Disabled due to environment differences between local and CI
107
112
  disallow_untyped_defs = true
113
+ disallow_any_unimported = false # Allow untyped third-party libraries
108
114
  ignore_missing_imports = true
109
115
 
116
+ # Per-module options for strict checking
117
+ [[tool.mypy.overrides]]
118
+ module = "htmlgraph.collections.task_delegation"
119
+ disallow_untyped_defs = true
120
+ disallow_incomplete_defs = true
121
+
122
+ [[tool.mypy.overrides]]
123
+ module = "htmlgraph.server"
124
+ disallow_incomplete_defs = true
125
+
110
126
  [tool.pdoc]
111
127
  output-directory = "docs/api-pdoc"
112
128
  docformat = "google"
@@ -8,6 +8,14 @@ hyperlinks as edges, and CSS selectors as the query language.
8
8
  from htmlgraph.agent_detection import detect_agent_name, get_agent_display_name
9
9
  from htmlgraph.agents import AgentInterface
10
10
  from htmlgraph.analytics import Analytics, DependencyAnalytics
11
+ from htmlgraph.atomic_ops import (
12
+ AtomicFileWriter,
13
+ DirectoryLocker,
14
+ atomic_rename,
15
+ cleanup_orphaned_temp_files,
16
+ safe_temp_file,
17
+ validate_atomic_write,
18
+ )
11
19
  from htmlgraph.builders import BaseBuilder, FeatureBuilder, SpikeBuilder
12
20
  from htmlgraph.collections import BaseCollection, FeatureCollection, SpikeCollection
13
21
  from htmlgraph.context_analytics import ContextAnalytics, ContextUsage
@@ -56,9 +64,11 @@ from htmlgraph.orchestrator_mode import OrchestratorMode, OrchestratorModeManage
56
64
  from htmlgraph.parallel import AggregateResult, ParallelAnalysis, ParallelWorkflow
57
65
  from htmlgraph.query_builder import Condition, Operator, QueryBuilder
58
66
  from htmlgraph.reflection import ComputationalReflection, get_reflection_context
67
+ from htmlgraph.repo_hash import RepoHash
59
68
  from htmlgraph.sdk import SDK
60
69
  from htmlgraph.server import serve
61
70
  from htmlgraph.session_manager import SessionManager
71
+ from htmlgraph.session_registry import SessionRegistry
62
72
  from htmlgraph.types import (
63
73
  ActiveWorkItem,
64
74
  AggregateResultsDict,
@@ -85,7 +95,7 @@ from htmlgraph.types import (
85
95
  )
86
96
  from htmlgraph.work_type_utils import infer_work_type, infer_work_type_from_id
87
97
 
88
- __version__ = "0.24.2"
98
+ __version__ = "0.26.1"
89
99
  __all__ = [
90
100
  # Exceptions
91
101
  "HtmlGraphError",
@@ -123,6 +133,8 @@ __all__ = [
123
133
  "find_all",
124
134
  "AgentInterface",
125
135
  "SessionManager",
136
+ "SessionRegistry",
137
+ "RepoHash",
126
138
  "SDK",
127
139
  "Analytics", # Phase 2: Work Type Analytics
128
140
  "DependencyAnalytics", # Advanced dependency-aware analytics
@@ -190,4 +202,11 @@ __all__ = [
190
202
  "get_results_by_task_id",
191
203
  "parallel_delegate",
192
204
  "generate_task_id",
205
+ # Atomic file operations (Phase 1.3: Session File Tracking)
206
+ "AtomicFileWriter",
207
+ "DirectoryLocker",
208
+ "atomic_rename",
209
+ "cleanup_orphaned_temp_files",
210
+ "safe_temp_file",
211
+ "validate_atomic_write",
193
212
  ]
@@ -14,34 +14,48 @@ def detect_agent_name() -> str:
14
14
  Detect the current agent/interface name based on environment.
15
15
 
16
16
  Returns:
17
- Agent name (e.g., "claude", "gemini", "cli")
17
+ Agent name (e.g., "claude-code", "gemini", "cli")
18
18
 
19
19
  Detection order:
20
20
  1. HTMLGRAPH_AGENT environment variable (explicit override)
21
- 2. Claude Code detection (CLAUDE_CODE_VERSION, parent process)
22
- 3. Gemini detection (GEMINI environment markers)
23
- 4. Fall back to "cli"
21
+ 2. HTMLGRAPH_PARENT_AGENT (set by hooks for session context)
22
+ 3. Gemini detection (GEMINI environment markers) - checked before Claude to allow override
23
+ 4. Claude Code detection (CLAUDECODE env var, parent process)
24
+ 5. Fall back to "cli" only if no AI agent detected
24
25
  """
25
26
  # 1. Explicit override
26
27
  explicit = os.environ.get("HTMLGRAPH_AGENT")
27
28
  if explicit:
28
29
  return explicit.strip()
29
30
 
30
- # 2. Claude Code detection
31
- if _is_claude_code():
32
- return "claude"
31
+ # 2. Parent agent context (set by HtmlGraph hooks)
32
+ parent_agent = os.environ.get("HTMLGRAPH_PARENT_AGENT")
33
+ if parent_agent:
34
+ return parent_agent.strip()
33
35
 
34
- # 3. Gemini detection
36
+ # 3. Gemini detection (checked before Claude to allow explicit override)
35
37
  if _is_gemini():
36
38
  return "gemini"
37
39
 
38
- # 4. Default to CLI
40
+ # 4. Claude Code detection
41
+ if _is_claude_code():
42
+ return "claude-code"
43
+
44
+ # 5. Default to CLI only if no AI agent detected
39
45
  return "cli"
40
46
 
41
47
 
42
48
  def _is_claude_code() -> bool:
43
49
  """Check if running in Claude Code environment."""
44
50
  # Check for Claude Code environment variables
51
+ # CLAUDECODE=1 is set by Claude Code CLI
52
+ if os.environ.get("CLAUDECODE"):
53
+ return True
54
+
55
+ # CLAUDE_CODE_ENTRYPOINT indicates the entry point (cli, api, etc.)
56
+ if os.environ.get("CLAUDE_CODE_ENTRYPOINT"):
57
+ return True
58
+
45
59
  if os.environ.get("CLAUDE_CODE_VERSION"):
46
60
  return True
47
61
 
@@ -100,12 +114,14 @@ def get_agent_display_name(agent: str) -> str:
100
114
  """
101
115
  display_names = {
102
116
  "claude": "Claude",
103
- "claude-code": "Claude",
117
+ "claude-code": "Claude Code",
104
118
  "gemini": "Gemini",
105
119
  "cli": "CLI",
106
120
  "haiku": "Haiku",
107
121
  "opus": "Opus",
108
122
  "sonnet": "Sonnet",
123
+ "claude-opus-4-5-20251101": "Claude Opus 4.5",
124
+ "claude-sonnet-4-20250514": "Claude Sonnet 4",
109
125
  }
110
126
 
111
127
  return display_names.get(agent.lower(), agent.title())
@@ -51,6 +51,7 @@ if TYPE_CHECKING:
51
51
  from htmlgraph import SDK
52
52
 
53
53
  from htmlgraph.event_log import JsonlEventLog
54
+ from htmlgraph.models import utc_now
54
55
 
55
56
 
56
57
  @dataclass
@@ -598,7 +599,7 @@ class CrossSessionAnalytics:
598
599
  def _parse_timestamp(self, timestamp: str | datetime | None) -> datetime:
599
600
  """Parse timestamp from various formats."""
600
601
  if timestamp is None:
601
- return datetime.now()
602
+ return utc_now()
602
603
 
603
604
  if isinstance(timestamp, datetime):
604
605
  return timestamp
@@ -607,6 +608,6 @@ class CrossSessionAnalytics:
607
608
  try:
608
609
  return datetime.fromisoformat(timestamp.replace("Z", "+00:00"))
609
610
  except (ValueError, AttributeError):
610
- return datetime.now()
611
+ return utc_now()
611
612
 
612
- return datetime.now()
613
+ return utc_now()