teddy-cli 0.1.0__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.
- teddy_cli-0.1.0.dist-info/LICENSE +677 -0
- teddy_cli-0.1.0.dist-info/METADATA +33 -0
- teddy_cli-0.1.0.dist-info/RECORD +143 -0
- teddy_cli-0.1.0.dist-info/WHEEL +4 -0
- teddy_cli-0.1.0.dist-info/entry_points.txt +3 -0
- teddy_executor/__init__.py +1 -0
- teddy_executor/__main__.py +335 -0
- teddy_executor/adapters/__init__.py +0 -0
- teddy_executor/adapters/inbound/__init__.py +0 -0
- teddy_executor/adapters/inbound/cli_formatter.py +107 -0
- teddy_executor/adapters/inbound/cli_helpers.py +249 -0
- teddy_executor/adapters/inbound/console_plan_reviewer.py +69 -0
- teddy_executor/adapters/inbound/session_cli_handlers.py +366 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer.py +78 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +367 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +281 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +213 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +308 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +345 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +227 -0
- teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +246 -0
- teddy_executor/adapters/outbound/__init__.py +7 -0
- teddy_executor/adapters/outbound/console_interactor.py +212 -0
- teddy_executor/adapters/outbound/console_interactor_ask_loop.py +121 -0
- teddy_executor/adapters/outbound/console_interactor_helpers.py +95 -0
- teddy_executor/adapters/outbound/console_tooling.py +62 -0
- teddy_executor/adapters/outbound/filesystem_helpers.py +61 -0
- teddy_executor/adapters/outbound/litellm_adapter.py +462 -0
- teddy_executor/adapters/outbound/local_file_system_adapter.py +300 -0
- teddy_executor/adapters/outbound/local_repo_tree_generator.py +96 -0
- teddy_executor/adapters/outbound/openrouter_hydrator.py +89 -0
- teddy_executor/adapters/outbound/shell_adapter.py +344 -0
- teddy_executor/adapters/outbound/shell_command_builder.py +105 -0
- teddy_executor/adapters/outbound/system_environment_adapter.py +62 -0
- teddy_executor/adapters/outbound/system_environment_inspector.py +54 -0
- teddy_executor/adapters/outbound/system_time_adapter.py +22 -0
- teddy_executor/adapters/outbound/web_scraper_adapter.py +346 -0
- teddy_executor/adapters/outbound/web_searcher_adapter.py +122 -0
- teddy_executor/adapters/outbound/yaml_config_adapter.py +105 -0
- teddy_executor/container.py +333 -0
- teddy_executor/core/__init__.py +0 -0
- teddy_executor/core/domain/__init__.py +0 -0
- teddy_executor/core/domain/models/__init__.py +44 -0
- teddy_executor/core/domain/models/action_ports.py +28 -0
- teddy_executor/core/domain/models/change_set.py +10 -0
- teddy_executor/core/domain/models/exceptions.py +40 -0
- teddy_executor/core/domain/models/execution_report.py +65 -0
- teddy_executor/core/domain/models/orchestrator_ports.py +26 -0
- teddy_executor/core/domain/models/plan.py +85 -0
- teddy_executor/core/domain/models/planning_ports.py +43 -0
- teddy_executor/core/domain/models/project_context.py +56 -0
- teddy_executor/core/domain/models/report_assembly_data.py +18 -0
- teddy_executor/core/domain/models/session.py +17 -0
- teddy_executor/core/domain/models/shell_output.py +12 -0
- teddy_executor/core/domain/models/web_search_results.py +26 -0
- teddy_executor/core/ports/__init__.py +0 -0
- teddy_executor/core/ports/inbound/__init__.py +0 -0
- teddy_executor/core/ports/inbound/edit_simulator.py +33 -0
- teddy_executor/core/ports/inbound/get_context_use_case.py +32 -0
- teddy_executor/core/ports/inbound/init.py +15 -0
- teddy_executor/core/ports/inbound/plan_parser.py +52 -0
- teddy_executor/core/ports/inbound/plan_reviewer.py +44 -0
- teddy_executor/core/ports/inbound/plan_validator.py +26 -0
- teddy_executor/core/ports/inbound/planning_use_case.py +30 -0
- teddy_executor/core/ports/inbound/run_plan_use_case.py +60 -0
- teddy_executor/core/ports/outbound/__init__.py +34 -0
- teddy_executor/core/ports/outbound/config_service.py +29 -0
- teddy_executor/core/ports/outbound/environment_inspector.py +30 -0
- teddy_executor/core/ports/outbound/execution_report_assembler.py +19 -0
- teddy_executor/core/ports/outbound/file_system_manager.py +131 -0
- teddy_executor/core/ports/outbound/llm_client.py +90 -0
- teddy_executor/core/ports/outbound/markdown_report_formatter.py +26 -0
- teddy_executor/core/ports/outbound/prompt_manager.py +55 -0
- teddy_executor/core/ports/outbound/repo_tree_generator.py +17 -0
- teddy_executor/core/ports/outbound/session_loop_guard.py +16 -0
- teddy_executor/core/ports/outbound/session_manager.py +97 -0
- teddy_executor/core/ports/outbound/session_repository.py +65 -0
- teddy_executor/core/ports/outbound/shell_executor.py +24 -0
- teddy_executor/core/ports/outbound/system_environment.py +25 -0
- teddy_executor/core/ports/outbound/time_service.py +28 -0
- teddy_executor/core/ports/outbound/user_interactor.py +126 -0
- teddy_executor/core/ports/outbound/web_scraper.py +24 -0
- teddy_executor/core/ports/outbound/web_searcher.py +25 -0
- teddy_executor/core/services/__init__.py +0 -0
- teddy_executor/core/services/action_changeset_builder.py +90 -0
- teddy_executor/core/services/action_diff_manager.py +110 -0
- teddy_executor/core/services/action_dispatcher.py +142 -0
- teddy_executor/core/services/action_executor.py +209 -0
- teddy_executor/core/services/action_factory.py +197 -0
- teddy_executor/core/services/action_parser_complex.py +216 -0
- teddy_executor/core/services/action_parser_strategies.py +84 -0
- teddy_executor/core/services/context_service.py +437 -0
- teddy_executor/core/services/edit_simulator.py +128 -0
- teddy_executor/core/services/execution_orchestrator.py +295 -0
- teddy_executor/core/services/execution_report_assembler.py +62 -0
- teddy_executor/core/services/init_service.py +80 -0
- teddy_executor/core/services/markdown_plan_parser.py +309 -0
- teddy_executor/core/services/markdown_report_formatter.py +143 -0
- teddy_executor/core/services/parser_infrastructure.py +222 -0
- teddy_executor/core/services/parser_metadata.py +153 -0
- teddy_executor/core/services/parser_reporting.py +267 -0
- teddy_executor/core/services/plan_validator.py +82 -0
- teddy_executor/core/services/planning_service.py +242 -0
- teddy_executor/core/services/prompt_manager.py +146 -0
- teddy_executor/core/services/session_lifecycle_manager.py +228 -0
- teddy_executor/core/services/session_loop_guard.py +46 -0
- teddy_executor/core/services/session_orchestrator.py +538 -0
- teddy_executor/core/services/session_planner.py +43 -0
- teddy_executor/core/services/session_pruning_service.py +438 -0
- teddy_executor/core/services/session_replanner.py +105 -0
- teddy_executor/core/services/session_repository.py +194 -0
- teddy_executor/core/services/session_service.py +529 -0
- teddy_executor/core/services/templates/execution_report.md.j2 +290 -0
- teddy_executor/core/services/validation_rules/__init__.py +4 -0
- teddy_executor/core/services/validation_rules/edit.py +207 -0
- teddy_executor/core/services/validation_rules/edit_matcher.py +247 -0
- teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +84 -0
- teddy_executor/core/services/validation_rules/execute.py +37 -0
- teddy_executor/core/services/validation_rules/filesystem.py +73 -0
- teddy_executor/core/services/validation_rules/helpers.py +178 -0
- teddy_executor/core/services/validation_rules/message.py +29 -0
- teddy_executor/core/utils/__init__.py +1 -0
- teddy_executor/core/utils/diff.py +57 -0
- teddy_executor/core/utils/io.py +75 -0
- teddy_executor/core/utils/markdown.py +131 -0
- teddy_executor/core/utils/serialization.py +39 -0
- teddy_executor/core/utils/string.py +351 -0
- teddy_executor/prompts.py +45 -0
- teddy_executor/registries/__init__.py +1 -0
- teddy_executor/registries/infrastructure.py +147 -0
- teddy_executor/registries/reviewer.py +57 -0
- teddy_executor/registries/validators.py +47 -0
- teddy_executor/resources/__init__.py +1 -0
- teddy_executor/resources/config/.gitignore +2 -0
- teddy_executor/resources/config/__init__.py +1 -0
- teddy_executor/resources/config/config.yaml +49 -0
- teddy_executor/resources/config/init.context +5 -0
- teddy_executor/resources/config/prompts/architect.xml +462 -0
- teddy_executor/resources/config/prompts/assistant.xml +336 -0
- teddy_executor/resources/config/prompts/debugger.xml +456 -0
- teddy_executor/resources/config/prompts/developer.xml +481 -0
- teddy_executor/resources/config/prompts/pathfinder.xml +502 -0
- teddy_executor/resources/config/prompts/prototyper.xml +425 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import punq
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def register_infrastructure(container: punq.Container) -> None:
|
|
6
|
+
"""Registers core OS and infrastructure adapters."""
|
|
7
|
+
from teddy_executor.core.ports.outbound import (
|
|
8
|
+
IConfigService,
|
|
9
|
+
IEnvironmentInspector,
|
|
10
|
+
IFileSystemManager,
|
|
11
|
+
ILlmClient,
|
|
12
|
+
IRepoTreeGenerator,
|
|
13
|
+
IShellExecutor,
|
|
14
|
+
ISystemEnvironment,
|
|
15
|
+
ITimeService,
|
|
16
|
+
IUserInteractor,
|
|
17
|
+
IWebScraper,
|
|
18
|
+
IWebSearcher,
|
|
19
|
+
)
|
|
20
|
+
from teddy_executor.adapters.outbound.console_interactor import (
|
|
21
|
+
ConsoleInteractorAdapter,
|
|
22
|
+
)
|
|
23
|
+
from teddy_executor.adapters.outbound.litellm_adapter import (
|
|
24
|
+
LiteLLMAdapter,
|
|
25
|
+
IOpenRouterHydrator,
|
|
26
|
+
)
|
|
27
|
+
from teddy_executor.adapters.outbound.openrouter_hydrator import (
|
|
28
|
+
OpenRouterMetadataHydrator,
|
|
29
|
+
)
|
|
30
|
+
from teddy_executor.adapters.outbound.local_file_system_adapter import (
|
|
31
|
+
LocalFileSystemAdapter,
|
|
32
|
+
)
|
|
33
|
+
from teddy_executor.adapters.outbound.local_repo_tree_generator import (
|
|
34
|
+
LocalRepoTreeGenerator,
|
|
35
|
+
)
|
|
36
|
+
from teddy_executor.adapters.outbound.console_tooling import ConsoleToolingHelper
|
|
37
|
+
from teddy_executor.adapters.outbound.shell_adapter import ShellAdapter
|
|
38
|
+
from teddy_executor.adapters.outbound.shell_command_builder import (
|
|
39
|
+
ShellCommandBuilder,
|
|
40
|
+
)
|
|
41
|
+
from teddy_executor.adapters.outbound.system_environment_adapter import (
|
|
42
|
+
SystemEnvironmentAdapter,
|
|
43
|
+
)
|
|
44
|
+
from teddy_executor.adapters.outbound.system_environment_inspector import (
|
|
45
|
+
SystemEnvironmentInspector,
|
|
46
|
+
)
|
|
47
|
+
from teddy_executor.adapters.outbound.system_time_adapter import SystemTimeAdapter
|
|
48
|
+
from teddy_executor.adapters.outbound.web_scraper_adapter import WebScraperAdapter
|
|
49
|
+
from teddy_executor.adapters.outbound.web_searcher_adapter import WebSearcherAdapter
|
|
50
|
+
from teddy_executor.adapters.outbound.yaml_config_adapter import YamlConfigAdapter
|
|
51
|
+
|
|
52
|
+
container.register(
|
|
53
|
+
ISystemEnvironment,
|
|
54
|
+
factory=lambda: SystemEnvironmentAdapter(),
|
|
55
|
+
scope=punq.Scope.transient,
|
|
56
|
+
)
|
|
57
|
+
container.register(
|
|
58
|
+
IEnvironmentInspector,
|
|
59
|
+
factory=lambda: SystemEnvironmentInspector(),
|
|
60
|
+
scope=punq.Scope.transient,
|
|
61
|
+
)
|
|
62
|
+
container.register(
|
|
63
|
+
ITimeService,
|
|
64
|
+
factory=lambda: SystemTimeAdapter(),
|
|
65
|
+
scope=punq.Scope.transient,
|
|
66
|
+
)
|
|
67
|
+
container.register(
|
|
68
|
+
ShellCommandBuilder,
|
|
69
|
+
factory=lambda: ShellCommandBuilder(),
|
|
70
|
+
scope=punq.Scope.transient,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
container.register(
|
|
74
|
+
IShellExecutor,
|
|
75
|
+
factory=lambda: ShellAdapter(
|
|
76
|
+
command_builder=container.resolve(ShellCommandBuilder),
|
|
77
|
+
max_execute_lines=container.resolve(IConfigService).get_setting(
|
|
78
|
+
"execution.max_output_lines"
|
|
79
|
+
),
|
|
80
|
+
),
|
|
81
|
+
scope=punq.Scope.transient,
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
from teddy_executor.core.ports.inbound.edit_simulator import IEditSimulator
|
|
85
|
+
|
|
86
|
+
container.register(
|
|
87
|
+
IFileSystemManager,
|
|
88
|
+
factory=lambda: LocalFileSystemAdapter(
|
|
89
|
+
edit_simulator=container.resolve(IEditSimulator),
|
|
90
|
+
max_read_lines=container.resolve(IConfigService).get_setting(
|
|
91
|
+
"read.max_lines"
|
|
92
|
+
),
|
|
93
|
+
),
|
|
94
|
+
scope=punq.Scope.transient,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
container.register(
|
|
98
|
+
IWebScraper,
|
|
99
|
+
factory=lambda: WebScraperAdapter(container.resolve(IConfigService)),
|
|
100
|
+
scope=punq.Scope.transient,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
container.register(
|
|
104
|
+
IUserInteractor,
|
|
105
|
+
factory=lambda: ConsoleInteractorAdapter(
|
|
106
|
+
system_env=container.resolve(ISystemEnvironment),
|
|
107
|
+
config_service=container.resolve(IConfigService),
|
|
108
|
+
),
|
|
109
|
+
scope=punq.Scope.transient,
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
container.register(
|
|
113
|
+
IWebSearcher,
|
|
114
|
+
factory=lambda: WebSearcherAdapter(
|
|
115
|
+
config_service=container.resolve(IConfigService),
|
|
116
|
+
),
|
|
117
|
+
scope=punq.Scope.transient,
|
|
118
|
+
)
|
|
119
|
+
container.register(
|
|
120
|
+
IConfigService, factory=lambda: YamlConfigAdapter(), scope=punq.Scope.transient
|
|
121
|
+
)
|
|
122
|
+
container.register(
|
|
123
|
+
IOpenRouterHydrator,
|
|
124
|
+
factory=lambda: OpenRouterMetadataHydrator(),
|
|
125
|
+
scope=punq.Scope.singleton,
|
|
126
|
+
)
|
|
127
|
+
container.register(
|
|
128
|
+
ILlmClient,
|
|
129
|
+
factory=lambda: LiteLLMAdapter(
|
|
130
|
+
config_service=container.resolve(IConfigService),
|
|
131
|
+
hydrator=container.resolve(IOpenRouterHydrator),
|
|
132
|
+
),
|
|
133
|
+
scope=punq.Scope.transient,
|
|
134
|
+
)
|
|
135
|
+
container.register(
|
|
136
|
+
IRepoTreeGenerator,
|
|
137
|
+
factory=lambda: LocalRepoTreeGenerator(),
|
|
138
|
+
scope=punq.Scope.transient,
|
|
139
|
+
)
|
|
140
|
+
container.register(
|
|
141
|
+
ConsoleToolingHelper,
|
|
142
|
+
factory=lambda: ConsoleToolingHelper(
|
|
143
|
+
system_env=container.resolve(ISystemEnvironment),
|
|
144
|
+
config_service=container.resolve(IConfigService),
|
|
145
|
+
),
|
|
146
|
+
scope=punq.Scope.transient,
|
|
147
|
+
)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import punq
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def register_reviewer(container: punq.Container, ui_mode: str | None = None) -> None:
|
|
6
|
+
"""Explicitly registers a reviewer implementation, optionally overriding config."""
|
|
7
|
+
from teddy_executor.core.ports.inbound.plan_reviewer import IPlanReviewer
|
|
8
|
+
|
|
9
|
+
if ui_mode is None:
|
|
10
|
+
from teddy_executor.core.ports.outbound import IConfigService
|
|
11
|
+
|
|
12
|
+
config = container.resolve(IConfigService)
|
|
13
|
+
ui_mode = config.get_setting("ui_mode", default="tui")
|
|
14
|
+
|
|
15
|
+
if ui_mode == "console":
|
|
16
|
+
from teddy_executor.adapters.inbound.console_plan_reviewer import (
|
|
17
|
+
ConsolePlanReviewer,
|
|
18
|
+
)
|
|
19
|
+
from teddy_executor.core.ports.inbound.edit_simulator import IEditSimulator
|
|
20
|
+
from teddy_executor.core.ports.outbound import (
|
|
21
|
+
IFileSystemManager,
|
|
22
|
+
IUserInteractor,
|
|
23
|
+
IConfigService,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
container.register(
|
|
27
|
+
IPlanReviewer,
|
|
28
|
+
factory=lambda: ConsolePlanReviewer(
|
|
29
|
+
user_interactor=container.resolve(IUserInteractor),
|
|
30
|
+
file_system_manager=container.resolve(IFileSystemManager),
|
|
31
|
+
config_service=container.resolve(IConfigService),
|
|
32
|
+
edit_simulator=container.resolve(IEditSimulator),
|
|
33
|
+
),
|
|
34
|
+
)
|
|
35
|
+
else:
|
|
36
|
+
from teddy_executor.core.ports.outbound import (
|
|
37
|
+
IFileSystemManager,
|
|
38
|
+
ISystemEnvironment,
|
|
39
|
+
)
|
|
40
|
+
from teddy_executor.adapters.outbound.console_tooling import (
|
|
41
|
+
ConsoleToolingHelper,
|
|
42
|
+
)
|
|
43
|
+
from teddy_executor.core.services.action_dispatcher import ActionDispatcher
|
|
44
|
+
|
|
45
|
+
def tui_factory():
|
|
46
|
+
from teddy_executor.adapters.inbound.textual_plan_reviewer import (
|
|
47
|
+
TextualPlanReviewer,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
return TextualPlanReviewer(
|
|
51
|
+
system_env=container.resolve(ISystemEnvironment),
|
|
52
|
+
file_system=container.resolve(IFileSystemManager),
|
|
53
|
+
console_tooling=container.resolve(ConsoleToolingHelper),
|
|
54
|
+
action_dispatcher=container.resolve(ActionDispatcher),
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
container.register(IPlanReviewer, factory=tui_factory)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import punq
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def register_validators(container: punq.Container) -> None:
|
|
6
|
+
"""Registers action-specific and plan validators."""
|
|
7
|
+
from teddy_executor.core.ports.outbound import IConfigService, IFileSystemManager
|
|
8
|
+
from teddy_executor.core.ports.inbound.plan_validator import IPlanValidator
|
|
9
|
+
from teddy_executor.core.services.plan_validator import PlanValidator
|
|
10
|
+
from teddy_executor.core.services.validation_rules.edit import EditActionValidator
|
|
11
|
+
from teddy_executor.core.services.validation_rules.execute import (
|
|
12
|
+
ExecuteActionValidator,
|
|
13
|
+
)
|
|
14
|
+
from teddy_executor.core.services.validation_rules.filesystem import (
|
|
15
|
+
CreateActionValidator,
|
|
16
|
+
ReadActionValidator,
|
|
17
|
+
)
|
|
18
|
+
from teddy_executor.core.services.validation_rules.message import (
|
|
19
|
+
MessageActionValidator,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
container.register(CreateActionValidator, scope=punq.Scope.transient)
|
|
23
|
+
container.register(MessageActionValidator, scope=punq.Scope.transient)
|
|
24
|
+
container.register(
|
|
25
|
+
EditActionValidator,
|
|
26
|
+
factory=lambda: EditActionValidator(
|
|
27
|
+
container.resolve(IFileSystemManager), container.resolve(IConfigService)
|
|
28
|
+
),
|
|
29
|
+
scope=punq.Scope.transient,
|
|
30
|
+
)
|
|
31
|
+
container.register(ExecuteActionValidator, scope=punq.Scope.transient)
|
|
32
|
+
container.register(ReadActionValidator, scope=punq.Scope.transient)
|
|
33
|
+
|
|
34
|
+
container.register(
|
|
35
|
+
IPlanValidator,
|
|
36
|
+
factory=lambda: PlanValidator(
|
|
37
|
+
container.resolve(IFileSystemManager),
|
|
38
|
+
validators=[
|
|
39
|
+
container.resolve(CreateActionValidator),
|
|
40
|
+
container.resolve(EditActionValidator),
|
|
41
|
+
container.resolve(ExecuteActionValidator),
|
|
42
|
+
container.resolve(ReadActionValidator),
|
|
43
|
+
container.resolve(MessageActionValidator),
|
|
44
|
+
],
|
|
45
|
+
),
|
|
46
|
+
scope=punq.Scope.transient,
|
|
47
|
+
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Package for bundled application resources.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Package for bundled configuration templates and baselines.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# TeDDy Configuration
|
|
2
|
+
|
|
3
|
+
# UI Settings
|
|
4
|
+
# Supported modes: "tui" (Interactive Terminal UI), "console" (Sequential CLI prompts)
|
|
5
|
+
ui_mode: "tui"
|
|
6
|
+
|
|
7
|
+
# The preferred external editor for reviewing and modifying plans/messages.
|
|
8
|
+
# Supports arbitrary command strings (e.g., "code --wait", "nvim -R", "zed").
|
|
9
|
+
# Fallback chain: Config -> VISUAL/EDITOR env vars -> code -> nano.
|
|
10
|
+
editor: "code"
|
|
11
|
+
|
|
12
|
+
# Execution Settings
|
|
13
|
+
execution:
|
|
14
|
+
default_timeout_seconds: 60
|
|
15
|
+
similarity_threshold: 0.95 # 1.00 means exact match required (ignoring relative indentation).
|
|
16
|
+
max_output_lines: 100 # Caps EXECUTE output to the last X lines.
|
|
17
|
+
|
|
18
|
+
# File Read Settings
|
|
19
|
+
read:
|
|
20
|
+
max_lines: 1000 # Caps READ action output to the first X lines.
|
|
21
|
+
|
|
22
|
+
# Research Settings
|
|
23
|
+
research:
|
|
24
|
+
max_results: 5 # Number of SERP results to retrieve and automatically scrape.
|
|
25
|
+
|
|
26
|
+
# Safety limits enforced ONLY in --yolo mode.
|
|
27
|
+
yolo_guardrails:
|
|
28
|
+
enabled: true
|
|
29
|
+
max_turns: 99
|
|
30
|
+
max_session_cost: 5.00
|
|
31
|
+
|
|
32
|
+
# Auto-Pruning Settings
|
|
33
|
+
# Intelligently pre-deselects context files to save tokens and manage complexity.
|
|
34
|
+
auto_pruning:
|
|
35
|
+
enabled: true
|
|
36
|
+
turn_context_threshold: 50000 # Token budget for Turn-scope files only (excludes session.context and system prompts). Triggers pruning of largest Turn-scope files if exceeded.
|
|
37
|
+
prune_failure_history: true # Prune non-green turns once recovery is achieved.
|
|
38
|
+
prune_validation_failures: true # Prune plans and reports that failed validation.
|
|
39
|
+
preserve_message_turns: true # Ensure successful communicating turns are not pruned.
|
|
40
|
+
max_turns_retention: 10 # Max number of turns persisted in session history (excl. initial request & preserved message turns).
|
|
41
|
+
|
|
42
|
+
# LLM Settings
|
|
43
|
+
# LiteLLM Configuration Reference: https://docs.litellm.ai/docs/completion/input
|
|
44
|
+
# All keys under 'llm' are passed directly to litellm.completion().
|
|
45
|
+
llm:
|
|
46
|
+
model: "openrouter/deepseek/deepseek-v4-flash:nitro"
|
|
47
|
+
api_key: ""
|
|
48
|
+
max_retries: 3
|
|
49
|
+
timeout: 300
|