htmlgraph 0.26.7__tar.gz → 0.26.8__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 (495) hide show
  1. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/PKG-INFO +1 -1
  2. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/gemini-extension.json +1 -1
  3. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/pyproject.toml +1 -1
  4. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/__init__.py +1 -1
  5. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/event_tracker.py +9 -0
  6. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_event_tracker.py +36 -14
  7. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_codex_spawner.py +17 -13
  8. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_copilot_spawner_tracking.py +58 -47
  9. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_gemini_spawner_diagnosis.py +2 -2
  10. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_pretooluse_event_hierarchy.py +115 -23
  11. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/.gitignore +0 -0
  12. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/README.md +0 -0
  13. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/agent-coordination/README.md +0 -0
  14. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/agent-coordination/demo.py +0 -0
  15. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/create_auth_track_demo.py +0 -0
  16. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/create_htmlgraph_dev_track.py +0 -0
  17. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/demo_agent_planning.py +0 -0
  18. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/demo_real_project_analytics.py +0 -0
  19. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/demo_sdk_operations.py +0 -0
  20. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/README.md +0 -0
  21. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/agents.json +0 -0
  22. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/demo.py +0 -0
  23. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-api-graph.html +0 -0
  24. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-api-overview.html +0 -0
  25. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-api-sdk.html +0 -0
  26. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-example-advanced.html +0 -0
  27. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-example-basic.html +0 -0
  28. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-index.html +0 -0
  29. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-installation.html +0 -0
  30. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/documentation-site/features/doc-quickstart.html +0 -0
  31. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/example_query_compilation.py +0 -0
  32. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/handoff-demo.py +0 -0
  33. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/README.md +0 -0
  34. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/agents.json +0 -0
  35. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/demo.py +0 -0
  36. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/features/feat-276c615f.html +0 -0
  37. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/features/feat-7a6f797d.html +0 -0
  38. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/features/note-ai-agents.html +0 -0
  39. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/features/note-graph-db.html +0 -0
  40. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/features/note-htmlgraph.html +0 -0
  41. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/knowledge-base/features/note-web-standards.html +0 -0
  42. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/parallel_task_coordination.py +0 -0
  43. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/routing-demo.py +0 -0
  44. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/sdk_demo.py +0 -0
  45. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/README.md +0 -0
  46. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/demo.py +0 -0
  47. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/index.html +0 -0
  48. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/styles.css +0 -0
  49. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/task-001.html +0 -0
  50. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/task-002.html +0 -0
  51. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/task-003.html +0 -0
  52. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/task-004.html +0 -0
  53. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/task-005.html +0 -0
  54. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/examples/todo-list/task-006.html +0 -0
  55. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/GEMINI.md +0 -0
  56. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/README.md +0 -0
  57. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_deploy.md +0 -0
  58. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_end.md +0 -0
  59. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_feature-add.md +0 -0
  60. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_feature-complete.md +0 -0
  61. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_feature-primary.md +0 -0
  62. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_feature-start.md +0 -0
  63. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_git-commit.md +0 -0
  64. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_help.md +0 -0
  65. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_init.md +0 -0
  66. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_plan.md +0 -0
  67. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_recommend.md +0 -0
  68. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_serve.md +0 -0
  69. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_spike.md +0 -0
  70. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_start.md +0 -0
  71. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_status.md +0 -0
  72. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/command_track.md +0 -0
  73. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/hooks/hooks.json +0 -0
  74. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/hooks/scripts/post-tool.sh +0 -0
  75. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/hooks/scripts/session-end.sh +0 -0
  76. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/packages/gemini-extension/hooks/scripts/session-start.sh +0 -0
  77. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/js/htmlgraph.js +0 -0
  78. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/.htmlgraph/.session-warning-state.json +0 -0
  79. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/.htmlgraph/agents.json +0 -0
  80. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/.htmlgraph/htmlgraph.db +0 -0
  81. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/agent_detection.py +0 -0
  82. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/agent_registry.py +0 -0
  83. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/agents.py +0 -0
  84. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/analytics/__init__.py +0 -0
  85. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/analytics/cli.py +0 -0
  86. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/analytics/cross_session.py +0 -0
  87. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/analytics/dependency.py +0 -0
  88. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/analytics/work_type.py +0 -0
  89. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/analytics_index.py +0 -0
  90. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/__init__.py +0 -0
  91. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/main.py +0 -0
  92. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/static/htmx.min.js +0 -0
  93. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/static/style-redesign.css +0 -0
  94. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/static/style.css +0 -0
  95. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/dashboard-redesign.html +0 -0
  96. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/dashboard.html +0 -0
  97. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/activity-feed-hierarchical.html +0 -0
  98. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/activity-feed.html +0 -0
  99. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/agents-redesign.html +0 -0
  100. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/agents.html +0 -0
  101. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/event-traces.html +0 -0
  102. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/features-kanban-redesign.html +0 -0
  103. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/features.html +0 -0
  104. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/metrics-redesign.html +0 -0
  105. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/metrics.html +0 -0
  106. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/orchestration-redesign.html +0 -0
  107. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/orchestration.html +0 -0
  108. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/api/templates/partials/spawners.html +0 -0
  109. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/archive/__init__.py +0 -0
  110. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/archive/bloom.py +0 -0
  111. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/archive/fts.py +0 -0
  112. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/archive/manager.py +0 -0
  113. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/archive/search.py +0 -0
  114. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/atomic_ops.py +0 -0
  115. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/attribute_index.py +0 -0
  116. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/__init__.py +0 -0
  117. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/base.py +0 -0
  118. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/bug.py +0 -0
  119. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/chore.py +0 -0
  120. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/epic.py +0 -0
  121. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/feature.py +0 -0
  122. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/insight.py +0 -0
  123. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/metric.py +0 -0
  124. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/pattern.py +0 -0
  125. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/phase.py +0 -0
  126. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/spike.py +0 -0
  127. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/builders/track.py +0 -0
  128. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/__init__.py +0 -0
  129. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/autonomy.py +0 -0
  130. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/cost.py +0 -0
  131. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/messages_basic.py +0 -0
  132. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/messaging.py +0 -0
  133. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/models.py +0 -0
  134. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/pattern_storage.py +0 -0
  135. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/patterns.py +0 -0
  136. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/posttool_analyzer.py +0 -0
  137. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/reporter.py +0 -0
  138. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cigs/tracker.py +0 -0
  139. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/.htmlgraph/.session-warning-state.json +0 -0
  140. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/.htmlgraph/agents.json +0 -0
  141. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/__init__.py +0 -0
  142. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/__main__.py +0 -0
  143. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/analytics.py +0 -0
  144. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/base.py +0 -0
  145. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/constants.py +0 -0
  146. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/core.py +0 -0
  147. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/main.py +0 -0
  148. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/models.py +0 -0
  149. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/templates/__init__.py +0 -0
  150. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/templates/cost_dashboard.py +0 -0
  151. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/work/__init__.py +0 -0
  152. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/work/features.py +0 -0
  153. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/work/orchestration.py +0 -0
  154. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/work/sessions.py +0 -0
  155. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli/work/tracks.py +0 -0
  156. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli_commands/__init__.py +0 -0
  157. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli_commands/feature.py +0 -0
  158. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cli_framework.py +0 -0
  159. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/__init__.py +0 -0
  160. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/base.py +0 -0
  161. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/bug.py +0 -0
  162. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/chore.py +0 -0
  163. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/epic.py +0 -0
  164. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/feature.py +0 -0
  165. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/insight.py +0 -0
  166. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/metric.py +0 -0
  167. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/pattern.py +0 -0
  168. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/phase.py +0 -0
  169. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/session.py +0 -0
  170. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/spike.py +0 -0
  171. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/task_delegation.py +0 -0
  172. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/todo.py +0 -0
  173. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/collections/traces.py +0 -0
  174. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/config.py +0 -0
  175. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/context_analytics.py +0 -0
  176. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/converter.py +0 -0
  177. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cost_analysis/__init__.py +0 -0
  178. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/cost_analysis/analyzer.py +0 -0
  179. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/dashboard.html +0 -0
  180. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/dashboard.html.backup +0 -0
  181. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/dashboard.html.bak +0 -0
  182. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/dashboard.html.bak2 +0 -0
  183. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/dashboard.html.bak3 +0 -0
  184. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/db/__init__.py +0 -0
  185. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/db/queries.py +0 -0
  186. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/db/schema.py +0 -0
  187. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/dependency_models.py +0 -0
  188. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/deploy.py +0 -0
  189. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/deployment_models.py +0 -0
  190. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/API_REFERENCE.md +0 -0
  191. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/HTTP_API.md +0 -0
  192. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/INTEGRATION_GUIDE.md +0 -0
  193. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/ORCHESTRATION_PATTERNS.md +0 -0
  194. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/README.md +0 -0
  195. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/__init__.py +0 -0
  196. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/docs_version.py +0 -0
  197. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/metadata.py +0 -0
  198. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/migrations.py +0 -0
  199. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/template_engine.py +0 -0
  200. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/templates/_sections/cli_reference.md.j2 +0 -0
  201. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/templates/_sections/core_concepts.md.j2 +0 -0
  202. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/templates/_sections/sdk_basics.md.j2 +0 -0
  203. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/templates/base_agents.md.j2 +0 -0
  204. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/templates/example_user_override.md.j2 +0 -0
  205. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/docs/version_check.py +0 -0
  206. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/edge_index.py +0 -0
  207. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/error_handler.py +0 -0
  208. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/event_log.py +0 -0
  209. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/event_migration.py +0 -0
  210. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/exceptions.py +0 -0
  211. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/extensions/gemini/GEMINI.md +0 -0
  212. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/extensions/gemini/README.md +0 -0
  213. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/extensions/gemini/gemini-extension.json +0 -0
  214. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/extensions/gemini/hooks/hooks.json +0 -0
  215. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/extensions/gemini/hooks/scripts/post-tool.sh +0 -0
  216. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-end.sh +0 -0
  217. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-start.sh +0 -0
  218. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/file_watcher.py +0 -0
  219. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/find_api.py +0 -0
  220. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/git_events.py +0 -0
  221. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/graph.py +0 -0
  222. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/.htmlgraph/.session-warning-state.json +0 -0
  223. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/.htmlgraph/agents.json +0 -0
  224. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/.htmlgraph/index.sqlite +0 -0
  225. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/__init__.py +0 -0
  226. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/bootstrap.py +0 -0
  227. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/cigs_pretool_enforcer.py +0 -0
  228. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/concurrent_sessions.py +0 -0
  229. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/context.py +0 -0
  230. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/drift_handler.py +0 -0
  231. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/git_commands.py +0 -0
  232. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/hooks-config.example.json +0 -0
  233. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/installer.py +0 -0
  234. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/orchestrator.py +0 -0
  235. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/orchestrator_reflector.py +0 -0
  236. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/post-checkout.sh +0 -0
  237. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/post-commit.sh +0 -0
  238. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/post-merge.sh +0 -0
  239. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/post_tool_use_failure.py +0 -0
  240. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/post_tool_use_handler.py +0 -0
  241. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/posttooluse.py +0 -0
  242. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/pre-commit.sh +0 -0
  243. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/pre-push.sh +0 -0
  244. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/pretooluse.py +0 -0
  245. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/prompt_analyzer.py +0 -0
  246. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/session_handler.py +0 -0
  247. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/session_summary.py +0 -0
  248. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/state_manager.py +0 -0
  249. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/subagent_detection.py +0 -0
  250. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/subagent_stop.py +0 -0
  251. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/task_enforcer.py +0 -0
  252. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/task_validator.py +0 -0
  253. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/hooks/validator.py +0 -0
  254. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/ids.py +0 -0
  255. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/index.d.ts +0 -0
  256. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/learning.py +0 -0
  257. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/mcp_server.py +0 -0
  258. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/models.py +0 -0
  259. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/README.md +0 -0
  260. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/__init__.py +0 -0
  261. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/analytics.py +0 -0
  262. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/events.py +0 -0
  263. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/fastapi_server.py +0 -0
  264. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/hooks.py +0 -0
  265. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/initialization.py +0 -0
  266. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/initialization.py.backup +0 -0
  267. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/operations/server.py +0 -0
  268. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/__init__.py +0 -0
  269. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/claude_launcher.py +0 -0
  270. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/command_builder.py +0 -0
  271. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/headless_spawner.py +0 -0
  272. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/live_events.py +0 -0
  273. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/model_selection.py +0 -0
  274. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/plugin_manager.py +0 -0
  275. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/prompts.py +0 -0
  276. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/spawners/__init__.py +0 -0
  277. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/spawners/base.py +0 -0
  278. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/spawners/claude.py +0 -0
  279. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/spawners/codex.py +0 -0
  280. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/spawners/copilot.py +0 -0
  281. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/spawners/gemini.py +0 -0
  282. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/subprocess_runner.py +0 -0
  283. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration/task_coordination.py +0 -0
  284. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestration.md +0 -0
  285. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +0 -0
  286. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestrator.py +0 -0
  287. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestrator_config.py +0 -0
  288. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestrator_mode.py +0 -0
  289. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/orchestrator_validator.py +0 -0
  290. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/parallel.py +0 -0
  291. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/parser.py +0 -0
  292. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/planning.py +0 -0
  293. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/pydantic_models.py +0 -0
  294. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/quality_gates.py +0 -0
  295. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/query_builder.py +0 -0
  296. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/reflection.py +0 -0
  297. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/repo_hash.py +0 -0
  298. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/routing.py +0 -0
  299. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/scripts/__init__.py +0 -0
  300. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/scripts/deploy.py +0 -0
  301. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/sdk.py +0 -0
  302. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/server.py +0 -0
  303. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/services/__init__.py +0 -0
  304. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/services/claiming.py +0 -0
  305. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/session_hooks.py +0 -0
  306. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/session_manager.py +0 -0
  307. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/session_registry.py +0 -0
  308. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/session_state.py +0 -0
  309. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/session_warning.py +0 -0
  310. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/setup.py +0 -0
  311. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/spike_index.py +0 -0
  312. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/styles.css +0 -0
  313. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/sync_docs.py +0 -0
  314. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/system_prompts.py +0 -0
  315. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/templates/AGENTS.md.template +0 -0
  316. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/templates/CLAUDE.md.template +0 -0
  317. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/templates/GEMINI.md.template +0 -0
  318. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/templates/orchestration-view.html +0 -0
  319. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/track_builder.py +0 -0
  320. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/track_manager.py +0 -0
  321. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/transcript.py +0 -0
  322. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/transcript_analytics.py +0 -0
  323. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/types.py +0 -0
  324. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/validation.py +0 -0
  325. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/watch.py +0 -0
  326. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/src/python/htmlgraph/work_type_utils.py +0 -0
  327. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/benchmarks/README.md +0 -0
  328. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/benchmarks/__init__.py +0 -0
  329. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/benchmarks/bench_graph.py +0 -0
  330. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/benchmarks/conftest.py +0 -0
  331. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/__init__.py +0 -0
  332. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_bootstrap.py +0 -0
  333. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_concurrent_sessions.py +0 -0
  334. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_context.py +0 -0
  335. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_git_commands.py +0 -0
  336. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_hybrid_event_capture.py +0 -0
  337. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_prompt_analyzer.py +0 -0
  338. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_session_handler.py +0 -0
  339. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_state_manager.py +0 -0
  340. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_system_prompt_persistence.py +0 -0
  341. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/hooks/test_system_prompt_persistence_integration.py +0 -0
  342. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/multi_agent/README.md +0 -0
  343. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/multi_agent/__init__.py +0 -0
  344. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/multi_agent/test_agent_quirks.py +0 -0
  345. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/multi_agent/test_git_continuity_spine.py +0 -0
  346. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_cigs_hook_flow.py +0 -0
  347. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_cigs_integration.py +0 -0
  348. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_cigs_learning.py +0 -0
  349. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_complexity_assessment.py +0 -0
  350. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_dashboard_spawner_display.py +0 -0
  351. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_delegation_events.py +0 -0
  352. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_deployment_workflow.py +0 -0
  353. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_discoverability.py +0 -0
  354. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_edge_index_bug.py +0 -0
  355. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_features.py +0 -0
  356. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_handoff_routing.py +0 -0
  357. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_multi_agent_coordination.py +0 -0
  358. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_new_features.py +0 -0
  359. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_orchestration_tab.py +0 -0
  360. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_orchestration_with_playwright.py +0 -0
  361. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_orchestrator_pattern.py +0 -0
  362. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_orchestrator_spawner_delegation.py +0 -0
  363. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_phase1_userquery.py +0 -0
  364. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_phase4_delegation_events.py +0 -0
  365. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_post_compact_delegation.py +0 -0
  366. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_real_workitem_integration.py +0 -0
  367. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_redesigned_dashboard.py +0 -0
  368. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_spawner_integration.py +0 -0
  369. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_spawner_live_events.py +0 -0
  370. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_spawner_observability_e2e.py +0 -0
  371. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_spawner_routing_live.py +0 -0
  372. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_spawner_tool_tracking.py +0 -0
  373. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_task_delegation.py +0 -0
  374. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_user_query_events.py +0 -0
  375. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_websocket_realtime.py +0 -0
  376. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/integration/test_websocket_streaming.py +0 -0
  377. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/js/README.md +0 -0
  378. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/js/test_htmlgraph.html +0 -0
  379. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/manual/test-hook-input.py +0 -0
  380. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/operations/__init__.py +0 -0
  381. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/operations/test_hooks.py +0 -0
  382. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/operations/test_server.py +0 -0
  383. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/__init__.py +0 -0
  384. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/conftest.py +0 -0
  385. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_activity_feed_ui.py +0 -0
  386. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_agent_attribution.py +0 -0
  387. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_agent_detection.py +0 -0
  388. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_analytics.py +0 -0
  389. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_archive_manager.py +0 -0
  390. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_archive_search.py +0 -0
  391. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_atomic_ops.py +0 -0
  392. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_auto_spike.py +0 -0
  393. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_cigs_pretool_enforcer.py +0 -0
  394. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_claiming.py +0 -0
  395. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_cli_commands.py +0 -0
  396. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_cli_pydantic_models.py +0 -0
  397. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_cli_rich_output.py +0 -0
  398. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_collection_filter.py +0 -0
  399. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_cost_analyzer.py +0 -0
  400. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_cross_agent_attribution.py +0 -0
  401. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_cross_session_analytics.py +0 -0
  402. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_dashboard_attribution.py +0 -0
  403. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_dashboard_ui.py +0 -0
  404. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_delegation_fk_fix.py +0 -0
  405. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_delete.py +0 -0
  406. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_deploy.py +0 -0
  407. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_drift_parent_activity.py +0 -0
  408. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_drift_queue_cleanup.py +0 -0
  409. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_edge_index.py +0 -0
  410. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_error_handling.py +0 -0
  411. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_event_index.py +0 -0
  412. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_event_query.py +0 -0
  413. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_event_tracing.py +0 -0
  414. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_feature_track_linkage_phase1.py +0 -0
  415. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_find_api.py +0 -0
  416. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_git_events.py +0 -0
  417. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_graph_traversal.py +0 -0
  418. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_handoff.py +0 -0
  419. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_headless_spawner.py +0 -0
  420. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_headless_spawner_parent_session.py +0 -0
  421. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_ids.py +0 -0
  422. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_install_hooks.py +0 -0
  423. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_lifecycle.py +0 -0
  424. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_mcp_server.py +0 -0
  425. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_mcp_stdio_transport.py +0 -0
  426. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_models.py +0 -0
  427. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_orchestration.py +0 -0
  428. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_orchestrator_circuit_breaker.py +0 -0
  429. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_orchestrator_cli.py +0 -0
  430. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_orchestrator_enforce_hook.py +0 -0
  431. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_orchestrator_mode.py +0 -0
  432. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_parent_child_event_linking.py +0 -0
  433. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_parent_child_linking.py +0 -0
  434. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_parent_linking_integration.py +0 -0
  435. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_pattern_storage.py +0 -0
  436. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_plugin_update_preservation.py +0 -0
  437. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_post_tool_use_failure.py +0 -0
  438. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_post_tool_use_handler.py +0 -0
  439. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_posttooluse_cigs.py +0 -0
  440. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_pre_commit_hooks.py +0 -0
  441. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_pre_work_validation_integration.py +0 -0
  442. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_quality_gates.py +0 -0
  443. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_query_builder.py +0 -0
  444. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_query_cache.py +0 -0
  445. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_query_compilation.py +0 -0
  446. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_reflection.py +0 -0
  447. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_repo_hash.py +0 -0
  448. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_routing.py +0 -0
  449. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_sdk_discoverability.py +0 -0
  450. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_sdk_get_active_work_item.py +0 -0
  451. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_sdk_parent_session.py +0 -0
  452. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_sdk_sqlite_integration.py +0 -0
  453. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_session_cleanup.py +0 -0
  454. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_session_continuity.py +0 -0
  455. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_session_integration.py +0 -0
  456. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_session_registry.py +0 -0
  457. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_session_start_cigs.py +0 -0
  458. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_session_start_info_validation.py +0 -0
  459. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_session_state_manager.py +0 -0
  460. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_spawner_agents.py +0 -0
  461. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_spawner_routing.py +0 -0
  462. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_sqlite_schema.py +0 -0
  463. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_stop_cigs.py +0 -0
  464. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_system_overhead_drift.py +0 -0
  465. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_template_system.py +0 -0
  466. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_todo_collection.py +0 -0
  467. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_traces_collection.py +0 -0
  468. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_track_loading.py +0 -0
  469. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_transcript_linking.py +0 -0
  470. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_update_preserves_incoming_edges.py +0 -0
  471. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_user_prompt_submit_cigs.py +0 -0
  472. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_validate_work_hook.py +0 -0
  473. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_version_migration.py +0 -0
  474. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_violation_tracker.py +0 -0
  475. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_work_queue.py +0 -0
  476. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/python/test_work_type.py +0 -0
  477. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_agent_routing.py +0 -0
  478. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_autonomy_recommender.py +0 -0
  479. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_cigs_cli.py +0 -0
  480. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_cigs_cost_calculator.py +0 -0
  481. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_cigs_cost_reporter.py +0 -0
  482. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_cigs_imperative_messages.py +0 -0
  483. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_cigs_messages_basic.py +0 -0
  484. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_cli_output_snapshots.py +0 -0
  485. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_cli_sdk_parity.py +0 -0
  486. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_deployment_models.py +0 -0
  487. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_event_log.py +0 -0
  488. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_hybrid_event_capture.py +0 -0
  489. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_orchestrator_config.py +0 -0
  490. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_orchestrator_validator.py +0 -0
  491. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_pattern_detector.py +0 -0
  492. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_sdk_api_surface.py +0 -0
  493. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_sdk_operations.py +0 -0
  494. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_transaction_snapshot.py +0 -0
  495. {htmlgraph-0.26.7 → htmlgraph-0.26.8}/tests/test_transcript.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: htmlgraph
