htmlgraph 0.26.5__tar.gz → 0.26.6__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 (499) hide show
  1. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/.gitignore +8 -0
  2. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/PKG-INFO +1 -1
  3. htmlgraph-0.26.6/examples/demo_agent_planning.py +172 -0
  4. htmlgraph-0.26.6/examples/demo_real_project_analytics.py +130 -0
  5. htmlgraph-0.26.6/examples/demo_sdk_operations.py +163 -0
  6. htmlgraph-0.26.6/examples/example_query_compilation.py +100 -0
  7. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/gemini-extension.json +1 -1
  8. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/pyproject.toml +2 -2
  9. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/.htmlgraph/.session-warning-state.json +1 -1
  10. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/__init__.py +1 -1
  11. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/main.py +50 -10
  12. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/dashboard-redesign.html +608 -54
  13. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/activity-feed.html +21 -0
  14. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/features.html +81 -12
  15. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/orchestration.html +35 -0
  16. htmlgraph-0.26.6/src/python/htmlgraph/cli/.htmlgraph/.session-warning-state.json +6 -0
  17. htmlgraph-0.26.6/src/python/htmlgraph/cli/.htmlgraph/agents.json +72 -0
  18. htmlgraph-0.26.6/src/python/htmlgraph/cli/__init__.py +42 -0
  19. htmlgraph-0.26.6/src/python/htmlgraph/cli/__main__.py +6 -0
  20. htmlgraph-0.26.6/src/python/htmlgraph/cli/analytics.py +939 -0
  21. htmlgraph-0.26.6/src/python/htmlgraph/cli/base.py +660 -0
  22. htmlgraph-0.26.6/src/python/htmlgraph/cli/constants.py +206 -0
  23. htmlgraph-0.26.6/src/python/htmlgraph/cli/core.py +856 -0
  24. htmlgraph-0.26.6/src/python/htmlgraph/cli/main.py +143 -0
  25. htmlgraph-0.26.6/src/python/htmlgraph/cli/models.py +462 -0
  26. htmlgraph-0.26.6/src/python/htmlgraph/cli/templates/__init__.py +1 -0
  27. htmlgraph-0.26.6/src/python/htmlgraph/cli/templates/cost_dashboard.py +398 -0
  28. htmlgraph-0.26.6/src/python/htmlgraph/cli/work/__init__.py +159 -0
  29. htmlgraph-0.26.6/src/python/htmlgraph/cli/work/features.py +567 -0
  30. htmlgraph-0.26.6/src/python/htmlgraph/cli/work/orchestration.py +675 -0
  31. htmlgraph-0.26.6/src/python/htmlgraph/cli/work/sessions.py +465 -0
  32. htmlgraph-0.26.6/src/python/htmlgraph/cli/work/tracks.py +485 -0
  33. htmlgraph-0.26.6/src/python/htmlgraph/dashboard.html.backup +6592 -0
  34. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/db/schema.py +8 -3
  35. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/ORCHESTRATION_PATTERNS.md +20 -13
  36. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/README.md +2 -3
  37. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/event_tracker.py +157 -25
  38. htmlgraph-0.26.6/src/python/htmlgraph/hooks/git_commands.py +175 -0
  39. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/orchestrator.py +137 -71
  40. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/orchestrator_reflector.py +23 -0
  41. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/pretooluse.py +29 -6
  42. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/session_handler.py +28 -0
  43. htmlgraph-0.26.6/src/python/htmlgraph/hooks/session_summary.py +391 -0
  44. htmlgraph-0.26.6/src/python/htmlgraph/hooks/subagent_detection.py +202 -0
  45. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/validator.py +192 -79
  46. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/operations/__init__.py +18 -0
  47. htmlgraph-0.26.6/src/python/htmlgraph/operations/initialization.py +596 -0
  48. htmlgraph-0.26.6/src/python/htmlgraph/operations/initialization.py.backup +228 -0
  49. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/orchestration/__init__.py +16 -1
  50. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/claude_launcher.py +185 -0
  51. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/command_builder.py +71 -0
  52. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/headless_spawner.py +277 -0
  53. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/plugin_manager.py +136 -0
  54. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/prompts.py +137 -0
  55. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/spawners/__init__.py +16 -0
  56. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/spawners/base.py +194 -0
  57. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/spawners/claude.py +170 -0
  58. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/spawners/codex.py +442 -0
  59. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/spawners/copilot.py +299 -0
  60. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/spawners/gemini.py +478 -0
  61. htmlgraph-0.26.6/src/python/htmlgraph/orchestration/subprocess_runner.py +33 -0
  62. htmlgraph-0.26.6/src/python/htmlgraph/orchestration.md +563 -0
  63. htmlgraph-0.26.6/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +863 -0
  64. htmlgraph-0.26.6/src/python/htmlgraph/orchestrator_config.py +357 -0
  65. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/orchestrator_mode.py +45 -12
  66. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/transcript.py +16 -4
  67. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_event_tracker.py +249 -0
  68. htmlgraph-0.26.6/tests/hooks/test_git_commands.py +306 -0
  69. htmlgraph-0.26.6/tests/integration/test_codex_spawner.py +348 -0
  70. htmlgraph-0.26.6/tests/integration/test_complexity_assessment.py +418 -0
  71. htmlgraph-0.26.6/tests/integration/test_copilot_spawner_tracking.py +400 -0
  72. htmlgraph-0.26.6/tests/integration/test_delegation_events.py +133 -0
  73. htmlgraph-0.26.6/tests/integration/test_discoverability.py +164 -0
  74. htmlgraph-0.26.6/tests/integration/test_edge_index_bug.py +116 -0
  75. htmlgraph-0.26.6/tests/integration/test_features.py +96 -0
  76. htmlgraph-0.26.6/tests/integration/test_gemini_spawner_diagnosis.py +72 -0
  77. htmlgraph-0.26.6/tests/integration/test_new_features.py +255 -0
  78. htmlgraph-0.26.6/tests/integration/test_orchestration_tab.py +120 -0
  79. htmlgraph-0.26.6/tests/integration/test_orchestration_with_playwright.py +149 -0
  80. htmlgraph-0.26.6/tests/integration/test_orchestrator_pattern.py +175 -0
  81. htmlgraph-0.26.6/tests/integration/test_phase1_userquery.py +103 -0
  82. htmlgraph-0.26.6/tests/integration/test_phase4_delegation_events.py +158 -0
  83. htmlgraph-0.26.6/tests/integration/test_real_workitem_integration.py +324 -0
  84. htmlgraph-0.26.6/tests/integration/test_redesigned_dashboard.py +47 -0
  85. htmlgraph-0.26.6/tests/integration/test_spawner_live_events.py +305 -0
  86. htmlgraph-0.26.6/tests/integration/test_spawner_routing_live.py +353 -0
  87. htmlgraph-0.26.6/tests/integration/test_task_delegation.py +100 -0
  88. htmlgraph-0.26.6/tests/integration/test_user_query_events.py +399 -0
  89. htmlgraph-0.26.6/tests/integration/test_websocket_realtime.py +262 -0
  90. htmlgraph-0.26.6/tests/integration/test_websocket_streaming.py +246 -0
  91. htmlgraph-0.26.6/tests/manual/test-hook-input.py +33 -0
  92. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_cli_commands.py +4 -2
  93. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_cli_rich_output.py +44 -31
  94. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_orchestrator_enforce_hook.py +13 -7
  95. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_parent_child_linking.py +23 -3
  96. htmlgraph-0.26.6/tests/python/test_pretooluse_event_hierarchy.py +494 -0
  97. htmlgraph-0.26.6/tests/test_orchestrator_config.py +354 -0
  98. htmlgraph-0.26.5/src/python/htmlgraph/cli.py +0 -7256
  99. htmlgraph-0.26.5/src/python/htmlgraph/dashboard.html +0 -812
  100. htmlgraph-0.26.5/src/python/htmlgraph/orchestration/headless_spawner.py +0 -1537
  101. htmlgraph-0.26.5/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +0 -298
  102. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/README.md +0 -0
  103. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/agent-coordination/README.md +0 -0
  104. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/agent-coordination/demo.py +0 -0
  105. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/create_auth_track_demo.py +0 -0
  106. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/create_htmlgraph_dev_track.py +0 -0
  107. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/README.md +0 -0
  108. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/agents.json +0 -0
  109. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/demo.py +0 -0
  110. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-api-graph.html +0 -0
  111. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-api-overview.html +0 -0
  112. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-api-sdk.html +0 -0
  113. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-example-advanced.html +0 -0
  114. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-example-basic.html +0 -0
  115. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-index.html +0 -0
  116. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-installation.html +0 -0
  117. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/documentation-site/features/doc-quickstart.html +0 -0
  118. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/handoff-demo.py +0 -0
  119. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/README.md +0 -0
  120. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/agents.json +0 -0
  121. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/demo.py +0 -0
  122. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/features/feat-276c615f.html +0 -0
  123. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/features/feat-7a6f797d.html +0 -0
  124. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/features/note-ai-agents.html +0 -0
  125. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/features/note-graph-db.html +0 -0
  126. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/features/note-htmlgraph.html +0 -0
  127. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/knowledge-base/features/note-web-standards.html +0 -0
  128. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/parallel_task_coordination.py +0 -0
  129. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/routing-demo.py +0 -0
  130. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/sdk_demo.py +0 -0
  131. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/README.md +0 -0
  132. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/demo.py +0 -0
  133. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/index.html +0 -0
  134. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/styles.css +0 -0
  135. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/task-001.html +0 -0
  136. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/task-002.html +0 -0
  137. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/task-003.html +0 -0
  138. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/task-004.html +0 -0
  139. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/task-005.html +0 -0
  140. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/examples/todo-list/task-006.html +0 -0
  141. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/GEMINI.md +0 -0
  142. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/README.md +0 -0
  143. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_deploy.md +0 -0
  144. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_end.md +0 -0
  145. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_feature-add.md +0 -0
  146. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_feature-complete.md +0 -0
  147. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_feature-primary.md +0 -0
  148. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_feature-start.md +0 -0
  149. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_git-commit.md +0 -0
  150. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_help.md +0 -0
  151. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_init.md +0 -0
  152. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_plan.md +0 -0
  153. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_recommend.md +0 -0
  154. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_serve.md +0 -0
  155. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_spike.md +0 -0
  156. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_start.md +0 -0
  157. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_status.md +0 -0
  158. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/command_track.md +0 -0
  159. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/hooks/hooks.json +0 -0
  160. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/hooks/scripts/post-tool.sh +0 -0
  161. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/hooks/scripts/session-end.sh +0 -0
  162. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/packages/gemini-extension/hooks/scripts/session-start.sh +0 -0
  163. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/js/htmlgraph.js +0 -0
  164. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/.htmlgraph/agents.json +0 -0
  165. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/.htmlgraph/htmlgraph.db +0 -0
  166. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/agent_detection.py +0 -0
  167. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/agent_registry.py +0 -0
  168. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/agents.py +0 -0
  169. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/analytics/__init__.py +0 -0
  170. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/analytics/cli.py +0 -0
  171. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/analytics/cross_session.py +0 -0
  172. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/analytics/dependency.py +0 -0
  173. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/analytics/work_type.py +0 -0
  174. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/analytics_index.py +0 -0
  175. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/__init__.py +0 -0
  176. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/static/htmx.min.js +0 -0
  177. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/static/style-redesign.css +0 -0
  178. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/static/style.css +0 -0
  179. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/dashboard.html +0 -0
  180. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/activity-feed-hierarchical.html +0 -0
  181. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/agents-redesign.html +0 -0
  182. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/agents.html +0 -0
  183. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/event-traces.html +0 -0
  184. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/features-kanban-redesign.html +0 -0
  185. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/metrics-redesign.html +0 -0
  186. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/metrics.html +0 -0
  187. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/orchestration-redesign.html +0 -0
  188. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/api/templates/partials/spawners.html +0 -0
  189. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/archive/__init__.py +0 -0
  190. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/archive/bloom.py +0 -0
  191. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/archive/fts.py +0 -0
  192. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/archive/manager.py +0 -0
  193. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/archive/search.py +0 -0
  194. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/atomic_ops.py +0 -0
  195. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/attribute_index.py +0 -0
  196. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/__init__.py +0 -0
  197. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/base.py +0 -0
  198. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/bug.py +0 -0
  199. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/chore.py +0 -0
  200. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/epic.py +0 -0
  201. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/feature.py +0 -0
  202. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/insight.py +0 -0
  203. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/metric.py +0 -0
  204. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/pattern.py +0 -0
  205. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/phase.py +0 -0
  206. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/spike.py +0 -0
  207. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/builders/track.py +0 -0
  208. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/__init__.py +0 -0
  209. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/autonomy.py +0 -0
  210. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/cost.py +0 -0
  211. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/messages_basic.py +0 -0
  212. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/messaging.py +0 -0
  213. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/models.py +0 -0
  214. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/pattern_storage.py +0 -0
  215. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/patterns.py +0 -0
  216. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/posttool_analyzer.py +0 -0
  217. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/reporter.py +0 -0
  218. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cigs/tracker.py +0 -0
  219. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cli_commands/__init__.py +0 -0
  220. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cli_commands/feature.py +0 -0
  221. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cli_framework.py +0 -0
  222. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/__init__.py +0 -0
  223. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/base.py +0 -0
  224. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/bug.py +0 -0
  225. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/chore.py +0 -0
  226. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/epic.py +0 -0
  227. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/feature.py +0 -0
  228. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/insight.py +0 -0
  229. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/metric.py +0 -0
  230. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/pattern.py +0 -0
  231. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/phase.py +0 -0
  232. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/session.py +0 -0
  233. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/spike.py +0 -0
  234. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/task_delegation.py +0 -0
  235. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/todo.py +0 -0
  236. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/collections/traces.py +0 -0
  237. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/config.py +0 -0
  238. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/context_analytics.py +0 -0
  239. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/converter.py +0 -0
  240. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cost_analysis/__init__.py +0 -0
  241. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/cost_analysis/analyzer.py +0 -0
  242. /htmlgraph-0.26.5/src/python/htmlgraph/dashboard.html.backup → /htmlgraph-0.26.6/src/python/htmlgraph/dashboard.html +0 -0
  243. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/dashboard.html.bak +0 -0
  244. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/dashboard.html.bak2 +0 -0
  245. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/dashboard.html.bak3 +0 -0
  246. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/db/__init__.py +0 -0
  247. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/db/queries.py +0 -0
  248. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/dependency_models.py +0 -0
  249. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/deploy.py +0 -0
  250. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/deployment_models.py +0 -0
  251. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/API_REFERENCE.md +0 -0
  252. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/HTTP_API.md +0 -0
  253. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/INTEGRATION_GUIDE.md +0 -0
  254. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/__init__.py +0 -0
  255. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/docs_version.py +0 -0
  256. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/metadata.py +0 -0
  257. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/migrations.py +0 -0
  258. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/template_engine.py +0 -0
  259. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/templates/_sections/cli_reference.md.j2 +0 -0
  260. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/templates/_sections/core_concepts.md.j2 +0 -0
  261. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/templates/_sections/sdk_basics.md.j2 +0 -0
  262. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/templates/base_agents.md.j2 +0 -0
  263. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/templates/example_user_override.md.j2 +0 -0
  264. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/docs/version_check.py +0 -0
  265. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/edge_index.py +0 -0
  266. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/error_handler.py +0 -0
  267. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/event_log.py +0 -0
  268. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/event_migration.py +0 -0
  269. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/exceptions.py +0 -0
  270. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/extensions/gemini/GEMINI.md +0 -0
  271. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/extensions/gemini/README.md +0 -0
  272. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/extensions/gemini/gemini-extension.json +0 -0
  273. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/extensions/gemini/hooks/hooks.json +0 -0
  274. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/extensions/gemini/hooks/scripts/post-tool.sh +0 -0
  275. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-end.sh +0 -0
  276. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-start.sh +0 -0
  277. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/file_watcher.py +0 -0
  278. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/find_api.py +0 -0
  279. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/git_events.py +0 -0
  280. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/graph.py +0 -0
  281. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/.htmlgraph/.session-warning-state.json +0 -0
  282. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/.htmlgraph/agents.json +0 -0
  283. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/.htmlgraph/index.sqlite +0 -0
  284. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/__init__.py +0 -0
  285. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/bootstrap.py +0 -0
  286. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/cigs_pretool_enforcer.py +0 -0
  287. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/concurrent_sessions.py +0 -0
  288. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/context.py +0 -0
  289. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/drift_handler.py +0 -0
  290. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/hooks-config.example.json +0 -0
  291. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/installer.py +0 -0
  292. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/post-checkout.sh +0 -0
  293. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/post-commit.sh +0 -0
  294. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/post-merge.sh +0 -0
  295. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/post_tool_use_failure.py +0 -0
  296. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/post_tool_use_handler.py +0 -0
  297. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/posttooluse.py +0 -0
  298. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/pre-commit.sh +0 -0
  299. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/pre-push.sh +0 -0
  300. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/prompt_analyzer.py +0 -0
  301. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/state_manager.py +0 -0
  302. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/subagent_stop.py +0 -0
  303. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/task_enforcer.py +0 -0
  304. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/hooks/task_validator.py +0 -0
  305. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/ids.py +0 -0
  306. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/index.d.ts +0 -0
  307. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/learning.py +0 -0
  308. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/mcp_server.py +0 -0
  309. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/models.py +0 -0
  310. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/operations/README.md +0 -0
  311. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/operations/analytics.py +0 -0
  312. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/operations/events.py +0 -0
  313. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/operations/fastapi_server.py +0 -0
  314. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/operations/hooks.py +0 -0
  315. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/operations/server.py +0 -0
  316. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/orchestration/live_events.py +0 -0
  317. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/orchestration/model_selection.py +0 -0
  318. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/orchestration/task_coordination.py +0 -0
  319. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/orchestrator.py +0 -0
  320. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/orchestrator_validator.py +0 -0
  321. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/parallel.py +0 -0
  322. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/parser.py +0 -0
  323. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/planning.py +0 -0
  324. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/pydantic_models.py +0 -0
  325. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/quality_gates.py +0 -0
  326. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/query_builder.py +0 -0
  327. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/reflection.py +0 -0
  328. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/repo_hash.py +0 -0
  329. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/routing.py +0 -0
  330. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/scripts/__init__.py +0 -0
  331. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/scripts/deploy.py +0 -0
  332. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/sdk.py +0 -0
  333. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/server.py +0 -0
  334. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/services/__init__.py +0 -0
  335. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/services/claiming.py +0 -0
  336. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/session_hooks.py +0 -0
  337. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/session_manager.py +0 -0
  338. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/session_registry.py +0 -0
  339. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/session_state.py +0 -0
  340. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/session_warning.py +0 -0
  341. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/setup.py +0 -0
  342. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/spike_index.py +0 -0
  343. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/styles.css +0 -0
  344. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/sync_docs.py +0 -0
  345. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/system_prompts.py +0 -0
  346. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/templates/AGENTS.md.template +0 -0
  347. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/templates/CLAUDE.md.template +0 -0
  348. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/templates/GEMINI.md.template +0 -0
  349. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/templates/orchestration-view.html +0 -0
  350. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/track_builder.py +0 -0
  351. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/track_manager.py +0 -0
  352. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/transcript_analytics.py +0 -0
  353. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/types.py +0 -0
  354. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/validation.py +0 -0
  355. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/watch.py +0 -0
  356. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/src/python/htmlgraph/work_type_utils.py +0 -0
  357. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/benchmarks/README.md +0 -0
  358. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/benchmarks/__init__.py +0 -0
  359. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/benchmarks/bench_graph.py +0 -0
  360. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/benchmarks/conftest.py +0 -0
  361. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/__init__.py +0 -0
  362. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_bootstrap.py +0 -0
  363. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_concurrent_sessions.py +0 -0
  364. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_context.py +0 -0
  365. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_hybrid_event_capture.py +0 -0
  366. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_prompt_analyzer.py +0 -0
  367. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_session_handler.py +0 -0
  368. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_state_manager.py +0 -0
  369. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_system_prompt_persistence.py +0 -0
  370. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/hooks/test_system_prompt_persistence_integration.py +0 -0
  371. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/multi_agent/README.md +0 -0
  372. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/multi_agent/__init__.py +0 -0
  373. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/multi_agent/test_agent_quirks.py +0 -0
  374. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/multi_agent/test_git_continuity_spine.py +0 -0
  375. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_cigs_hook_flow.py +0 -0
  376. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_cigs_integration.py +0 -0
  377. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_cigs_learning.py +0 -0
  378. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_dashboard_spawner_display.py +0 -0
  379. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_deployment_workflow.py +0 -0
  380. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_handoff_routing.py +0 -0
  381. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_multi_agent_coordination.py +0 -0
  382. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_orchestrator_spawner_delegation.py +0 -0
  383. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_post_compact_delegation.py +0 -0
  384. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_spawner_integration.py +0 -0
  385. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_spawner_observability_e2e.py +0 -0
  386. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/integration/test_spawner_tool_tracking.py +0 -0
  387. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/js/README.md +0 -0
  388. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/js/test_htmlgraph.html +0 -0
  389. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/operations/__init__.py +0 -0
  390. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/operations/test_hooks.py +0 -0
  391. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/operations/test_server.py +0 -0
  392. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/__init__.py +0 -0
  393. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/conftest.py +0 -0
  394. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_activity_feed_ui.py +0 -0
  395. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_agent_attribution.py +0 -0
  396. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_agent_detection.py +0 -0
  397. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_analytics.py +0 -0
  398. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_archive_manager.py +0 -0
  399. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_archive_search.py +0 -0
  400. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_atomic_ops.py +0 -0
  401. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_auto_spike.py +0 -0
  402. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_cigs_pretool_enforcer.py +0 -0
  403. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_claiming.py +0 -0
  404. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_cli_pydantic_models.py +0 -0
  405. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_collection_filter.py +0 -0
  406. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_cost_analyzer.py +0 -0
  407. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_cross_agent_attribution.py +0 -0
  408. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_cross_session_analytics.py +0 -0
  409. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_dashboard_attribution.py +0 -0
  410. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_dashboard_ui.py +0 -0
  411. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_delegation_fk_fix.py +0 -0
  412. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_delete.py +0 -0
  413. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_deploy.py +0 -0
  414. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_drift_parent_activity.py +0 -0
  415. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_drift_queue_cleanup.py +0 -0
  416. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_edge_index.py +0 -0
  417. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_error_handling.py +0 -0
  418. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_event_index.py +0 -0
  419. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_event_query.py +0 -0
  420. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_event_tracing.py +0 -0
  421. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_feature_track_linkage_phase1.py +0 -0
  422. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_find_api.py +0 -0
  423. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_git_events.py +0 -0
  424. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_graph_traversal.py +0 -0
  425. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_handoff.py +0 -0
  426. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_headless_spawner.py +0 -0
  427. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_headless_spawner_parent_session.py +0 -0
  428. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_ids.py +0 -0
  429. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_install_hooks.py +0 -0
  430. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_lifecycle.py +0 -0
  431. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_mcp_server.py +0 -0
  432. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_mcp_stdio_transport.py +0 -0
  433. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_models.py +0 -0
  434. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_orchestration.py +0 -0
  435. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_orchestrator_circuit_breaker.py +0 -0
  436. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_orchestrator_cli.py +0 -0
  437. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_orchestrator_mode.py +0 -0
  438. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_parent_child_event_linking.py +0 -0
  439. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_parent_linking_integration.py +0 -0
  440. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_pattern_storage.py +0 -0
  441. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_plugin_update_preservation.py +0 -0
  442. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_post_tool_use_failure.py +0 -0
  443. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_post_tool_use_handler.py +0 -0
  444. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_posttooluse_cigs.py +0 -0
  445. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_pre_commit_hooks.py +0 -0
  446. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_pre_work_validation_integration.py +0 -0
  447. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_quality_gates.py +0 -0
  448. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_query_builder.py +0 -0
  449. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_query_cache.py +0 -0
  450. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_query_compilation.py +0 -0
  451. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_reflection.py +0 -0
  452. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_repo_hash.py +0 -0
  453. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_routing.py +0 -0
  454. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_sdk_discoverability.py +0 -0
  455. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_sdk_get_active_work_item.py +0 -0
  456. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_sdk_parent_session.py +0 -0
  457. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_sdk_sqlite_integration.py +0 -0
  458. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_session_cleanup.py +0 -0
  459. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_session_continuity.py +0 -0
  460. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_session_integration.py +0 -0
  461. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_session_registry.py +0 -0
  462. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_session_start_cigs.py +0 -0
  463. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_session_start_info_validation.py +0 -0
  464. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_session_state_manager.py +0 -0
  465. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_spawner_agents.py +0 -0
  466. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_spawner_routing.py +0 -0
  467. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_sqlite_schema.py +0 -0
  468. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_stop_cigs.py +0 -0
  469. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_system_overhead_drift.py +0 -0
  470. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_template_system.py +0 -0
  471. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_todo_collection.py +0 -0
  472. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_traces_collection.py +0 -0
  473. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_track_loading.py +0 -0
  474. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_transcript_linking.py +0 -0
  475. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_update_preserves_incoming_edges.py +0 -0
  476. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_user_prompt_submit_cigs.py +0 -0
  477. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_validate_work_hook.py +0 -0
  478. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_version_migration.py +0 -0
  479. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_violation_tracker.py +0 -0
  480. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_work_queue.py +0 -0
  481. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/python/test_work_type.py +0 -0
  482. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_agent_routing.py +0 -0
  483. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_autonomy_recommender.py +0 -0
  484. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_cigs_cli.py +0 -0
  485. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_cigs_cost_calculator.py +0 -0
  486. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_cigs_cost_reporter.py +0 -0
  487. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_cigs_imperative_messages.py +0 -0
  488. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_cigs_messages_basic.py +0 -0
  489. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_cli_output_snapshots.py +0 -0
  490. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_cli_sdk_parity.py +0 -0
  491. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_deployment_models.py +0 -0
  492. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_event_log.py +0 -0
  493. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_hybrid_event_capture.py +0 -0
  494. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_orchestrator_validator.py +0 -0
  495. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_pattern_detector.py +0 -0
  496. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_sdk_api_surface.py +0 -0
  497. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_sdk_operations.py +0 -0
  498. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_transaction_snapshot.py +0 -0
  499. {htmlgraph-0.26.5 → htmlgraph-0.26.6}/tests/test_transcript.py +0 -0
