emdash-core 0.1.7__py3-none-any.whl → 0.1.25__py3-none-any.whl
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/__init__.py +6 -1
- emdash_core/agent/events.py +29 -0
- emdash_core/agent/prompts/__init__.py +5 -0
- emdash_core/agent/prompts/main_agent.py +22 -2
- emdash_core/agent/prompts/plan_mode.py +126 -0
- emdash_core/agent/prompts/subagents.py +11 -7
- emdash_core/agent/prompts/workflow.py +138 -43
- emdash_core/agent/providers/base.py +4 -0
- emdash_core/agent/providers/models.py +7 -0
- emdash_core/agent/providers/openai_provider.py +74 -2
- emdash_core/agent/runner.py +556 -34
- emdash_core/agent/skills.py +319 -0
- emdash_core/agent/toolkit.py +48 -0
- emdash_core/agent/tools/__init__.py +3 -2
- emdash_core/agent/tools/modes.py +197 -53
- emdash_core/agent/tools/search.py +4 -0
- emdash_core/agent/tools/skill.py +193 -0
- emdash_core/agent/tools/spec.py +61 -94
- emdash_core/agent/tools/tasks.py +15 -78
- emdash_core/api/agent.py +7 -7
- emdash_core/api/index.py +1 -1
- emdash_core/api/projectmd.py +4 -2
- emdash_core/api/router.py +2 -0
- emdash_core/api/skills.py +241 -0
- emdash_core/checkpoint/__init__.py +40 -0
- emdash_core/checkpoint/cli.py +175 -0
- emdash_core/checkpoint/git_operations.py +250 -0
- emdash_core/checkpoint/manager.py +231 -0
- emdash_core/checkpoint/models.py +107 -0
- emdash_core/checkpoint/storage.py +201 -0
- emdash_core/config.py +1 -1
- emdash_core/core/config.py +18 -2
- emdash_core/graph/schema.py +5 -5
- emdash_core/ingestion/orchestrator.py +19 -10
- emdash_core/models/agent.py +1 -1
- emdash_core/server.py +42 -0
- emdash_core/sse/stream.py +1 -0
- {emdash_core-0.1.7.dist-info → emdash_core-0.1.25.dist-info}/METADATA +1 -2
- {emdash_core-0.1.7.dist-info → emdash_core-0.1.25.dist-info}/RECORD +41 -31
- {emdash_core-0.1.7.dist-info → emdash_core-0.1.25.dist-info}/entry_points.txt +1 -0
- {emdash_core-0.1.7.dist-info → emdash_core-0.1.25.dist-info}/WHEEL +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Orchestrates the complete ingestion pipeline."""
|
|
2
2
|
|
|
3
|
-
from concurrent.futures import
|
|
3
|
+
from concurrent.futures import ThreadPoolExecutor, as_completed
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import Callable, Optional
|
|
6
6
|
|
|
@@ -25,8 +25,6 @@ from ..utils.logger import log
|
|
|
25
25
|
def _parse_file_worker(file_path: Path, repo_root: Path) -> FileEntities:
|
|
26
26
|
"""Worker function for parallel file parsing.
|
|
27
27
|
|
|
28
|
-
This is a module-level function so it can be pickled for ProcessPoolExecutor.
|
|
29
|
-
|
|
30
28
|
Args:
|
|
31
29
|
file_path: Path to source file
|
|
32
30
|
repo_root: Repository root path
|
|
@@ -94,7 +92,7 @@ class IngestionOrchestrator:
|
|
|
94
92
|
|
|
95
93
|
# Acquire write lock for the entire indexing operation
|
|
96
94
|
with write_lock_context("indexing", timeout=120):
|
|
97
|
-
self._run_index(repo_path, incremental, changed_only, skip_git, pr_limit)
|
|
95
|
+
return self._run_index(repo_path, incremental, changed_only, skip_git, pr_limit)
|
|
98
96
|
|
|
99
97
|
def _run_index(
|
|
100
98
|
self,
|
|
@@ -133,7 +131,7 @@ class IngestionOrchestrator:
|
|
|
133
131
|
changed_only = False
|
|
134
132
|
elif last_indexed_commit == current_commit:
|
|
135
133
|
log.info("No changes since last index - nothing to do")
|
|
136
|
-
return
|
|
134
|
+
return {"files": 0, "functions": 0, "classes": 0, "modules": 0, "commits": 0, "authors": 0, "prs": 0, "message": "No changes since last index"}
|
|
137
135
|
else:
|
|
138
136
|
extensions = ParserRegistry.get_all_extensions()
|
|
139
137
|
detector = ChangeDetector(repo, last_indexed_commit)
|
|
@@ -141,7 +139,7 @@ class IngestionOrchestrator:
|
|
|
141
139
|
|
|
142
140
|
if not changed_files:
|
|
143
141
|
log.info("No relevant file changes detected - nothing to do")
|
|
144
|
-
return
|
|
142
|
+
return {"files": 0, "functions": 0, "classes": 0, "modules": 0, "commits": 0, "authors": 0, "prs": 0, "message": "No relevant file changes"}
|
|
145
143
|
|
|
146
144
|
log.info(f"Changes detected: {changed_files.total_changes} files")
|
|
147
145
|
|
|
@@ -157,7 +155,7 @@ class IngestionOrchestrator:
|
|
|
157
155
|
# Parse only added and modified files
|
|
158
156
|
entities = self._parse_codebase(repo, file_filter=changed_files.all_to_index)
|
|
159
157
|
else:
|
|
160
|
-
log.info("Step 2:
|
|
158
|
+
log.info("Step 2: Indexing codebase (Layer A)...")
|
|
161
159
|
entities = self._parse_codebase(repo)
|
|
162
160
|
|
|
163
161
|
# Step 3: Extract git history (Layer B)
|
|
@@ -201,6 +199,17 @@ class IngestionOrchestrator:
|
|
|
201
199
|
log.info("✓ Indexing complete!")
|
|
202
200
|
self._print_summary(entities, git_data, prs)
|
|
203
201
|
|
|
202
|
+
# Return stats for API response
|
|
203
|
+
return {
|
|
204
|
+
"files": len(entities.files),
|
|
205
|
+
"functions": len(entities.functions),
|
|
206
|
+
"classes": len(entities.classes),
|
|
207
|
+
"modules": len(entities.modules),
|
|
208
|
+
"commits": len(git_data.commits) if git_data else 0,
|
|
209
|
+
"authors": len(git_data.authors) if git_data else 0,
|
|
210
|
+
"prs": len(prs) if prs else 0,
|
|
211
|
+
}
|
|
212
|
+
|
|
204
213
|
def _ensure_database_ready(self):
|
|
205
214
|
"""Ensure database connection and schema are ready."""
|
|
206
215
|
log.info("Connecting to Kuzu and ensuring schema...")
|
|
@@ -350,7 +359,7 @@ class IngestionOrchestrator:
|
|
|
350
359
|
last_reported_percent = (current_percent // 10) * 10
|
|
351
360
|
# Map parsing progress (0-100) to overall progress (10-70)
|
|
352
361
|
overall_percent = 10 + (last_reported_percent * 0.6)
|
|
353
|
-
self._progress_callback(
|
|
362
|
+
self._progress_callback("Parsing files", overall_percent)
|
|
354
363
|
|
|
355
364
|
return CodebaseEntities.merge(results)
|
|
356
365
|
|
|
@@ -373,7 +382,7 @@ class IngestionOrchestrator:
|
|
|
373
382
|
last_reported_percent = 0
|
|
374
383
|
completed = 0
|
|
375
384
|
|
|
376
|
-
with
|
|
385
|
+
with ThreadPoolExecutor(max_workers=self.config.ingestion.max_workers) as executor:
|
|
377
386
|
# Submit all tasks
|
|
378
387
|
futures = {
|
|
379
388
|
executor.submit(_parse_file_worker, file_path, repo_root): file_path
|
|
@@ -401,7 +410,7 @@ class IngestionOrchestrator:
|
|
|
401
410
|
if current_percent >= last_reported_percent + 10:
|
|
402
411
|
last_reported_percent = (current_percent // 10) * 10
|
|
403
412
|
overall_percent = 10 + (last_reported_percent * 0.6)
|
|
404
|
-
self._progress_callback(
|
|
413
|
+
self._progress_callback("Parsing files", overall_percent)
|
|
405
414
|
|
|
406
415
|
return CodebaseEntities.merge(results)
|
|
407
416
|
|
emdash_core/models/agent.py
CHANGED
|
@@ -26,7 +26,7 @@ class ImageData(BaseModel):
|
|
|
26
26
|
class AgentChatOptions(BaseModel):
|
|
27
27
|
"""Options for agent chat."""
|
|
28
28
|
|
|
29
|
-
max_iterations: int = Field(default=
|
|
29
|
+
max_iterations: int = Field(default=100, description="Maximum agent iterations")
|
|
30
30
|
verbose: bool = Field(default=True, description="Enable verbose output")
|
|
31
31
|
mode: AgentMode = Field(default=AgentMode.CODE, description="Agent mode")
|
|
32
32
|
context_threshold: float = Field(
|
emdash_core/server.py
CHANGED
|
@@ -38,6 +38,47 @@ def _load_env_files(repo_root: Optional[str] = None):
|
|
|
38
38
|
load_dotenv(env_path, override=True)
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
def _shutdown_executors():
|
|
42
|
+
"""Shutdown all module-level thread pool executors and database connections."""
|
|
43
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
44
|
+
|
|
45
|
+
# Import all modules with executors and shut them down
|
|
46
|
+
executor_modules = [
|
|
47
|
+
"emdash_core.api.index",
|
|
48
|
+
"emdash_core.api.auth",
|
|
49
|
+
"emdash_core.api.swarm",
|
|
50
|
+
"emdash_core.api.tasks",
|
|
51
|
+
"emdash_core.api.research",
|
|
52
|
+
"emdash_core.api.spec",
|
|
53
|
+
"emdash_core.api.team",
|
|
54
|
+
"emdash_core.api.review",
|
|
55
|
+
"emdash_core.api.agent",
|
|
56
|
+
"emdash_core.api.projectmd",
|
|
57
|
+
"emdash_core.agent.inprocess_subagent",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
for module_name in executor_modules:
|
|
61
|
+
try:
|
|
62
|
+
module = sys.modules.get(module_name)
|
|
63
|
+
if module and hasattr(module, "_executor"):
|
|
64
|
+
executor = getattr(module, "_executor")
|
|
65
|
+
if executor and isinstance(executor, ThreadPoolExecutor):
|
|
66
|
+
executor.shutdown(wait=False)
|
|
67
|
+
except Exception:
|
|
68
|
+
pass # Ignore errors during shutdown
|
|
69
|
+
|
|
70
|
+
# Close database connections
|
|
71
|
+
try:
|
|
72
|
+
from .graph.connection import get_connection, _read_connection
|
|
73
|
+
conn = get_connection()
|
|
74
|
+
if conn:
|
|
75
|
+
conn.close()
|
|
76
|
+
if _read_connection:
|
|
77
|
+
_read_connection.close()
|
|
78
|
+
except Exception:
|
|
79
|
+
pass # Ignore errors during shutdown
|
|
80
|
+
|
|
81
|
+
|
|
41
82
|
@asynccontextmanager
|
|
42
83
|
async def lifespan(app: FastAPI):
|
|
43
84
|
"""Application lifespan handler."""
|
|
@@ -57,6 +98,7 @@ async def lifespan(app: FastAPI):
|
|
|
57
98
|
|
|
58
99
|
# Shutdown
|
|
59
100
|
print("EmDash Core shutting down...")
|
|
101
|
+
_shutdown_executors()
|
|
60
102
|
if port_file.exists():
|
|
61
103
|
port_file.unlink()
|
|
62
104
|
|
emdash_core/sse/stream.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: emdash-core
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.25
|
|
4
4
|
Summary: EmDash Core - FastAPI server for code intelligence
|
|
5
5
|
Author: Em Dash Team
|
|
6
6
|
Requires-Python: >=3.10,<4.0
|
|
@@ -27,7 +27,6 @@ Requires-Dist: pydantic-settings (>=2.0.0,<3.0.0)
|
|
|
27
27
|
Requires-Dist: pygithub (>=2.1.1,<3.0.0)
|
|
28
28
|
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
|
|
29
29
|
Requires-Dist: python-louvain (>=0.16,<0.17)
|
|
30
|
-
Requires-Dist: scipy (>=1.11.4,<2.0.0)
|
|
31
30
|
Requires-Dist: sentence-transformers (>=2.2.0)
|
|
32
31
|
Requires-Dist: sse-starlette (>=2.0.0)
|
|
33
32
|
Requires-Dist: supabase (>=2.0.0)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
emdash_core/__init__.py,sha256=
|
|
1
|
+
emdash_core/__init__.py,sha256=2VnFDN5zmKekKBa5rHZY9nz2Dhv2lB_O6dTcz-wyF8s,226
|
|
2
2
|
emdash_core/agent/__init__.py,sha256=78P3l8dMA9Qepg0b8WMOWobrhmIpzn4Y0TXtgfndQ8E,1061
|
|
3
3
|
emdash_core/agent/agents.py,sha256=CCsDJSl9Vwhitc71L9oQ6SO_qhhyumI7L07Osmgugcg,5825
|
|
4
4
|
emdash_core/agent/code_reviewer.py,sha256=oUXcDbk773kwYtcCsUNEjb_ipS9rLeCKIv_IEUiUA9k,16467
|
|
5
5
|
emdash_core/agent/compaction.py,sha256=_smuIjmzaiblr6viRFByQCekRzoZDTetcaXRLQol8CI,4102
|
|
6
6
|
emdash_core/agent/context_manager.py,sha256=3HBQFRwsq1bBx6R7FQp7xFsiW0zPLPnOF-8Ox4Y6K44,3676
|
|
7
|
-
emdash_core/agent/events.py,sha256=
|
|
7
|
+
emdash_core/agent/events.py,sha256=hIl_w1gUH9kSpA5pGHD30eSdX0BiXYYwIg4Q6vtKRps,11336
|
|
8
8
|
emdash_core/agent/handlers.py,sha256=3zo76GT3cTfYayK1qvP2NFo14AXHfA36X-yaa7Xm3T0,7135
|
|
9
9
|
emdash_core/agent/inprocess_subagent.py,sha256=PJ6ItCT9fdT8klIQ0dCZ4g_xPoKrAjT3Ui4z8Mvu6V8,11159
|
|
10
10
|
emdash_core/agent/mcp/__init__.py,sha256=qzQMJJOgOYVb6X2uyJxTIGgV5x35Dn7H3IglZxToX_c,1081
|
|
@@ -12,15 +12,16 @@ emdash_core/agent/mcp/client.py,sha256=_ae6CWRnJfG_mcCcIYZJYbWjajpZC-WmZgsZsRaah
|
|
|
12
12
|
emdash_core/agent/mcp/config.py,sha256=JrO7xIC3oSiFlxeTVynKm1pq2CrYdqzTsIJj9neSJLQ,9220
|
|
13
13
|
emdash_core/agent/mcp/manager.py,sha256=i4OIJyAwfBAw0E8fe6NIOvT-UTf1_hmDbEtIjtAhRjc,15382
|
|
14
14
|
emdash_core/agent/mcp/tool_factory.py,sha256=jtQJ2TW7KdGVSg3fUp9-rm7MbHjiwWmy0yLfwr0H4qc,6410
|
|
15
|
-
emdash_core/agent/prompts/__init__.py,sha256=
|
|
16
|
-
emdash_core/agent/prompts/main_agent.py,sha256=
|
|
17
|
-
emdash_core/agent/prompts/
|
|
18
|
-
emdash_core/agent/prompts/
|
|
15
|
+
emdash_core/agent/prompts/__init__.py,sha256=S1_zixYnt_jYbh_5B-fKRxlBjeHf0GrFp8pqjWoq6J4,975
|
|
16
|
+
emdash_core/agent/prompts/main_agent.py,sha256=4olhwAN0z6Ctq5PLQB9wStv9UQFlHCDpPlprw5KneWI,3941
|
|
17
|
+
emdash_core/agent/prompts/plan_mode.py,sha256=pfkkEqH-FBhIj_e9aJwtBHven35rtAQgFmo070d-R-w,4302
|
|
18
|
+
emdash_core/agent/prompts/subagents.py,sha256=qqjzob4_7gOy8sui04dOymo8yLxyLbaUaqILakkgqO4,4063
|
|
19
|
+
emdash_core/agent/prompts/workflow.py,sha256=ZSEycPrHshG1ItiGIGfRusWti6PRgD82MZqVHl1XQrU,7799
|
|
19
20
|
emdash_core/agent/providers/__init__.py,sha256=q58ektAl1zwuS3z36ctHfLB8XruYghT97aq_oj1T_G0,776
|
|
20
|
-
emdash_core/agent/providers/base.py,sha256=
|
|
21
|
+
emdash_core/agent/providers/base.py,sha256=m1Vuac2Gtr191YDkefG_3qD64iIT9Ps2WoZC1LWmfJU,4351
|
|
21
22
|
emdash_core/agent/providers/factory.py,sha256=F3bKXvZuLOJn--m5eTblUf3_xdzzbnW97YNDDbQBgJQ,3143
|
|
22
|
-
emdash_core/agent/providers/models.py,sha256=
|
|
23
|
-
emdash_core/agent/providers/openai_provider.py,sha256=
|
|
23
|
+
emdash_core/agent/providers/models.py,sha256=0mkkqiXOQKV25GbqJvm-85mPiJx3Cb3jbn3KTV4NbU0,8710
|
|
24
|
+
emdash_core/agent/providers/openai_provider.py,sha256=2LfRj2H46IDfCb_PAFfRjGHItDF_5ZlgPGuef8WYLfo,18670
|
|
24
25
|
emdash_core/agent/providers/transformers_provider.py,sha256=USSzYIcZrcTAKDKwiNobYUDS024ZVZ34WAuYWGbs9Nk,7167
|
|
25
26
|
emdash_core/agent/research/__init__.py,sha256=4LU9Skk3sxsDy8GzfOxCjNxxqaxOm94hV5cH-Nyqn7g,1992
|
|
26
27
|
emdash_core/agent/research/agent.py,sha256=dGjSZL2rsuJmSRpa8060R5gIvX8rIj57Zs21LsBJ-1U,3819
|
|
@@ -33,37 +34,39 @@ emdash_core/agent/research/state.py,sha256=P44YUTUhMrAmt--xsj8Hi0SzbDmrLXKPEf83H
|
|
|
33
34
|
emdash_core/agent/research/synthesizer.py,sha256=j4UvH8JxUjo7RF-h69tpRERgN6pHSb8qNBOoKrH2Qro,19016
|
|
34
35
|
emdash_core/agent/reviewer_profile.py,sha256=RkJ_Mk5vbp2U-e0UBWB-k59cHsTzLj0aro22KJVCbss,16075
|
|
35
36
|
emdash_core/agent/rules.py,sha256=GVwfM6YlRxrPXLZ0h2cZFOx4l_mPPl0Bdwt8oxfMBLI,3014
|
|
36
|
-
emdash_core/agent/runner.py,sha256=
|
|
37
|
+
emdash_core/agent/runner.py,sha256=2z7v-8XS0ADOGXgAYEqBoLOHaEDlP-dSKDwqeD2EJkU,42811
|
|
37
38
|
emdash_core/agent/session.py,sha256=Zr7m8IK4-J6CDIMmN2QiSqpDT_O2S-SXu3Qmy9w6dk8,8517
|
|
39
|
+
emdash_core/agent/skills.py,sha256=s62vZgcsI4dt3FlBz7501NV_EbPoHqHGScoRHvCZBGs,8776
|
|
38
40
|
emdash_core/agent/spec_schema.py,sha256=tmTCrO4zKXkOblW6gRyrQ3_ZdYU-ehnLE8YmZbhPHWQ,1429
|
|
39
41
|
emdash_core/agent/specification.py,sha256=b1nUQiGT4NiRv42hDkYAXVX_RtsKcHrf4Ae1dx0UVnc,19105
|
|
40
42
|
emdash_core/agent/subagent.py,sha256=zIlhbHOCUEgYtYLYwiQ7dkSleqI60emyBA-5XLPaH_k,12150
|
|
41
43
|
emdash_core/agent/subagent_prompts.py,sha256=pJJPXh4FlnE8bt9d-Ruquz6j8W-BS9pMCbXRqpgwq4g,407
|
|
42
|
-
emdash_core/agent/toolkit.py,sha256=
|
|
44
|
+
emdash_core/agent/toolkit.py,sha256=iQk9R57h8UInQ0czM41YvXcl63KyyKOLpo4RV7OZTqI,18493
|
|
43
45
|
emdash_core/agent/toolkits/__init__.py,sha256=HrWyA1M666V0UZ6P7YISnnQg4rblWbIFW_HcMKlHfK4,1814
|
|
44
46
|
emdash_core/agent/toolkits/base.py,sha256=Z4IMrli7UMi7K3rWhqfph_5vv9Tdnc0M8iCQDgE_3lM,2587
|
|
45
47
|
emdash_core/agent/toolkits/explore.py,sha256=ymyvLjIXy80h3lb4y_DZ06T0vADCal976qMW19J6N8A,1395
|
|
46
48
|
emdash_core/agent/toolkits/plan.py,sha256=S5VnewUpSHOgpieiph3EuA_qPOUS7EpG198EuqNVG3o,1820
|
|
47
|
-
emdash_core/agent/tools/__init__.py,sha256=
|
|
49
|
+
emdash_core/agent/tools/__init__.py,sha256=7OyqgSkyKOrR8YOPb82g6vcngpc5Yf3yrzkJ3sZslzc,2958
|
|
48
50
|
emdash_core/agent/tools/analytics.py,sha256=tEP_RWFpKGfFW_Yc5inMMjAkDFzpDQ77Ui_Ca7LQu60,14837
|
|
49
51
|
emdash_core/agent/tools/base.py,sha256=3clLKgR7Og5eDijZJLEcpJS1YV8u1rW_pXr_iwHdxTo,3349
|
|
50
52
|
emdash_core/agent/tools/coding.py,sha256=plz_prz_lg6JEUzF_yvbADoHSyZ_3i6wdEh7GiS5YOE,14343
|
|
51
53
|
emdash_core/agent/tools/github_mcp.py,sha256=D4fu_z9j-rL8SHD8TA2tO-ED-8Q4QB_RHQoqsh7Bjy8,16870
|
|
52
54
|
emdash_core/agent/tools/history.py,sha256=Zaers4Aul9-hrlMaGRcQHwfU2xb7yCjHFHSDtfMe3c4,423
|
|
53
|
-
emdash_core/agent/tools/modes.py,sha256=
|
|
55
|
+
emdash_core/agent/tools/modes.py,sha256=4E7qGEooiGy46NoInUrnec_6V52jWTr0Br99bu5nyMA,10334
|
|
54
56
|
emdash_core/agent/tools/plan.py,sha256=RRvZsDHcvvDv6uyDSGhTYIoImZmI_7CCxCarkeSZjbQ,7922
|
|
55
57
|
emdash_core/agent/tools/plan_write.py,sha256=o4EEHTUr1hRfH3WSjrh3-QTfaJuUhjsQ5bJNBPD_j5Q,4417
|
|
56
|
-
emdash_core/agent/tools/search.py,sha256=
|
|
57
|
-
emdash_core/agent/tools/
|
|
58
|
+
emdash_core/agent/tools/search.py,sha256=aq5_jc8YT3R3oZtulgvKwmz1oljJom20NfF_q60o60Q,14353
|
|
59
|
+
emdash_core/agent/tools/skill.py,sha256=B7IefgH2DndHXFOaozSnJkhLQj9VQHNJH7-0ovgVmS0,6124
|
|
60
|
+
emdash_core/agent/tools/spec.py,sha256=R9Ib-1epCVrgbOB6C9qYkwvgut94x3P2g4_FM_tMd2M,10022
|
|
58
61
|
emdash_core/agent/tools/task.py,sha256=-xM2GFdBnchrVNiOHgxa0hWQyvum4sC4QgBf3y5N_64,8906
|
|
59
62
|
emdash_core/agent/tools/task_output.py,sha256=30EI8JAKBDw6gLmjF8bXAq00yMr-Qk14J7fv2kDVX1c,6421
|
|
60
|
-
emdash_core/agent/tools/tasks.py,sha256=
|
|
63
|
+
emdash_core/agent/tools/tasks.py,sha256=VT-oLFKzswmKu02H1hc_ercJ1blbseCo0Q0qRBh0DjM,11844
|
|
61
64
|
emdash_core/agent/tools/traversal.py,sha256=qQvHkledo_rT9q9kxk07pijY8XqkR4WWB5pFWVmG01I,20249
|
|
62
65
|
emdash_core/agent/tools/web.py,sha256=cqm4eiiBzeGCOmQE---uT9zlgsQUX9WY_YYz7wQbK1U,5521
|
|
63
66
|
emdash_core/analytics/__init__.py,sha256=5ky2djAly3-3lbQmUuNJlJTmBDaXjN2lOUw-OP2F1Zk,98
|
|
64
67
|
emdash_core/analytics/engine.py,sha256=f1go7SNnSlM_sFUEvmHrD4PTY9G39REBC7w01xdh3as,47738
|
|
65
68
|
emdash_core/api/__init__.py,sha256=L11AeV6gaCJjlZ8DU_q-lcuZYH9WV3BV4GYq8JF8BuI,92
|
|
66
|
-
emdash_core/api/agent.py,sha256=
|
|
69
|
+
emdash_core/api/agent.py,sha256=WWIozSfElbwQYJs5bvB6KLMAqZwGkQZJQjD8sHiL7G4,8706
|
|
67
70
|
emdash_core/api/agents.py,sha256=kInkI6iGnQuRxz5wS9w_Owq-4iceUJgugIOrWGDLkGA,3673
|
|
68
71
|
emdash_core/api/analyze.py,sha256=cR6wWzqSvp_5cNyUg0qACNF7DYdrcNkzhmRqgaqnd78,7593
|
|
69
72
|
emdash_core/api/auth.py,sha256=vnhH_xcsoTDYrCDBDytlm0LOV9yDoar04NL5FZKI8JU,4832
|
|
@@ -72,22 +75,29 @@ emdash_core/api/db.py,sha256=3Y702OOO-RTMRQxvKaaNW3x2f74agTSdyEKserPjyg4,3162
|
|
|
72
75
|
emdash_core/api/embed.py,sha256=fi7bvXRaYJg-lR7dMF6czYgyMi1Hcu4undoCEO6VqEM,4065
|
|
73
76
|
emdash_core/api/feature.py,sha256=DFqYMAjtmo4jzjdI1u1vWDBU-heCsUl_bziKW7qjheQ,4759
|
|
74
77
|
emdash_core/api/health.py,sha256=MBFvhauwjoY75omSO-X0jyh1Rr9WSLVy_DkSLpDbFn0,2370
|
|
75
|
-
emdash_core/api/index.py,sha256=
|
|
78
|
+
emdash_core/api/index.py,sha256=7FtyfTvB6K5Yh1mQZ3qlYWQ492QqCA4aTBbdeZBdfb4,5269
|
|
76
79
|
emdash_core/api/plan.py,sha256=k5b-nhSpo18Y-HI4RAqmabJWvLXTx9tt0cR3PNj9ewQ,3350
|
|
77
|
-
emdash_core/api/projectmd.py,sha256=
|
|
80
|
+
emdash_core/api/projectmd.py,sha256=KJmLpiTNwXK75_ADdUIWl2OfPLZU-WQaffsV1I5F8ZY,6105
|
|
78
81
|
emdash_core/api/query.py,sha256=90HuhYGRiPtolYMBdlYcgW8DV_SvYo0H2xZ_YUWVPRw,10188
|
|
79
82
|
emdash_core/api/research.py,sha256=_r0BDkvzLRE2sF4yMQye9IqSeu9yBGlXAYdr-LAlnm8,3511
|
|
80
83
|
emdash_core/api/review.py,sha256=zOGrwwThZP_himnFyBKCl4mo4gjniuEaWGNWqcKajb0,4766
|
|
81
|
-
emdash_core/api/router.py,sha256=
|
|
84
|
+
emdash_core/api/router.py,sha256=7dVshcIe4m_T-FlRTRvw1RB8U9-bLPef9GdI42ONMvI,1529
|
|
82
85
|
emdash_core/api/rules.py,sha256=BbIE_RKX8VGlUqxny0OK-tKoTK58bDBFXBf_1x3yN7g,3242
|
|
83
86
|
emdash_core/api/search.py,sha256=qPVVTNRExbyG4Ri3X3F5uGpILhlvtH99dHBv7ZVkRIw,3696
|
|
87
|
+
emdash_core/api/skills.py,sha256=8hF7IkM--aMMaNEaa16DoHl-8fBVx8oYCBnnqgsFkuE,6422
|
|
84
88
|
emdash_core/api/spec.py,sha256=ub09u1mkqpcF-z0Q1YU9FAkJb0LDyV_eG0_KXYLFmuk,2912
|
|
85
89
|
emdash_core/api/swarm.py,sha256=-CNY-NCVnwes0MlHV5yq_ZUie8pJxt0Fdg4g5R94dKo,6561
|
|
86
90
|
emdash_core/api/tasks.py,sha256=kyrhSc46wfwM3csOT26Gsx9SNjKSTwC9BQ5qMqe1uaY,3160
|
|
87
91
|
emdash_core/api/team.py,sha256=nHdsTIQ-ZDlpByNIVpSl4Ahf4q51A_HwQTnnmBq6agA,3308
|
|
88
92
|
emdash_core/auth/__init__.py,sha256=NpcoEyqtqYwUTKKFwNGKgroPOGtXS5rUpH2D9t2_4TY,290
|
|
89
93
|
emdash_core/auth/github.py,sha256=__qpcWbi9dWC4W9FQfyJ6KEg7N1gXQW9k9Aub45EQ_o,11269
|
|
90
|
-
emdash_core/
|
|
94
|
+
emdash_core/checkpoint/__init__.py,sha256=hN3CaoH2hqTb-KquSmdQlSyKb_3oFS10UbTgHSQRC5w,1184
|
|
95
|
+
emdash_core/checkpoint/cli.py,sha256=acq2qO6Ea5_a8GSJefPMOP0v8xv5a_afeY8c48z0bXE,5778
|
|
96
|
+
emdash_core/checkpoint/git_operations.py,sha256=cBn7fElPvr_11jmzvnw4ZMSVKBOwKIHuSJ4sSq71n2o,7652
|
|
97
|
+
emdash_core/checkpoint/manager.py,sha256=XHzZxaSw-rOguULtuddPeumhPRlxMJAzSAqFFS-KMgE,7420
|
|
98
|
+
emdash_core/checkpoint/models.py,sha256=0xfpeNHmLgVVzMzSo-C1dm-1bEWBAZvFED_1Du-RptI,3390
|
|
99
|
+
emdash_core/checkpoint/storage.py,sha256=AKUwxeMA05hmxwdRPFivwqv0GWGYgCBlV4m9auzlxpk,5970
|
|
100
|
+
emdash_core/config.py,sha256=i2M9iRxiZQiKlkc1I0goXwI7ac6ABEdku58u_mGbWbA,2216
|
|
91
101
|
emdash_core/context/__init__.py,sha256=_6hqH8FtCi4Q3OpuC9zDPDEXuBitLxrY20CdookRTsY,1496
|
|
92
102
|
emdash_core/context/models.py,sha256=eQdjaea5M6iQ-9ZxJ5IVQgiQEPbZz81Xe2B186GuSYI,1304
|
|
93
103
|
emdash_core/context/providers/__init__.py,sha256=cWokJwYatvihXoyhqM6BHbG4JQeImgWzyjLdj60BqS4,261
|
|
@@ -99,7 +109,7 @@ emdash_core/context/reranker.py,sha256=xoajICW7yhxBtq6yJnFDzQXRl0_G8W-ACQyalZ72U
|
|
|
99
109
|
emdash_core/context/service.py,sha256=vTSCUoXdNGTTs0ZtMHInX3uG5Wbol-lpCXEn4ICNCDo,9438
|
|
100
110
|
emdash_core/context/session.py,sha256=XqDELflx7TGosraTU3mBJcZLwD1Ihv2DtuFjeoxjF7A,12424
|
|
101
111
|
emdash_core/core/__init__.py,sha256=KW97frnmqf5PWHIvYpdZN7aaAPaUXWfsLEEicdZ3g80,1987
|
|
102
|
-
emdash_core/core/config.py,sha256=
|
|
112
|
+
emdash_core/core/config.py,sha256=OLI-tbeI8KGzX9GzpL0YcjRJbN1TgCxlaVXSCfkfesU,16044
|
|
103
113
|
emdash_core/core/exceptions.py,sha256=LA4bsgEmPJUKQiBmrMpbPT6Iatu4xQLdenGMceMD2Yk,1186
|
|
104
114
|
emdash_core/core/models.py,sha256=U2achHuaaP9Qr2qZEqBvdzpbxNN2z-SJWjjGpBBiCu4,7810
|
|
105
115
|
emdash_core/core/review_config.py,sha256=pP8d_0D6mzKg2iYLjrbF9XcI8FIPLwZa0onUDUTvgkM,1455
|
|
@@ -121,7 +131,7 @@ emdash_core/embeddings/service.py,sha256=nvSpMsqzoEnZA7iwLHwTWMqR3YzeFnbGFrL1RmN
|
|
|
121
131
|
emdash_core/graph/__init__.py,sha256=H8Ib_jH6Tu8EGKYw8pAaiFrmMMOvty7AMiOiypbKA4M,530
|
|
122
132
|
emdash_core/graph/builder.py,sha256=INh81gubFgmow25eNm2Z139p9VAmZhRx9pyylOhJxgw,4531
|
|
123
133
|
emdash_core/graph/connection.py,sha256=ZhMPQpPv_oQOUzdObfwswnuTivsYs90Mawi6DejbYI8,22113
|
|
124
|
-
emdash_core/graph/schema.py,sha256=
|
|
134
|
+
emdash_core/graph/schema.py,sha256=sKjW1GS3tutpFNeXF7TVMA17iOMEdnyfLGG3hbEigXA,13281
|
|
125
135
|
emdash_core/graph/writer.py,sha256=QleDLLB2PTj2cd3vFMrgZXZWk9-_sC1MZMFzFZHjFnE,26191
|
|
126
136
|
emdash_core/ingestion/__init__.py,sha256=hyGLUPT04C9RXj7zaJF_389-8KA6xQN8zCX8l2v_NZ0,276
|
|
127
137
|
emdash_core/ingestion/change_detector.py,sha256=LOAODz_apk4ZRfAINz4lf2gCEq1zqQk0bkRnfRrn9oM,5312
|
|
@@ -130,7 +140,7 @@ emdash_core/ingestion/git/commit_analyzer.py,sha256=4DftTUgycv6u695RxaVAIL4VzsTA
|
|
|
130
140
|
emdash_core/ingestion/github/__init__.py,sha256=G5SR95r5heXPfcgNUpvN241x8zXs0IuyOQjmbPIDOGM,156
|
|
131
141
|
emdash_core/ingestion/github/pr_fetcher.py,sha256=zs2xijWTkHEEYdHpNVVzq1W2V8hmBelS39H5b3Ei77c,9539
|
|
132
142
|
emdash_core/ingestion/github/task_extractor.py,sha256=PNkm8xEAlss3MWDY_iRdLlxmyJBca3jRjNCVYoRVp0E,2679
|
|
133
|
-
emdash_core/ingestion/orchestrator.py,sha256=
|
|
143
|
+
emdash_core/ingestion/orchestrator.py,sha256=8Cq-WHJmu2fUPOBfBT0wExFysS7aKtln-wcjjjHE_V0,20303
|
|
134
144
|
emdash_core/ingestion/parsers/__init__.py,sha256=_zathXaXCNKL-Qiezvi3UCxxRnBHCTUOXYOcpoteExU,347
|
|
135
145
|
emdash_core/ingestion/parsers/base_parser.py,sha256=rlNsMLfZ4nOp7ufqTbfd-7vXP9oPoqumgt5gW72efU4,2072
|
|
136
146
|
emdash_core/ingestion/parsers/call_graph_builder.py,sha256=GUqvKAOIM1gnGTph4risf-E6hJnXJhFpPbBsYPyxLu4,3703
|
|
@@ -143,7 +153,7 @@ emdash_core/ingestion/parsers/ts_ast_parser.js,sha256=bvFEl97bzI-UItTvYkyT5D0rxX
|
|
|
143
153
|
emdash_core/ingestion/parsers/typescript_parser.py,sha256=UHEuKUwaEkrscZ7NEisBWcZxJ1Ltn7pUvsdTdccqMGY,10928
|
|
144
154
|
emdash_core/ingestion/repository.py,sha256=ZyKw4NYTIgw35LbkYSsqwNmQoGkpVq06q0qm6lFMGGM,10287
|
|
145
155
|
emdash_core/models/__init__.py,sha256=zTsIg4Sy2o2eTWGIpYP9rb_yFdR-DFZ1BSWF9DcrHqU,625
|
|
146
|
-
emdash_core/models/agent.py,sha256=
|
|
156
|
+
emdash_core/models/agent.py,sha256=W0-5lVM7YxuMznWw90QkMs3vhkH-OZb22sBedbWMMwc,1817
|
|
147
157
|
emdash_core/models/index.py,sha256=1dohTHOYvtOLmphGUELwgGH7DkMbhK_ykFn2_YmOtag,2207
|
|
148
158
|
emdash_core/models/query.py,sha256=3ZRTUzZoBr9IRrniXNLq2egUkg3k5tb9BXyu4xPB2DY,3480
|
|
149
159
|
emdash_core/planning/__init__.py,sha256=6db3V1maLCicMlRuG3JfGCnH84MxcdRrwBsGddlxVCg,267
|
|
@@ -154,9 +164,9 @@ emdash_core/planning/feature_expander.py,sha256=ADNv3qsbRqPtXKRVDSZIf4lcaf_hxdGc
|
|
|
154
164
|
emdash_core/planning/llm_explainer.py,sha256=jJlgO5_u5_7TCl_6F-0qoJWtpeY3FTXnR5vvHcqa0Dc,7150
|
|
155
165
|
emdash_core/planning/similarity.py,sha256=j3jiSWoTqlakHZGa-TxVJYknru7DzRaWlIOow2NG02o,18876
|
|
156
166
|
emdash_core/planning/team_focus.py,sha256=fv3rCyh_8sHk4w_yjzuw36KlKPAJLPZPgVOo762aneU,32405
|
|
157
|
-
emdash_core/server.py,sha256=
|
|
167
|
+
emdash_core/server.py,sha256=W6x217nJcYLFaybatMiVxDtqkNH-HejZEBn5PLXGryc,5169
|
|
158
168
|
emdash_core/sse/__init__.py,sha256=q6nfbsqvEX7uYTuLwRMb4E73hW-o_Cuv63APod_Kluw,129
|
|
159
|
-
emdash_core/sse/stream.py,sha256=
|
|
169
|
+
emdash_core/sse/stream.py,sha256=V5f76WHGldT4TBT51rUMelivlrIc41z3yr_QKoEe_ao,5255
|
|
160
170
|
emdash_core/swarm/__init__.py,sha256=EyL9U64ByQCCcL19ntwu2OU7labME3i3dSpSF25X6Mo,448
|
|
161
171
|
emdash_core/swarm/merge_agent.py,sha256=Fp0rqdHsd0m0swoAApq46QuBNDw5ejDk4dRddc1cD-E,13038
|
|
162
172
|
emdash_core/swarm/session_manager.py,sha256=RyLGpfXw-qFXJuQBP3Acw4w7LC_ZIhlPaDDkqjm-ycU,8999
|
|
@@ -181,7 +191,7 @@ emdash_core/utils/__init__.py,sha256=tQj81F7ZW61jsNg_R2bA9tDLdk0dc5kQswYWwZSqigU
|
|
|
181
191
|
emdash_core/utils/git.py,sha256=j5kppemwAOWe4Bc5a9qUmYYfKqxyi9WLk5U9HgwkgO4,2336
|
|
182
192
|
emdash_core/utils/image.py,sha256=K8uKDuhZqsJXwNDQ57Q3w2j0PQPyid_aEbiq66zy3p0,14607
|
|
183
193
|
emdash_core/utils/logger.py,sha256=iLaMA5vkUvxCfWsvZ7WZSDQWv4Gh5gJHeYbAB6urDio,1473
|
|
184
|
-
emdash_core-0.1.
|
|
185
|
-
emdash_core-0.1.
|
|
186
|
-
emdash_core-0.1.
|
|
187
|
-
emdash_core-0.1.
|
|
194
|
+
emdash_core-0.1.25.dist-info/METADATA,sha256=HEpSLGk-Q363otD9EdAUYRWm8T7oXqwa48ZcZkidIWs,1343
|
|
195
|
+
emdash_core-0.1.25.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
196
|
+
emdash_core-0.1.25.dist-info/entry_points.txt,sha256=WgC9h0Bcsh0VaLfDv4hAKaY5krcT2Ati4UyoIJNavdk,105
|
|
197
|
+
emdash_core-0.1.25.dist-info/RECORD,,
|
|
File without changes
|