3
- Version: 0.26.7
3
+ Version: 0.26.8
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,6 +1,6 @@
1
1
  {
2
2
  "name": "htmlgraph",
3
- "version": "0.26.7",
3
+ "version": "0.26.8",
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.26.7"
3
+ version = "0.26.8"
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"
@@ -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.7"
98
+ __version__ = "0.26.8"
99
99
  __all__ = [
100
100
  # Exceptions
101
101
  "HtmlGraphError",
@@ -353,6 +353,7 @@ def detect_model_from_hook_input(hook_input: dict[str, Any]) -> str | None:
353
353
  1. Task() model parameter (if tool_name == 'Task')
354
354
  2. HTMLGRAPH_MODEL environment variable (set by hooks)
355
355
  3. ANTHROPIC_MODEL or CLAUDE_MODEL environment variables
356
+ 4. Status line cache (for orchestrator tool calls)
356
357
 
357
358
  Args:
358
359
  hook_input: Hook input dict containing tool_name and tool_input
@@ -386,6 +387,14 @@ def detect_model_from_hook_input(hook_input: dict[str, Any]) -> str | None:
386
387
  if model:
387
388
  return model
388
389
 
390
+ # 3. Fallback to status line cache for orchestrator's own tool calls
391
+ # This gives regular tool calls (Bash, Read, etc.) the model of the orchestrator
392
+ session_id = hook_input.get("session_id") or hook_input.get("sessionId")
393
+ if session_id:
394
+ model_from_cache = get_model_from_status_cache(session_id)
395
+ if model_from_cache:
396
+ return model_from_cache
397
+
389
398
  return None
390
399
 
391
400
 
@@ -295,9 +295,13 @@ class TestDetectAgentFromEnvironment:
295
295
  with mock.patch.dict(
296
296
  os.environ, {"HTMLGRAPH_SUBAGENT_TYPE": "researcher"}, clear=True
297
297
  ):
298
- agent_id, model = detect_agent_from_environment()
299
- assert agent_id == "researcher"
300
- assert model is None
298
+ with mock.patch(
299
+ "htmlgraph.hooks.event_tracker.get_model_from_status_cache",
300
+ return_value=None,
301
+ ):
302
+ agent_id, model = detect_agent_from_environment()
303
+ assert agent_id == "researcher"
304
+ assert model is None
301
305
 
302
306
  def test_detect_claude_model(self):
303
307
  """Test detection with CLAUDE_MODEL env var returns model separately."""
@@ -323,16 +327,24 @@ class TestDetectAgentFromEnvironment:
323
327
  """Test detection with HTMLGRAPH_PARENT_AGENT env var."""
324
328
  env = {"HTMLGRAPH_PARENT_AGENT": "parent-agent"}
325
329
  with mock.patch.dict(os.environ, env, clear=True):
326
- agent_id, model = detect_agent_from_environment()
327
- assert agent_id == "parent-agent"
328
- assert model is None
330
+ with mock.patch(
331
+ "htmlgraph.hooks.event_tracker.get_model_from_status_cache",
332
+ return_value=None,
333
+ ):
334
+ agent_id, model = detect_agent_from_environment()
335
+ assert agent_id == "parent-agent"
336
+ assert model is None
329
337
 
330
338
  def test_detect_fallback_to_claude_code(self):
331
339
  """Test fallback to 'claude-code' when no env vars set."""
332
340
  with mock.patch.dict(os.environ, {}, clear=True):
333
- agent_id, model = detect_agent_from_environment()
334
- assert agent_id == "claude-code"
335
- assert model is None
341
+ with mock.patch(
342
+ "htmlgraph.hooks.event_tracker.get_model_from_status_cache",
343
+ return_value=None,
344
+ ):
345
+ agent_id, model = detect_agent_from_environment()
346
+ assert agent_id == "claude-code"
347
+ assert model is None
336
348
 
337
349
  def test_detect_priority_order(self):
338
350
  """Test environment variable priority order."""
@@ -1699,7 +1711,9 @@ class TestParallelSubagentDetection:
1699
1711
  )
1700
1712
 
1701
1713
  assert subagent_type == "Explore", f"Expected 'Explore', got '{subagent_type}'"
1702
- assert parent_event == "evt-task1-explore", f"Expected 'evt-task1-explore', got '{parent_event}'"
1714
+ assert parent_event == "evt-task1-explore", (
1715
+ f"Expected 'evt-task1-explore', got '{parent_event}'"
1716
+ )
1703
1717
  assert parent_session == parent_session_id
1704
1718
 
1705
1719
  db.disconnect()
@@ -1773,7 +1787,9 @@ class TestParallelSubagentDetection:
1773
1787
  db, "subagent-session-no-hint", parent_event_id_hint=None
1774
1788
  )
