htmlgraph 0.26.14__tar.gz → 0.26.15__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.14 → htmlgraph-0.26.15}/PKG-INFO +1 -1
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/gemini-extension.json +1 -1
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/pyproject.toml +1 -1
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/__init__.py +1 -1
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/.htmlgraph/.session-warning-state.json +1 -1
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/.htmlgraph/htmlgraph.db +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/db/schema.py +108 -2
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/event_tracker.py +11 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/posttooluse.py +0 -42
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/sdk.py +100 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_discoverability.py +7 -2
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_orchestrator_spawner_delegation.py +7 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/.gitignore +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/agent-coordination/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/agent-coordination/demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/create_auth_track_demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/create_htmlgraph_dev_track.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/demo_agent_planning.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/demo_real_project_analytics.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/demo_sdk_operations.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/agents.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-api-graph.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-api-overview.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-api-sdk.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-example-advanced.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-example-basic.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-index.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-installation.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-quickstart.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/example_query_compilation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/handoff-demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/agents.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/feat-276c615f.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/feat-7a6f797d.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/note-ai-agents.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/note-graph-db.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/note-htmlgraph.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/note-web-standards.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/parallel_task_coordination.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/routing-demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/sdk_demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/demo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/index.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/styles.css +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/task-001.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/task-002.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/task-003.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/task-004.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/task-005.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/todo-list/task-006.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/GEMINI.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_deploy.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_end.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_feature-add.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_feature-complete.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_feature-primary.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_feature-start.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_git-commit.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_help.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_init.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_plan.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_recommend.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_serve.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_spike.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_start.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_status.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_track.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/hooks/hooks.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/hooks/scripts/post-tool.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/hooks/scripts/session-end.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/hooks/scripts/session-start.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/js/htmlgraph.js +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/.htmlgraph/.session-warning-state.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/.htmlgraph/agents.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/.htmlgraph/htmlgraph.db +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/agent_detection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/agent_registry.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/agents.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics/cli.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics/cost_analyzer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics/cost_reporter.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics/cross_session.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics/dependency.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics/work_type.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/analytics_index.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/main.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/static/htmx.min.js +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/static/style-redesign.css +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/static/style.css +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/dashboard-redesign.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/dashboard.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/activity-feed-hierarchical.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/activity-feed.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/agents-redesign.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/agents.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/event-traces.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/features-kanban-redesign.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/features.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/metrics-redesign.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/metrics.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/orchestration-redesign.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/orchestration.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/api/templates/partials/spawners.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/archive/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/archive/bloom.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/archive/fts.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/archive/manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/archive/search.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/atomic_ops.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/attribute_index.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/base.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/bug.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/chore.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/epic.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/feature.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/insight.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/metric.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/pattern.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/phase.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/spike.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/builders/track.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/autonomy.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/cost.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/messages_basic.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/messaging.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/pattern_storage.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/patterns.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/posttool_analyzer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/reporter.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cigs/tracker.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/.htmlgraph/agents.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/__main__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/analytics.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/base.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/constants.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/core.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/main.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/templates/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/templates/cost_dashboard.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/work/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/work/features.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/work/orchestration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/work/sessions.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli/work/tracks.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli_commands/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli_commands/feature.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cli_framework.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/base.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/bug.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/chore.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/epic.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/feature.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/insight.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/metric.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/pattern.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/phase.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/session.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/spike.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/task_delegation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/todo.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/collections/traces.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/config.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/context_analytics.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/converter.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cost_analysis/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/cost_analysis/analyzer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/dashboard.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/dashboard.html.backup +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/dashboard.html.bak +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/dashboard.html.bak2 +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/dashboard.html.bak3 +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/db/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/db/queries.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/dependency_models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/deploy.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/deployment_models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/API_REFERENCE.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/HTTP_API.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/INTEGRATION_GUIDE.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/ORCHESTRATION_PATTERNS.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/docs_version.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/metadata.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/migrations.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/template_engine.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/templates/_sections/cli_reference.md.j2 +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/templates/_sections/core_concepts.md.j2 +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/templates/_sections/sdk_basics.md.j2 +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/templates/base_agents.md.j2 +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/templates/example_user_override.md.j2 +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/docs/version_check.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/edge_index.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/error_handler.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/event_log.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/event_migration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/exceptions.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/extensions/gemini/GEMINI.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/extensions/gemini/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/extensions/gemini/gemini-extension.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/extensions/gemini/hooks/hooks.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/extensions/gemini/hooks/scripts/post-tool.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-end.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/extensions/gemini/hooks/scripts/session-start.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/file_watcher.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/find_api.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/git_events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/graph.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/.htmlgraph/.session-warning-state.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/.htmlgraph/agents.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/.htmlgraph/index.sqlite +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/bootstrap.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/cigs_pretool_enforcer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/concurrent_sessions.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/context.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/drift_handler.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/git_commands.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/hooks-config.example.json +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/installer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/orchestrator.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/orchestrator_reflector.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/post-checkout.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/post-commit.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/post-merge.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/post_tool_use_failure.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/post_tool_use_handler.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/pre-commit.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/pre-push.sh +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/pretooluse.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/prompt_analyzer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/session_handler.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/session_summary.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/state_manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/subagent_detection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/subagent_stop.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/task_enforcer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/task_validator.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/hooks/validator.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/ids.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/index.d.ts +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/learning.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/mcp_server.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/analytics.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/fastapi_server.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/hooks.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/initialization.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/initialization.py.backup +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/operations/server.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/claude_launcher.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/command_builder.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/headless_spawner.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/live_events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/model_selection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/plugin_manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/prompts.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/spawners/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/spawners/base.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/spawners/claude.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/spawners/codex.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/spawners/copilot.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/spawners/gemini.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/subprocess_runner.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration/task_coordination.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestration.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestrator-system-prompt-optimized.txt +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestrator.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestrator_config.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestrator_mode.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/orchestrator_validator.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/parallel.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/parser.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/planning.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/pydantic_models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/quality_gates.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/query_builder.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/reflection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/repo_hash.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/routing.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/scripts/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/scripts/deploy.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/server.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/services/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/services/claiming.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/session_hooks.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/session_manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/session_registry.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/session_state.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/session_warning.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/setup.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/spike_index.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/styles.css +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/sync_docs.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/system_prompts.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/templates/AGENTS.md.template +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/templates/CLAUDE.md.template +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/templates/GEMINI.md.template +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/templates/orchestration-view.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/track_builder.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/track_manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/transcript.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/transcript_analytics.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/types.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/validation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/watch.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/src/python/htmlgraph/work_type_utils.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/benchmarks/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/benchmarks/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/benchmarks/bench_graph.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/benchmarks/conftest.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_bootstrap.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_concurrent_sessions.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_context.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_event_tracker.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_git_commands.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_hybrid_event_capture.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_prompt_analyzer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_session_handler.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_state_manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_system_prompt_persistence.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/hooks/test_system_prompt_persistence_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/multi_agent/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/multi_agent/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/multi_agent/test_agent_quirks.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/multi_agent/test_git_continuity_spine.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_cigs_hook_flow.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_cigs_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_cigs_learning.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_codex_spawner.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_complexity_assessment.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_copilot_spawner_tracking.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_dashboard_spawner_display.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_delegation_events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_deployment_workflow.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_edge_index_bug.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_features.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_gemini_spawner_diagnosis.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_handoff_routing.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_multi_agent_coordination.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_new_features.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_orchestration_tab.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_orchestration_with_playwright.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_orchestrator_pattern.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_phase4_delegation_events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_post_compact_delegation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_real_workitem_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_redesigned_dashboard.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_spawner_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_spawner_live_events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_spawner_observability_e2e.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_spawner_routing_live.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_spawner_tool_tracking.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_task_delegation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_user_query_events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_websocket_realtime.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_websocket_streaming.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/verify_phase1_userquery.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/js/README.md +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/js/test_htmlgraph.html +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/manual/test-hook-input.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/operations/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/operations/test_hooks.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/operations/test_server.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/__init__.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/conftest.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_activity_feed_ui.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_agent_attribution.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_agent_detection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_analytics.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_archive_manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_archive_search.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_atomic_ops.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_auto_spike.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_cigs_pretool_enforcer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_claiming.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_cli_commands.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_cli_pydantic_models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_cli_rich_output.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_collection_filter.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_cost_analyzer.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_cross_agent_attribution.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_cross_session_analytics.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_dashboard_attribution.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_dashboard_ui.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_delegation_fk_fix.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_delete.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_deploy.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_drift_parent_activity.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_drift_queue_cleanup.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_edge_index.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_error_handling.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_event_index.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_event_query.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_event_tracing.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_feature_track_linkage_phase1.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_find_api.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_git_events.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_graph_traversal.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_handoff.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_headless_spawner.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_headless_spawner_parent_session.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_ids.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_install_hooks.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_lifecycle.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_mcp_server.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_mcp_stdio_transport.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_orchestration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_orchestrator_circuit_breaker.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_orchestrator_cli.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_orchestrator_enforce_hook.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_orchestrator_mode.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_parent_child_event_linking.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_parent_child_linking.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_parent_linking_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_pattern_storage.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_plugin_update_preservation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_post_tool_use_failure.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_post_tool_use_handler.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_posttooluse_cigs.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_pre_commit_hooks.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_pre_work_validation_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_pretooluse_event_hierarchy.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_quality_gates.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_query_builder.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_query_cache.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_query_compilation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_reflection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_repo_hash.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_routing.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_sdk_discoverability.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_sdk_get_active_work_item.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_sdk_parent_session.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_sdk_sqlite_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_session_cleanup.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_session_continuity.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_session_integration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_session_registry.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_session_start_cigs.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_session_start_info_validation.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_session_state_manager.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_spawner_agents.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_spawner_routing.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_sqlite_schema.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_stop_cigs.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_system_overhead_drift.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_template_system.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_todo_collection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_traces_collection.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_track_loading.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_transcript_linking.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_update_preserves_incoming_edges.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_user_prompt_submit_cigs.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_validate_work_hook.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_version_migration.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_violation_tracker.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_work_queue.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/python/test_work_type.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_agent_routing.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_autonomy_recommender.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_cigs_cli.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_cigs_cost_calculator.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_cigs_cost_reporter.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_cigs_imperative_messages.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_cigs_messages_basic.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_cli_output_snapshots.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_cli_sdk_parity.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_deployment_models.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_event_log.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_hybrid_event_capture.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_orchestrator_config.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_orchestrator_validator.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_pattern_detector.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_sdk_api_surface.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_sdk_operations.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/test_transaction_snapshot.py +0 -0
- {htmlgraph-0.26.14 → htmlgraph-0.26.15}/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.15
|
|
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.15",
|
|
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",
|
|
Binary file
|
|
@@ -105,6 +105,7 @@ class HtmlGraphDB:
|
|
|
105
105
|
("created_at", "DATETIME DEFAULT CURRENT_TIMESTAMP"),
|
|
106
106
|
("updated_at", "DATETIME DEFAULT CURRENT_TIMESTAMP"),
|
|
107
107
|
("model", "TEXT"),
|
|
108
|
+
("claude_task_id", "TEXT"),
|
|
108
109
|
]
|
|
109
110
|
|
|
110
111
|
for col_name, col_type in migrations:
|
|
@@ -226,6 +227,7 @@ class HtmlGraphDB:
|
|
|
226
227
|
execution_duration_seconds REAL DEFAULT 0.0,
|
|
227
228
|
status TEXT DEFAULT 'recorded',
|
|
228
229
|
model TEXT,
|
|
230
|
+
claude_task_id TEXT,
|
|
229
231
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
230
232
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
231
233
|
FOREIGN KEY (session_id) REFERENCES sessions(session_id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
@@ -443,6 +445,8 @@ class HtmlGraphDB:
|
|
|
443
445
|
"CREATE INDEX IF NOT EXISTS idx_agent_events_session_tool ON agent_events(session_id, tool_name)",
|
|
444
446
|
# Pattern: Timestamp range queries
|
|
445
447
|
"CREATE INDEX IF NOT EXISTS idx_agent_events_timestamp ON agent_events(timestamp DESC)",
|
|
448
|
+
# Pattern: WHERE claude_task_id (task attribution queries)
|
|
449
|
+
"CREATE INDEX IF NOT EXISTS idx_agent_events_claude_task_id ON agent_events(claude_task_id)",
|
|
446
450
|
# features indexes - optimized for kanban/filtering
|
|
447
451
|
# Pattern: WHERE status ORDER BY priority DESC (feature list views)
|
|
448
452
|
"CREATE INDEX IF NOT EXISTS idx_features_status_priority ON features(status, priority DESC, created_at DESC)",
|
|
@@ -517,6 +521,7 @@ class HtmlGraphDB:
|
|
|
517
521
|
subagent_type: str | None = None,
|
|
518
522
|
model: str | None = None,
|
|
519
523
|
feature_id: str | None = None,
|
|
524
|
+
claude_task_id: str | None = None,
|
|
520
525
|
) -> bool:
|
|
521
526
|
"""
|
|
522
527
|
Insert an agent event into the database.
|
|
@@ -541,6 +546,7 @@ class HtmlGraphDB:
|
|
|
541
546
|
execution_duration_seconds: Execution time in seconds (optional)
|
|
542
547
|
subagent_type: Subagent type for Task delegations (optional)
|
|
543
548
|
model: Claude model name (e.g., claude-haiku, claude-opus, claude-sonnet) (optional)
|
|
549
|
+
claude_task_id: Claude Code's internal task ID for tool attribution (optional)
|
|
544
550
|
|
|
545
551
|
Returns:
|
|
546
552
|
True if insert successful, False otherwise
|
|
@@ -559,8 +565,8 @@ class HtmlGraphDB:
|
|
|
559
565
|
INSERT INTO agent_events
|
|
560
566
|
(event_id, agent_id, event_type, session_id, feature_id, tool_name,
|
|
561
567
|
input_summary, output_summary, context, parent_agent_id,
|
|
562
|
-
parent_event_id, cost_tokens, execution_duration_seconds, subagent_type, model)
|
|
563
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
568
|
+
parent_event_id, cost_tokens, execution_duration_seconds, subagent_type, model, claude_task_id)
|
|
569
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
564
570
|
""",
|
|
565
571
|
(
|
|
566
572
|
event_id,
|
|
@@ -578,6 +584,7 @@ class HtmlGraphDB:
|
|
|
578
584
|
execution_duration_seconds,
|
|
579
585
|
subagent_type,
|
|
580
586
|
model,
|
|
587
|
+
claude_task_id,
|
|
581
588
|
),
|
|
582
589
|
)
|
|
583
590
|
# Re-enable foreign key constraints
|
|
@@ -1583,6 +1590,105 @@ class HtmlGraphDB:
|
|
|
1583
1590
|
logger.error(f"Error cleaning up old live events: {e}")
|
|
1584
1591
|
return 0
|
|
1585
1592
|
|
|
1593
|
+
def get_events_for_task(self, claude_task_id: str) -> list[dict[str, Any]]:
|
|
1594
|
+
"""
|
|
1595
|
+
Get all events (and their descendants) for a Claude Code task.
|
|
1596
|
+
|
|
1597
|
+
This enables answering "show me all the work (tool calls) that happened
|
|
1598
|
+
when this Task() was delegated".
|
|
1599
|
+
|
|
1600
|
+
Args:
|
|
1601
|
+
claude_task_id: Claude Code's internal task ID
|
|
1602
|
+
|
|
1603
|
+
Returns:
|
|
1604
|
+
List of event dictionaries, ordered by timestamp
|
|
1605
|
+
"""
|
|
1606
|
+
if not self.connection:
|
|
1607
|
+
self.connect()
|
|
1608
|
+
|
|
1609
|
+
try:
|
|
1610
|
+
cursor = self.connection.cursor() # type: ignore[union-attr]
|
|
1611
|
+
cursor.execute(
|
|
1612
|
+
"""
|
|
1613
|
+
WITH task_events AS (
|
|
1614
|
+
SELECT event_id FROM agent_events
|
|
1615
|
+
WHERE claude_task_id = ?
|
|
1616
|
+
)
|
|
1617
|
+
SELECT ae.* FROM agent_events ae
|
|
1618
|
+
WHERE ae.claude_task_id = ?
|
|
1619
|
+
OR ae.parent_event_id IN (
|
|
1620
|
+
SELECT event_id FROM task_events
|
|
1621
|
+
)
|
|
1622
|
+
ORDER BY ae.created_at
|
|
1623
|
+
""",
|
|
1624
|
+
(claude_task_id, claude_task_id),
|
|
1625
|
+
)
|
|
1626
|
+
|
|
1627
|
+
rows = cursor.fetchall()
|
|
1628
|
+
return [dict(row) for row in rows]
|
|
1629
|
+
except sqlite3.Error as e:
|
|
1630
|
+
logger.error(f"Error querying events for task: {e}")
|
|
1631
|
+
return []
|
|
1632
|
+
|
|
1633
|
+
def get_subagent_work(self, session_id: str) -> dict[str, list[dict[str, Any]]]:
|
|
1634
|
+
"""
|
|
1635
|
+
Get all work grouped by which subagent did it.
|
|
1636
|
+
|
|
1637
|
+
This enables answering "which subagent did what work in this session?"
|
|
1638
|
+
|
|
1639
|
+
Args:
|
|
1640
|
+
session_id: Session ID to analyze
|
|
1641
|
+
|
|
1642
|
+
Returns:
|
|
1643
|
+
Dictionary mapping subagent_type to list of events they executed.
|
|
1644
|
+
Example: {
|
|
1645
|
+
'researcher': [
|
|
1646
|
+
{'tool_name': 'Read', 'input_summary': '...', ...},
|
|
1647
|
+
{'tool_name': 'Grep', 'input_summary': '...', ...}
|
|
1648
|
+
],
|
|
1649
|
+
'general-purpose': [
|
|
1650
|
+
{'tool_name': 'Bash', 'input_summary': '...', ...}
|
|
1651
|
+
]
|
|
1652
|
+
}
|
|
1653
|
+
"""
|
|
1654
|
+
if not self.connection:
|
|
1655
|
+
self.connect()
|
|
1656
|
+
|
|
1657
|
+
try:
|
|
1658
|
+
cursor = self.connection.cursor() # type: ignore[union-attr]
|
|
1659
|
+
cursor.execute(
|
|
1660
|
+
"""
|
|
1661
|
+
SELECT
|
|
1662
|
+
ae.subagent_type,
|
|
1663
|
+
ae.tool_name,
|
|
1664
|
+
ae.event_id,
|
|
1665
|
+
ae.input_summary,
|
|
1666
|
+
ae.output_summary,
|
|
1667
|
+
ae.created_at,
|
|
1668
|
+
ae.claude_task_id
|
|
1669
|
+
FROM agent_events ae
|
|
1670
|
+
WHERE ae.session_id = ?
|
|
1671
|
+
AND ae.subagent_type IS NOT NULL
|
|
1672
|
+
AND ae.event_type = 'tool_call'
|
|
1673
|
+
ORDER BY ae.subagent_type, ae.created_at
|
|
1674
|
+
""",
|
|
1675
|
+
(session_id,),
|
|
1676
|
+
)
|
|
1677
|
+
|
|
1678
|
+
# Group by subagent_type
|
|
1679
|
+
result: dict[str, list[dict[str, Any]]] = {}
|
|
1680
|
+
for row in cursor.fetchall():
|
|
1681
|
+
row_dict = dict(row)
|
|
1682
|
+
subagent = row_dict.pop("subagent_type")
|
|
1683
|
+
if subagent not in result:
|
|
1684
|
+
result[subagent] = []
|
|
1685
|
+
result[subagent].append(row_dict)
|
|
1686
|
+
|
|
1687
|
+
return result
|
|
1688
|
+
except sqlite3.Error as e:
|
|
1689
|
+
logger.error(f"Error querying subagent work: {e}")
|
|
1690
|
+
return {}
|
|
1691
|
+
|
|
1586
1692
|
def close(self) -> None:
|
|
1587
1693
|
"""Clean up database connection."""
|
|
1588
1694
|
self.disconnect()
|
|
@@ -544,6 +544,7 @@ def record_event_to_sqlite(
|
|
|
544
544
|
subagent_type: str | None = None,
|
|
545
545
|
model: str | None = None,
|
|
546
546
|
feature_id: str | None = None,
|
|
547
|
+
claude_task_id: str | None = None,
|
|
547
548
|
) -> str | None:
|
|
548
549
|
"""
|
|
549
550
|
Record a tool call event to SQLite database for dashboard queries.
|
|
@@ -561,6 +562,7 @@ def record_event_to_sqlite(
|
|
|
561
562
|
subagent_type: Subagent type for Task delegations (optional)
|
|
562
563
|
model: Claude model name (e.g., claude-haiku, claude-opus) (optional)
|
|
563
564
|
feature_id: Feature ID for attribution (optional)
|
|
565
|
+
claude_task_id: Claude Code's internal task ID for tool attribution (optional)
|
|
564
566
|
|
|
565
567
|
Returns:
|
|
566
568
|
event_id if successful, None otherwise
|
|
@@ -591,6 +593,14 @@ def record_event_to_sqlite(
|
|
|
591
593
|
"is_error": is_error,
|
|
592
594
|
}
|
|
593
595
|
|
|
596
|
+
# Extract task_id from Tool response if not provided
|
|
597
|
+
if (
|
|
598
|
+
not claude_task_id
|
|
599
|
+
and tool_name == "Task"
|
|
600
|
+
and isinstance(tool_response, dict)
|
|
601
|
+
):
|
|
602
|
+
claude_task_id = tool_response.get("task_id")
|
|
603
|
+
|
|
594
604
|
# Insert event to SQLite
|
|
595
605
|
success = db.insert_event(
|
|
596
606
|
event_id=event_id,
|
|
@@ -606,6 +616,7 @@ def record_event_to_sqlite(
|
|
|
606
616
|
subagent_type=subagent_type,
|
|
607
617
|
model=model,
|
|
608
618
|
feature_id=feature_id,
|
|
619
|
+
claude_task_id=claude_task_id,
|
|
609
620
|
)
|
|
610
621
|
|
|
611
622
|
if success:
|
|
@@ -49,48 +49,6 @@ async def run_event_tracking(
|
|
|
49
49
|
Returns:
|
|
50
50
|
Event tracking response: {"continue": True, "hookSpecificOutput": {...}}
|
|
51
51
|
"""
|
|
52
|
-
# ============ DEBUG: Log Task() responses ============
|
|
53
|
-
import json
|
|
54
|
-
|
|
55
|
-
tool_name = hook_input.get("name", "") or hook_input.get("tool_name", "")
|
|
56
|
-
if tool_name == "Task":
|
|
57
|
-
tool_response = hook_input.get("tool_response", {})
|
|
58
|
-
|
|
59
|
-
print("\n" + "=" * 60, file=sys.stderr)
|
|
60
|
-
print("DEBUG: Task() PostToolUse Hook Input", file=sys.stderr)
|
|
61
|
-
print("=" * 60, file=sys.stderr)
|
|
62
|
-
|
|
63
|
-
print(f"\nTool Name: {tool_name}", file=sys.stderr)
|
|
64
|
-
print(f"Hook Type: {hook_type}", file=sys.stderr)
|
|
65
|
-
|
|
66
|
-
if isinstance(tool_response, dict):
|
|
67
|
-
print("\nTool Response Type: dict", file=sys.stderr)
|
|
68
|
-
print(f"Tool Response Keys: {list(tool_response.keys())}", file=sys.stderr)
|
|
69
|
-
|
|
70
|
-
# Check for task_id field
|
|
71
|
-
if "task_id" in tool_response:
|
|
72
|
-
task_id = tool_response.get("task_id")
|
|
73
|
-
print(f"\n✅ FOUND task_id: {task_id}", file=sys.stderr)
|
|
74
|
-
else:
|
|
75
|
-
print("\n❌ task_id NOT FOUND in response", file=sys.stderr)
|
|
76
|
-
|
|
77
|
-
# Print full response for inspection
|
|
78
|
-
print("\nFull Tool Response:", file=sys.stderr)
|
|
79
|
-
try:
|
|
80
|
-
response_str = json.dumps(tool_response, indent=2, default=str)
|
|
81
|
-
print(response_str, file=sys.stderr)
|
|
82
|
-
except Exception as e:
|
|
83
|
-
print(f"Could not serialize response: {e}", file=sys.stderr)
|
|
84
|
-
print(f"Raw response: {tool_response}", file=sys.stderr)
|
|
85
|
-
else:
|
|
86
|
-
print(
|
|
87
|
-
f"\nTool Response Type: {type(tool_response).__name__}", file=sys.stderr
|
|
88
|
-
)
|
|
89
|
-
print(f"Tool Response Value: {tool_response}", file=sys.stderr)
|
|
90
|
-
|
|
91
|
-
print("\n" + "=" * 60 + "\n", file=sys.stderr)
|
|
92
|
-
# ============ END DEBUG ============
|
|
93
|
-
|
|
94
52
|
try:
|
|
95
53
|
loop = asyncio.get_event_loop()
|
|
96
54
|
|
|
@@ -2550,6 +2550,106 @@ class SDK:
|
|
|
2550
2550
|
|
|
2551
2551
|
return analytics.get_recommendations(graph_dir=self._directory)
|
|
2552
2552
|
|
|
2553
|
+
# =========================================================================
|
|
2554
|
+
# Task Attribution - Subagent Work Tracking
|
|
2555
|
+
# =========================================================================
|
|
2556
|
+
|
|
2557
|
+
def get_task_attribution(self, task_id: str) -> dict[str, Any]:
|
|
2558
|
+
"""
|
|
2559
|
+
Get attribution - which subagent did what work in this task?
|
|
2560
|
+
|
|
2561
|
+
Queries the database to find all events associated with a Claude Code task,
|
|
2562
|
+
showing which subagent executed each tool call.
|
|
2563
|
+
|
|
2564
|
+
Args:
|
|
2565
|
+
task_id: Claude Code's internal task ID (available from Task() response)
|
|
2566
|
+
|
|
2567
|
+
Returns:
|
|
2568
|
+
Dictionary with task_id, by_subagent mapping, and total_events count
|
|
2569
|
+
|
|
2570
|
+
Example:
|
|
2571
|
+
>>> sdk = SDK(agent="claude")
|
|
2572
|
+
>>> result = sdk.get_task_attribution("task-abc123-xyz789")
|
|
2573
|
+
>>> for subagent, events in result['by_subagent'].items():
|
|
2574
|
+
... print(f"{subagent}:")
|
|
2575
|
+
... for event in events:
|
|
2576
|
+
... print(f" - {event['tool']}: {event['summary']}")
|
|
2577
|
+
>>> print(f"Total events: {result['total_events']}")
|
|
2578
|
+
|
|
2579
|
+
See also:
|
|
2580
|
+
get_subagent_work: Get all work grouped by subagent in a session
|
|
2581
|
+
"""
|
|
2582
|
+
from htmlgraph.config import get_database_path
|
|
2583
|
+
from htmlgraph.db.schema import HtmlGraphDB
|
|
2584
|
+
|
|
2585
|
+
try:
|
|
2586
|
+
db = HtmlGraphDB(str(get_database_path()))
|
|
2587
|
+
events = db.get_events_for_task(task_id)
|
|
2588
|
+
|
|
2589
|
+
# Group by subagent_type
|
|
2590
|
+
by_subagent: dict[str, list[dict[str, Any]]] = {}
|
|
2591
|
+
for event in events:
|
|
2592
|
+
agent = event.get("subagent_type", "orchestrator")
|
|
2593
|
+
if agent not in by_subagent:
|
|
2594
|
+
by_subagent[agent] = []
|
|
2595
|
+
by_subagent[agent].append(
|
|
2596
|
+
{
|
|
2597
|
+
"tool": event.get("tool_name"),
|
|
2598
|
+
"summary": event.get("input_summary"),
|
|
2599
|
+
"timestamp": event.get("created_at"),
|
|
2600
|
+
"event_id": event.get("event_id"),
|
|
2601
|
+
"success": not event.get("is_error", False),
|
|
2602
|
+
}
|
|
2603
|
+
)
|
|
2604
|
+
|
|
2605
|
+
return {
|
|
2606
|
+
"task_id": task_id,
|
|
2607
|
+
"by_subagent": by_subagent,
|
|
2608
|
+
"total_events": len(events),
|
|
2609
|
+
}
|
|
2610
|
+
except Exception as e:
|
|
2611
|
+
return {
|
|
2612
|
+
"task_id": task_id,
|
|
2613
|
+
"by_subagent": {},
|
|
2614
|
+
"total_events": 0,
|
|
2615
|
+
"error": str(e),
|
|
2616
|
+
}
|
|
2617
|
+
|
|
2618
|
+
def get_subagent_work(self, session_id: str) -> dict[str, list[dict[str, Any]]]:
|
|
2619
|
+
"""
|
|
2620
|
+
Get all work grouped by which subagent did it in a session.
|
|
2621
|
+
|
|
2622
|
+
Shows which subagent (researcher, general-purpose, etc.) executed each
|
|
2623
|
+
tool call within a session.
|
|
2624
|
+
|
|
2625
|
+
Args:
|
|
2626
|
+
session_id: Session ID to analyze
|
|
2627
|
+
|
|
2628
|
+
Returns:
|
|
2629
|
+
Dictionary mapping subagent_type to list of events they executed.
|
|
2630
|
+
Each event includes: tool_name, input_summary, output_summary, created_at, event_id
|
|
2631
|
+
|
|
2632
|
+
Example:
|
|
2633
|
+
>>> sdk = SDK(agent="claude")
|
|
2634
|
+
>>> work = sdk.get_subagent_work("sess-123")
|
|
2635
|
+
>>> for subagent, events in work.items():
|
|
2636
|
+
... print(f"{subagent} ({len(events)} events):")
|
|
2637
|
+
... for event in events:
|
|
2638
|
+
... print(f" - {event['tool_name']}: {event['input_summary']}")
|
|
2639
|
+
|
|
2640
|
+
See also:
|
|
2641
|
+
get_task_attribution: Get work for a specific Claude Code task
|
|
2642
|
+
analyze_session: Get session metrics and analytics
|
|
2643
|
+
"""
|
|
2644
|
+
from htmlgraph.config import get_database_path
|
|
2645
|
+
from htmlgraph.db.schema import HtmlGraphDB
|
|
2646
|
+
|
|
2647
|
+
try:
|
|
2648
|
+
db = HtmlGraphDB(str(get_database_path()))
|
|
2649
|
+
return db.get_subagent_work(session_id)
|
|
2650
|
+
except Exception:
|
|
2651
|
+
return {}
|
|
2652
|
+
|
|
2553
2653
|
# =========================================================================
|
|
2554
2654
|
# Help & Documentation
|
|
2555
2655
|
# =========================================================================
|
|
@@ -56,10 +56,15 @@ def test_batch_operation_feedback():
|
|
|
56
56
|
|
|
57
57
|
sdk = SDK(agent="test-agent")
|
|
58
58
|
|
|
59
|
+
# Create a track first
|
|
60
|
+
print("\n0. Creating test track...")
|
|
61
|
+
track = sdk.tracks.create("Batch Operation Test Track").save()
|
|
62
|
+
print(f"✓ Created track {track.id}")
|
|
63
|
+
|
|
59
64
|
# Create some test features
|
|
60
65
|
print("\n1. Creating test features...")
|
|
61
|
-
f1 = sdk.features.create("Test Feature 1").save()
|
|
62
|
-
f2 = sdk.features.create("Test Feature 2").save()
|
|
66
|
+
f1 = sdk.features.create("Test Feature 1").set_track(track.id).save()
|
|
67
|
+
f2 = sdk.features.create("Test Feature 2").set_track(track.id).save()
|
|
63
68
|
print(f"✓ Created {f1.id} and {f2.id}")
|
|
64
69
|
|
|
65
70
|
# Test mark_done with valid IDs
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/tests/integration/test_orchestrator_spawner_delegation.py
RENAMED
|
@@ -341,6 +341,7 @@ class TestOrchestratorDelegationLogic:
|
|
|
341
341
|
/ "plugin.json"
|
|
342
342
|
)
|
|
343
343
|
|
|
344
|
+
@pytest.mark.skip(reason="Agent structure changed - gemini agent with capabilities not in current plugin.json")
|
|
344
345
|
def test_orchestrator_delegates_to_gemini_for_exploration(
|
|
345
346
|
self, plugin_json_path: Path
|
|
346
347
|
) -> None:
|
|
@@ -371,6 +372,7 @@ class TestOrchestratorDelegationLogic:
|
|
|
371
372
|
f"Expected gemini for exploration, got {best_agent}"
|
|
372
373
|
)
|
|
373
374
|
|
|
375
|
+
@pytest.mark.skip(reason="Agent structure changed - codex agent with capabilities not in current plugin.json")
|
|
374
376
|
def test_orchestrator_delegates_to_codex_for_implementation(
|
|
375
377
|
self, plugin_json_path: Path
|
|
376
378
|
) -> None:
|
|
@@ -396,6 +398,7 @@ class TestOrchestratorDelegationLogic:
|
|
|
396
398
|
f"Expected codex for implementation, got {best_agent}"
|
|
397
399
|
)
|
|
398
400
|
|
|
401
|
+
@pytest.mark.skip(reason="Agent structure changed - copilot agent with capabilities not in current plugin.json")
|
|
399
402
|
def test_orchestrator_delegates_to_copilot_for_git_operations(
|
|
400
403
|
self, plugin_json_path: Path
|
|
401
404
|
) -> None:
|
|
@@ -420,6 +423,7 @@ class TestOrchestratorDelegationLogic:
|
|
|
420
423
|
f"Expected copilot for git_operations, got {best_agent}"
|
|
421
424
|
)
|
|
422
425
|
|
|
426
|
+
@pytest.mark.skip(reason="Agent structure changed - fallback field not present in current plugin.json")
|
|
423
427
|
def test_orchestrator_failure_handling_transparent(
|
|
424
428
|
self, plugin_json_path: Path
|
|
425
429
|
) -> None:
|
|
@@ -504,6 +508,7 @@ class TestSpawnerCliRequirements:
|
|
|
504
508
|
/ "plugin.json"
|
|
505
509
|
)
|
|
506
510
|
|
|
511
|
+
@pytest.mark.skip(reason="Agent structure changed - spawner agents not present in current plugin.json")
|
|
507
512
|
def test_all_spawners_declare_cli_requirement(self, plugin_json_path: Path) -> None:
|
|
508
513
|
"""Verify each spawner declares which CLI it requires."""
|
|
509
514
|
plugin_json = json.loads(plugin_json_path.read_text())
|
|
@@ -525,6 +530,7 @@ class TestSpawnerCliRequirements:
|
|
|
525
530
|
f"Agent {agent_name} requires {agent_config['requires_cli']}, expected {expected_cli}"
|
|
526
531
|
)
|
|
527
532
|
|
|
533
|
+
@pytest.mark.skip(reason="Agent structure changed - fallback field not present in current plugin.json")
|
|
528
534
|
def test_spawners_have_no_fallback(self, plugin_json_path: Path) -> None:
|
|
529
535
|
"""Verify spawners explicitly have no fallback behavior."""
|
|
530
536
|
plugin_json = json.loads(plugin_json_path.read_text())
|
|
@@ -539,6 +545,7 @@ class TestSpawnerCliRequirements:
|
|
|
539
545
|
)
|
|
540
546
|
|
|
541
547
|
|
|
548
|
+
@pytest.mark.skip(reason="Agent structure changed - capabilities field not present in current plugin.json")
|
|
542
549
|
class TestAgentCapabilityMatching:
|
|
543
550
|
"""Test orchestrator can match tasks to agents based on capabilities."""
|
|
544
551
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-api-graph.html
RENAMED
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-api-overview.html
RENAMED
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-api-sdk.html
RENAMED
|
File without changes
|
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-example-basic.html
RENAMED
|
File without changes
|
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-installation.html
RENAMED
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/documentation-site/features/doc-quickstart.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/note-ai-agents.html
RENAMED
|
File without changes
|
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/note-htmlgraph.html
RENAMED
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/examples/knowledge-base/features/note-web-standards.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_feature-complete.md
RENAMED
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/command_feature-primary.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{htmlgraph-0.26.14 → htmlgraph-0.26.15}/packages/gemini-extension/hooks/scripts/post-tool.sh
RENAMED
|
File without changes
|