htmlgraph 0.26.20__tar.gz → 0.26.22__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 (498) hide show
  1. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/PKG-INFO +1 -1
  2. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/gemini-extension.json +1 -1
  3. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/pyproject.toml +1 -1
  4. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/__init__.py +1 -1
  5. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/event_tracker.py +41 -25
  6. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/subagent_stop.py +65 -6
  7. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_orchestrator_spawner_delegation.py +21 -7
  8. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/.gitignore +0 -0
  9. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/README.md +0 -0
  10. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/agent-coordination/README.md +0 -0
  11. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/agent-coordination/demo.py +0 -0
  12. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/create_auth_track_demo.py +0 -0
  13. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/create_htmlgraph_dev_track.py +0 -0
  14. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/demo_agent_planning.py +0 -0
  15. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/demo_real_project_analytics.py +0 -0
  16. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/demo_sdk_operations.py +0 -0
  17. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/README.md +0 -0
  18. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/agents.json +0 -0
  19. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/demo.py +0 -0
  20. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-api-graph.html +0 -0
  21. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-api-overview.html +0 -0
  22. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-api-sdk.html +0 -0
  23. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-example-advanced.html +0 -0
  24. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-example-basic.html +0 -0
  25. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-index.html +0 -0
  26. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-installation.html +0 -0
  27. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/documentation-site/features/doc-quickstart.html +0 -0
  28. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/example_query_compilation.py +0 -0
  29. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/handoff-demo.py +0 -0
  30. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/README.md +0 -0
  31. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/agents.json +0 -0
  32. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/demo.py +0 -0
  33. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/features/feat-276c615f.html +0 -0
  34. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/features/feat-7a6f797d.html +0 -0
  35. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/features/note-ai-agents.html +0 -0
  36. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/features/note-graph-db.html +0 -0
  37. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/features/note-htmlgraph.html +0 -0
  38. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/knowledge-base/features/note-web-standards.html +0 -0
  39. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/parallel_task_coordination.py +0 -0
  40. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/routing-demo.py +0 -0
  41. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/sdk_demo.py +0 -0
  42. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/README.md +0 -0
  43. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/demo.py +0 -0
  44. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/index.html +0 -0
  45. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/styles.css +0 -0
  46. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/task-001.html +0 -0
  47. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/task-002.html +0 -0
  48. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/task-003.html +0 -0
  49. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/task-004.html +0 -0
  50. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/task-005.html +0 -0
  51. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/examples/todo-list/task-006.html +0 -0
  52. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/GEMINI.md +0 -0
  53. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/README.md +0 -0
  54. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_deploy.md +0 -0
  55. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_end.md +0 -0
  56. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_feature-add.md +0 -0
  57. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_feature-complete.md +0 -0
  58. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_feature-primary.md +0 -0
  59. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_feature-start.md +0 -0
  60. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_git-commit.md +0 -0
  61. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_help.md +0 -0
  62. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_init.md +0 -0
  63. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_plan.md +0 -0
  64. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_recommend.md +0 -0
  65. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_serve.md +0 -0
  66. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_spike.md +0 -0
  67. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_start.md +0 -0
  68. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_status.md +0 -0
  69. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/command_track.md +0 -0
  70. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/hooks/hooks.json +0 -0
  71. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/hooks/scripts/post-tool.sh +0 -0
  72. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/hooks/scripts/session-end.sh +0 -0
  73. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/packages/gemini-extension/hooks/scripts/session-start.sh +0 -0
  74. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/js/htmlgraph.js +0 -0
  75. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/.htmlgraph/.session-warning-state.json +0 -0
  76. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/.htmlgraph/agents.json +0 -0
  77. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/.htmlgraph/htmlgraph.db +0 -0
  78. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/agent_detection.py +0 -0
  79. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/agent_registry.py +0 -0
  80. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/agents.py +0 -0
  81. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics/__init__.py +0 -0
  82. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics/cli.py +0 -0
  83. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics/cost_analyzer.py +0 -0
  84. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics/cost_reporter.py +0 -0
  85. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics/cross_session.py +0 -0
  86. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics/dependency.py +0 -0
  87. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics/work_type.py +0 -0
  88. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/analytics_index.py +0 -0
  89. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/__init__.py +0 -0
  90. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/main.py +0 -0
  91. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/static/htmx.min.js +0 -0
  92. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/static/style-redesign.css +0 -0
  93. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/static/style.css +0 -0
  94. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/dashboard-redesign.html +0 -0
  95. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/dashboard.html +0 -0
  96. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/activity-feed-hierarchical.html +0 -0
  97. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/activity-feed.html +0 -0
  98. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/agents-redesign.html +0 -0
  99. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/agents.html +0 -0
  100. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/event-traces.html +0 -0
  101. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/features-kanban-redesign.html +0 -0
  102. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/features.html +0 -0
  103. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/metrics-redesign.html +0 -0
  104. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/metrics.html +0 -0
  105. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/orchestration-redesign.html +0 -0
  106. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/orchestration.html +0 -0
  107. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/api/templates/partials/spawners.html +0 -0
  108. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/archive/__init__.py +0 -0
  109. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/archive/bloom.py +0 -0
  110. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/archive/fts.py +0 -0
  111. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/archive/manager.py +0 -0
  112. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/archive/search.py +0 -0
  113. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/atomic_ops.py +0 -0
  114. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/attribute_index.py +0 -0
  115. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/__init__.py +0 -0
  116. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/base.py +0 -0
  117. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/bug.py +0 -0
  118. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/chore.py +0 -0
  119. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/epic.py +0 -0
  120. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/feature.py +0 -0
  121. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/insight.py +0 -0
  122. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/metric.py +0 -0
  123. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/pattern.py +0 -0
  124. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/phase.py +0 -0
  125. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/spike.py +0 -0
  126. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/builders/track.py +0 -0
  127. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/__init__.py +0 -0
  128. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/autonomy.py +0 -0
  129. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/cost.py +0 -0
  130. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/messages_basic.py +0 -0
  131. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/messaging.py +0 -0
  132. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/models.py +0 -0
  133. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/pattern_storage.py +0 -0
  134. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/patterns.py +0 -0
  135. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/posttool_analyzer.py +0 -0
  136. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/reporter.py +0 -0
  137. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cigs/tracker.py +0 -0
  138. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/.htmlgraph/.session-warning-state.json +0 -0
  139. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/.htmlgraph/agents.json +0 -0
  140. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/.htmlgraph/htmlgraph.db +0 -0
  141. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/__init__.py +0 -0
  142. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/__main__.py +0 -0
  143. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/analytics.py +0 -0
  144. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/base.py +0 -0
  145. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/constants.py +0 -0
  146. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/core.py +0 -0
  147. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/main.py +0 -0
  148. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/models.py +0 -0
  149. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/templates/__init__.py +0 -0
  150. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/templates/cost_dashboard.py +0 -0
  151. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/work/__init__.py +0 -0
  152. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/work/features.py +0 -0
  153. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/work/orchestration.py +0 -0
  154. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/work/sessions.py +0 -0
  155. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli/work/tracks.py +0 -0
  156. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli_commands/__init__.py +0 -0
  157. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli_commands/feature.py +0 -0
  158. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cli_framework.py +0 -0
  159. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/__init__.py +0 -0
  160. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/base.py +0 -0
  161. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/bug.py +0 -0
  162. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/chore.py +0 -0
  163. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/epic.py +0 -0
  164. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/feature.py +0 -0
  165. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/insight.py +0 -0
  166. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/metric.py +0 -0
  167. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/pattern.py +0 -0
  168. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/phase.py +0 -0
  169. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/session.py +0 -0
  170. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/spike.py +0 -0
  171. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/task_delegation.py +0 -0
  172. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/todo.py +0 -0
  173. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/collections/traces.py +0 -0
  174. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/config.py +0 -0
  175. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/context_analytics.py +0 -0
  176. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/converter.py +0 -0
  177. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cost_analysis/__init__.py +0 -0
  178. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/cost_analysis/analyzer.py +0 -0
  179. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/dashboard.html +0 -0
  180. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/dashboard.html.backup +0 -0
  181. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/dashboard.html.bak +0 -0
  182. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/dashboard.html.bak2 +0 -0
  183. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/dashboard.html.bak3 +0 -0
  184. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/db/__init__.py +0 -0
  185. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/db/queries.py +0 -0
  186. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/db/schema.py +0 -0
  187. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/dependency_models.py +0 -0
  188. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/deploy.py +0 -0
  189. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/deployment_models.py +0 -0
  190. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/API_REFERENCE.md +0 -0
  191. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/HTTP_API.md +0 -0
  192. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/INTEGRATION_GUIDE.md +0 -0
  193. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/ORCHESTRATION_PATTERNS.md +0 -0
  194. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/README.md +0 -0
  195. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/__init__.py +0 -0
  196. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/docs_version.py +0 -0
  197. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/metadata.py +0 -0
  198. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/migrations.py +0 -0
  199. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/template_engine.py +0 -0
  200. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/templates/_sections/cli_reference.md.j2 +0 -0
  201. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/templates/_sections/core_concepts.md.j2 +0 -0
  202. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/templates/_sections/sdk_basics.md.j2 +0 -0
  203. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/templates/base_agents.md.j2 +0 -0
  204. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/templates/example_user_override.md.j2 +0 -0
  205. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/docs/version_check.py +0 -0
  206. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/edge_index.py +0 -0
  207. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/error_handler.py +0 -0
  208. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/event_log.py +0 -0
  209. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/event_migration.py +0 -0
  210. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/exceptions.py +0 -0
  211. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/extensions/gemini/GEMINI.md +0 -0
  212. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/extensions/gemini/README.md +0 -0
  213. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/extensions/gemini/gemini-extension.json +0 -0
  214. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/extensions/gemini/hooks/hooks.json +0 -0
  215. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/extensions/gemini/hooks/scripts/post-tool.sh +0 -0
  216. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-end.sh +0 -0
  217. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-start.sh +0 -0
  218. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/file_watcher.py +0 -0
  219. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/find_api.py +0 -0
  220. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/git_events.py +0 -0
  221. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/graph.py +0 -0
  222. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/.htmlgraph/.session-warning-state.json +0 -0
  223. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/.htmlgraph/agents.json +0 -0
  224. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/.htmlgraph/index.sqlite +0 -0
  225. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/__init__.py +0 -0
  226. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/bootstrap.py +0 -0
  227. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/cigs_pretool_enforcer.py +0 -0
  228. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/concurrent_sessions.py +0 -0
  229. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/context.py +0 -0
  230. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/drift_handler.py +0 -0
  231. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/git_commands.py +0 -0
  232. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/hooks-config.example.json +0 -0
  233. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/installer.py +0 -0
  234. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/orchestrator.py +0 -0
  235. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/orchestrator_reflector.py +0 -0
  236. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/post-checkout.sh +0 -0
  237. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/post-commit.sh +0 -0
  238. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/post-merge.sh +0 -0
  239. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/post_tool_use_failure.py +0 -0
  240. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/post_tool_use_handler.py +0 -0
  241. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/posttooluse.py +0 -0
  242. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/pre-commit.sh +0 -0
  243. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/pre-push.sh +0 -0
  244. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/pretooluse.py +0 -0
  245. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/prompt_analyzer.py +0 -0
  246. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/session_handler.py +0 -0
  247. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/session_summary.py +0 -0
  248. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/state_manager.py +0 -0
  249. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/subagent_detection.py +0 -0
  250. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/task_enforcer.py +0 -0
  251. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/task_validator.py +0 -0
  252. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/hooks/validator.py +0 -0
  253. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/ids.py +0 -0
  254. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/index.d.ts +0 -0
  255. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/learning.py +0 -0
  256. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/mcp_server.py +0 -0
  257. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/models.py +0 -0
  258. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/README.md +0 -0
  259. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/__init__.py +0 -0
  260. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/analytics.py +0 -0
  261. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/events.py +0 -0
  262. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/fastapi_server.py +0 -0
  263. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/hooks.py +0 -0
  264. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/initialization.py +0 -0
  265. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/initialization.py.backup +0 -0
  266. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/operations/server.py +0 -0
  267. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/__init__.py +0 -0
  268. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/claude_launcher.py +0 -0
  269. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/command_builder.py +0 -0
  270. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/headless_spawner.py +0 -0
  271. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/live_events.py +0 -0
  272. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/model_selection.py +0 -0
  273. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/plugin_manager.py +0 -0
  274. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/prompts.py +0 -0
  275. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/spawners/__init__.py +0 -0
  276. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/spawners/base.py +0 -0
  277. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/spawners/claude.py +0 -0
  278. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/spawners/codex.py +0 -0
  279. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/spawners/copilot.py +0 -0
  280. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/spawners/gemini.py +0 -0
  281. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/subprocess_runner.py +0 -0
  282. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration/task_coordination.py +0 -0
  283. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestration.md +0 -0
  284. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +0 -0
  285. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestrator.py +0 -0
  286. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestrator_config.py +0 -0
  287. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestrator_mode.py +0 -0
  288. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/orchestrator_validator.py +0 -0
  289. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/parallel.py +0 -0
  290. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/parser.py +0 -0
  291. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/planning.py +0 -0
  292. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/pydantic_models.py +0 -0
  293. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/quality_gates.py +0 -0
  294. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/query_builder.py +0 -0
  295. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/reflection.py +0 -0
  296. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/repo_hash.py +0 -0
  297. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/routing.py +0 -0
  298. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/scripts/__init__.py +0 -0
  299. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/scripts/deploy.py +0 -0
  300. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/sdk.py +0 -0
  301. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/server.py +0 -0
  302. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/services/__init__.py +0 -0
  303. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/services/claiming.py +0 -0
  304. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/session_hooks.py +0 -0
  305. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/session_manager.py +0 -0
  306. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/session_registry.py +0 -0
  307. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/session_state.py +0 -0
  308. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/session_warning.py +0 -0
  309. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/setup.py +0 -0
  310. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/spike_index.py +0 -0
  311. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/styles.css +0 -0
  312. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/sync_docs.py +0 -0
  313. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/system_prompts.py +0 -0
  314. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/templates/AGENTS.md.template +0 -0
  315. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/templates/CLAUDE.md.template +0 -0
  316. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/templates/GEMINI.md.template +0 -0
  317. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/templates/orchestration-view.html +0 -0
  318. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/track_builder.py +0 -0
  319. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/track_manager.py +0 -0
  320. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/transcript.py +0 -0
  321. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/transcript_analytics.py +0 -0
  322. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/types.py +0 -0
  323. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/validation.py +0 -0
  324. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/watch.py +0 -0
  325. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/src/python/htmlgraph/work_type_utils.py +0 -0
  326. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/benchmarks/README.md +0 -0
  327. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/benchmarks/__init__.py +0 -0
  328. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/benchmarks/bench_graph.py +0 -0
  329. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/benchmarks/conftest.py +0 -0
  330. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/__init__.py +0 -0
  331. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_bootstrap.py +0 -0
  332. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_concurrent_sessions.py +0 -0
  333. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_context.py +0 -0
  334. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_event_tracker.py +0 -0
  335. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_git_commands.py +0 -0
  336. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_hybrid_event_capture.py +0 -0
  337. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_prompt_analyzer.py +0 -0
  338. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_session_handler.py +0 -0
  339. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_state_manager.py +0 -0
  340. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_system_prompt_persistence.py +0 -0
  341. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/hooks/test_system_prompt_persistence_integration.py +0 -0
  342. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/multi_agent/README.md +0 -0
  343. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/multi_agent/__init__.py +0 -0
  344. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/multi_agent/test_agent_quirks.py +0 -0
  345. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/multi_agent/test_git_continuity_spine.py +0 -0
  346. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_cigs_hook_flow.py +0 -0
  347. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_cigs_integration.py +0 -0
  348. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_cigs_learning.py +0 -0
  349. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_codex_spawner.py +0 -0
  350. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_complexity_assessment.py +0 -0
  351. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_copilot_spawner_tracking.py +0 -0
  352. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_dashboard_spawner_display.py +0 -0
  353. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_delegation_events.py +0 -0
  354. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_deployment_workflow.py +0 -0
  355. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_discoverability.py +0 -0
  356. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_edge_index_bug.py +0 -0
  357. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_features.py +0 -0
  358. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_gemini_spawner_diagnosis.py +0 -0
  359. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_handoff_routing.py +0 -0
  360. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_multi_agent_coordination.py +0 -0
  361. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_new_features.py +0 -0
  362. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_orchestration_tab.py +0 -0
  363. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_orchestration_with_playwright.py +0 -0
  364. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_orchestrator_pattern.py +0 -0
  365. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_phase4_delegation_events.py +0 -0
  366. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_post_compact_delegation.py +0 -0
  367. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_real_workitem_integration.py +0 -0
  368. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_redesigned_dashboard.py +0 -0
  369. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_spawner_integration.py +0 -0
  370. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_spawner_live_events.py +0 -0
  371. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_spawner_observability_e2e.py +0 -0
  372. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_spawner_routing_live.py +0 -0
  373. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_spawner_tool_tracking.py +0 -0
  374. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_task_delegation.py +0 -0
  375. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_user_query_events.py +0 -0
  376. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_websocket_realtime.py +0 -0
  377. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/test_websocket_streaming.py +0 -0
  378. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/integration/verify_phase1_userquery.py +0 -0
  379. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/js/README.md +0 -0
  380. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/js/test_htmlgraph.html +0 -0
  381. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/manual/test-hook-input.py +0 -0
  382. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/operations/__init__.py +0 -0
  383. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/operations/test_hooks.py +0 -0
  384. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/operations/test_server.py +0 -0
  385. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/__init__.py +0 -0
  386. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/conftest.py +0 -0
  387. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_activity_feed_ui.py +0 -0
  388. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_agent_attribution.py +0 -0
  389. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_agent_detection.py +0 -0
  390. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_analytics.py +0 -0
  391. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_archive_manager.py +0 -0
  392. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_archive_search.py +0 -0
  393. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_atomic_ops.py +0 -0
  394. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_auto_spike.py +0 -0
  395. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_cigs_pretool_enforcer.py +0 -0
  396. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_claiming.py +0 -0
  397. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_cli_commands.py +0 -0
  398. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_cli_pydantic_models.py +0 -0
  399. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_cli_rich_output.py +0 -0
  400. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_collection_filter.py +0 -0
  401. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_cost_analyzer.py +0 -0
  402. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_cross_agent_attribution.py +0 -0
  403. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_cross_session_analytics.py +0 -0
  404. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_dashboard_attribution.py +0 -0
  405. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_dashboard_ui.py +0 -0
  406. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_delegation_fk_fix.py +0 -0
  407. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_delete.py +0 -0
  408. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_deploy.py +0 -0
  409. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_drift_parent_activity.py +0 -0
  410. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_drift_queue_cleanup.py +0 -0
  411. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_edge_index.py +0 -0
  412. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_error_handling.py +0 -0
  413. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_event_index.py +0 -0
  414. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_event_query.py +0 -0
  415. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_event_tracing.py +0 -0
  416. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_feature_track_linkage_phase1.py +0 -0
  417. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_find_api.py +0 -0
  418. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_git_events.py +0 -0
  419. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_graph_traversal.py +0 -0
  420. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_handoff.py +0 -0
  421. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_headless_spawner.py +0 -0
  422. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_headless_spawner_parent_session.py +0 -0
  423. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_ids.py +0 -0
  424. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_install_hooks.py +0 -0
  425. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_lifecycle.py +0 -0
  426. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_mcp_server.py +0 -0
  427. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_mcp_stdio_transport.py +0 -0
  428. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_models.py +0 -0
  429. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_orchestration.py +0 -0
  430. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_orchestrator_circuit_breaker.py +0 -0
  431. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_orchestrator_cli.py +0 -0
  432. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_orchestrator_enforce_hook.py +0 -0
  433. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_orchestrator_mode.py +0 -0
  434. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_parent_child_event_linking.py +0 -0
  435. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_parent_child_linking.py +0 -0
  436. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_parent_linking_integration.py +0 -0
  437. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_pattern_storage.py +0 -0
  438. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_plugin_update_preservation.py +0 -0
  439. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_post_tool_use_failure.py +0 -0
  440. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_post_tool_use_handler.py +0 -0
  441. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_posttooluse_cigs.py +0 -0
  442. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_pre_commit_hooks.py +0 -0
  443. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_pre_work_validation_integration.py +0 -0
  444. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_pretooluse_event_hierarchy.py +0 -0
  445. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_quality_gates.py +0 -0
  446. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_query_builder.py +0 -0
  447. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_query_cache.py +0 -0
  448. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_query_compilation.py +0 -0
  449. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_reflection.py +0 -0
  450. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_repo_hash.py +0 -0
  451. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_routing.py +0 -0
  452. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_sdk_discoverability.py +0 -0
  453. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_sdk_get_active_work_item.py +0 -0
  454. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_sdk_parent_session.py +0 -0
  455. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_sdk_sqlite_integration.py +0 -0
  456. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_session_cleanup.py +0 -0
  457. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_session_continuity.py +0 -0
  458. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_session_integration.py +0 -0
  459. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_session_registry.py +0 -0
  460. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_session_start_cigs.py +0 -0
  461. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_session_start_info_validation.py +0 -0
  462. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_session_state_manager.py +0 -0
  463. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_spawner_agents.py +0 -0
  464. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_spawner_routing.py +0 -0
  465. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_sqlite_schema.py +0 -0
  466. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_stop_cigs.py +0 -0
  467. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_system_overhead_drift.py +0 -0
  468. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_template_system.py +0 -0
  469. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_todo_collection.py +0 -0
  470. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_traces_collection.py +0 -0
  471. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_track_loading.py +0 -0
  472. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_transcript_linking.py +0 -0
  473. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_update_preserves_incoming_edges.py +0 -0
  474. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_user_prompt_submit_cigs.py +0 -0
  475. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_validate_work_hook.py +0 -0
  476. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_version_migration.py +0 -0
  477. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_violation_tracker.py +0 -0
  478. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_work_queue.py +0 -0
  479. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/python/test_work_type.py +0 -0
  480. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_agent_routing.py +0 -0
  481. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_autonomy_recommender.py +0 -0
  482. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_cigs_cli.py +0 -0
  483. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_cigs_cost_calculator.py +0 -0
  484. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_cigs_cost_reporter.py +0 -0
  485. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_cigs_imperative_messages.py +0 -0
  486. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_cigs_messages_basic.py +0 -0
  487. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_cli_output_snapshots.py +0 -0
  488. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_cli_sdk_parity.py +0 -0
  489. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_deployment_models.py +0 -0
  490. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_event_log.py +0 -0
  491. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_hybrid_event_capture.py +0 -0
  492. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_orchestrator_config.py +0 -0
  493. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_orchestrator_validator.py +0 -0
  494. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_pattern_detector.py +0 -0
  495. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_sdk_api_surface.py +0 -0
  496. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_sdk_operations.py +0 -0
  497. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_transaction_snapshot.py +0 -0
  498. {htmlgraph-0.26.20 → htmlgraph-0.26.22}/tests/test_transcript.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: htmlgraph