1775
1789
 
1776
- assert subagent_type == "Gemini", f"Expected 'Gemini' (most recent), got '{subagent_type}'"
1790
+ assert subagent_type == "Gemini", (
1791
+ f"Expected 'Gemini' (most recent), got '{subagent_type}'"
1792
+ )
1777
1793
  assert parent_event == "evt-newer-task"
1778
1794
 
1779
1795
  db.disconnect()
@@ -1845,7 +1861,9 @@ class TestParallelSubagentDetection:
1845
1861
  db, "subagent-session-stale-hint", parent_event_id_hint="evt-completed-task"
1846
1862
  )
1847
1863
 
1848
- assert subagent_type == "Codex", f"Expected 'Codex' (active fallback), got '{subagent_type}'"
1864
+ assert subagent_type == "Codex", (
1865
+ f"Expected 'Codex' (active fallback), got '{subagent_type}'"
1866
+ )
1849
1867
  assert parent_event == "evt-active-task"
1850
1868
 
1851
1869
  db.disconnect()
@@ -1894,10 +1912,14 @@ class TestParallelSubagentDetection:
1894
1912
 
1895
1913
  # Hint points to non-existent event - should fall back
1896
1914
  subagent_type, _, parent_event = detect_subagent_context_from_database(
1897
- db, "subagent-session-invalid-hint", parent_event_id_hint="evt-does-not-exist"
1915
+ db,
1916
+ "subagent-session-invalid-hint",
1917
+ parent_event_id_hint="evt-does-not-exist",
1898
1918
  )
