Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
6fe2e40
feat: expand desktop parity and foundry support
ThomsenDrake Mar 11, 2026
8b85e77
chore: add codex fork sync workflow
ThomsenDrake Mar 11, 2026
ec2fe8d
chore: checkpoint current docs and code changes
ThomsenDrake Mar 12, 2026
6e25209
Add Brave search option
ThomsenDrake Mar 12, 2026
a384928
Add GPT-5.4 alias and ChatGPT OAuth support for OpenAI auth
ThomsenDrake Mar 12, 2026
bfd94e2
Add GPT-5.4 defaults and OAuth parity
ThomsenDrake Mar 12, 2026
ba663df
Add voyage credential status to desktop
ThomsenDrake Mar 12, 2026
05f5c56
Add Tavily web search provider parity
ThomsenDrake Mar 12, 2026
f104f0c
Add desktop init and migration workflows
ThomsenDrake Mar 12, 2026
fd08764
Remove investigation artifacts from repository
ThomsenDrake Mar 12, 2026
4e33f5a
fix: preserve replay sequence across resumed sessions
ThomsenDrake Mar 13, 2026
fe390d4
feat: add runtime loop guardrails and metrics
ThomsenDrake Mar 13, 2026
c17a1be
fix: resolve runtime loop metrics merge cleanup
ThomsenDrake Mar 13, 2026
c96f639
docs: add RFC for typed ontology-first InvestigationState
ThomsenDrake Mar 13, 2026
0f3db5c
Merge pull request #4 from ThomsenDrake/codex/create-rfc-for-typed-in…
ThomsenDrake Mar 13, 2026
0d9dd54
Improve desktop loop governance telemetry
ThomsenDrake Mar 13, 2026
12ac998
docs: add RFC for evidence normalization and action layer
ThomsenDrake Mar 13, 2026
f860da8
Add RFC for normalization and action layer research
ThomsenDrake Mar 13, 2026
938e963
Merge pull request #5 from ThomsenDrake/codex/create-rfc-for-research…
ThomsenDrake Mar 13, 2026
dd37410
fix: close remaining stage 1-4 gaps
ThomsenDrake Mar 13, 2026
34b8f4a
docs: align RFC 0002 with InvestigationState
ThomsenDrake Mar 13, 2026
892f474
Merge pull request #6 from ThomsenDrake/fix/stage-1-4-followup-gaps
ThomsenDrake Mar 13, 2026
958cc34
Add typed investigation state persistence
ThomsenDrake Mar 13, 2026
fe8cc3e
Delete git-apply-1.txt
ThomsenDrake Mar 13, 2026
97b582b
Delete git-apply-2.txt
ThomsenDrake Mar 13, 2026
295079a
Delete git-apply-3.txt
ThomsenDrake Mar 13, 2026
436cb78
Delete git-apply-4.txt
ThomsenDrake Mar 13, 2026
0a65294
Add DeepWiki badge to README
ThomsenDrake Mar 13, 2026
746f384
Fix replay logging and pre-stage-7 test baseline
ThomsenDrake Mar 13, 2026
311d865
Merge pull request #7 from ThomsenDrake/codex/pre-stage7-patches
ThomsenDrake Mar 13, 2026
f23cc38
Add question-centric reasoning packet
ThomsenDrake Mar 13, 2026
e7b36b3
Patch replay child IDs and desktop reasoning context
ThomsenDrake Mar 13, 2026
21bb94a
Redesign curator as checkpointed synthesizer
ThomsenDrake Mar 14, 2026
6a79a3f
Patch pre-stage-9 runtime and repo-readiness gaps
ThomsenDrake Mar 14, 2026
b366061
Add structured next-step candidate actions
ThomsenDrake Mar 14, 2026
ea9e7f1
Format model streaming test emitters
ThomsenDrake Mar 14, 2026
fc7c0c0
fix: harden desktop state fallback and curator cancellation
ThomsenDrake Mar 14, 2026
35c4041
fix: align rust reasoning packet with python parity
ThomsenDrake Mar 14, 2026
d0607a7
fix: align rust question normalization with python
ThomsenDrake Mar 14, 2026
32d6576
Enforce workspace startup guardrails
ThomsenDrake Mar 15, 2026
654ca80
Add bounded budget auto-continuation
ThomsenDrake Mar 16, 2026
b972427
Fix UTF-8 truncation in budget helpers
ThomsenDrake Mar 16, 2026
4e61e4a
Merge pull request #8 from ThomsenDrake/chore/bounded-budget-continua…
ThomsenDrake Mar 16, 2026
b208840
feat: add long-form mistral transcription chunking
ThomsenDrake Mar 16, 2026
2edd482
docs: add vision document
ThomsenDrake Mar 16, 2026
5372b98
fix: preserve byte-safe audio chunk sizes
ThomsenDrake Mar 16, 2026
50a4048
Merge pull request #9 from ThomsenDrake/feat/mistral-long-form-transc…
ThomsenDrake Mar 16, 2026
39825dc
Add native Chrome DevTools MCP integration
ThomsenDrake Mar 16, 2026
36eebce
Fix /chrome auto browser URL clearing
ThomsenDrake Mar 16, 2026
189b460
Merge pull request #10 from ThomsenDrake/chore/chrome-devtools-mcp-na…
ThomsenDrake Mar 16, 2026
8d757d4
Revert "Add GPT-5.4 defaults and OAuth parity"
ThomsenDrake Mar 16, 2026
6b15772
Revert "Add GPT-5.4 alias and ChatGPT OAuth support for OpenAI auth"
ThomsenDrake Mar 16, 2026
1a51d2b
Revert "Fix /chrome auto browser URL clearing"
ThomsenDrake Mar 16, 2026
0b9c3c8
Revert "Add native Chrome DevTools MCP integration"
ThomsenDrake Mar 16, 2026
12e6e7e
Revert "fix: preserve byte-safe audio chunk sizes"
ThomsenDrake Mar 16, 2026
6cf12d4
Revert "feat: add long-form mistral transcription chunking"
ThomsenDrake Mar 16, 2026
22dccc6
Revert "Enforce workspace startup guardrails"
ThomsenDrake Mar 16, 2026
4316a3f
Revert "Add desktop init and migration workflows"
ThomsenDrake Mar 16, 2026
ead5517
Restore provider-specific files to upstream on PR1
ThomsenDrake Mar 16, 2026
2790662
Restore provider tooling files to upstream on PR1
ThomsenDrake Mar 16, 2026
da6c1a8
Remove provider-only status display from PR1 UI
ThomsenDrake Mar 16, 2026
57a9811
Restore provider-only frontend command files on PR1
ThomsenDrake Mar 16, 2026
a41c712
Finish PR1 provider cleanup and runtime repair
ThomsenDrake Mar 16, 2026
9de15e5
Remove fork-only docs and provider hardening from PR1
ThomsenDrake Mar 16, 2026
eb25133
Restore rate limit error types after stack cleanup
ThomsenDrake Mar 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions agent/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ class AgentConfig:
voyage_api_key: str | None = None
max_depth: int = 4
max_steps_per_call: int = 100
budget_extension_enabled: bool = True
budget_extension_block_steps: int = 20
budget_extension_max_blocks: int = 2
max_observation_chars: int = 6000
command_timeout_sec: int = 45
shell: str = "/bin/sh"
Expand All @@ -45,6 +48,10 @@ class AgentConfig:
session_root_dir: str = ".openplanter"
max_persisted_observations: int = 400
max_solve_seconds: int = 0
rate_limit_max_retries: int = 12
rate_limit_backoff_base_sec: float = 1.0
rate_limit_backoff_max_sec: float = 60.0
rate_limit_retry_after_cap_sec: float = 120.0
recursive: bool = True
min_subtask_depth: int = 0
acceptance_criteria: bool = True
Expand All @@ -68,6 +75,18 @@ def from_env(cls, workspace: str | Path) -> "AgentConfig":
"OPENPLANTER_BASE_URL",
"https://api.openai.com/v1",
)
budget_extension_enabled = (
os.getenv("OPENPLANTER_BUDGET_EXTENSION_ENABLED", "true").strip().lower()
in {"1", "true", "yes"}
)
budget_extension_block_steps = max(
1,
int(os.getenv("OPENPLANTER_BUDGET_EXTENSION_BLOCK_STEPS", "20")),
)
budget_extension_max_blocks = max(
0,
int(os.getenv("OPENPLANTER_BUDGET_EXTENSION_MAX_BLOCKS", "2")),
)
return cls(
workspace=ws,
provider=os.getenv("OPENPLANTER_PROVIDER", "auto").strip().lower() or "auto",
Expand All @@ -89,6 +108,9 @@ def from_env(cls, workspace: str | Path) -> "AgentConfig":
voyage_api_key=voyage_api_key,
max_depth=int(os.getenv("OPENPLANTER_MAX_DEPTH", "4")),
max_steps_per_call=int(os.getenv("OPENPLANTER_MAX_STEPS", "100")),
budget_extension_enabled=budget_extension_enabled,
budget_extension_block_steps=budget_extension_block_steps,
budget_extension_max_blocks=budget_extension_max_blocks,
max_observation_chars=int(os.getenv("OPENPLANTER_MAX_OBS_CHARS", "6000")),
command_timeout_sec=int(os.getenv("OPENPLANTER_CMD_TIMEOUT", "45")),
shell=os.getenv("OPENPLANTER_SHELL", "/bin/sh"),
Expand All @@ -99,6 +121,16 @@ def from_env(cls, workspace: str | Path) -> "AgentConfig":
session_root_dir=os.getenv("OPENPLANTER_SESSION_DIR", ".openplanter"),
max_persisted_observations=int(os.getenv("OPENPLANTER_MAX_PERSISTED_OBS", "400")),
max_solve_seconds=int(os.getenv("OPENPLANTER_MAX_SOLVE_SECONDS", "0")),
rate_limit_max_retries=int(os.getenv("OPENPLANTER_RATE_LIMIT_MAX_RETRIES", "12")),
rate_limit_backoff_base_sec=float(
os.getenv("OPENPLANTER_RATE_LIMIT_BACKOFF_BASE_SEC", "1.0")
),
rate_limit_backoff_max_sec=float(
os.getenv("OPENPLANTER_RATE_LIMIT_BACKOFF_MAX_SEC", "60.0")
),
rate_limit_retry_after_cap_sec=float(
os.getenv("OPENPLANTER_RATE_LIMIT_RETRY_AFTER_CAP_SEC", "120.0")
),
recursive=os.getenv("OPENPLANTER_RECURSIVE", "true").strip().lower() in ("1", "true", "yes"),
min_subtask_depth=int(os.getenv("OPENPLANTER_MIN_SUBTASK_DEPTH", "0")),
acceptance_criteria=os.getenv("OPENPLANTER_ACCEPTANCE_CRITERIA", "true").strip().lower() in ("1", "true", "yes"),
Expand Down
Loading