3
- Version: 0.26.20
3
+ Version: 0.26.22
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.20",
3
+ "version": "0.26.22",
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.20"
3
+ version = "0.26.22"
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.20"
98
+ __version__ = "0.26.22"
99
99
  __all__ = [
100
100
  # Exceptions
101
101
  "HtmlGraphError",
@@ -709,6 +709,7 @@ def track_event(hook_type: str, hook_input: dict[str, Any]) -> dict[str, Any]:
709
709
  db = None
710
710
  try:
711
711
  from htmlgraph.config import get_database_path
712
+ from htmlgraph.db.schema import HtmlGraphDB
712
713
 
713
714
  db = HtmlGraphDB(str(get_database_path()))
714
715
  except Exception as e:
@@ -1129,36 +1130,51 @@ def track_event(hook_type: str, hook_input: dict[str, Any]) -> dict[str, Any]:
1129
1130
  # This handles Claude Code's session reuse where parent_session_id is NULL
1130
1131
  # When tool calls come from a subagent, they should be under the task_delegation parent,
1131
1132
  # NOT under UserQuery. So we MUST check for active tasks BEFORE falling back to UserQuery.
1132
- elif db:
1133
+ # IMPORTANT: This must work EVEN IF db is None, so try to get it from htmlgraph_db
1134
+ else:
1135
+ # Ensure we have a db connection (may not have been passed in for parent session)
1136
+ db_to_use = db
1137
+ if not db_to_use:
1138
+ try:
1139
+ from htmlgraph.config import get_database_path
1140
+ from htmlgraph.db.schema import HtmlGraphDB
1141
+
1142
+ db_to_use = HtmlGraphDB(str(get_database_path()))
1143
+ except Exception:
1144
+ db_to_use = None
1145
+
1133
1146
  # Try to find an active task_delegation event
1134
- try:
1135
- cursor = db.connection.cursor() # type: ignore[union-attr]
1136
- cursor.execute(
1137
- """
1138
- SELECT event_id
1139
- FROM agent_events
1140
- WHERE event_type = 'task_delegation'
1141
- AND status = 'started'
1142
- ORDER BY timestamp DESC
1143
- LIMIT 1
1144
- """,
1145
- )
1146
- task_row = cursor.fetchone()
1147
- if task_row:
1148
- parent_activity_id = task_row[0]
1147
+ if db_to_use:
1148
+ try:
1149
+ cursor = db_to_use.connection.cursor() # type: ignore[union-attr]
1150
+ cursor.execute(
1151
+ """
1152
+ SELECT event_id
1153
+ FROM agent_events
1154
+ WHERE event_type = 'task_delegation'
1155
+ AND status = 'started'
1156
+ ORDER BY timestamp DESC
1157
+ LIMIT 1
1158
+ """,
1159
+ )
1160
+ task_row = cursor.fetchone()
1161
+ if task_row:
1162
+ parent_activity_id = task_row[0]
1163
+ print(
1164
+ f"DEBUG: Found active task_delegation={parent_activity_id} in parent_activity_id fallback",
1165
+ file=sys.stderr,
1166
+ )
1167
+ except Exception as e:
1149
1168
  print(
1150
- f"DEBUG: Found active task_delegation={parent_activity_id} in parent_activity_id fallback",
1169
+ f"DEBUG: Error finding task_delegation in parent_activity_id: {e}",
1151
1170
  file=sys.stderr,
1152
1171
  )
1153
- except Exception as e:
1154
- print(
1155
- f"DEBUG: Error finding task_delegation in parent_activity_id: {e}",
1156
- file=sys.stderr,
1157
- )
1158
1172
 
1159
- # Only if no active task found, fall back to UserQuery
1160
- if not parent_activity_id:
1161
- parent_activity_id = get_parent_user_query(db, active_session_id)
1173
+ # Only if no active task found, fall back to UserQuery
1174
+ if not parent_activity_id:
1175
+ parent_activity_id = get_parent_user_query(
1176
+ db_to_use, active_session_id
1177
+ )
1162
1178
 
1163
1179
  # Track the activity
1164
1180
  nudge = None
@@ -204,6 +204,52 @@ def get_parent_event_start_time(db_path: str, parent_event_id: str) -> str | Non
204
204
  return None
205
205
 
206
206
 
207
+ def get_parent_event_from_db(db_path: str) -> str | None:
208
+ """
209
+ Query database for the most recent task_delegation event.
210
+
211
+ Used when HTMLGRAPH_PARENT_EVENT environment variable is not available
212
+ (due to inter-process communication limitations).
213
+
214
+ Args:
215
+ db_path: Path to SQLite database
216
+
217
+ Returns:
218
+ Parent event ID (evt-XXXXX) or None if not found
219
+ """
220
+ try:
221
+ conn = sqlite3.connect(db_path)
222
+ cursor = conn.cursor()
223
+
224
+ # Query for the most recent task_delegation with status='started'
225
+ # This is the task that spawned the current subagent
226
+ query = """
227
+ SELECT event_id FROM agent_events
228
+ WHERE event_type = 'task_delegation'
229
+ AND status = 'started'
230
+ ORDER BY timestamp DESC
231
+ LIMIT 1
232
+ """
233
+
234
+ cursor.execute(query)
235
+ result = cursor.fetchone()
236
+ conn.close()
237
+
238
+ if result:
239
+ parent_event_id: str = result[0]
240
+ logger.debug(
241
+ f"Found parent task_delegation from database: {parent_event_id}"
242
+ )
243
+ return parent_event_id
244
+
245
+ logger.debug("No active task_delegation found in database")
246
+ return None
247
+
248
+ except Exception as e:
249
+ logger.warning(f"Error querying for parent event: {e}")
250
+ return None
251
+
252
+
207
253
  def handle_subagent_stop(hook_input: dict[str, Any]) -> dict[str, Any]:
208
254
  """
209
255
  Handle SubagentStop hook event.
@@ -222,14 +268,13 @@ def handle_subagent_stop(hook_input: dict[str, Any]) -> dict[str, Any]:
222
268
  Returns:
223
269
  Response: {"continue": True} with optional context
224
270
  """
225
- # Get parent event ID from environment
271
+ # Try to get parent event ID from environment (set by PreToolUse hook)
226
272
  parent_event_id = get_parent_event_id()
227
273
 
228
- if not parent_event_id:
229
- logger.debug("No parent event ID found, skipping subagent stop tracking")
230
- return {"continue": True}
231
-
232
- # Get project directory and database path
274
+ # If not available in environment, query database
275
+ # (environment variables may not be inherited across subagent process boundary)
276
+ # Get project directory and database path (reuse for both env and db lookup)
277
+ db_path = None
233
278
  try:
234
279
  from htmlgraph.config import get_database_path
235
280
 
@@ -244,6 +289,20 @@ def handle_subagent_stop(hook_input: dict[str, Any]) -> dict[str, Any]:
244
289
  logger.warning(f"Error resolving database path: {e}")
245
290
  return {"continue": True}
246
291
 
292
+ # If parent event ID not in environment, query database
293
+ if not parent_event_id:
294
+ logger.debug("Parent event ID not in environment, querying database...")
295
+ try:
296
+ parent_event_id = get_parent_event_from_db(db_path)
297
+ except Exception as e:
298
+ logger.debug(f"Could not query database for parent event: {e}")
299
+
300
+ if not parent_event_id:
301
+ logger.debug(
302
+ "No parent event ID found (env or db), skipping subagent stop tracking"
303
+ )
304
+ return {"continue": True}
305
+
247
306
  # Get parent event start time
248
307
  parent_start_time = get_parent_event_start_time(db_path, parent_event_id)
249
308
  if not parent_start_time:
@@ -341,7 +341,9 @@ class TestOrchestratorDelegationLogic:
341
341
  / "plugin.json"
342
342
  )