1899
1919
 
1900
- assert subagent_type == "Gemini", f"Expected 'Gemini' (fallback), got '{subagent_type}'"
1920
+ assert subagent_type == "Gemini", (
1921
+ f"Expected 'Gemini' (fallback), got '{subagent_type}'"
1922
+ )
1901
1923
  assert parent_event == "evt-only-active"
1902
1924
 
1903
1925
  db.disconnect()
@@ -50,12 +50,10 @@ def test_codex_cli_availability():
50
50
  print("=" * 80)
51
51
 
52
52
  import subprocess
53
+
53
54
  try:
54
55
  result = subprocess.run(
55
- ["codex", "--version"],
56
- capture_output=True,
57
- text=True,
58
- timeout=5
56
+ ["codex", "--version"], capture_output=True, text=True, timeout=5
59
57
  )
60
58
  print(f"✅ Codex CLI found: {result.stdout.strip()}")
61
59
  return True
@@ -82,10 +80,10 @@ def test_codex_spawner_simple():
82
80
  output_json=True,
83
81
  full_auto=True,
84
82
  track_in_htmlgraph=False, # Disable tracking for simple test
85
- timeout=30
83
+ timeout=30,
86
84
  )
87
85
 
88
- print(f"\nResult:")
86
+ print("\nResult:")
89
87
  print(f" Success: {result.success}")
