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.
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/PKG-INFO +1 -1
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/gemini-extension.json +1 -1
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/pyproject.toml +1 -1
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/__init__.py +1 -1
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/event_log.py +28 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/orchestrator.py +68 -4
- htmlgraph-0.23.2/tests/test_event_log.py +498 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/.gitignore +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/agent-coordination/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/agent-coordination/demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/create_auth_track_demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/create_htmlgraph_dev_track.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/agents.json +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-api-graph.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-api-overview.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-api-sdk.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-example-advanced.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-example-basic.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-index.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-installation.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/documentation-site/features/doc-quickstart.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/handoff-demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/agents.json +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/feat-276c615f.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/feat-7a6f797d.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-ai-agents.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-graph-db.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-htmlgraph.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/knowledge-base/features/note-web-standards.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/parallel_task_coordination.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/routing-demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/sdk_demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/demo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/index.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/styles.css +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-001.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-002.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-003.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-004.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-005.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/examples/todo-list/task-006.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/GEMINI.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_deploy.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_end.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-add.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-complete.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-primary.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_feature-start.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_git-commit.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_help.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_init.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_plan.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_recommend.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_serve.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_spike.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_start.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_status.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/command_track.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/hooks.json +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/scripts/post-tool.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/scripts/session-end.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/packages/gemini-extension/hooks/scripts/session-start.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/js/htmlgraph.js +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/agent_detection.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/agent_registry.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/agents.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/cli.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/cross_session.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/dependency.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics/work_type.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/analytics_index.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/bloom.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/fts.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/manager.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/archive/search.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/attribute_index.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/base.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/bug.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/chore.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/epic.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/feature.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/insight.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/metric.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/pattern.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/phase.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/spike.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/builders/track.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/cli.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/base.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/bug.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/chore.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/epic.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/feature.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/insight.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/metric.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/pattern.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/phase.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/spike.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/collections/todo.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/context_analytics.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/converter.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/dashboard.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/dependency_models.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/deploy.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/deployment_models.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/docs_version.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/metadata.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/migrations.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/template_engine.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/_sections/cli_reference.md.j2 +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/_sections/core_concepts.md.j2 +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/_sections/sdk_basics.md.j2 +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/base_agents.md.j2 +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/templates/example_user_override.md.j2 +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/docs/version_check.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/edge_index.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/event_migration.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/exceptions.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/GEMINI.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/gemini-extension.json +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/hooks.json +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/scripts/post-tool.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-end.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-start.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/file_watcher.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/find_api.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/git_events.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/graph.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/event_tracker.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/hooks-config.example.json +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/installer.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/orchestrator_reflector.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post-checkout.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post-commit.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post-merge.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/post_tool_use_failure.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/posttooluse.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/pre-commit.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/pre-push.sh +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/pretooluse.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/task_enforcer.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/task_validator.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/hooks/validator.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/ids.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/index.d.ts +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/learning.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/mcp_server.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/models.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/analytics.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/events.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/hooks.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/operations/server.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/headless_spawner.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/model_selection.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestration/task_coordination.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator_mode.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/orchestrator_validator.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/parallel.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/parser.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/planning.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/query_builder.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/routing.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/scripts/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/scripts/deploy.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/sdk.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/server.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/services/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/services/claiming.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/session_manager.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/session_warning.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/setup.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/spike_index.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/styles.css +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/sync_docs.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/templates/AGENTS.md.template +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/templates/CLAUDE.md.template +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/templates/GEMINI.md.template +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/track_builder.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/track_manager.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/transcript.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/transcript_analytics.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/types.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/watch.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/src/python/htmlgraph/work_type_utils.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/bench_graph.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/benchmarks/conftest.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/test_agent_quirks.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/multi_agent/test_git_continuity_spine.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/test_deployment_workflow.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/test_handoff_routing.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/integration/test_multi_agent_coordination.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/js/README.md +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/js/test_htmlgraph.html +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/operations/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/operations/test_hooks.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/operations/test_server.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/__init__.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_agent_detection.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_analytics.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_archive_manager.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_archive_search.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_auto_spike.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_claiming.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_cli_commands.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_collection_filter.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_cross_agent_attribution.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_cross_session_analytics.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_dashboard_ui.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_delete.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_deploy.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_drift_parent_activity.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_drift_queue_cleanup.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_edge_index.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_event_index.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_event_query.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_find_api.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_git_events.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_graph_traversal.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_handoff.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_headless_spawner.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_ids.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_install_hooks.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_lifecycle.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_mcp_server.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_mcp_stdio_transport.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_models.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_opencode_integration.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestration.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_circuit_breaker.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_cli.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_enforce_hook.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_orchestrator_mode.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_plugin_update_preservation.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_post_tool_use_failure.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_pre_work_validation_integration.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_query_builder.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_query_cache.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_query_compilation.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_routing.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_sdk_discoverability.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_sdk_get_active_work_item.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_session_cleanup.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_session_continuity.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_session_start_info_validation.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_system_overhead_drift.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_template_system.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_todo_collection.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_track_loading.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_transcript_linking.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_update_preserves_incoming_edges.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_validate_work_hook.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_version_migration.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_work_queue.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/python/test_work_type.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_agent_routing.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_cli_output_snapshots.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_cli_sdk_parity.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_deployment_models.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_orchestrator_validator.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_sdk_operations.py +0 -0
- {htmlgraph-0.23.1 → htmlgraph-0.23.2}/tests/test_transaction_snapshot.py +0 -0
- {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.
|
|
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.
|
|
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",
|
|
@@ -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
|
-
|
|
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
|
|
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
|
-
#
|
|
204
|
-
|
|
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:
|