343
343
 
344
- @pytest.mark.skip(reason="Agent structure changed - gemini agent with capabilities not in current plugin.json")
344
+ @pytest.mark.skip(
345
+ reason="Agent structure changed - gemini agent with capabilities not in current plugin.json"
346
+ )
345
347
  def test_orchestrator_delegates_to_gemini_for_exploration(
346
348
  self, plugin_json_path: Path
347
349
  ) -> None:
@@ -372,7 +374,9 @@ class TestOrchestratorDelegationLogic:
372
374
  f"Expected gemini for exploration, got {best_agent}"
373
375
  )
374
376
 
375
- @pytest.mark.skip(reason="Agent structure changed - codex agent with capabilities not in current plugin.json")
377
+ @pytest.mark.skip(
378
+ reason="Agent structure changed - codex agent with capabilities not in current plugin.json"
379
+ )
376
380
  def test_orchestrator_delegates_to_codex_for_implementation(
377
381
  self, plugin_json_path: Path
378
382
  ) -> None:
@@ -398,7 +402,9 @@ class TestOrchestratorDelegationLogic:
398
402
  f"Expected codex for implementation, got {best_agent}"
399
403
  )
400
404
 
401
- @pytest.mark.skip(reason="Agent structure changed - copilot agent with capabilities not in current plugin.json")
405
+ @pytest.mark.skip(
406
+ reason="Agent structure changed - copilot agent with capabilities not in current plugin.json"
407
+ )
402
408
  def test_orchestrator_delegates_to_copilot_for_git_operations(
403
409
  self, plugin_json_path: Path
404
410
  ) -> None:
