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