90
88
  print(f" Response: {result.response[:200] if result.response else 'None'}")
91
89
  print(f" Error: {result.error}")
@@ -116,6 +114,7 @@ def test_database_events():
116
114
  print("=" * 80)
117
115
 
118
116
  import sqlite3
117
+
119
118
  from htmlgraph.config import get_database_path
120
119
 
121
120
  db_path = get_database_path()
@@ -157,7 +156,9 @@ def test_database_events():
157
156
  """)
158
157
  linked_count = cursor.fetchone()[0]
159
158
 
160
- print(f"✅ Parent event linking: {linked_count} subprocess.codex events have parent_event_id")
159
+ print(
160
+ f"✅ Parent event linking: {linked_count} subprocess.codex events have parent_event_id"
161
+ )
161
162
 
162
163
  conn.close()
163
164
  return True
@@ -174,6 +175,7 @@ def test_error_analysis():
174
175
  print("=" * 80)
175
176
 
176
177
  import sqlite3
178
+
177
179
  from htmlgraph.config import get_database_path
178
180
 
179
181
  try:
@@ -204,17 +206,17 @@ def test_error_analysis():
204
206
  "chatgpt_plan": 0,
205
207
  "model_not_supported": 0,
206
208
  "authentication": 0,
207
- "other": 0
209
+ "other": 0,
208
210
  }
209
211
 
210
212
  for (output,) in errors:
211
- print(f"Error output sample:")
213
+ print("Error output sample:")
212
214
  print(f" {output[:200]}...")
213
215
  print()
214
216
 
215
217
  # Parse JSONL error messages
216
218
  try:
217
- for line in output.split('\n'):
219
+ for line in output.split("\n"):
218
220
  if not line.strip():
219
221
  continue
220
222
  try:
@@ -338,9 +340,11 @@ def main():
338
340
  print("DIAGNOSTIC SUMMARY")
339
341
  print("=" * 80)
340
342
  print(f"Codex CLI Available: {'✅ YES' if cli_available else '❌ NO'}")
341
- print(f"CodexSpawner Working: {'✅ YES' if spawner_works else '❌ NO (API access blocked)'}")
342
- print(f"Event Tracking: ✅ YES (SpawnerEventTracker integration working)")
343
- print(f"Root Cause: ❌ ChatGPT account tier limitation")
343
+ print(
344
+ f"CodexSpawner Working: {'✅ YES' if spawner_works else '❌ NO (API access blocked)'}"
345
+ )
346
+ print("Event Tracking: ✅ YES (SpawnerEventTracker integration working)")
347
+ print("Root Cause: ❌ ChatGPT account tier limitation")
344
348
  print("=" * 80)
345
349
 
346
350
 
@@ -16,10 +16,11 @@ from datetime import datetime, timezone
16
16
  from pathlib import Path
17
17
 
18
18
  # Add plugin agents directory to path for SpawnerEventTracker
19
- PLUGIN_AGENTS_DIR = Path(__file__).parent / "packages/claude-plugin/.claude-plugin/agents"
19
+ PLUGIN_AGENTS_DIR = (
20
+ Path(__file__).parent / "packages/claude-plugin/.claude-plugin/agents"
21
+ )
20
22
  sys.path.insert(0, str(PLUGIN_AGENTS_DIR))
21
23
 
22
- from htmlgraph import SDK
23
24
  from htmlgraph.config import get_database_path
24
25
  from htmlgraph.db.schema import HtmlGraphDB
25
26
  from htmlgraph.orchestration import CopilotSpawner
@@ -41,9 +42,9 @@ def setup_parent_event_context(db: HtmlGraphDB, session_id: str) -> tuple[str, s
41
42
  task_delegation_event_id = f"event-{uuid.uuid4().hex[:8]}"
42
43
  start_time = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
43
44
 
44
- print(f"\n{'='*80}")
45
+ print(f"\n{'=' * 80}")
45
46
  print("SETUP: Creating parent event context")
46
- print(f"{'='*80}")
47
+ print(f"{'=' * 80}")
47
48
  print(f"Session ID: {session_id}")
48
49
  print(f"UserQuery Event ID: {user_query_event_id}")
49
50
  print(f"Task Delegation Event ID: {task_delegation_event_id}")
@@ -87,7 +88,7 @@ def setup_parent_event_context(db: HtmlGraphDB, session_id: str) -> tuple[str, s
87
88
  )
88
89
  db.connection.commit()
89
90
 
90
- print(f"\n✅ Parent events created in database")
91
+ print("\n✅ Parent events created in database")
91
92
  return user_query_event_id, task_delegation_event_id
92
93
 
93
94
 
@@ -99,9 +100,9 @@ def setup_environment(session_id: str, parent_event_id: str) -> None:
99
100
  session_id: Session ID
100
101
  parent_event_id: Parent event ID (task delegation)
101
102
  """