@@ -423,7 +429,9 @@ class TestOrchestratorDelegationLogic:
423
429
  f"Expected copilot for git_operations, got {best_agent}"
424
430
  )
425
431
 
426
- @pytest.mark.skip(reason="Agent structure changed - fallback field not present in current plugin.json")
432
+ @pytest.mark.skip(
433
+ reason="Agent structure changed - fallback field not present in current plugin.json"
434
+ )
427
435
  def test_orchestrator_failure_handling_transparent(
428
436
  self, plugin_json_path: Path
429
437
  ) -> None:
@@ -508,7 +516,9 @@ class TestSpawnerCliRequirements:
508
516
  / "plugin.json"
509
517
  )
510
518
 
511
- @pytest.mark.skip(reason="Agent structure changed - spawner agents not present in current plugin.json")
519
+ @pytest.mark.skip(
520
+ reason="Agent structure changed - spawner agents not present in current plugin.json"
521
+ )
512
522
  def test_all_spawners_declare_cli_requirement(self, plugin_json_path: Path) -> None:
513
523
  """Verify each spawner declares which CLI it requires."""
514
524
  plugin_json = json.loads(plugin_json_path.read_text())
@@ -530,7 +540,9 @@ class TestSpawnerCliRequirements:
530
540
  f"Agent {agent_name} requires {agent_config['requires_cli']}, expected {expected_cli}"
531
541
  )
532
542
 
533
- @pytest.mark.skip(reason="Agent structure changed - fallback field not present in current plugin.json")
543
+ @pytest.mark.skip(
544
+ reason="Agent structure changed - fallback field not present in current plugin.json"
545
+ )
534
546
  def test_spawners_have_no_fallback(self, plugin_json_path: Path) -> None:
535
547
  """Verify spawners explicitly have no fallback behavior."""
536
548
  plugin_json = json.loads(plugin_json_path.read_text())
@@ -545,7 +557,9 @@ class TestSpawnerCliRequirements:
545
557
  )
546
558
 
547
559
 
548
- @pytest.mark.skip(reason="Agent structure changed - capabilities field not present in current plugin.json")
560
+ @pytest.mark.skip(
561
+ reason="Agent structure changed - capabilities field not present in current plugin.json"
562
+ )
549
563
  class TestAgentCapabilityMatching:
550
564
  """Test orchestrator can match tasks to agents based on capabilities."""
551
565
 
File without changes
File without changes