emdash-core 0.1.53__tar.gz → 0.1.68__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.
- {emdash_core-0.1.53 → emdash_core-0.1.68}/PKG-INFO +4 -4
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/providers/models.py +1 -1
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/providers/openai_provider.py +10 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/runner/agent_runner.py +28 -12
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/runner/sdk_runner.py +29 -2
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/agent.py +16 -2
- {emdash_core-0.1.53 → emdash_core-0.1.68}/pyproject.toml +6 -6
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/agents.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/background.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/code_reviewer.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/compaction.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/context_manager.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/events.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/handlers.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/hooks.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/inprocess_subagent.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/mcp/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/mcp/client.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/mcp/config.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/mcp/manager.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/mcp/tool_factory.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/prompts/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/prompts/main_agent.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/prompts/plan_mode.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/prompts/subagents.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/prompts/workflow.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/providers/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/providers/base.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/providers/factory.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/providers/transformers_provider.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/agent.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/controller.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/critic.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/macros.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/planner.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/researcher.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/state.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/research/synthesizer.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/reviewer_profile.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/rules.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/runner/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/runner/context.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/runner/factory.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/runner/plan.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/runner/utils.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/session.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/skills.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/spec_schema.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/specification.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/subagent.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/subagent_prompts.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/toolkit.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/toolkits/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/toolkits/base.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/toolkits/explore.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/toolkits/plan.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/analytics.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/base.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/coding.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/github_mcp.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/history.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/lsp.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/modes.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/plan.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/plan_write.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/search.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/skill.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/spec.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/task.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/task_output.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/tasks.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/traversal.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/tools/web.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/verifier/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/verifier/manager.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/verifier/models.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/worktree.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/analytics/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/analytics/engine.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/agents.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/analyze.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/auth.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/context.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/db.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/embed.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/feature.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/health.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/index.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/plan.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/projectmd.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/query.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/research.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/review.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/router.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/rules.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/search.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/skills.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/spec.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/tasks.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/api/team.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/auth/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/auth/github.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/checkpoint/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/checkpoint/cli.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/checkpoint/git_operations.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/checkpoint/manager.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/checkpoint/models.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/checkpoint/storage.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/config.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/longevity.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/models.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/providers/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/providers/base.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/providers/explored_areas.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/providers/touched_areas.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/registry.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/reranker.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/service.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/session.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/simple_reranker.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/context/tool_relevance.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/core/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/core/config.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/core/exceptions.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/core/models.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/core/review_config.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/indexer.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/models.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/providers/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/providers/base.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/providers/fireworks.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/providers/openai.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/registry.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/embeddings/service.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/graph/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/graph/builder.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/graph/connection.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/graph/schema.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/graph/writer.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/change_detector.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/git/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/git/commit_analyzer.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/github/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/github/pr_fetcher.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/github/task_extractor.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/orchestrator.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/base_parser.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/call_graph_builder.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/class_extractor.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/function_extractor.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/import_analyzer.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/python_parser.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/registry.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/ts_ast_parser.js +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/typescript_parser.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/repository.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/models/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/models/agent.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/models/index.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/models/query.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/agent_api.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/context_builder.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/feature_context.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/feature_expander.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/llm_explainer.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/similarity.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/planning/team_focus.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/server.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/skills/frontend-design/SKILL.md +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/sse/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/sse/stream.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/agent-builder.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/focus.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/pr-review-enhanced.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/pr-review.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/project.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/research_critic.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/research_planner.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/research_synthesizer.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/reviewer.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/spec.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/tasks.md.template +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/loader.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/utils/__init__.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/utils/git.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/utils/image.py +0 -0
- {emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/utils/logger.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: emdash-core
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.68
|
|
4
4
|
Summary: EmDash Core - FastAPI server for code intelligence
|
|
5
5
|
Author: Em Dash Team
|
|
6
6
|
Requires-Python: >=3.10,<4.0
|
|
@@ -10,16 +10,15 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.13
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
-
Provides-Extra: graph
|
|
14
13
|
Requires-Dist: astroid (>=3.0.1,<4.0.0)
|
|
15
14
|
Requires-Dist: beautifulsoup4 (>=4.12.0)
|
|
16
15
|
Requires-Dist: claude-agent-sdk (>=0.1.19)
|
|
17
|
-
Requires-Dist: cmake (>=3.25.0)
|
|
16
|
+
Requires-Dist: cmake (>=3.25.0)
|
|
18
17
|
Requires-Dist: duckduckgo-search (>=6.0.0)
|
|
19
18
|
Requires-Dist: fastapi (>=0.109.0)
|
|
20
19
|
Requires-Dist: gitpython (>=3.1.40,<4.0.0)
|
|
21
20
|
Requires-Dist: httpx (>=0.25.0)
|
|
22
|
-
Requires-Dist: kuzu (>=0.4.0)
|
|
21
|
+
Requires-Dist: kuzu (>=0.4.0)
|
|
23
22
|
Requires-Dist: loguru (>=0.7.2,<0.8.0)
|
|
24
23
|
Requires-Dist: networkx (>=3.2.1,<4.0.0)
|
|
25
24
|
Requires-Dist: numpy (>=1.26.0)
|
|
@@ -27,6 +26,7 @@ Requires-Dist: openai (>=1.0.0)
|
|
|
27
26
|
Requires-Dist: pydantic (>=2.5.0,<3.0.0)
|
|
28
27
|
Requires-Dist: pydantic-settings (>=2.0.0,<3.0.0)
|
|
29
28
|
Requires-Dist: pygithub (>=2.1.1,<3.0.0)
|
|
29
|
+
Requires-Dist: pyobjc-framework-Cocoa (>=9.0) ; sys_platform == "darwin"
|
|
30
30
|
Requires-Dist: pypng (>=0.0.21,<0.0.22)
|
|
31
31
|
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
32
32
|
Requires-Dist: python-louvain (>=0.16,<0.17)
|
|
@@ -111,7 +111,7 @@ class ChatModel(Enum):
|
|
|
111
111
|
context_window=1000000,
|
|
112
112
|
max_output_tokens=16384,
|
|
113
113
|
supports_tools=True,
|
|
114
|
-
supports_vision=False,
|
|
114
|
+
supports_vision=False, # Fireworks deployment doesn't expose vision
|
|
115
115
|
supports_thinking=False,
|
|
116
116
|
description="MiniMax M2P1 - Long context model",
|
|
117
117
|
)
|
|
@@ -139,6 +139,8 @@ class OpenAIProvider(LLMProvider):
|
|
|
139
139
|
self._thinking_budget = int(os.environ.get("EMDASH_THINKING_BUDGET", "10000"))
|
|
140
140
|
# Reasoning effort for Fireworks thinking models: none, low, medium, high
|
|
141
141
|
self._reasoning_effort = os.environ.get("EMDASH_REASONING_EFFORT", "medium")
|
|
142
|
+
# Parallel tool calls for OpenAI-compatible APIs (Fireworks supports this)
|
|
143
|
+
self._parallel_tool_calls = self._parse_bool_env("EMDASH_PARALLEL_TOOL_CALLS")
|
|
142
144
|
|
|
143
145
|
# Use OPENAI_BASE_URL env var only for OpenAI provider, otherwise use provider config
|
|
144
146
|
if self._provider == "openai":
|
|
@@ -244,6 +246,14 @@ class OpenAIProvider(LLMProvider):
|
|
|
244
246
|
if tools:
|
|
245
247
|
kwargs["tools"] = tools
|
|
246
248
|
kwargs["tool_choice"] = "auto"
|
|
249
|
+
# Add parallel_tool_calls if enabled (Fireworks and OpenAI support this)
|
|
250
|
+
if self._parallel_tool_calls is True:
|
|
251
|
+
kwargs["parallel_tool_calls"] = True
|
|
252
|
+
log.debug(
|
|
253
|
+
"Parallel tool calls enabled provider={} model={}",
|
|
254
|
+
self._provider,
|
|
255
|
+
self.model,
|
|
256
|
+
)
|
|
247
257
|
|
|
248
258
|
# Add reasoning support via extra_body for providers that support it
|
|
249
259
|
# Skip reasoning for custom base URLs (they may not support it)
|
|
@@ -310,24 +310,27 @@ class AgentRunner(PlanMixin):
|
|
|
310
310
|
from ..tools.modes import ModeState
|
|
311
311
|
ModeState.get_instance().reset_cycle()
|
|
312
312
|
|
|
313
|
-
# Build user message
|
|
313
|
+
# Build user message content
|
|
314
314
|
if context:
|
|
315
|
-
|
|
316
|
-
"role": "user",
|
|
317
|
-
"content": f"Context:\n{context}\n\nQuestion: {query}",
|
|
318
|
-
}
|
|
315
|
+
text_content = f"Context:\n{context}\n\nQuestion: {query}"
|
|
319
316
|
else:
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
317
|
+
text_content = query
|
|
318
|
+
|
|
319
|
+
# Format content with images if provided
|
|
320
|
+
if images:
|
|
321
|
+
content = self.provider.format_content_with_images(text_content, images)
|
|
322
|
+
else:
|
|
323
|
+
content = text_content
|
|
324
|
+
|
|
325
|
+
user_message = {
|
|
326
|
+
"role": "user",
|
|
327
|
+
"content": content,
|
|
328
|
+
}
|
|
324
329
|
|
|
325
330
|
# Save user message to history BEFORE running (so it's preserved even if interrupted)
|
|
326
331
|
self._messages.append(user_message)
|
|
327
332
|
messages = list(self._messages) # Copy for the loop
|
|
328
333
|
|
|
329
|
-
# TODO: Handle images if provided
|
|
330
|
-
|
|
331
334
|
# Get tool schemas
|
|
332
335
|
tools = self.toolkit.get_all_schemas()
|
|
333
336
|
|
|
@@ -790,13 +793,26 @@ DO NOT output more text. Use a tool NOW.""",
|
|
|
790
793
|
# No history, just run fresh
|
|
791
794
|
return self.run(message, images=images)
|
|
792
795
|
|
|
796
|
+
# Reset per-cycle mode state (allows exit_plan to be called again)
|
|
797
|
+
# This is critical for plan mode - without this reset, if a clarification
|
|
798
|
+
# response comes in after exit_plan was called, plan_submitted would remain
|
|
799
|
+
# True and block subsequent exit_plan calls.
|
|
800
|
+
from ..tools.modes import ModeState
|
|
801
|
+
ModeState.get_instance().reset_cycle()
|
|
802
|
+
|
|
793
803
|
# Store query for reranking context frame
|
|
794
804
|
self._current_query = message
|
|
795
805
|
|
|
806
|
+
# Format content with images if provided
|
|
807
|
+
if images:
|
|
808
|
+
content = self.provider.format_content_with_images(message, images)
|
|
809
|
+
else:
|
|
810
|
+
content = message
|
|
811
|
+
|
|
796
812
|
# Add new user message to history
|
|
797
813
|
self._messages.append({
|
|
798
814
|
"role": "user",
|
|
799
|
-
"content":
|
|
815
|
+
"content": content,
|
|
800
816
|
})
|
|
801
817
|
|
|
802
818
|
# Get tool schemas
|
|
@@ -184,11 +184,12 @@ class SDKAgentRunner:
|
|
|
184
184
|
from ..events import EventType
|
|
185
185
|
self.emitter.emit(getattr(EventType, event_type), data)
|
|
186
186
|
|
|
187
|
-
async def run(self, prompt: str) -> AsyncIterator[dict]:
|
|
187
|
+
async def run(self, prompt: str, images: list = None) -> AsyncIterator[dict]:
|
|
188
188
|
"""Execute agent with SDK.
|
|
189
189
|
|
|
190
190
|
Args:
|
|
191
191
|
prompt: User prompt/task
|
|
192
|
+
images: Optional list of image dicts with 'data' (bytes) and 'format' keys
|
|
192
193
|
|
|
193
194
|
Yields:
|
|
194
195
|
Event dicts for UI streaming
|
|
@@ -201,6 +202,7 @@ class SDKAgentRunner:
|
|
|
201
202
|
ToolResultBlock,
|
|
202
203
|
ResultMessage,
|
|
203
204
|
)
|
|
205
|
+
import base64
|
|
204
206
|
|
|
205
207
|
options = self._get_options()
|
|
206
208
|
|
|
@@ -210,9 +212,34 @@ class SDKAgentRunner:
|
|
|
210
212
|
"agent_name": "Emdash Code (SDK)",
|
|
211
213
|
})
|
|
212
214
|
|
|
215
|
+
# Format prompt with images if provided
|
|
216
|
+
if images:
|
|
217
|
+
# Build content blocks for Claude SDK
|
|
218
|
+
content_blocks = []
|
|
219
|
+
for img in images:
|
|
220
|
+
img_data = img.get("data")
|
|
221
|
+
img_format = img.get("format", "png")
|
|
222
|
+
if isinstance(img_data, bytes):
|
|
223
|
+
encoded = base64.b64encode(img_data).decode("utf-8")
|
|
224
|
+
else:
|
|
225
|
+
encoded = img_data # Already base64 encoded
|
|
226
|
+
content_blocks.append({
|
|
227
|
+
"type": "image",
|
|
228
|
+
"source": {
|
|
229
|
+
"type": "base64",
|
|
230
|
+
"media_type": f"image/{img_format}",
|
|
231
|
+
"data": encoded,
|
|
232
|
+
}
|
|
233
|
+
})
|
|
234
|
+
content_blocks.append({"type": "text", "text": prompt})
|
|
235
|
+
query_content = content_blocks
|
|
236
|
+
log.info(f"SDK agent: sending {len(images)} images with prompt")
|
|
237
|
+
else:
|
|
238
|
+
query_content = prompt
|
|
239
|
+
|
|
213
240
|
try:
|
|
214
241
|
async with ClaudeSDKClient(options=options) as client:
|
|
215
|
-
await client.query(
|
|
242
|
+
await client.query(query_content)
|
|
216
243
|
|
|
217
244
|
async for message in client.receive_response():
|
|
218
245
|
# Process message and yield events
|
|
@@ -38,6 +38,7 @@ def _run_sdk_agent(
|
|
|
38
38
|
session_id: str,
|
|
39
39
|
emitter,
|
|
40
40
|
plan_mode: bool = False,
|
|
41
|
+
images: list = None,
|
|
41
42
|
):
|
|
42
43
|
"""Run the agent using Anthropic Agent SDK.
|
|
43
44
|
|
|
@@ -72,7 +73,7 @@ def _run_sdk_agent(
|
|
|
72
73
|
# Run async agent in sync context
|
|
73
74
|
async def run_async():
|
|
74
75
|
response_text = ""
|
|
75
|
-
async for event in runner.run(message):
|
|
76
|
+
async for event in runner.run(message, images=images):
|
|
76
77
|
if event.get("type") == "text":
|
|
77
78
|
response_text += event.get("content", "")
|
|
78
79
|
return response_text
|
|
@@ -154,6 +155,14 @@ def _run_agent_sync(
|
|
|
154
155
|
|
|
155
156
|
# Use SDK for Claude models if enabled
|
|
156
157
|
if use_sdk and is_claude_model(model):
|
|
158
|
+
# Convert images for SDK if provided
|
|
159
|
+
sdk_images = None
|
|
160
|
+
if images:
|
|
161
|
+
import base64
|
|
162
|
+
sdk_images = [
|
|
163
|
+
{"data": base64.b64decode(img.data), "format": img.format}
|
|
164
|
+
for img in images
|
|
165
|
+
]
|
|
157
166
|
return _run_sdk_agent(
|
|
158
167
|
message=message,
|
|
159
168
|
model=model,
|
|
@@ -161,6 +170,7 @@ def _run_agent_sync(
|
|
|
161
170
|
session_id=session_id,
|
|
162
171
|
emitter=emitter,
|
|
163
172
|
plan_mode=plan_mode,
|
|
173
|
+
images=sdk_images,
|
|
164
174
|
)
|
|
165
175
|
|
|
166
176
|
# Standard path: use AgentRunner with OpenAI-compatible API
|
|
@@ -251,9 +261,13 @@ def _run_agent_sync(
|
|
|
251
261
|
# Convert image data if provided
|
|
252
262
|
agent_images = None
|
|
253
263
|
if images:
|
|
264
|
+
import base64
|
|
254
265
|
from ..agent.providers.base import ImageContent
|
|
255
266
|
agent_images = [
|
|
256
|
-
ImageContent(
|
|
267
|
+
ImageContent(
|
|
268
|
+
image_data=base64.b64decode(img.data),
|
|
269
|
+
format=img.format
|
|
270
|
+
)
|
|
257
271
|
for img in images
|
|
258
272
|
]
|
|
259
273
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "emdash-core"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.68"
|
|
4
4
|
description = "EmDash Core - FastAPI server for code intelligence"
|
|
5
5
|
authors = ["Em Dash Team"]
|
|
6
6
|
packages = [{include = "emdash_core"}]
|
|
@@ -16,9 +16,9 @@ fastapi = ">=0.109.0"
|
|
|
16
16
|
uvicorn = {extras = ["standard"], version = ">=0.27.0"}
|
|
17
17
|
sse-starlette = ">=2.0.0"
|
|
18
18
|
|
|
19
|
-
# Graph database
|
|
20
|
-
cmake =
|
|
21
|
-
kuzu =
|
|
19
|
+
# Graph database
|
|
20
|
+
cmake = ">=3.25.0"
|
|
21
|
+
kuzu = ">=0.4.0"
|
|
22
22
|
|
|
23
23
|
# LLM
|
|
24
24
|
openai = ">=1.0.0"
|
|
@@ -54,8 +54,8 @@ tqdm = "^4.66.1"
|
|
|
54
54
|
pypng = "^0.0.21"
|
|
55
55
|
pyyaml = "^6.0"
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
# Clipboard (macOS only)
|
|
58
|
+
pyobjc-framework-Cocoa = {version = ">=9.0", markers = "sys_platform == 'darwin'"}
|
|
59
59
|
|
|
60
60
|
[tool.poetry.group.dev.dependencies]
|
|
61
61
|
pytest = "^7.4.3"
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/agent/providers/transformers_provider.py
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/call_graph_builder.py
RENAMED
|
File without changes
|
|
File without changes
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/function_extractor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/typescript_parser.py
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
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/agent-builder.md.template
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/pr-review.md.template
RENAMED
|
File without changes
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/project.md.template
RENAMED
|
File without changes
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/research_critic.md.template
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{emdash_core-0.1.53 → emdash_core-0.1.68}/emdash_core/templates/defaults/reviewer.md.template
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
|