102
- print(f"\n{'='*80}")
103
+ print(f"\n{'=' * 80}")
103
104
  print("SETUP: Exporting parent context to environment")
104
- print(f"{'='*80}")
105
+ print(f"{'=' * 80}")
105
106
 
106
107
  os.environ["HTMLGRAPH_PARENT_EVENT"] = parent_event_id
107
108
  os.environ["HTMLGRAPH_PARENT_SESSION"] = session_id
@@ -110,7 +111,7 @@ def setup_environment(session_id: str, parent_event_id: str) -> None:
110
111
 
111
112
  print(f"HTMLGRAPH_PARENT_EVENT: {parent_event_id}")
112
113
  print(f"HTMLGRAPH_PARENT_SESSION: {session_id}")
113
- print(f"✅ Environment configured")
114
+ print("✅ Environment configured")
114
115
 
115
116
 
116
117
  def invoke_copilot_spawner(
@@ -127,9 +128,9 @@ def invoke_copilot_spawner(
127
128
  Returns:
128
129
  Dict with result and metadata
129
130
  """
130
- print(f"\n{'='*80}")
131
+ print(f"\n{'=' * 80}")
131
132
  print("INVOCATION: Spawning Copilot with tracking")
132
- print(f"{'='*80}")
133
+ print(f"{'=' * 80}")
133
134
 
134
135
  spawner = CopilotSpawner()
135
136
 
@@ -148,8 +149,8 @@ Please recommend:
148
149
  print(f"Prompt: {prompt[:100]}...")
149
150
  print(f"Tracker: {tracker}")
150
151
  print(f"Parent Event ID: {parent_event_id}")
151
- print(f"Track in HtmlGraph: True")
152
- print(f"Allow all tools: True")
152
+ print("Track in HtmlGraph: True")
153
+ print("Allow all tools: True")
153
154
 
154
155
  result = spawner.spawn(
155
156
  prompt=prompt,
@@ -186,24 +187,26 @@ def validate_results(
186
187
  Returns:
187
188
  True if validation passed, False otherwise
188
189
  """
189
- print(f"\n{'='*80}")
190
+ print(f"\n{'=' * 80}")
190
191
  print("VALIDATION: Checking event hierarchy in database")
191
- print(f"{'='*80}")
192
+ print(f"{'=' * 80}")
192
193
 
193
194
  result = result_data["result"]
194
- prompt = result_data["prompt"]
195
+ _ = result_data["prompt"] # noqa: F841 - Kept for debugging
195
196
 
196
197
  # Check AIResult structure
197
- print(f"\n1. AIResult Validation:")
198
+ print("\n1. AIResult Validation:")
198
199
  print(f" Success: {result.success}")
199
200
  print(f" Response length: {len(result.response) if result.response else 0}")
200
201
  print(f" Error: {result.error}")
201
- print(f" Tracked events: {len(result.tracked_events) if result.tracked_events else 0}")
202
+ print(
203
+ f" Tracked events: {len(result.tracked_events) if result.tracked_events else 0}"
204
+ )
202
205
 
203
206
  if not result.success:
204
207
  print(f"\n⚠️ Copilot execution failed: {result.error}")
205
- print(f" This is expected if Copilot CLI is not installed")
206
- print(f" Continuing validation of event tracking structure...")
208
+ print(" This is expected if Copilot CLI is not installed")
209
+ print(" Continuing validation of event tracking structure...")
207
210
 
208
211
  # Query all events in this session
209
212
  cursor = db.connection.cursor()
@@ -245,7 +248,7 @@ def validate_results(
245
248
  elif parent_event_id == task_delegation_event_id:
246
249
  indent = " "
247
250
 
248
- print(f"{indent}[{i+1}] {tool_name} ({event_type})")
251
+ print(f"{indent}[{i + 1}] {tool_name} ({event_type})")
249
252
  print(f"{indent} Event ID: {event_id}")
250
253
  print(f"{indent} Agent: {agent_id}")
251
254
  print(f"{indent} Parent: {parent_event_id or 'ROOT'}")
@@ -254,34 +257,38 @@ def validate_results(
254
257
  print(f"{indent} Summary: {input_summary[:60]}...")
255
258
 
256
259
  # Validate hierarchy
257
- print(f"\n3. Hierarchy Validation:")
260
+ print("\n3. Hierarchy Validation:")
258
261
 
259
262
  # Check UserQuery exists
260
263
  user_query = [e for e in events if e[0] == user_query_event_id]
261
264
  if user_query:
262
- print(f" ✅ UserQuery event found (root)")
265
+ print(" ✅ UserQuery event found (root)")
263
266
  else:
264
- print(f" ❌ UserQuery event NOT found")
267
+ print(" ❌ UserQuery event NOT found")
265
268
  validation_passed = False
266
269
 
267
270
  # Check Task delegation exists and is child of UserQuery
268
271
  task_delegation = [e for e in events if e[0] == task_delegation_event_id]
269
272
  if task_delegation and task_delegation[0][5] == user_query_event_id:
270
- print(f" ✅ Task delegation event found (child of UserQuery)")
273
+ print(" ✅ Task delegation event found (child of UserQuery)")
271
274
  else:
272
- print(f" ❌ Task delegation event NOT properly linked")
275
+ print(" ❌ Task delegation event NOT properly linked")
273
276
  validation_passed = False
274
277
 
275
278
  # Check subprocess events exist and are children of Task delegation
276
279
  subprocess_events = [
277
- e for e in events if e[5] == task_delegation_event_id and e[3] == "subprocess.copilot"
280
+ e
281
+ for e in events
282
+ if e[5] == task_delegation_event_id and e[3] == "subprocess.copilot"
278
283
  ]
279
284
  if subprocess_events:
280
285
  print(
281
286
  f" ✅ {len(subprocess_events)} subprocess event(s) found (children of Task delegation)"
282
287
  )
283
288
  else:
284
- print(f" ⚠️ No subprocess events found (expected if Copilot CLI not available)")
289
+ print(
290
+ " ⚠️ No subprocess events found (expected if Copilot CLI not available)"
291
+ )
285
292
 
286
293
  # Check for activity tracking events (copilot_start, copilot_result)
287
294
  activity_events = [
@@ -292,15 +299,19 @@ def validate_results(
292
299
  if activity_events:
293
300
  print(f" ✅ {len(activity_events)} activity tracking event(s) found")
294
301
  else:
295
- print(f" ⚠️ No activity tracking events found")
302
+ print(" ⚠️ No activity tracking events found")
296
303
 
297
304
  # Summary
298
- print(f"\n{'='*80}")
305
+ print(f"\n{'=' * 80}")
299
306
  print("SUMMARY")
300
- print(f"{'='*80}")
307
+ print(f"{'=' * 80}")
301
308
  print(f"Total events in session: {len(events)}")
302
- print(f"UserQuery events: {len([e for e in events if e[2] == 'tool_call' and e[3] == 'UserPromptSubmit'])}")
303
- print(f"Task delegation events: {len([e for e in events if e[2] == 'task_delegation'])}")
309
+ print(
310
+ f"UserQuery events: {len([e for e in events if e[2] == 'tool_call' and e[3] == 'UserPromptSubmit'])}"
311
+ )
312
+ print(
313
+ f"Task delegation events: {len([e for e in events if e[2] == 'task_delegation'])}"
314
+ )
304
315
  print(f"Subprocess events: {len(subprocess_events)}")
305
316
  print(f"Activity events: {len(activity_events)}")
306
317
  print(f"\nValidation: {'✅ PASSED' if validation_passed else '❌ FAILED'}")
@@ -310,9 +321,9 @@ def validate_results(
310
321
 
311
322
  def main() -> int:
312
323
  """Run the complete test workflow."""
313
- print(f"\n{'#'*80}")
324
+ print(f"\n{'#' * 80}")
314
325
  print("# CopilotSpawner Parent Event Context Test")
315
- print(f"{'#'*80}")
326
+ print(f"{'#' * 80}")
316
327
 
317
328
  try:
318
329
  # Initialize database
@@ -321,7 +332,7 @@ def main() -> int:
321
332
 
322
333
  if not db_path.exists():
323
334
  print(f"❌ Database not found at {db_path}")
324
- print(f" Run: htmlgraph init")
335
+ print(" Run: htmlgraph init")
325
336
  return 1
326
337
 
327
338
  db = HtmlGraphDB(str(db_path))
@@ -339,9 +350,9 @@ def main() -> int:
339
350
  setup_environment(session_id, task_delegation_event_id)
340
351
 
341
352
  # Step 3: Create tracker with parent context
342
- print(f"\n{'='*80}")
353
+ print(f"\n{'=' * 80}")
343
354
  print("SETUP: Creating SpawnerEventTracker")
344
- print(f"{'='*80}")
355
+ print(f"{'=' * 80}")
345
356
 
346
357
  tracker = SpawnerEventTracker(
347
358
  delegation_event_id=task_delegation_event_id,
@@ -351,12 +362,12 @@ def main() -> int:
351
362
  )
352
363
  tracker.db = db # Ensure tracker uses the same database
353
364
 
354
- print(f"Tracker created:")
365
+ print("Tracker created:")
355
366
  print(f" Delegation Event ID: {task_delegation_event_id}")
356
- print(f" Parent Agent: claude")
357
- print(f" Spawner Type: copilot")
367
+ print(" Parent Agent: claude")
368
+ print(" Spawner Type: copilot")
358
369
  print(f" Session ID: {session_id}")
359
- print(f"✅ Tracker initialized")
370
+ print("✅ Tracker initialized")
360
371
 
361
372
  # Step 4: Invoke CopilotSpawner
362
373
  result_data = invoke_copilot_spawner(tracker, task_delegation_event_id)
@@ -373,22 +384,22 @@ def main() -> int:
373
384
  # Step 6: Display response (if successful)
374
385
  result = result_data["result"]
375
386
  if result.success and result.response:
376
- print(f"\n{'='*80}")
387
+ print(f"\n{'=' * 80}")
377
388
  print("COPILOT RESPONSE")
378
- print(f"{'='*80}")
389
+ print(f"{'=' * 80}")
379
390
  print(result.response)
380
391
 
381
- print(f"\n{'#'*80}")
392
+ print(f"\n{'#' * 80}")
382
393
  print(f"# Test {'PASSED' if validation_passed else 'FAILED'}")
383
- print(f"{'#'*80}\n")
394
+ print(f"{'#' * 80}\n")
384
395
 
385
396
  return 0 if validation_passed else 1
386
397
 
387
398
  except KeyboardInterrupt:
388
- print(f"\n\n⚠️ Test interrupted by user")
399
+ print("\n\n⚠️ Test interrupted by user")
389
400
  return 130
390
401
  except Exception as e:
391
- print(f"\n\n❌ Test failed with exception:")
402
+ print("\n\n❌ Test failed with exception:")
392
403
  print(f" {type(e).__name__}: {e}")
393
404
  import traceback
394
405
 
@@ -27,7 +27,7 @@ def test_basic_gemini():
27
27
  output_format="json",
28
28
  model="gemini-2.0-flash",
29
29
  track_in_htmlgraph=False,
30
- timeout=30
30
+ timeout=30,
31
31
  )
32
32
 
33
33
  print(f"Success: {result.success}")
@@ -49,7 +49,7 @@ def test_basic_gemini():
49
49
  output_format="stream-json",
50
50
  model="gemini-2.0-flash",
51
51
  track_in_htmlgraph=False,
52
- timeout=30
52
+ timeout=30,
53
53
  )
54
54
 
55
55
  print(f"Success: {result2.success}")