htmlgraph 0.23.1__tar.gz → 0.23.2__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 (285) hide show
  1. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/PKG-INFO +1 -1
  2. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/gemini-extension.json +1 -1
  3. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/pyproject.toml +1 -1
  4. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/__init__.py +1 -1
  5. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/event_log.py +28 -0
  6. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/orchestrator.py +68 -4
  7. htmlgraph-0.23.2/tests/test_event_log.py +498 -0
  8. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/.gitignore +0 -0
  9. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/README.md +0 -0
  10. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/agent-coordination/README.md +0 -0
  11. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/agent-coordination/demo.py +0 -0
  12. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/create_auth_track_demo.py +0 -0
  13. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/create_htmlgraph_dev_track.py +0 -0
  14. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/README.md +0 -0
  15. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/agents.json +0 -0
  16. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/demo.py +0 -0
  17. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-api-graph.html +0 -0
  18. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-api-overview.html +0 -0
  19. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-api-sdk.html +0 -0
  20. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-example-advanced.html +0 -0
  21. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-example-basic.html +0 -0
  22. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-index.html +0 -0
  23. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-installation.html +0 -0
  24. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-quickstart.html +0 -0
  25. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/handoff-demo.py +0 -0
  26. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/README.md +0 -0
  27. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/agents.json +0 -0
  28. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/demo.py +0 -0
  29. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/feat-276c615f.html +0 -0
  30. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/feat-7a6f797d.html +0 -0
  31. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-ai-agents.html +0 -0
  32. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-graph-db.html +0 -0
  33. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-htmlgraph.html +0 -0
  34. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-web-standards.html +0 -0
  35. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/parallel_task_coordination.py +0 -0
  36. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/routing-demo.py +0 -0
  37. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/sdk_demo.py +0 -0
  38. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/README.md +0 -0
  39. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/demo.py +0 -0
  40. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/index.html +0 -0
  41. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/styles.css +0 -0
  42. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-001.html +0 -0
  43. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-002.html +0 -0
  44. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-003.html +0 -0
  45. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-004.html +0 -0
  46. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-005.html +0 -0
  47. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-006.html +0 -0
  48. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/GEMINI.md +0 -0
  49. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/README.md +0 -0
  50. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_deploy.md +0 -0
  51. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_end.md +0 -0
  52. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-add.md +0 -0
  53. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-complete.md +0 -0
  54. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-primary.md +0 -0
  55. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-start.md +0 -0
  56. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_git-commit.md +0 -0
  57. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_help.md +0 -0
  58. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_init.md +0 -0
  59. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_plan.md +0 -0
  60. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_recommend.md +0 -0
  61. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_serve.md +0 -0
  62. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_spike.md +0 -0
  63. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_start.md +0 -0
  64. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_status.md +0 -0
  65. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_track.md +0 -0
  66. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/hooks.json +0 -0
  67. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/scripts/post-tool.sh +0 -0
  68. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/scripts/session-end.sh +0 -0
  69. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/scripts/session-start.sh +0 -0
  70. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/js/htmlgraph.js +0 -0
  71. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/agent_detection.py +0 -0
  72. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/agent_registry.py +0 -0
  73. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/agents.py +0 -0
  74. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/__init__.py +0 -0
  75. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/cli.py +0 -0
  76. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/cross_session.py +0 -0
  77. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/dependency.py +0 -0
  78. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/work_type.py +0 -0
  79. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics_index.py +0 -0
  80. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/__init__.py +0 -0
  81. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/bloom.py +0 -0
  82. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/fts.py +0 -0
  83. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/manager.py +0 -0
  84. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/search.py +0 -0
  85. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/attribute_index.py +0 -0
  86. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/__init__.py +0 -0
  87. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/base.py +0 -0
  88. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/bug.py +0 -0
  89. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/chore.py +0 -0
  90. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/epic.py +0 -0
  91. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/feature.py +0 -0
  92. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/insight.py +0 -0
  93. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/metric.py +0 -0
  94. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/pattern.py +0 -0
  95. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/phase.py +0 -0
  96. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/spike.py +0 -0
  97. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/track.py +0 -0
  98. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/cli.py +0 -0
  99. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/__init__.py +0 -0
  100. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/base.py +0 -0
  101. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/bug.py +0 -0
  102. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/chore.py +0 -0
  103. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/epic.py +0 -0
  104. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/feature.py +0 -0
  105. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/insight.py +0 -0
  106. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/metric.py +0 -0
  107. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/pattern.py +0 -0
  108. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/phase.py +0 -0
  109. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/spike.py +0 -0
  110. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/todo.py +0 -0
  111. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/context_analytics.py +0 -0
  112. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/converter.py +0 -0
  113. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/dashboard.html +0 -0
  114. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/dependency_models.py +0 -0
  115. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/deploy.py +0 -0
  116. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/deployment_models.py +0 -0
  117. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/__init__.py +0 -0
  118. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/docs_version.py +0 -0
  119. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/metadata.py +0 -0
  120. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/migrations.py +0 -0
  121. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/template_engine.py +0 -0
  122. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/_sections/cli_reference.md.j2 +0 -0
  123. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/_sections/core_concepts.md.j2 +0 -0
  124. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/_sections/sdk_basics.md.j2 +0 -0
  125. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/base_agents.md.j2 +0 -0
  126. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/example_user_override.md.j2 +0 -0
  127. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/version_check.py +0 -0
  128. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/edge_index.py +0 -0
  129. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/event_migration.py +0 -0
  130. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/exceptions.py +0 -0
  131. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/GEMINI.md +0 -0
  132. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/README.md +0 -0
  133. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/gemini-extension.json +0 -0
  134. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/hooks.json +0 -0
  135. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/scripts/post-tool.sh +0 -0
  136. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-end.sh +0 -0
  137. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-start.sh +0 -0
  138. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/file_watcher.py +0 -0
  139. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/find_api.py +0 -0
  140. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/git_events.py +0 -0
  141. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/graph.py +0 -0
  142. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/__init__.py +0 -0
  143. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/event_tracker.py +0 -0
  144. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/hooks-config.example.json +0 -0
  145. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/installer.py +0 -0
  146. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/orchestrator_reflector.py +0 -0
  147. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post-checkout.sh +0 -0
  148. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post-commit.sh +0 -0
  149. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post-merge.sh +0 -0
  150. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post_tool_use_failure.py +0 -0
  151. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/posttooluse.py +0 -0
  152. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/pre-commit.sh +0 -0
  153. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/pre-push.sh +0 -0
  154. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/pretooluse.py +0 -0
  155. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/task_enforcer.py +0 -0
  156. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/task_validator.py +0 -0
  157. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/validator.py +0 -0
  158. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/ids.py +0 -0
  159. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/index.d.ts +0 -0
  160. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/learning.py +0 -0
  161. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/mcp_server.py +0 -0
  162. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/models.py +0 -0
  163. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/README.md +0 -0
  164. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/__init__.py +0 -0
  165. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/analytics.py +0 -0
  166. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/events.py +0 -0
  167. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/hooks.py +0 -0
  168. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/server.py +0 -0
  169. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/__init__.py +0 -0
  170. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/headless_spawner.py +0 -0
  171. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/model_selection.py +0 -0
  172. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/task_coordination.py +0 -0
  173. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +0 -0
  174. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator.py +0 -0
  175. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator_mode.py +0 -0
  176. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator_validator.py +0 -0
  177. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/parallel.py +0 -0
  178. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/parser.py +0 -0
  179. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/planning.py +0 -0
  180. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/query_builder.py +0 -0
  181. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/routing.py +0 -0
  182. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/scripts/__init__.py +0 -0
  183. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/scripts/deploy.py +0 -0
  184. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/sdk.py +0 -0
  185. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/server.py +0 -0
  186. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/services/__init__.py +0 -0
  187. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/services/claiming.py +0 -0
  188. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/session_manager.py +0 -0
  189. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/session_warning.py +0 -0
  190. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/setup.py +0 -0
  191. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/spike_index.py +0 -0
  192. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/styles.css +0 -0
  193. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/sync_docs.py +0 -0
  194. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/templates/AGENTS.md.template +0 -0
  195. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/templates/CLAUDE.md.template +0 -0
  196. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/templates/GEMINI.md.template +0 -0
  197. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/track_builder.py +0 -0
  198. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/track_manager.py +0 -0
  199. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/transcript.py +0 -0
  200. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/transcript_analytics.py +0 -0
  201. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/types.py +0 -0
  202. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/watch.py +0 -0
  203. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/work_type_utils.py +0 -0
  204. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/README.md +0 -0
  205. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/__init__.py +0 -0
  206. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/bench_graph.py +0 -0
  207. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/conftest.py +0 -0
  208. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/README.md +0 -0
  209. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/__init__.py +0 -0
  210. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/test_agent_quirks.py +0 -0
  211. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/test_git_continuity_spine.py +0 -0
  212. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/test_deployment_workflow.py +0 -0
  213. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/test_handoff_routing.py +0 -0
  214. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/test_multi_agent_coordination.py +0 -0
  215. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/js/README.md +0 -0
  216. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/js/test_htmlgraph.html +0 -0
  217. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/operations/__init__.py +0 -0
  218. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/operations/test_hooks.py +0 -0
  219. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/operations/test_server.py +0 -0
  220. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/__init__.py +0 -0
  221. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_agent_detection.py +0 -0
  222. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_analytics.py +0 -0
  223. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_archive_manager.py +0 -0
  224. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_archive_search.py +0 -0
  225. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_auto_spike.py +0 -0
  226. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_claiming.py +0 -0
  227. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_cli_commands.py +0 -0
  228. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_collection_filter.py +0 -0
  229. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_cross_agent_attribution.py +0 -0
  230. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_cross_session_analytics.py +0 -0
  231. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_dashboard_ui.py +0 -0
  232. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_delete.py +0 -0
  233. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_deploy.py +0 -0
  234. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_drift_parent_activity.py +0 -0
  235. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_drift_queue_cleanup.py +0 -0
  236. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_edge_index.py +0 -0
  237. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_event_index.py +0 -0
  238. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_event_query.py +0 -0
  239. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_find_api.py +0 -0
  240. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_git_events.py +0 -0
  241. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_graph_traversal.py +0 -0
  242. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_handoff.py +0 -0
  243. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_headless_spawner.py +0 -0
  244. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_ids.py +0 -0
  245. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_install_hooks.py +0 -0
  246. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_lifecycle.py +0 -0
  247. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_mcp_server.py +0 -0
  248. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_mcp_stdio_transport.py +0 -0
  249. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_models.py +0 -0
  250. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_opencode_integration.py +0 -0
  251. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestration.py +0 -0
  252. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_circuit_breaker.py +0 -0
  253. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_cli.py +0 -0
  254. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_enforce_hook.py +0 -0
  255. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_mode.py +0 -0
  256. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_plugin_update_preservation.py +0 -0
  257. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_post_tool_use_failure.py +0 -0
  258. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_pre_work_validation_integration.py +0 -0
  259. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_query_builder.py +0 -0
  260. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_query_cache.py +0 -0
  261. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_query_compilation.py +0 -0
  262. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_routing.py +0 -0
  263. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_sdk_discoverability.py +0 -0
  264. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_sdk_get_active_work_item.py +0 -0
  265. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_session_cleanup.py +0 -0
  266. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_session_continuity.py +0 -0
  267. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_session_start_info_validation.py +0 -0
  268. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_system_overhead_drift.py +0 -0
  269. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_template_system.py +0 -0
  270. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_todo_collection.py +0 -0
  271. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_track_loading.py +0 -0
  272. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_transcript_linking.py +0 -0
  273. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_update_preserves_incoming_edges.py +0 -0
  274. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_validate_work_hook.py +0 -0
  275. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_version_migration.py +0 -0
  276. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_work_queue.py +0 -0
  277. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_work_type.py +0 -0
  278. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_agent_routing.py +0 -0
  279. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_cli_output_snapshots.py +0 -0
  280. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_cli_sdk_parity.py +0 -0
  281. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_deployment_models.py +0 -0
  282. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_orchestrator_validator.py +0 -0
  283. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_sdk_operations.py +0 -0
  284. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_transaction_snapshot.py +0 -0
  285. {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_transcript.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: htmlgraph
3
- Version: 0.23.1
3
+ Version: 0.23.2
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.23.1",
3
+ "version": "0.23.2",
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.23.1"
3
+ version = "0.23.2"
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"
@@ -84,7 +84,7 @@ from htmlgraph.types import (
84
84
  )
85
85
  from htmlgraph.work_type_utils import infer_work_type, infer_work_type_from_id
86
86
 
87
- __version__ = "0.23.1"
87
+ __version__ = "0.23.2"
88
88
  __all__ = [
89
89
  # Exceptions
90
90
  "HtmlGraphError",
@@ -38,6 +38,22 @@ class EventRecord:
38
38
  session_status: str | None = None
39
39
  file_paths: list[str] | None = None
40
40
  payload: dict[str, Any] | None = None
41
+ # Phase 1: Enhanced Event Data Schema for multi-AI delegation tracking
42
+ delegated_to_ai: str | None = (
43
+ None # "gemini", "codex", "copilot", "claude", or None
44
+ )
45
+ task_id: str | None = None # Unique task ID for parallel tracking
46
+ task_status: str | None = (
47
+ None # "pending", "running", "completed", "failed", "timeout"
48
+ )
49
+ model_selected: str | None = None # Specific model (e.g., "gemini-2.0-flash")
50
+ complexity_level: str | None = None # "low", "medium", "high", "very-high"
51
+ budget_mode: str | None = None # "free", "balanced", "performance"
52
+ execution_duration_seconds: float | None = None # How long delegation took
53
+ tokens_estimated: int | None = None # Estimated token usage
54
+ tokens_actual: int | None = None # Actual token usage
55
+ cost_usd: float | None = None # Calculated cost
56
+ task_findings: str | None = None # Results from delegated task
41
57
 
42
58
  def to_json(self) -> dict[str, Any]:
43
59
  return {
@@ -56,6 +72,18 @@ class EventRecord:
56
72
  "session_status": self.session_status,
57
73
  "file_paths": self.file_paths or [],
58
74
  "payload": self.payload,
75
+ # Delegation fields
76
+ "delegated_to_ai": self.delegated_to_ai,
77
+ "task_id": self.task_id,
78
+ "task_status": self.task_status,
79
+ "model_selected": self.model_selected,
80
+ "complexity_level": self.complexity_level,
81
+ "budget_mode": self.budget_mode,
82
+ "execution_duration_seconds": self.execution_duration_seconds,
83
+ "tokens_estimated": self.tokens_estimated,
84
+ "tokens_actual": self.tokens_actual,
85
+ "cost_usd": self.cost_usd,
86
+ "task_findings": self.task_findings,
59
87
  }
60
88
 
61
89
 
@@ -107,6 +107,23 @@ def is_allowed_orchestrator_operation(tool: str, params: dict) -> tuple[bool, st
107
107
  - reason_if_not: Explanation if blocked (empty if allowed)
108
108
  - category: Operation category for logging
109
109
  """
110
+ # Get enforcement level from manager
111
+ try:
112
+ cwd = Path.cwd()
113
+ graph_dir = cwd / ".htmlgraph"
114
+ if not graph_dir.exists():
115
+ for parent in [cwd.parent, cwd.parent.parent, cwd.parent.parent.parent]:
116
+ candidate = parent / ".htmlgraph"
117
+ if candidate.exists():
118
+ graph_dir = candidate
119
+ break
120
+ manager = OrchestratorModeManager(graph_dir)
121
+ enforcement_level = (
122
+ manager.get_enforcement_level() if manager.is_enabled() else "guidance"
123
+ )
124
+ except Exception:
125
+ enforcement_level = "guidance"
126
+
110
127
  # Use OrchestratorValidator for comprehensive validation
111
128
  validator = OrchestratorValidator()
112
129
  result, reason = validator.validate_tool_use(tool, params)
@@ -121,6 +138,10 @@ def is_allowed_orchestrator_operation(tool: str, params: dict) -> tuple[bool, st
121
138
  if tool in ["Task", "AskUserQuestion", "TodoWrite"]:
122
139
  return True, "", "orchestrator-core"
123
140
 
141
+ # FIX #2: Block Skills in strict mode (must be invoked via Task delegation)
142
+ if tool == "Skill" and enforcement_level == "strict":
143
+ return False, "Skills must be invoked via Task delegation", "skill-blocked"
144
+
124
145
  # Category 2: SDK Operations - Always allowed
125
146
  if tool == "Bash":
126
147
  command = params.get("command", "")
@@ -141,11 +162,51 @@ def is_allowed_orchestrator_operation(tool: str, params: dict) -> tuple[bool, st
141
162
  if "from htmlgraph import" in command or "import htmlgraph" in command:
142
163
  return True, "", "sdk-inline"
143
164
 
165
+ # FIX #3: Check if bash command is in allowed whitelist (strict mode only)
166
+ # If we've gotten here, it's not a whitelisted command above
167
+ # Block non-whitelisted bash commands in strict mode
168
+ if enforcement_level == "strict":
169
+ # Check if it's a blocked test/build pattern (handled below)
170
+ blocked_patterns = [
171
+ r"^npm (run|test|build)",
172
+ r"^pytest",
173
+ r"^uv run pytest",
174
+ r"^python -m pytest",
175
+ r"^cargo (build|test)",
176
+ r"^mvn (compile|test|package)",
177
+ r"^make (test|build)",
178
+ ]
179
+ is_blocked_pattern = any(
180
+ re.match(pattern, command) for pattern in blocked_patterns
181
+ )
182
+
183
+ if not is_blocked_pattern:
184
+ # Not a specifically blocked pattern, but also not whitelisted
185
+ # In strict mode, we should delegate
186
+ return (
187
+ False,
188
+ f"Bash command not in allowed list. Delegate to subagent.\n\n"
189
+ f"Command: {command[:100]}",
190
+ "bash-blocked",
191
+ )
192
+
144
193
  # Category 3: Quick Lookups - Single operations only
145
194
  if tool in ["Read", "Grep", "Glob"]:
146
195
  # Check tool history to see if this is a single lookup or part of a sequence
147
196
  history = load_tool_history()
148
197
 
198
+ # FIX #4: Check for mixed exploration pattern
199
+ exploration_count = sum(
200
+ 1 for h in history[-5:] if h["tool"] in ["Read", "Grep", "Glob"]
201
+ )
202
+ if exploration_count >= 3 and enforcement_level == "strict":
203
+ return (
204
+ False,
205
+ "Multiple exploration calls detected. Delegate to Explorer agent.\n\n"
206
+ "Use Task tool with explorer subagent.",
207
+ "exploration-blocked",
208
+ )
209
+
149
210
  # Look at last 3 tool calls
150
211
  recent_same_tool = sum(1 for h in history[-3:] if h["tool"] == tool)
151
212
 
@@ -181,7 +242,7 @@ def is_allowed_orchestrator_operation(tool: str, params: dict) -> tuple[bool, st
181
242
  command = params.get("command", "")
182
243
 
183
244
  # Block compilation, testing, building (should be in subagent)
184
- blocked_patterns = [
245
+ test_build_patterns: list[tuple[str, str]] = [
185
246
  (r"^npm (run|test|build)", "npm test/build"),
186
247
  (r"^pytest", "pytest"),
187
248
  (r"^uv run pytest", "pytest"),
@@ -191,7 +252,7 @@ def is_allowed_orchestrator_operation(tool: str, params: dict) -> tuple[bool, st
191
252
  (r"^make (test|build)", "make test/build"),
192
253
  ]
193
254
 
194
- for pattern, name in blocked_patterns:
255
+ for pattern, name in test_build_patterns:
195
256
  if re.match(pattern, command):
196
257
  return (
197
258
  False,
@@ -200,8 +261,11 @@ def is_allowed_orchestrator_operation(tool: str, params: dict) -> tuple[bool, st
200
261
  "test-build-blocked",
201
262
  )
202
263
 
203
- # Default: Allow with guidance
204
- return True, "Allowed but consider if delegation would be better", "allowed-default"
264
+ # FIX #1: Remove "allowed-default" escape hatch in strict mode
265
+ if enforcement_level == "strict":
266
+ return False, "Not in allowed whitelist", "strict-blocked"
267
+ else:
268
+ return True, "Allowed in guidance mode", "guidance-allowed"
205
269
 
206
270
 
207
271
  def create_task_suggestion(tool: str, params: dict) -> str: