Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
a20a1b6
Only display file adding warnings when more than 50% of the compactio…
Jul 11, 2026
ca5f44a
Programmatic tool calling base implementation
Jul 11, 2026
6b168db
Base 1024 Corpus
Jul 12, 2026
b6f397e
JSON encode all tool calls
Jul 12, 2026
1a6a2c6
Update orchestration prompts and example file format
Jul 12, 2026
3190d81
Raise default sub agent size for PTC delegations
Jul 12, 2026
ddb2e9e
Use prime number base adjacency hash
Jul 12, 2026
16cfd9c
Update Read file to have my contextual position read facilities
Jul 12, 2026
0fcdb7b
Fix bug in generating file context ranges since we need surrounding c…
Jul 12, 2026
0282b67
Update file format section of agent mode system prompts
Jul 12, 2026
6f77950
Tool results are and should be dicts for delegation
Jul 12, 2026
aa8b3d3
Normalize tool results in orchestration tool
Jul 12, 2026
e71e817
Fix tests to account for ToolResponse
Jul 12, 2026
17f76c3
Adjust which modules are lazy vs eagerly imported
Jul 14, 2026
4c73926
Update tests for web browser and numpy import moves
Jul 14, 2026
3940255
Remove numpy dependency
Jul 14, 2026
f45ddde
Revert some changes to io.py
Jul 15, 2026
8087eba
Merge branch 'main' into v1.0.0
Jul 15, 2026
f92688b
Fix start up behavior of pre initialization confirmations
Jul 16, 2026
1354cf5
Translate file strings to hashline ids before normalizing
Jul 16, 2026
eb5e824
Let the LLM triage it's own harness misunderstandings
Jul 16, 2026
e4d50ae
feat: Add deep merge support for array fields in .cecli.conf.yml
Jul 16, 2026
ffe5792
feat: Implement test suite per section 10 of plans
Jul 17, 2026
8a4c09c
fix: Implement deep merge for .cecli.conf.yml files
Jul 17, 2026
85539c9
feat: Add context compaction and retry logic
Jul 17, 2026
c038a52
fix: Implement remaining software_engineer tasks for context compaction
Jul 17, 2026
468c0ba
feat: Update .cecli.plans.md with completed tests
Jul 17, 2026
d4eb2a2
fix: Implement Phase 3 Safety Guards for CLI-56
Jul 17, 2026
bd234bc
fix: Fix UT-CTX-009 mock path and APIError status code
Jul 17, 2026
63f9b9d
fix: Implement context compaction safety guards
Jul 17, 2026
f84febe
Numerous updates to support ptc
Jul 17, 2026
ed8ee0e
fix: Add dataclass decorator to FrozenCompactionSettings
Jul 17, 2026
686f4ad
fix: Enable context compaction by default in tests
Jul 17, 2026
27428e1
Resolve agent pain points
Jul 18, 2026
0e144ab
ExploreCode should return strings like other ToolResponses
Jul 18, 2026
1aab5fc
Allow delegation to run inline for orchestration
Jul 18, 2026
00d7cb0
Updates per agent feedback on ease of use
Jul 18, 2026
d7b257e
Update requirements for later versions of ltiellm
Jul 18, 2026
afc2cce
Change get_shape() to peek
Jul 18, 2026
5038ebd
Don't restrict based on adjacency, add notes on state persistence
Jul 18, 2026
f5a4b7d
Genericize _stringify and exempt orchestrate from invocation tracking
Jul 18, 2026
e292bc0
fix: Refactor config loading to deep merge all config files
Jul 18, 2026
abaa961
Return session for http based servers
Jul 18, 2026
bdd3ad7
Update hashpos to be more conservative on when it identifies a line w…
Jul 19, 2026
0b53c42
Fix edit_file guidance
Jul 19, 2026
5d48272
Make region resolver work with tilde based hashpos
Jul 19, 2026
4aad939
Allow peak to recurse in to classes
Jul 19, 2026
afebc0d
Update quote detection in parser
Jul 19, 2026
dce0e9e
Instead of crashing on statements, replace them with __security_raise…
Jul 19, 2026
8dddb68
Add additional mehods to sandbox
Jul 19, 2026
7bb299a
Add more specific error message including match content for region re…
Jul 19, 2026
07c2a23
Add pathlib wrapper
Jul 19, 2026
9bef725
state.get() can check both local and global stored items
Jul 19, 2026
06e703d
Centralize Agent utilities in orchestrate, allow brackets in nested g…
Jul 19, 2026
37cd1f2
Use ToolResult classes for joing property/attribute access for results
Jul 19, 2026
8ee4955
Allow line numbers to also be used to resolve locations in file
Jul 19, 2026
abb7c74
Give the LLM nicer error messages
Jul 19, 2026
a7e91b6
Use json escaping for safe string construction
Jul 19, 2026
cc34dfc
Simplify edit_text range parsing
Jul 19, 2026
4518495
cli-56: add automatic context compaction
Jul 19, 2026
ec1eac2
Allow before/after {second pattern} specification
Jul 19, 2026
c4dab5d
Allow patterns that start with @ to also recieve line hints
Jul 19, 2026
9cefd5d
Unify methods for parsing file reads
Jul 19, 2026
15d5d95
Add clearer error messages to the hashpos system
Jul 19, 2026
38e0b5d
Fix small grep errors
Jul 19, 2026
d42884d
Specify that no other modules can be imported
Jul 19, 2026
4c0ead2
Update orcehstration system prompt
Jul 19, 2026
e810465
Unify command_interactive into a parameter inside the command tool
Jul 19, 2026
5575d33
Cache bust file reads on edit
Jul 20, 2026
fcbbcc3
Revert orchestrate context block to more verbose one, update grep tool
Jul 20, 2026
ddead55
Update hashpos to lead with stable identifiers
Jul 20, 2026
daf1e91
ASSISTANT: (empty response)
Jul 20, 2026
7153f38
Merge branch 'main' into v1.0.0
Jul 21, 2026
98591f5
Allow configuration of the orchestration sandbox to open it up for mo…
Jul 21, 2026
95cfc8b
Fix background command pagination
Jul 21, 2026
00a1a43
Fix tests
Jul 21, 2026
b3fa8a6
Change delegate format_output
Jul 21, 2026
b6b2883
Remov duplicate print
Jul 21, 2026
898d1fa
GitPython is not threadsafe so force it to be
Jul 21, 2026
c18a53f
Update keep alive tests
Jul 21, 2026
45f98c5
Give LLM a measure of control over timeouts so it can work with longe…
Jul 21, 2026
f38818e
Integer cutoff for output limit
Jul 21, 2026
f2fbda8
Patch the most low hanging sandbox escape vectors
Jul 22, 2026
9f297cd
Rewrap sub module exports to prevent improper access, disable match s…
Jul 22, 2026
539356e
cli-57: deep merge array fields
Jul 22, 2026
e6369e9
Merge branch 'main' of github.com-personal:cecli-dev/cecli into cli-5…
Jul 22, 2026
0a83d93
fix: resolve CI linting errors (F821, F811, F841, F401, E402)
Jul 22, 2026
c4c1cce
cli-57: fixed deep merge issue with agent-config
Jul 22, 2026
d0ff5e8
fix: Remove unused import _canonical_repr from test_deep_merge.py
Jul 22, 2026
b4b1f0f
Protect past inputs
Jul 22, 2026
c4801b9
docs: Update conf.md with deep merge behavior for .cecli.conf.yml
Jul 23, 2026
4ba1349
fix: Normalize array fields to ensure empty lists or JSON objects
Jul 23, 2026
69fd7e9
Add websocket library for beginning of server API
Jul 23, 2026
b1d7296
fix: apply black formatting to pass pre-commit
Jul 23, 2026
45e88df
fix: Remove unnecessary MockArgumentParser from test
Jul 23, 2026
bc391b9
Add blinker for websocket based http server
Jul 23, 2026
6632e49
fix: resolve pre-commit failures in integration test by removing unus…
Jul 23, 2026
4b68cee
fix: Update pytest dependencies and CI workflow for async tests
Jul 23, 2026
9019555
fix: Update pytest asyncio mode to strict for better compatibility
Jul 23, 2026
ab8b4ab
fix: Handle NoneType for array fields in deep merge
Jul 23, 2026
417237a
fix: Address MCP management integration test failures
Jul 23, 2026
1d8142a
fix: handle scalar field merging in .cecli.conf.yml
Jul 23, 2026
518f6f6
feat: add automatic context compaction fallback in BaseCoder
Jul 24, 2026
7428874
Add basic web socket server communication layer
Jul 24, 2026
664c9da
Fix web server tests
Jul 24, 2026
a0e4f3e
refactor: Add absolute savings check for context compaction
Jul 24, 2026
563931b
fix: Handle None values for nested array fields in agent config
Jul 24, 2026
1147afc
cli-57: fix setting dict values
Jul 24, 2026
e765a34
cli-57: fix mcpServers dict key
Jul 24, 2026
405e537
Add ACP bridge for web server
Jul 24, 2026
0b9981f
fix: Handle string lint-cmd values in normalization
Jul 24, 2026
2badd23
Make edit boundaries exact matches since th einterface describes usin…
Jul 24, 2026
333fc20
Use server-config group variable instead of individul variables
Jul 24, 2026
1dfbdff
fix: Make MCP server debug output conditional on --debug flag
Jul 24, 2026
62b37bf
fix: Preserve array values when higher-precedence config is null
Jul 24, 2026
9a72dad
fix: Add safety checks for non-dict messages in conversation manager
Jul 25, 2026
dff1146
refactor: Consolidate context compaction checks
Jul 25, 2026
6d7de62
Add sub-protocols for ACP connectors
Jul 25, 2026
01dec41
Organize and clarify dependencies for 1.0.0 release
Jul 25, 2026
54e7520
fix linting
Jul 25, 2026
09a4997
Fix WS sub protocol negotiation
Jul 25, 2026
f049c96
fix linting
Jul 25, 2026
82ddc83
cli-56: added automatic context compaction
Jul 25, 2026
6d98862
fix: resolve pre-commit and build failures for CLI-56 PR
Jul 25, 2026
906bd9d
Update output container to render selectable static widgets (with min…
Jul 25, 2026
625ca1f
fix: apply formatting fixes for pre-commit compliance
Jul 25, 2026
82ee6c1
Allow copying text without holding shift and having ctrl+c copy when …
Jul 25, 2026
76e9f0f
Disable auto scroll since it breaks more than it fixes
Jul 25, 2026
8c4ee9a
Implement actual, not garbage SelectableRichLog so copying actually w…
Jul 26, 2026
dd73428
fix: Remove tree_sitter_languages version constraint for Python 3.12 …
Jul 26, 2026
fd7c479
Merge remote-tracking branch 'szmania/cli-56-add-automatic-context-co…
Jul 26, 2026
09cf254
Merge remote-tracking branch 'szmania/cli-57-deep-merge-array-fields-…
Jul 26, 2026
023d7f5
LLMs like em dashes? Let em have it (and also disambigurate tildes fr…
Jul 26, 2026
7ed8e95
Update how line hints are communicated in Orchestrate tool, resolve a…
Jul 26, 2026
c764b9b
Min size should not be a percentage for the compaction threshold, it'…
Jul 26, 2026
3a1cb19
Let naked line references be resolved
Jul 26, 2026
90cb907
Remove orchestrate tool if orchestration is disabled
Jul 26, 2026
96d398d
Basic, extensible persistent memory
Jul 26, 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
1 change: 1 addition & 0 deletions .github/workflows/ubuntu-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ jobs:
uv pip install --system \
pytest \
pytest-asyncio \
pytest-env \
pytest-mock \
-r requirements/requirements.in \
-r requirements/requirements-help.in \
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ cecli/_version.py
cecli/website/Gemfile.lock
*.pyc
env/
__pycache__/

# Ignore Folders
cecli/website/_site/*
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,10 @@ This command will make sure all commands ran by the coding agent happen in conte
* [TUI Configuration](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/tui.md)
* [Skills](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/skills.md)
* [Subagents](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/subagents.md)
* [Persistent Memory](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/persistent-memory.md)
* [Session Management](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/sessions.md)
* [Hooks](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/hooks.md)
* [Agent Client Protocol (ACP)](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/api.md)
* [Workspaces](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/workspaces.md)
* [Custom Commands](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/custom-commands.md)
* [Custom System Prompts](https://github.com/cecli-dev/cecli/blob/main/cecli/website/docs/config/custom-system-prompts.md)
Expand All @@ -145,11 +147,11 @@ The current priorities are to improve core capabilities and user experience of t
* [x] [Include import information in repo map for richer context](https://github.com/Aider-AI/aider/issues/2688)
* [x] [Handle non-unique symbols that break down in large codebases](https://github.com/Aider-AI/aider/issues/2341)

3. **Context Discovery** - [Discussion](https://github.com/cecli-dev/cecli/issues/46)
* [ ] Develop AST-based search capabilities
3. **Context Discovery** - [Discussion - Done with Cymbal Library](https://github.com/cecli-dev/cecli/issues/46)
* [x] Develop AST-based search capabilities
* [x] Enhance file search with ripgrep integration
* [ ] Implement RAG (Retrieval-Augmented Generation) for better code retrieval
* [ ] Build an explicit workflow and local tooling for internal discovery mechanisms
* [x] Implement RAG (Retrieval-Augmented Generation) for better code retrieval
* [x] Build an explicit workflow and local tooling for internal discovery mechanisms

4. **Context Delivery** - [Discussion](https://github.com/cecli-dev/cecli/issues/47)
* [x] Use workflow for internal discovery to better target file snippets needed for specific tasks (ExploreCode and ReadRange)
Expand Down Expand Up @@ -189,11 +191,11 @@ The current priorities are to improve core capabilities and user experience of t
* [x] Update agent mode edit tools to work with hashline identification
* [x] Update internal file diff representation to support hashline propagation

10. **Dynamic Context Management**
10. **Dynamic Context Management (Accomplished with subagents, orchestrate, and the facts db)**
* [x] Update compaction to use observational memory sub agent calls to generate decision records that are used as the compaction basis
* [ ] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
* [ ] Integrate RLM to extract information from decision records on disk and other definable notes
* [ ] Add a "describe" tool that launches a sub agent workflow that populates an RLM call's context with:
* [x] Persist decision records to disk for sessions with some settings for managing lifetimes of such persistence
* [x] Integrate RLM-like facility to extract information from decision records on disk and other definable notes
* [x] Add a "describe" tool that launches a sub agent workflow that populates an RLM call's context with:
* Current Conversation History
* Past Decision Records
* Repo Map Found Files
Expand Down
98 changes: 98 additions & 0 deletions cecli/args.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,72 @@

from .dump import dump # noqa: F401

# ── Deep-merge field sets ────────────────────────────────────────────
# These define which config keys require special merge handling for
# .cecli.conf.yml files (deep-merge instead of shallow-overwrite).

DEEP_MERGE_LIST_FIELDS: frozenset[str] = frozenset(
{
# ── Top-level argparse action="append" args ──────────────────
# These are excluded from configargparse for .cecli.conf.yml files
# (to prevent shallow overwrite), so they must be deep-merged here.
"rules",
"file",
"read",
"mcp_servers_files",
"set_env",
"api_key",
"alias",
"exempt_paths",
"lint_cmd",
# ── Nested agent-config array fields ─────────────────────────
"skills_paths",
"skills_includelist",
"skills_excludelist",
"skills_init",
"subagent_paths",
"tools_paths",
"tools_includelist",
"tools_excludelist",
"servers_includelist",
"servers_excludelist",
"allowed_commands",
}
)


DEEP_MERGE_JSON_FIELDS: frozenset[str] = frozenset(
{
"agent_config",
"mcp_servers",
"hooks",
"model_providers",
"security_config",
"retries",
"custom",
"tui_config",
}
)


# Agent-config array fields (subset of DEEP_MERGE_LIST_FIELDS used by
# agent_coder to validate agent config before passing to sub-agents).
AGENT_CONFIG_LIST_FIELDS: frozenset[str] = frozenset(
{
"skills_paths",
"skills_includelist",
"skills_excludelist",
"skills_init",
"subagent_paths",
"tools_paths",
"tools_includelist",
"tools_excludelist",
"servers_includelist",
"servers_excludelist",
"allowed_commands",
}
)


def resolve_cecli_ignore_path(path_str, git_root=None):
path = Path(path_str)
Expand Down Expand Up @@ -378,6 +444,12 @@ def get_parser(default_config_files, git_root):
" (default: False)"
),
)
group.add_argument(
"--auto-memory",
action=argparse.BooleanOptionalAction,
default=False,
help="Enable/disable automatic fact memorization after changes and compaction (default: True)",
)
group.add_argument(
"--session-encrypt",
action=argparse.BooleanOptionalAction,
Expand Down Expand Up @@ -452,6 +524,14 @@ def get_parser(default_config_files, git_root):
default=True,
help="Enable automatic compaction of chat history to conserve tokens (default: False)",
)
group.add_argument(
"--max-compaction-retries",
type=int,
default=3,
metavar="N",
choices=range(1, 11),
help="Maximum number of compactions per request before propagating the error (default: 3, min: 1, max: 10)",
)
group.add_argument(
"--context-compaction-max-tokens",
type=float,
Expand All @@ -467,6 +547,15 @@ def get_parser(default_config_files, git_root):
default=4096,
help="The target maximum number of tokens for the generated summary. (default: 4096)",
)
group.add_argument(
"--ignore-context-limit",
action=argparse.BooleanOptionalAction,
default=False,
help=(
"Ignore the model's context window limit when sending requests."
" WARNING: This may cause API errors or truncated responses. (default: False)"
),
)

##########
group = parser.add_argument_group("Cache settings")
Expand Down Expand Up @@ -1162,6 +1251,15 @@ def get_parser(default_config_files, git_root):
),
)

##########
group = parser.add_argument_group("Server settings")
group.add_argument(
"--server-config",
metavar="SERVER_CONFIG_JSON",
help="Specify server configuration (WebSocket and headless) as a JSON/YAML string",
default=None,
)

##########
group = parser.add_argument_group("Deprecated model settings")
# Add deprecated model shortcut arguments
Expand Down
Loading
Loading