emdash-core 0.1.57__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.57 → emdash_core-0.1.68}/PKG-INFO +3 -4
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/providers/models.py +1 -1
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/providers/openai_provider.py +10 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/runner/agent_runner.py +7 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/runner/sdk_runner.py +29 -2
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/agent.py +11 -1
- {emdash_core-0.1.57 → emdash_core-0.1.68}/pyproject.toml +4 -7
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/agents.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/background.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/code_reviewer.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/compaction.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/context_manager.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/events.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/handlers.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/hooks.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/inprocess_subagent.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/mcp/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/mcp/client.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/mcp/config.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/mcp/manager.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/mcp/tool_factory.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/prompts/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/prompts/main_agent.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/prompts/plan_mode.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/prompts/subagents.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/prompts/workflow.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/providers/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/providers/base.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/providers/factory.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/providers/transformers_provider.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/agent.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/controller.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/critic.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/macros.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/planner.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/researcher.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/state.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/research/synthesizer.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/reviewer_profile.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/rules.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/runner/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/runner/context.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/runner/factory.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/runner/plan.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/runner/utils.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/session.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/skills.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/spec_schema.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/specification.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/subagent.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/subagent_prompts.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/toolkit.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/toolkits/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/toolkits/base.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/toolkits/explore.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/toolkits/plan.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/analytics.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/base.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/coding.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/github_mcp.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/history.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/lsp.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/modes.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/plan.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/plan_write.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/search.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/skill.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/spec.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/task.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/task_output.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/tasks.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/traversal.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/tools/web.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/verifier/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/verifier/manager.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/verifier/models.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/agent/worktree.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/analytics/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/analytics/engine.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/agents.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/analyze.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/auth.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/context.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/db.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/embed.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/feature.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/health.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/index.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/plan.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/projectmd.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/query.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/research.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/review.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/router.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/rules.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/search.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/skills.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/spec.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/tasks.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/api/team.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/auth/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/auth/github.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/checkpoint/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/checkpoint/cli.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/checkpoint/git_operations.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/checkpoint/manager.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/checkpoint/models.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/checkpoint/storage.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/config.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/longevity.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/models.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/providers/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/providers/base.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/providers/explored_areas.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/providers/touched_areas.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/registry.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/reranker.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/service.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/session.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/simple_reranker.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/context/tool_relevance.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/core/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/core/config.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/core/exceptions.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/core/models.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/core/review_config.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/indexer.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/models.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/providers/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/providers/base.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/providers/fireworks.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/providers/openai.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/registry.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/embeddings/service.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/graph/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/graph/builder.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/graph/connection.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/graph/schema.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/graph/writer.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/change_detector.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/git/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/git/commit_analyzer.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/github/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/github/pr_fetcher.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/github/task_extractor.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/orchestrator.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/base_parser.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/call_graph_builder.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/class_extractor.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/function_extractor.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/import_analyzer.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/python_parser.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/registry.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/ts_ast_parser.js +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/typescript_parser.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/ingestion/repository.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/models/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/models/agent.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/models/index.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/models/query.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/agent_api.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/context_builder.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/feature_context.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/feature_expander.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/llm_explainer.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/similarity.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/planning/team_focus.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/server.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/skills/frontend-design/SKILL.md +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/sse/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/sse/stream.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/agent-builder.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/focus.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/pr-review-enhanced.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/pr-review.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/project.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/research_critic.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/research_planner.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/research_synthesizer.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/reviewer.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/spec.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/tasks.md.template +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/loader.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/utils/__init__.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/utils/git.py +0 -0
- {emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/utils/image.py +0 -0
- {emdash_core-0.1.57 → 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)
|
|
@@ -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)
|
|
@@ -793,6 +793,13 @@ DO NOT output more text. Use a tool NOW.""",
|
|
|
793
793
|
# No history, just run fresh
|
|
794
794
|
return self.run(message, images=images)
|
|
795
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
|
+
|
|
796
803
|
# Store query for reranking context frame
|
|
797
804
|
self._current_query = message
|
|
798
805
|
|
|
@@ -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
|
|
@@ -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"
|
|
@@ -57,9 +57,6 @@ pyyaml = "^6.0"
|
|
|
57
57
|
# Clipboard (macOS only)
|
|
58
58
|
pyobjc-framework-Cocoa = {version = ">=9.0", markers = "sys_platform == 'darwin'"}
|
|
59
59
|
|
|
60
|
-
[tool.poetry.extras]
|
|
61
|
-
graph = ["kuzu", "cmake"]
|
|
62
|
-
|
|
63
60
|
[tool.poetry.group.dev.dependencies]
|
|
64
61
|
pytest = "^7.4.3"
|
|
65
62
|
pytest-cov = "^4.1.0"
|
|
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.57 → 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.57 → emdash_core-0.1.68}/emdash_core/ingestion/parsers/call_graph_builder.py
RENAMED
|
File without changes
|
|
File without changes
|
{emdash_core-0.1.57 → 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.57 → 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.57 → 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.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/pr-review.md.template
RENAMED
|
File without changes
|
{emdash_core-0.1.57 → emdash_core-0.1.68}/emdash_core/templates/defaults/project.md.template
RENAMED
|
File without changes
|
{emdash_core-0.1.57 → 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.57 → 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
|