@@ -53,6 +53,14 @@ Thumbs.db
53
53
  .htmlgraph/sessions/*.jsonl
54
54
  .htmlgraph/events/*.jsonl
55
55
  .htmlgraph/parent-activity.json
56
+ .htmlgraph/logs/errors/
57
+
58
+ # HtmlGraph backup and test files
59
+ .htmlgraph/index.sqlite.backup
60
+ .htmlgraph/*.backup
61
+ .htmlgraph/test_*.db
62
+ .htmlgraph/database.db
63
+ .htmlgraph/.htmlgraph/ # Prevent nested structure corruption
56
64
 
57
65
  # Keep these (source of truth):
58
66
  # - .htmlgraph/features/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: htmlgraph
3
- Version: 0.26.5
3
+ Version: 0.26.6
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
@@ -0,0 +1,172 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Demo: AI Agent Strategic Planning with HtmlGraph
4
+
5
+ Shows how AI agents can use the strategic planning features to:
6
+ - Find bottlenecks blocking the most work
7
+ - Identify parallel work opportunities
8
+ - Get smart recommendations on what to work on next
9
+ - Assess project risks
10
+ - Analyze impact of completing tasks
11
+
12
+ This is the AGENT-FRIENDLY interface - simple dicts, no complex objects.
13
+ """
14
+
15
+ from htmlgraph import SDK
16
+
17
+
18
+ def main():
19
+ print("\n" + "🤖 " * 35)
20
+ print("AI AGENT STRATEGIC PLANNING DEMO")
21
+ print("🤖 " * 35)
22
+
23
+ # Initialize SDK with agent ID
24
+ sdk = SDK(agent="claude")
25
+
26
+ # =========================================================================
27
+ # 1. FIND BOTTLENECKS
28
+ # =========================================================================
29
+ print("\n1. 🚧 Finding Bottlenecks (what's blocking the most work?)")
30
+ print("=" * 70)
31
+
32
+ bottlenecks = sdk.find_bottlenecks(top_n=3)
33
+
34
+ if bottlenecks:
35
+ print(f"\nFound {len(bottlenecks)} bottlenecks:")
36
+ for i, bn in enumerate(bottlenecks, 1):
37
+ print(f"\n{i}. {bn['title']}")
38
+ print(f" Status: {bn['status']} | Priority: {bn['priority']}")
39
+ print(f" Blocking: {bn['blocks_count']} tasks")
40
+ print(f" Impact score: {bn['impact_score']:.1f}")
41
+ if bn["blocked_tasks"]:
42
+ print(f" Blocks: {', '.join(bn['blocked_tasks'][:3])}")
43
+ else:
44
+ print(" ✓ No bottlenecks found!")
45
+
46
+ # =========================================================================
47
+ # 2. GET PARALLEL WORK OPPORTUNITIES
48
+ # =========================================================================
49
+ print("\n2. ⚡ Finding Parallel Work (what can multiple agents do simultaneously?)")
50
+ print("=" * 70)
51
+
52
+ parallel = sdk.get_parallel_work(max_agents=5)
53
+
54
+ print(
55
+ f"\nMax parallelism: {parallel['max_parallelism']} tasks can be worked on at once"
56
+ )
57
+ print(f"Total ready now: {parallel['total_ready']} tasks")
58
+ print(f"Dependency levels: {parallel['level_count']}")
59
+
60
+ if parallel["ready_now"]:
61
+ print(f"\nReady to start immediately ({len(parallel['ready_now'])} tasks):")
62
+ for task_id in parallel["ready_now"]:
63
+ feature = sdk.features.get(task_id)
64
+ if feature:
65
+ print(f" - {feature.title} ({feature.priority} priority)")
66
+
67
+ # =========================================================================
68
+ # 3. GET SMART RECOMMENDATIONS
69
+ # =========================================================================
70
+ print("\n3. 💡 Smart Recommendations (what should I prioritize?)")
71
+ print("=" * 70)
72
+
73
+ recs = sdk.recommend_next_work(agent_count=3)
74
+
75
+ if recs:
76
+ print(f"\nTop {len(recs)} recommended tasks:")
77
+ for i, rec in enumerate(recs, 1):
78
+ print(f"\n{i}. {rec['title']}")
79
+ print(f" Priority: {rec['priority']} | Score: {rec['score']:.2f}")
80
+ if rec["estimated_hours"] > 0:
81
+ print(f" Estimated: {rec['estimated_hours']:.1f} hours")
82
+ print(f" Unlocks: {rec['unlocks_count']} tasks")
83
+ print(" Reasons:")
84
+ for reason in rec["reasons"][:3]:
85
+ print(f" - {reason}")
86
+ else:
87
+ print(" ✓ No pending tasks to recommend!")
88
+
89
+ # =========================================================================
90
+ # 4. ASSESS RISKS
91
+ # =========================================================================
92
+ print("\n4. ⚠️ Risk Assessment (are there dependency issues?)")
93
+ print("=" * 70)
94
+
95
+ risks = sdk.assess_risks()
96
+
97
+ if risks["high_risk_count"] > 0:
98
+ print(f"\n⚠️ {risks['high_risk_count']} high-risk tasks found:")
99
+ for task in risks["high_risk_tasks"][:3]:
100
+ print(f"\n {task['title']} (risk: {task['risk_score']:.2f})")
101
+ for factor in task["risk_factors"]:
102
+ print(f" - {factor}")
103
+ else:
104
+ print(" ✓ No high-risk tasks!")
105
+
106
+ if risks["circular_dependencies"]:
107
+ print(f"\n⚠️ {len(risks['circular_dependencies'])} circular dependencies:")
108
+ for cycle in risks["circular_dependencies"][:3]:
109
+ print(f" - {' → '.join(cycle)}")
110
+ else:
111
+ print(" ✓ No circular dependencies")
112
+
113
+ if risks["orphaned_count"] > 0:
114
+ print(f"\n⚠️ {risks['orphaned_count']} orphaned tasks (no dependents)")
115
+ else:
116
+ print(" ✓ No orphaned tasks")
117
+
118
+ if risks["recommendations"]:
119
+ print("\nRecommendations:")
120
+ for rec in risks["recommendations"][:3]:
121
+ print(f" • {rec}")
122
+
123
+ # =========================================================================
124
+ # 5. ANALYZE IMPACT (if there's a task in progress)
125
+ # =========================================================================
126
+ print("\n5. 📊 Impact Analysis (what does completing a task unlock?)")
127
+ print("=" * 70)
128
+
129
+ in_progress = sdk.features.where(status="in-progress")
130
+ if in_progress:
131
+ task = in_progress[0]
132
+ impact = sdk.analyze_impact(task.id)
133
+
134
+ print(f"\nAnalyzing: {task.title}")
135
+ print(f" Direct dependents: {impact['direct_dependents']}")
136
+ print(f" Total downstream impact: {impact['total_impact']} tasks")
137
+ print(
138
+ f" Completion unlocks: {impact['completion_impact']:.1f}% of remaining work"
139
+ )
140
+ if impact["affected_tasks"]:
141
+ print(f" Unlocks: {', '.join(impact['affected_tasks'][:5])}")
142
+ else:
143
+ print(" No in-progress tasks to analyze")
144
+
145
+ # =========================================================================
146
+ # AGENT DECISION-MAKING EXAMPLE
147
+ # =========================================================================
148
+ print("\n" + "=" * 70)
149
+ print("🤖 AGENT DECISION FLOW EXAMPLE")
150
+ print("=" * 70)
151
+
152
+ print("\nHow an AI agent might use these features:")
153
+ print("\n1. Check for bottlenecks → Focus on unblocking high-impact work")
154
+ print("2. Get recommendations → See what's most valuable to work on")
155
+ print("3. Check parallel work → Coordinate with other agents if available")
156
+ print("4. Assess risks → Be aware of potential issues")
157
+ print("5. Analyze impact → Understand the value of completing tasks")
158
+
159
+ if recs:
160
+ top_rec = recs[0]
161
+ print(f"\n💡 SUGGESTED ACTION: Work on '{top_rec['title']}'")
162
+ print(
163
+ f" Why: Score {top_rec['score']:.1f} - {', '.join(top_rec['reasons'][:2])}"
164
+ )
165
+
166
+ print("\n" + "=" * 70)
167
+ print("✅ Strategic planning features ready for AI agents!")
168
+ print("=" * 70 + "\n")
169
+
170
+
171
+ if __name__ == "__main__":
172
+ main()
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Demo of dependency analytics on the real HtmlGraph project.
4
+
5
+ Shows how to use SDK.dep_analytics to analyze the actual project dependencies.
6
+ """
7
+
8
+ from htmlgraph import SDK
9
+
10
+
11
+ def main():
12
+ print("\n" + "📊 " * 35)
13
+ print("HTMLGRAPH PROJECT - DEPENDENCY ANALYTICS")
14
+ print("📊 " * 35)
15
+
16
+ # Initialize SDK
17
+ sdk = SDK(agent="claude")
18
+
19
+ print("\n1. Finding Bottlenecks (features blocking the most work)...")
20
+ print("=" * 70)
21
+
22
+ bottlenecks = sdk.dep_analytics.find_bottlenecks(
23
+ status_filter=["in-progress", "todo", "blocked"], top_n=5
24
+ )
25
+
26
+ if bottlenecks:
27
+ for i, bn in enumerate(bottlenecks, 1):
28
+ print(f"\n{i}. {bn.title}")
29
+ print(f" Status: {bn.status} | Priority: {bn.priority}")
30
+ print(
31
+ f" Blocking: {bn.transitive_blocking} features (impact: {bn.weighted_impact:.1f})"
32
+ )
33
+ if bn.blocked_nodes:
34
+ print(f" Directly blocks: {', '.join(bn.blocked_nodes[:3])}")
35
+ else:
36
+ print(" ✓ No bottlenecks found!")
37
+
38
+ print("\n2. Parallelization Opportunities (what can we work on simultaneously?)")
39
+ print("=" * 70)
40
+
41
+ parallel = sdk.dep_analytics.find_parallelizable_work(status="todo")
42
+
43
+ print(
44
+ f"\nMax parallelism: {parallel.max_parallelism} features can be worked on at once"
45
+ )
46
+
47
+ if parallel.dependency_levels:
48
+ print(
49
+ f"\nCurrent level (ready to start): {len(parallel.dependency_levels[0].nodes)} features"
50
+ )
51
+ for node_id in parallel.dependency_levels[0].nodes[:5]:
52
+ feature = sdk.features.get(node_id)
53
+ if feature:
54
+ print(f" - {feature.title} ({feature.priority} priority)")
55
+
56
+ print("\n3. Work Recommendations (what should we prioritize?)")
57
+ print("=" * 70)
58
+
59
+ recs = sdk.dep_analytics.recommend_next_tasks(agent_count=3, lookahead=5)
60
+
61
+ if recs.recommendations:
62
+ print(f"\nTop {len(recs.recommendations)} recommended tasks:")
63
+ for i, rec in enumerate(recs.recommendations[:5], 1):
64
+ print(f"\n{i}. {rec.title}")
65
+ print(f" Priority: {rec.priority} | Score: {rec.score:.2f}")
66
+ print(f" Reasons: {', '.join(rec.reasons[:2])}")
67
+ if rec.unlocks:
68
+ print(f" Unlocks: {len(rec.unlocks)} features")
69
+ else:
70
+ print(" ✓ No pending tasks to recommend!")
71
+
72
+ print("\n4. Risk Assessment (are there dependency issues?)")
73
+ print("=" * 70)
74
+
75
+ risk = sdk.dep_analytics.assess_dependency_risk(spof_threshold=2)
76
+
77
+ if risk.high_risk:
78
+ print(f"\n⚠️ High-risk nodes: {len(risk.high_risk)}")
79
+ for node in risk.high_risk[:3]:
80
+ print(f"\n {node.title} (risk: {node.risk_score:.2f})")
81
+ for factor in node.risk_factors:
82
+ print(f" - [{factor.severity}] {factor.description}")
83
+ else:
84
+ print(" ✓ No high-risk dependencies!")
85
+
86
+ if risk.circular_dependencies:
87
+ print(f"\n⚠️ Circular dependencies: {len(risk.circular_dependencies)}")
88
+ for cycle in risk.circular_dependencies[:3]:
89
+ print(f" - {' -> '.join(cycle)}")
90
+ else:
91
+ print(" ✓ No circular dependencies")
92
+
93
+ if risk.orphaned_nodes:
94
+ print(f"\n⚠️ Orphaned nodes (no dependents): {len(risk.orphaned_nodes)}")
95
+ else:
96
+ print(" ✓ No orphaned nodes")
97
+
98
+ if risk.recommendations:
99
+ print("\nRecommendations:")
100
+ for rec in risk.recommendations[:3]:
101
+ print(f" • {rec}")
102
+
103
+ print("\n5. Impact Analysis (what does completing a feature unlock?)")
104
+ print("=" * 70)
105
+
106
+ # Find a feature to analyze
107
+ in_progress = sdk.features.where(status="in-progress")
108
+ if in_progress:
109
+ feature = in_progress[0]
110
+ impact = sdk.dep_analytics.impact_analysis(feature.id)
111
+
112
+ print(f"\nAnalyzing: {feature.title}")
113
+ print(f" Direct dependents: {impact.direct_dependents}")
114
+ print(f" Transitive impact: {impact.transitive_dependents} features")
115
+ print(
116
+ f" Completion unlocks: {impact.completion_impact:.1f}% of remaining work"
117
+ )
118
+
119
+ if impact.affected_nodes:
120
+ print(f" Affects: {', '.join(impact.affected_nodes[:5])}")
121
+ else:
122
+ print(" No in-progress features to analyze")
123
+
124
+ print("\n" + "=" * 70)
125
+ print("✅ Dependency analytics complete!")
126
+ print("=" * 70 + "\n")
127
+
128
+
129
+ if __name__ == "__main__":
130
+ main()
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ SDK Operations Demo - Create features, tracks, and spikes for dashboard monitoring
4
+ """
5
+
6
+ import time
7
+ from datetime import datetime
8
+
9
+ from htmlgraph import SDK
10
+
11
+ # Initialize SDK
12
+ sdk = SDK(agent="demo-agent")
13
+
14
+ # Track events with timestamps
15
+ events = []
16
+
17
+
18
+ def log_event(event_type: str, details: str):
19
+ """Log event with timestamp"""
20
+ timestamp = datetime.now().isoformat()
21
+ event_entry = {"timestamp": timestamp, "type": event_type, "details": details}
22
+ events.append(event_entry)
23
+ print(f"[{timestamp}] {event_type}: {details}")
24
+
25
+
26
+ # ============================================================================
27
+ # STEP 1: Create a track
28
+ # ============================================================================
29
+ print("\n" + "=" * 80)
30
+ print("STEP 1: Creating Track 'Agent Orchestration Demo'")
31
+ print("=" * 80)
32
+
33
+ track = sdk.tracks.create("Agent Orchestration Demo").priority("high").save()
34
+
35
+ log_event("TRACK_CREATED", f"Track created: {track.id} - 'Agent Orchestration Demo'")
36
+ time.sleep(2) # Wait for event to propagate
37
+
38
+ # ============================================================================
39
+ # STEP 2: Create 5 features linked to the track
40
+ # ============================================================================
41
+ print("\n" + "=" * 80)
42
+ print("STEP 2: Creating 5 Features linked to track")
43
+ print("=" * 80)
44
+
45
+ features = []
46
+ for i in range(1, 6):
47
+ feature = sdk.features.create(f"Demo Feature {i}")
48
+ feature.set_track(track.id)
49
+ feature.add_steps(
50
+ [
51
+ "Step 1: Setup component",
52
+ "Step 2: Implement functionality",
53
+ "Step 3: Run tests",
54
+ ]
55
+ )
56
+ feature.save()
57
+
58
+ features.append(feature)
59
+ log_event("FEATURE_CREATED", f"Feature {i} created: {feature.id}")
60
+
61
+ # Space out feature creation events
62
+ time.sleep(2)
63
+
64
+ # ============================================================================
65
+ # STEP 3: Update feature statuses to simulate progress
66
+ # ============================================================================
67
+ print("\n" + "=" * 80)
68
+ print("STEP 3: Updating Feature Statuses")
69
+ print("=" * 80)
70
+
71
+ # Update Feature 1 status to done
72
+ features[0].status = "done"
73
+ sdk.features._ensure_graph().update(features[0])
74
+ log_event("FEATURE_STATUS_CHANGED", f"Feature 1 ({features[0].id}) marked as DONE")
75
+ time.sleep(2)
76
+
77
+ # Update Feature 2 status to in-progress
78
+ features[1].status = "in-progress"
79
+ sdk.features._ensure_graph().update(features[1])
80
+ log_event(
81
+ "FEATURE_STATUS_CHANGED", f"Feature 2 ({features[1].id}) marked as IN_PROGRESS"
82
+ )
83
+ time.sleep(2)
84
+
85
+ # Update Feature 3 status to in-progress
86
+ features[2].status = "in-progress"
87
+ sdk.features._ensure_graph().update(features[2])
88
+ log_event(
89
+ "FEATURE_STATUS_CHANGED", f"Feature 3 ({features[2].id}) marked as IN_PROGRESS"
90
+ )
91
+ time.sleep(2)
92
+
93
+ # Update Feature 4 status to done
94
+ features[3].status = "done"
95
+ sdk.features._ensure_graph().update(features[3])
96
+ log_event("FEATURE_STATUS_CHANGED", f"Feature 4 ({features[3].id}) marked as DONE")
97
+ time.sleep(2)
98
+
99
+ # Feature 5 stays pending (todo status)
100
+ log_event("FEATURE_STATUS_UNCHANGED", f"Feature 5 ({features[4].id}) remaining PENDING")
101
+ time.sleep(2)
102
+
103
+ # ============================================================================
104
+ # STEP 4: Create spikes for investigation
105
+ # ============================================================================
106
+ print("\n" + "=" * 80)
107
+ print("STEP 4: Creating Spikes")
108
+ print("=" * 80)
109
+
110
+ spike1 = sdk.spikes.create("Investigate Performance")
111
+ spike1.set_findings(
112
+ "Performance is excellent with WebSocket updates - achieved 50ms latency"
113
+ )
114
+ spike1.save()
115
+ log_event("SPIKE_CREATED", f"Spike 1 created: {spike1.id} - 'Investigate Performance'")
116
+ time.sleep(2)
117
+
118
+ spike2 = sdk.spikes.create("Research Dashboard Integration")
119
+ spike2.set_findings(
120
+ "Dashboard integration pattern verified - real-time event streaming works"
121
+ )
122
+ spike2.save()
123
+ log_event(
124
+ "SPIKE_CREATED", f"Spike 2 created: {spike2.id} - 'Research Dashboard Integration'"
125
+ )
126
+ time.sleep(2)
127
+
128
+ spike3 = sdk.spikes.create("Evaluate Scalability")
129
+ spike3.set_findings("System handles 1000+ concurrent connections with graph operations")
130
+ spike3.save()
131
+ log_event("SPIKE_CREATED", f"Spike 3 created: {spike3.id} - 'Evaluate Scalability'")
132
+ time.sleep(2)
133
+
134
+ # ============================================================================
135
+ # SUMMARY
136
+ # ============================================================================
137
+ print("\n" + "=" * 80)
138
+ print("SDK OPERATIONS COMPLETED")
139
+ print("=" * 80)
140
+
141
+ print(f"\nTotal Events Generated: {len(events)}")
142
+ print("\nEvent Timeline:")
143
+ print("-" * 80)
144
+
145
+ for i, event in enumerate(events, 1):
146
+ print(f"{i:2d}. [{event['timestamp']}] {event['type']:30s} - {event['details']}")
147
+
148
+ print("\n" + "-" * 80)
149
+ print("Expected Dashboard Activity Feed Updates:")
150
+ print(" - All events should appear on the dashboard within 1-2 seconds")
151
+ print(" - Events are ordered by creation timestamp")
152
+ print(" - Feature/Track/Spike relationships are automatically tracked")
153
+ print("=" * 80)
154
+
155
+ # Additional summary statistics
156
+ print("\nSummary Statistics:")
157
+ print(f" Track created: 1 (ID: {track.id})")
158
+ print(f" Features created: 5 (IDs: {[f.id for f in features]})")
159
+ print(" Features Done: 2 (Features 1, 4)")
160
+ print(" Features In Progress: 2 (Features 2, 3)")
161
+ print(" Features Pending: 1 (Feature 5)")
162
+ print(f" Spikes created: 3 (IDs: {[spike1.id, spike2.id, spike3.id]})")
163
+ print(f" Total operations: {len(events)}")
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Example demonstrating query compilation for CSS selector reuse.
4
+
5
+ This shows how to pre-compile frequently used selectors for better performance.
6
+ """
7
+
8
+ import tempfile
9
+
10
+ from htmlgraph import HtmlGraph
11
+ from htmlgraph.models import Node
12
+
13
+
14
+ def main():
15
+ """Demonstrate query compilation usage."""
16
+ print("🔍 Query Compilation Example\n")
17
+ print("=" * 60)
18
+
19
+ with tempfile.TemporaryDirectory() as tmpdir:
20
+ # Create graph
21
+ graph = HtmlGraph(tmpdir, auto_load=False)
22
+
23
+ # Add sample nodes
24
+ print("\n📝 Adding sample nodes...")
25
+ graph.add(
26
+ Node(id="feat-001", title="Auth System", status="blocked", priority="high")
27
+ )
28
+ graph.add(
29
+ Node(id="feat-002", title="Database", status="blocked", priority="critical")
30
+ )
31
+ graph.add(Node(id="feat-003", title="API", status="todo", priority="high"))
32
+ graph.add(Node(id="feat-004", title="UI", status="done", priority="medium"))
33
+ graph.add(Node(id="feat-005", title="Tests", status="blocked", priority="low"))
34
+
35
+ # Reset metrics for clean measurement
36
+ graph.reset_metrics()
37
+
38
+ # Example 1: Regular query
39
+ print("\n📊 Example 1: Regular Query")
40
+ print("-" * 60)
41
+ results1 = graph.query("[data-status='blocked']")
42
+ print(f"Found {len(results1)} blocked items:")
43
+ for node in results1:
44
+ print(f" - {node.id}: {node.title} ({node.priority} priority)")
45
+
46
+ # Example 2: Pre-compile for reuse
47
+ print("\n📊 Example 2: Pre-compiled Query")
48
+ print("-" * 60)
49
+ compiled = graph.compile_query("[data-status='blocked']")
50
+ print(f"Compiled query for selector: {compiled.selector}")
51
+
52
+ # Use compiled query multiple times
53
+ results2 = graph.query_compiled(compiled)
54
+ results3 = graph.query_compiled(compiled)
55
+ print(f"First execution: {len(results2)} results")
56
+ print(f"Second execution: {len(results3)} results (uses cache)")
57
+
58
+ # Example 3: Multiple compiled queries
59
+ print("\n📊 Example 3: Multiple Compiled Queries")
60
+ print("-" * 60)
61
+ high_priority = graph.compile_query("[data-priority='high']")
62
+ critical = graph.compile_query("[data-priority='critical']")
63
+
64
+ high_results = graph.query_compiled(high_priority)
65
+ critical_results = graph.query_compiled(critical)
66
+
67
+ print(f"High priority items: {len(high_results)}")
68
+ print(f"Critical priority items: {len(critical_results)}")
69
+
70
+ # Show metrics
71
+ print("\n📈 Performance Metrics")
72
+ print("-" * 60)
73
+ metrics = graph.metrics
74
+ print(f"Total queries: {metrics['query_count']}")
75
+ print(f"Cache hits: {metrics['cache_hits']}")
76
+ print(f"Cache misses: {metrics['cache_misses']}")
77
+ print(f"Cache hit rate: {metrics['cache_hit_rate']}")
78
+ print(f"\nCompiled queries created: {metrics['compiled_queries']}")
79
+ print(f"Compilation cache hits: {metrics['compiled_query_hits']}")
80
+ print(f"Compilation hit rate: {metrics['compilation_hit_rate']}")
81
+ print(f"Compiled queries cached: {metrics['compiled_queries_cached']}")
82
+
83
+ # Example 4: Compilation cache reuse
84
+ print("\n📊 Example 4: Compilation Cache Reuse")
85
+ print("-" * 60)
86
+ # Compiling the same selector again returns cached instance
87
+ blocked_query1 = graph.compile_query("[data-status='blocked']")
88
+ blocked_query2 = graph.compile_query("[data-status='blocked']")
89
+
90
+ if blocked_query1 is blocked_query2:
91
+ print("✅ Compilation cache works - same instance returned")
92
+ else:
93
+ print("❌ Unexpected - different instances")
94
+
95
+ print("\n" + "=" * 60)
96
+ print("✅ Query compilation example completed successfully!")
97
+
98
+
99
+ if __name__ == "__main__":
100
+ main()
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "htmlgraph",
3
- "version": "0.26.5",
3
+ "version": "0.26.6",
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.5"
3
+ version = "0.26.6"
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"
@@ -52,7 +52,7 @@ deploy = [
52
52
  ]
53
53
 
54
54
  [project.scripts]
55
- htmlgraph = "htmlgraph.cli:main"
55
+ htmlgraph = "htmlgraph.cli.main:main"
56
56
  htmlgraph-deploy = "htmlgraph.scripts.deploy:main"
57
57
 
58
58
  [project.urls]
@@ -2,5 +2,5 @@
2
2
  "dismissed_at": null,
3
3
  "dismissed_by": null,
4
4
  "session_id": null,
5
- "show_count": 30
5
+ "show_count": 59
6
6
  }
@@ -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.5"
98
+ __version__ = "0.26.6"
99
99
  __all__ = [
100
100
  # Exceptions
101
101
  "HtmlGraphError",