1bcoder 0.1.11__tar.gz → 0.1.13__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.
Files changed (105) hide show
  1. {1bcoder-0.1.11 → 1bcoder-0.1.13}/1bcoder.egg-info/PKG-INFO +38 -13
  2. {1bcoder-0.1.11 → 1bcoder-0.1.13}/1bcoder.egg-info/SOURCES.txt +4 -0
  3. {1bcoder-0.1.11 → 1bcoder-0.1.13}/PKG-INFO +38 -13
  4. {1bcoder-0.1.11 → 1bcoder-0.1.13}/README.md +37 -12
  5. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/aliases.txt +2 -0
  6. 1bcoder-0.1.13/_bcoder_data/flows/__pycache__/webcrawl.cpython-311.pyc +0 -0
  7. 1bcoder-0.1.13/_bcoder_data/flows/deepagent.py +329 -0
  8. 1bcoder-0.1.13/_bcoder_data/flows/visual_search.py +76 -0
  9. 1bcoder-0.1.13/_bcoder_data/flows/webcrawl.py +369 -0
  10. {1bcoder-0.1.11 → 1bcoder-0.1.13}/chat.py +719 -49
  11. {1bcoder-0.1.11 → 1bcoder-0.1.13}/map_query.py +22 -6
  12. {1bcoder-0.1.11 → 1bcoder-0.1.13}/pyproject.toml +1 -1
  13. {1bcoder-0.1.11 → 1bcoder-0.1.13}/1bcoder.egg-info/dependency_links.txt +0 -0
  14. {1bcoder-0.1.11 → 1bcoder-0.1.13}/1bcoder.egg-info/entry_points.txt +0 -0
  15. {1bcoder-0.1.11 → 1bcoder-0.1.13}/1bcoder.egg-info/requires.txt +0 -0
  16. {1bcoder-0.1.11 → 1bcoder-0.1.13}/1bcoder.egg-info/top_level.txt +0 -0
  17. {1bcoder-0.1.11 → 1bcoder-0.1.13}/LICENSE +0 -0
  18. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/__init__.py +0 -0
  19. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/advance.txt +0 -0
  20. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/ask.txt +0 -0
  21. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/compact.txt +0 -0
  22. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/concepts.txt +0 -0
  23. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/fill.txt +0 -0
  24. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/planning.txt +0 -0
  25. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/scan.txt +0 -0
  26. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/sqlite.txt +0 -0
  27. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/agents/websearch.txt +0 -0
  28. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/doc/FLOWS.md +0 -0
  29. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/doc/MCP.md +0 -0
  30. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/doc/OLLAMA_SERVER_PARAM.md +0 -0
  31. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/doc/PARAM.md +0 -0
  32. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/doc/PROC.md +0 -0
  33. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/doc/TRANSLATE.md +0 -0
  34. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/flows/__pycache__/commit_message.cpython-311.pyc +0 -0
  35. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/flows/commit_message.py +0 -0
  36. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/flows/grounding.py +0 -0
  37. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/flows/py_error_trace.py +0 -0
  38. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/flows/simargl_files.py +0 -0
  39. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/flows/webask.py +0 -0
  40. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/map.txt +0 -0
  41. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/action-required.py +0 -0
  42. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/add-save.py +0 -0
  43. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/assist.py +0 -0
  44. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/collect-files.py +0 -0
  45. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/ctx_cut.py +0 -0
  46. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/extract-code.py +0 -0
  47. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/extract-files.py +0 -0
  48. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/extract-list.py +0 -0
  49. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/grounding-check.py +0 -0
  50. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/md.py +0 -0
  51. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/mdx.py +0 -0
  52. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/pattern-gate.py +0 -0
  53. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/regexp-extract.py +0 -0
  54. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/rude_words.py +0 -0
  55. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/scan-save.py +0 -0
  56. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/secret_check.py +0 -0
  57. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/sql_readonly_guard.py +0 -0
  58. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/proc/tempctx-cut.py +0 -0
  59. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/profiles.txt +0 -0
  60. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/prompts/analysis.txt +0 -0
  61. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/prompts/sumarise.txt +0 -0
  62. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/prompts.txt +0 -0
  63. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/AddFunction.txt +0 -0
  64. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/AskProject.txt +0 -0
  65. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/CheckRequirements.txt +0 -0
  66. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/DockerMySQL.txt +0 -0
  67. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/DockerNginx.txt +0 -0
  68. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/DockerPython.txt +0 -0
  69. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/DockerStack.txt +0 -0
  70. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/DuckDuckGoInstant.txt +0 -0
  71. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/EnvTemplate.txt +0 -0
  72. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/Explain.txt +0 -0
  73. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/ExploreProjectStructure.txt +0 -0
  74. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/GitIgnorePython.txt +0 -0
  75. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/MySQLDump.txt +0 -0
  76. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/NewScript.txt +0 -0
  77. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/PipFreeze.txt +0 -0
  78. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/PyPI.txt +0 -0
  79. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/Refactor.txt +0 -0
  80. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/RunAndFix.txt +0 -0
  81. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/SQLiteSchema.txt +0 -0
  82. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/Translate.txt +0 -0
  83. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/WikiPage.txt +0 -0
  84. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/WikiSearch.txt +0 -0
  85. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/auto-bkup.txt +0 -0
  86. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/edit-control.txt +0 -0
  87. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/parallel_call.txt +0 -0
  88. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/personal/content/create-regular-content.txt +0 -0
  89. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/personal/content/plan.txt +0 -0
  90. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/personal/test/collect-data-from-test-environment.txt +0 -0
  91. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/plan.txt +0 -0
  92. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/remote/create-content-on-remote-server.txt +0 -0
  93. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/set_ctx.txt +0 -0
  94. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/simargl-cli_index_files.txt +0 -0
  95. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/simargl-cli_index_units.txt +0 -0
  96. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/simargl-cli_search.txt +0 -0
  97. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/team-map-worker.txt +0 -0
  98. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/team-search-worker.txt +0 -0
  99. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/team-summarize.txt +0 -0
  100. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/team-tree-worker.txt +0 -0
  101. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/scripts/test.txt +0 -0
  102. {1bcoder-0.1.11 → 1bcoder-0.1.13}/_bcoder_data/teams/code-analysis.yaml +0 -0
  103. {1bcoder-0.1.11 → 1bcoder-0.1.13}/map_index.py +0 -0
  104. {1bcoder-0.1.11 → 1bcoder-0.1.13}/setup.cfg +0 -0
  105. {1bcoder-0.1.11 → 1bcoder-0.1.13}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: 1bcoder
3
- Version: 0.1.11
3
+ Version: 0.1.13
4
4
  Summary: AI coding assistant agent for 1B–7B local models (Ollama, LMStudio, llama.cpp). Terminal REPL with file editing, project map, agents, scripts, and parallel multi-model queries.
5
5
  Project-URL: Homepage, https://github.com/szholobetsky/1bcoder
6
6
  Project-URL: Repository, https://github.com/szholobetsky/1bcoder
@@ -44,8 +44,8 @@ This is not a niche concern. It is the default requirement for any serious profe
44
44
  | Size | Reliable in 1bcoder |
45
45
  |---|---|
46
46
  | 0.5b | Explain a 10–20 line function; identify a known technology from a file name; write a standard construct in an unfamiliar language |
47
- | 1b | Explain a full module; recognize a tech stack from a directory tree; answer questions about error messages and short log excerpts |
48
- | 1b thinking | Explain whole-file logic; identify design patterns across a module still unreliable for editing |
47
+ | 1b | Explain a full module; recognize a tech stack from a directory tree; answer questions about error messages and short log excerpts; edit single lines reliably with `/fim` |
48
+ | 1b thinking | Explain whole-file logic; identify design patterns across a module; reliable for targeted edits with `/fim` |
49
49
  | 2b–4b | Edit files under instruction; write new functions; follow SEARCH/REPLACE format consistently |
50
50
 
51
51
  Every tier is useful. Each requires a different approach to context preparation. 1bcoder provides the tools to do that preparation with surgical precision.
@@ -126,7 +126,8 @@ Tasks that require the model to decide *what to look at* — refactoring across
126
126
  ## Features
127
127
 
128
128
  - Plain terminal REPL — works in any shell, IDE terminal, or SSH session; status line before each prompt shows active model, disk size, quantization, native context limit, and context fill %
129
- - **`/read`** injects files without line numbers (clean text, ideal for `notes.txt` and structured data); **`/readln`** injects with line numbers (use before `/fix` or `/patch` when line references matter); both accept comma- or space-separated file lists — use directly with `{{find_files}}` or `{{map_files}}` captured from `/find` or `/map find`
129
+ - **`/read`** injects files without line numbers (clean text, ideal for `notes.txt` and structured data); **`/readln`** injects with line numbers (use before `/fim`, `/fix`, or `/patch` when line references matter); both accept comma- or space-separated file lists — use directly with `{{find_files}}` or `{{map_files}}` captured from `/find` or `/map find`
130
+ - **`/view <image> [prompt]`** — inject images into context for multimodal models (`qwen2-vl`, `llava`, `moondream`); trailing non-image words become the prompt; works with `@` file picker; supports png jpg jpeg gif webp bmp
130
131
  - **Command autocorrection** — typos in command names, file paths, and keywords are detected and fixed automatically before execution, for both human input and agent actions
131
132
  - **`/tree [path]`** — display directory tree of the whole project or any subtree; ask to inject into context (or pass `ctx` to skip the prompt)
132
133
  - **`/find <pattern>`** — search filenames and file content with regex; supports `-f`/`-c`/`-i`/`--ext` flags; highlights matches, asks to inject results into context; sets `{{find_files}}` after every search; **`/find <terms> -r`** ranked BM25 mode returns top-10 files by relevance; hidden directories (`.git`, `.venv`, etc.) excluded automatically
@@ -298,7 +299,7 @@ Examples:
298
299
  > /map index .
299
300
  > /read main.py 1-20
300
301
  > what does the divide() function do?
301
- > /fix main.py 5-5 wrong operator
302
+ > /fim main.py 5 wrong operator
302
303
  ```
303
304
 
304
305
  ---
@@ -421,7 +422,8 @@ Then configure `/translate` to use it:
421
422
  | Command | Description |
422
423
  |---|---|
423
424
  | `/read <file> [file2 ...] [start-end]` | Inject file(s) into AI context **without line numbers** (clean text) |
424
- | `/readln <file> [file2 ...] [start-end]` | Same as `/read` but **with line numbers** — use before `/fix` or `/patch` |
425
+ | `/readln <file> [file2 ...] [start-end]` | Same as `/read` but **with line numbers** — use before `/fim`, `/fix`, or `/patch` |
426
+ | `/view <image> [image2 ...] [prompt]` | Inject image(s) for multimodal models — trailing non-image words become the prompt |
425
427
  | `/insert <file> <line>` | Insert last AI reply before line N (full text) |
426
428
  | `/insert <file> <line> code` | Insert extracted code block from last AI reply before line N |
427
429
  | `/insert <file> <line> <text>` | Insert literal text directly, preserving indentation (e.g. `/insert main.py 14 x = 1`) |
@@ -436,6 +438,8 @@ Then configure `/translate` to use it:
436
438
 
437
439
  `/save` modes: `overwrite` (default), `append-above` / `-aa`, `append-below` / `-ab`, `add-suffix`, `code`
438
440
 
441
+ Use `@/` to pick the target directory interactively: `/save @/result.txt code` shows a numbered directory tree, you pick a number, the token becomes `chosen_dir/result.txt`. Multiple `@/name` tokens in one command share a single pick.
442
+
439
443
  ```
440
444
  /diff main.py main.py.bkup # colored diff, asks to inject into context
441
445
  /diff v1/calc.py v2/calc.py -y # auto-inject without confirmation
@@ -988,7 +992,7 @@ Lines starting with `[v]` are already done and skipped. Lines starting with `#`
988
992
  | `/script apply [file] [key=value ...]` | Run steps one by one (Y/n/q per step) |
989
993
  | `/script apply -y [file] [key=value ...]` | Run all pending steps automatically |
990
994
 
991
- **`/script create ctx`** captures all work commands typed this session (`/read`, `/edit`, `/fix`, `/patch`, `/run`, `/save`, `/bkup`, `/map`, `/model`, `/host`) into a ready-to-run plan:
995
+ **`/script create ctx`** captures all work commands typed this session (`/read`, `/edit`, `/fim`, `/fix`, `/patch`, `/run`, `/save`, `/bkup`, `/map`, `/model`, `/host`) into a ready-to-run plan:
992
996
 
993
997
  ```
994
998
  > /host http://192.168.1.50:11434
@@ -1079,12 +1083,14 @@ Any `{{key}}` found but not yet set is registered as NaN — `/script reapply` w
1079
1083
 
1080
1084
  ---
1081
1085
 
1082
- ### Output capture (`->`, `$` and `~`)
1086
+ ### Output capture (`->`, `$`, `~` and `@`)
1083
1087
 
1084
- Any command — LLM reply, tool output, or proc result — can be captured into a session variable using the `->` suffix. Two special tokens expand anywhere in a command or message:
1088
+ Any command — LLM reply, tool output, or proc result — can be captured into a session variable using the `->` suffix. Three special tokens expand anywhere in a command or message:
1085
1089
 
1086
1090
  - `$` — last captured output (last AI reply or tool result)
1087
1091
  - `~` — last user input (last message or command you typed)
1092
+ - `@[dir]` — file picker: shows a numbered tree rooted at `dir` (default: `.`); type a number to select a file; the token is replaced by the chosen path
1093
+ - `@/[suffix]` — directory picker: shows a numbered tree of directories; type a number; `@/suffix` is replaced by `chosen_dir/suffix`; multiple `@/suffix` tokens in one command share a single pick
1088
1094
 
1089
1095
  ```
1090
1096
  /map keyword extract auth.py -> keywords # capture tool output into variable
@@ -1109,6 +1115,23 @@ summarize this for me -> myplan # capture LLM reply
1109
1115
  поясни: $ # ask main model to explain its own reply
1110
1116
  ```
1111
1117
 
1118
+ **`@` — file picker (numbered tree):**
1119
+ ```
1120
+ /readln @ # pick any file from current directory
1121
+ /readln @src # pick from src/ subtree
1122
+ /fim @src fix the null check # pick file, then run /fim on it
1123
+ ```
1124
+ Type `@` (optionally followed by a path, no space), press Enter — a numbered tree appears; type the number to substitute the path.
1125
+
1126
+ **`@/` — directory picker:**
1127
+ ```
1128
+ /save @/result.txt code # pick a directory, save to chosen_dir/result.txt
1129
+ /save @/result1.txt @/result2.txt code # pick once, both tokens get the same prefix
1130
+ ```
1131
+ Type `@/suffix` — a numbered tree of directories appears; pick one; every `@/suffix` in the command is replaced by `chosen_dir/suffix`. Use this when you want to save output into a deeply nested directory without typing the full path.
1132
+
1133
+ `@` and `@/` work wherever `$` and `~` work: in any command or message.
1134
+
1112
1135
  `->` stores the full text (including ANSI-stripped terminal output) and also updates `$` for immediate reuse. Variables captured with `->` appear in `/var get` like any other session variable.
1113
1136
 
1114
1137
  ---
@@ -1362,7 +1385,7 @@ Use `list:` when you want to explore a single question from multiple angles simu
1362
1385
  | `ctx: last` | Last message only (default) |
1363
1386
  | `ctx: none` | No context — prompt only |
1364
1387
 
1365
- **`$` and `~` expansion** — `$` expands to the last AI reply, `~` to your last input:
1388
+ **`$`, `~` and `@` expansion** — `$` expands to the last AI reply, `~` to your last input, `@` opens a file picker:
1366
1389
 
1367
1390
  ```
1368
1391
  /parallel $ profile: short # ask short model to summarise last reply
@@ -1805,7 +1828,7 @@ For human input, the corrected command is shown with `[fix?]` and you are asked
1805
1828
 
1806
1829
  ## Part of the SIMARGL toolkit
1807
1830
 
1808
- 1bcoder is one of four tools that together form an **intellectual development support system**:
1831
+ 1bcoder is one of five tools that together form an **intellectual development support system**:
1809
1832
 
1810
1833
  | Tool | Role |
1811
1834
  |---|---|
@@ -1813,16 +1836,18 @@ For human input, the corrected command is shown with `[fix?]` and you are asked
1813
1836
  | **[svitovyd](https://github.com/szholobetsky/svitovyd)** | Project map — scans any codebase and produces a structural map of definitions and cross-file dependencies; exposes it as an MCP server |
1814
1837
  | **[1bcoder](https://github.com/szholobetsky/1bcoder)** | AI coding assistant for small local models — surgical context management, agents, parallel inference, proc scripts |
1815
1838
  | **[yasna](https://github.com/szholobetsky/yasna)** | Session memory — indexes conversations from all AI agents so you can find what was discussed, when, and where |
1839
+ | **[radogast](https://github.com/szholobetsky/radogast)** | Context drift monitor — measures how far an AI agent's conversation has drifted from the original task |
1816
1840
 
1817
1841
  - **simargl** answers: *what code is related to this task?*
1818
1842
  - **svitovyd** answers: *how is the code structured and what depends on what?*
1819
1843
  - **1bcoder** answers: *how do I work with local models efficiently?*
1820
1844
  - **yasna** answers: *where did I already discuss this?*
1845
+ - **radogast** answers: *is the AI agent still on track toward the goal?*
1821
1846
 
1822
- Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, remember what was decided.
1847
+ Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, remember what was decided, and verify the context stays on target.
1823
1848
 
1824
1849
  ---
1825
1850
 
1826
- **(c) 2026 Stanislav Zholobetskyi**
1851
+ **(c) 2026 Stanislav Zholobetskyi, Oleh Andriichuk**
1827
1852
  Institute for Information Recording, National Academy of Sciences of Ukraine, Kyiv
1828
1853
  *PhD research: «Intelligent Technology for Software Development and Maintenance Support»*
@@ -31,11 +31,15 @@ _bcoder_data/doc/PARAM.md
31
31
  _bcoder_data/doc/PROC.md
32
32
  _bcoder_data/doc/TRANSLATE.md
33
33
  _bcoder_data/flows/commit_message.py
34
+ _bcoder_data/flows/deepagent.py
34
35
  _bcoder_data/flows/grounding.py
35
36
  _bcoder_data/flows/py_error_trace.py
36
37
  _bcoder_data/flows/simargl_files.py
38
+ _bcoder_data/flows/visual_search.py
37
39
  _bcoder_data/flows/webask.py
40
+ _bcoder_data/flows/webcrawl.py
38
41
  _bcoder_data/flows/__pycache__/commit_message.cpython-311.pyc
42
+ _bcoder_data/flows/__pycache__/webcrawl.cpython-311.pyc
39
43
  _bcoder_data/proc/action-required.py
40
44
  _bcoder_data/proc/add-save.py
41
45
  _bcoder_data/proc/assist.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: 1bcoder
3
- Version: 0.1.11
3
+ Version: 0.1.13
4
4
  Summary: AI coding assistant agent for 1B–7B local models (Ollama, LMStudio, llama.cpp). Terminal REPL with file editing, project map, agents, scripts, and parallel multi-model queries.
5
5
  Project-URL: Homepage, https://github.com/szholobetsky/1bcoder
6
6
  Project-URL: Repository, https://github.com/szholobetsky/1bcoder
@@ -44,8 +44,8 @@ This is not a niche concern. It is the default requirement for any serious profe
44
44
  | Size | Reliable in 1bcoder |
45
45
  |---|---|
46
46
  | 0.5b | Explain a 10–20 line function; identify a known technology from a file name; write a standard construct in an unfamiliar language |
47
- | 1b | Explain a full module; recognize a tech stack from a directory tree; answer questions about error messages and short log excerpts |
48
- | 1b thinking | Explain whole-file logic; identify design patterns across a module still unreliable for editing |
47
+ | 1b | Explain a full module; recognize a tech stack from a directory tree; answer questions about error messages and short log excerpts; edit single lines reliably with `/fim` |
48
+ | 1b thinking | Explain whole-file logic; identify design patterns across a module; reliable for targeted edits with `/fim` |
49
49
  | 2b–4b | Edit files under instruction; write new functions; follow SEARCH/REPLACE format consistently |
50
50
 
51
51
  Every tier is useful. Each requires a different approach to context preparation. 1bcoder provides the tools to do that preparation with surgical precision.
@@ -126,7 +126,8 @@ Tasks that require the model to decide *what to look at* — refactoring across
126
126
  ## Features
127
127
 
128
128
  - Plain terminal REPL — works in any shell, IDE terminal, or SSH session; status line before each prompt shows active model, disk size, quantization, native context limit, and context fill %
129
- - **`/read`** injects files without line numbers (clean text, ideal for `notes.txt` and structured data); **`/readln`** injects with line numbers (use before `/fix` or `/patch` when line references matter); both accept comma- or space-separated file lists — use directly with `{{find_files}}` or `{{map_files}}` captured from `/find` or `/map find`
129
+ - **`/read`** injects files without line numbers (clean text, ideal for `notes.txt` and structured data); **`/readln`** injects with line numbers (use before `/fim`, `/fix`, or `/patch` when line references matter); both accept comma- or space-separated file lists — use directly with `{{find_files}}` or `{{map_files}}` captured from `/find` or `/map find`
130
+ - **`/view <image> [prompt]`** — inject images into context for multimodal models (`qwen2-vl`, `llava`, `moondream`); trailing non-image words become the prompt; works with `@` file picker; supports png jpg jpeg gif webp bmp
130
131
  - **Command autocorrection** — typos in command names, file paths, and keywords are detected and fixed automatically before execution, for both human input and agent actions
131
132
  - **`/tree [path]`** — display directory tree of the whole project or any subtree; ask to inject into context (or pass `ctx` to skip the prompt)
132
133
  - **`/find <pattern>`** — search filenames and file content with regex; supports `-f`/`-c`/`-i`/`--ext` flags; highlights matches, asks to inject results into context; sets `{{find_files}}` after every search; **`/find <terms> -r`** ranked BM25 mode returns top-10 files by relevance; hidden directories (`.git`, `.venv`, etc.) excluded automatically
@@ -298,7 +299,7 @@ Examples:
298
299
  > /map index .
299
300
  > /read main.py 1-20
300
301
  > what does the divide() function do?
301
- > /fix main.py 5-5 wrong operator
302
+ > /fim main.py 5 wrong operator
302
303
  ```
303
304
 
304
305
  ---
@@ -421,7 +422,8 @@ Then configure `/translate` to use it:
421
422
  | Command | Description |
422
423
  |---|---|
423
424
  | `/read <file> [file2 ...] [start-end]` | Inject file(s) into AI context **without line numbers** (clean text) |
424
- | `/readln <file> [file2 ...] [start-end]` | Same as `/read` but **with line numbers** — use before `/fix` or `/patch` |
425
+ | `/readln <file> [file2 ...] [start-end]` | Same as `/read` but **with line numbers** — use before `/fim`, `/fix`, or `/patch` |
426
+ | `/view <image> [image2 ...] [prompt]` | Inject image(s) for multimodal models — trailing non-image words become the prompt |
425
427
  | `/insert <file> <line>` | Insert last AI reply before line N (full text) |
426
428
  | `/insert <file> <line> code` | Insert extracted code block from last AI reply before line N |
427
429
  | `/insert <file> <line> <text>` | Insert literal text directly, preserving indentation (e.g. `/insert main.py 14 x = 1`) |
@@ -436,6 +438,8 @@ Then configure `/translate` to use it:
436
438
 
437
439
  `/save` modes: `overwrite` (default), `append-above` / `-aa`, `append-below` / `-ab`, `add-suffix`, `code`
438
440
 
441
+ Use `@/` to pick the target directory interactively: `/save @/result.txt code` shows a numbered directory tree, you pick a number, the token becomes `chosen_dir/result.txt`. Multiple `@/name` tokens in one command share a single pick.
442
+
439
443
  ```
440
444
  /diff main.py main.py.bkup # colored diff, asks to inject into context
441
445
  /diff v1/calc.py v2/calc.py -y # auto-inject without confirmation
@@ -988,7 +992,7 @@ Lines starting with `[v]` are already done and skipped. Lines starting with `#`
988
992
  | `/script apply [file] [key=value ...]` | Run steps one by one (Y/n/q per step) |
989
993
  | `/script apply -y [file] [key=value ...]` | Run all pending steps automatically |
990
994
 
991
- **`/script create ctx`** captures all work commands typed this session (`/read`, `/edit`, `/fix`, `/patch`, `/run`, `/save`, `/bkup`, `/map`, `/model`, `/host`) into a ready-to-run plan:
995
+ **`/script create ctx`** captures all work commands typed this session (`/read`, `/edit`, `/fim`, `/fix`, `/patch`, `/run`, `/save`, `/bkup`, `/map`, `/model`, `/host`) into a ready-to-run plan:
992
996
 
993
997
  ```
994
998
  > /host http://192.168.1.50:11434
@@ -1079,12 +1083,14 @@ Any `{{key}}` found but not yet set is registered as NaN — `/script reapply` w
1079
1083
 
1080
1084
  ---
1081
1085
 
1082
- ### Output capture (`->`, `$` and `~`)
1086
+ ### Output capture (`->`, `$`, `~` and `@`)
1083
1087
 
1084
- Any command — LLM reply, tool output, or proc result — can be captured into a session variable using the `->` suffix. Two special tokens expand anywhere in a command or message:
1088
+ Any command — LLM reply, tool output, or proc result — can be captured into a session variable using the `->` suffix. Three special tokens expand anywhere in a command or message:
1085
1089
 
1086
1090
  - `$` — last captured output (last AI reply or tool result)
1087
1091
  - `~` — last user input (last message or command you typed)
1092
+ - `@[dir]` — file picker: shows a numbered tree rooted at `dir` (default: `.`); type a number to select a file; the token is replaced by the chosen path
1093
+ - `@/[suffix]` — directory picker: shows a numbered tree of directories; type a number; `@/suffix` is replaced by `chosen_dir/suffix`; multiple `@/suffix` tokens in one command share a single pick
1088
1094
 
1089
1095
  ```
1090
1096
  /map keyword extract auth.py -> keywords # capture tool output into variable
@@ -1109,6 +1115,23 @@ summarize this for me -> myplan # capture LLM reply
1109
1115
  поясни: $ # ask main model to explain its own reply
1110
1116
  ```
1111
1117
 
1118
+ **`@` — file picker (numbered tree):**
1119
+ ```
1120
+ /readln @ # pick any file from current directory
1121
+ /readln @src # pick from src/ subtree
1122
+ /fim @src fix the null check # pick file, then run /fim on it
1123
+ ```
1124
+ Type `@` (optionally followed by a path, no space), press Enter — a numbered tree appears; type the number to substitute the path.
1125
+
1126
+ **`@/` — directory picker:**
1127
+ ```
1128
+ /save @/result.txt code # pick a directory, save to chosen_dir/result.txt
1129
+ /save @/result1.txt @/result2.txt code # pick once, both tokens get the same prefix
1130
+ ```
1131
+ Type `@/suffix` — a numbered tree of directories appears; pick one; every `@/suffix` in the command is replaced by `chosen_dir/suffix`. Use this when you want to save output into a deeply nested directory without typing the full path.
1132
+
1133
+ `@` and `@/` work wherever `$` and `~` work: in any command or message.
1134
+
1112
1135
  `->` stores the full text (including ANSI-stripped terminal output) and also updates `$` for immediate reuse. Variables captured with `->` appear in `/var get` like any other session variable.
1113
1136
 
1114
1137
  ---
@@ -1362,7 +1385,7 @@ Use `list:` when you want to explore a single question from multiple angles simu
1362
1385
  | `ctx: last` | Last message only (default) |
1363
1386
  | `ctx: none` | No context — prompt only |
1364
1387
 
1365
- **`$` and `~` expansion** — `$` expands to the last AI reply, `~` to your last input:
1388
+ **`$`, `~` and `@` expansion** — `$` expands to the last AI reply, `~` to your last input, `@` opens a file picker:
1366
1389
 
1367
1390
  ```
1368
1391
  /parallel $ profile: short # ask short model to summarise last reply
@@ -1805,7 +1828,7 @@ For human input, the corrected command is shown with `[fix?]` and you are asked
1805
1828
 
1806
1829
  ## Part of the SIMARGL toolkit
1807
1830
 
1808
- 1bcoder is one of four tools that together form an **intellectual development support system**:
1831
+ 1bcoder is one of five tools that together form an **intellectual development support system**:
1809
1832
 
1810
1833
  | Tool | Role |
1811
1834
  |---|---|
@@ -1813,16 +1836,18 @@ For human input, the corrected command is shown with `[fix?]` and you are asked
1813
1836
  | **[svitovyd](https://github.com/szholobetsky/svitovyd)** | Project map — scans any codebase and produces a structural map of definitions and cross-file dependencies; exposes it as an MCP server |
1814
1837
  | **[1bcoder](https://github.com/szholobetsky/1bcoder)** | AI coding assistant for small local models — surgical context management, agents, parallel inference, proc scripts |
1815
1838
  | **[yasna](https://github.com/szholobetsky/yasna)** | Session memory — indexes conversations from all AI agents so you can find what was discussed, when, and where |
1839
+ | **[radogast](https://github.com/szholobetsky/radogast)** | Context drift monitor — measures how far an AI agent's conversation has drifted from the original task |
1816
1840
 
1817
1841
  - **simargl** answers: *what code is related to this task?*
1818
1842
  - **svitovyd** answers: *how is the code structured and what depends on what?*
1819
1843
  - **1bcoder** answers: *how do I work with local models efficiently?*
1820
1844
  - **yasna** answers: *where did I already discuss this?*
1845
+ - **radogast** answers: *is the AI agent still on track toward the goal?*
1821
1846
 
1822
- Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, remember what was decided.
1847
+ Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, remember what was decided, and verify the context stays on target.
1823
1848
 
1824
1849
  ---
1825
1850
 
1826
- **(c) 2026 Stanislav Zholobetskyi**
1851
+ **(c) 2026 Stanislav Zholobetskyi, Oleh Andriichuk**
1827
1852
  Institute for Information Recording, National Academy of Sciences of Ukraine, Kyiv
1828
1853
  *PhD research: «Intelligent Technology for Software Development and Maintenance Support»*
@@ -29,8 +29,8 @@ This is not a niche concern. It is the default requirement for any serious profe
29
29
  | Size | Reliable in 1bcoder |
30
30
  |---|---|
31
31
  | 0.5b | Explain a 10–20 line function; identify a known technology from a file name; write a standard construct in an unfamiliar language |
32
- | 1b | Explain a full module; recognize a tech stack from a directory tree; answer questions about error messages and short log excerpts |
33
- | 1b thinking | Explain whole-file logic; identify design patterns across a module still unreliable for editing |
32
+ | 1b | Explain a full module; recognize a tech stack from a directory tree; answer questions about error messages and short log excerpts; edit single lines reliably with `/fim` |
33
+ | 1b thinking | Explain whole-file logic; identify design patterns across a module; reliable for targeted edits with `/fim` |
34
34
  | 2b–4b | Edit files under instruction; write new functions; follow SEARCH/REPLACE format consistently |
35
35
 
36
36
  Every tier is useful. Each requires a different approach to context preparation. 1bcoder provides the tools to do that preparation with surgical precision.
@@ -111,7 +111,8 @@ Tasks that require the model to decide *what to look at* — refactoring across
111
111
  ## Features
112
112
 
113
113
  - Plain terminal REPL — works in any shell, IDE terminal, or SSH session; status line before each prompt shows active model, disk size, quantization, native context limit, and context fill %
114
- - **`/read`** injects files without line numbers (clean text, ideal for `notes.txt` and structured data); **`/readln`** injects with line numbers (use before `/fix` or `/patch` when line references matter); both accept comma- or space-separated file lists — use directly with `{{find_files}}` or `{{map_files}}` captured from `/find` or `/map find`
114
+ - **`/read`** injects files without line numbers (clean text, ideal for `notes.txt` and structured data); **`/readln`** injects with line numbers (use before `/fim`, `/fix`, or `/patch` when line references matter); both accept comma- or space-separated file lists — use directly with `{{find_files}}` or `{{map_files}}` captured from `/find` or `/map find`
115
+ - **`/view <image> [prompt]`** — inject images into context for multimodal models (`qwen2-vl`, `llava`, `moondream`); trailing non-image words become the prompt; works with `@` file picker; supports png jpg jpeg gif webp bmp
115
116
  - **Command autocorrection** — typos in command names, file paths, and keywords are detected and fixed automatically before execution, for both human input and agent actions
116
117
  - **`/tree [path]`** — display directory tree of the whole project or any subtree; ask to inject into context (or pass `ctx` to skip the prompt)
117
118
  - **`/find <pattern>`** — search filenames and file content with regex; supports `-f`/`-c`/`-i`/`--ext` flags; highlights matches, asks to inject results into context; sets `{{find_files}}` after every search; **`/find <terms> -r`** ranked BM25 mode returns top-10 files by relevance; hidden directories (`.git`, `.venv`, etc.) excluded automatically
@@ -283,7 +284,7 @@ Examples:
283
284
  > /map index .
284
285
  > /read main.py 1-20
285
286
  > what does the divide() function do?
286
- > /fix main.py 5-5 wrong operator
287
+ > /fim main.py 5 wrong operator
287
288
  ```
288
289
 
289
290
  ---
@@ -406,7 +407,8 @@ Then configure `/translate` to use it:
406
407
  | Command | Description |
407
408
  |---|---|
408
409
  | `/read <file> [file2 ...] [start-end]` | Inject file(s) into AI context **without line numbers** (clean text) |
409
- | `/readln <file> [file2 ...] [start-end]` | Same as `/read` but **with line numbers** — use before `/fix` or `/patch` |
410
+ | `/readln <file> [file2 ...] [start-end]` | Same as `/read` but **with line numbers** — use before `/fim`, `/fix`, or `/patch` |
411
+ | `/view <image> [image2 ...] [prompt]` | Inject image(s) for multimodal models — trailing non-image words become the prompt |
410
412
  | `/insert <file> <line>` | Insert last AI reply before line N (full text) |
411
413
  | `/insert <file> <line> code` | Insert extracted code block from last AI reply before line N |
412
414
  | `/insert <file> <line> <text>` | Insert literal text directly, preserving indentation (e.g. `/insert main.py 14 x = 1`) |
@@ -421,6 +423,8 @@ Then configure `/translate` to use it:
421
423
 
422
424
  `/save` modes: `overwrite` (default), `append-above` / `-aa`, `append-below` / `-ab`, `add-suffix`, `code`
423
425
 
426
+ Use `@/` to pick the target directory interactively: `/save @/result.txt code` shows a numbered directory tree, you pick a number, the token becomes `chosen_dir/result.txt`. Multiple `@/name` tokens in one command share a single pick.
427
+
424
428
  ```
425
429
  /diff main.py main.py.bkup # colored diff, asks to inject into context
426
430
  /diff v1/calc.py v2/calc.py -y # auto-inject without confirmation
@@ -973,7 +977,7 @@ Lines starting with `[v]` are already done and skipped. Lines starting with `#`
973
977
  | `/script apply [file] [key=value ...]` | Run steps one by one (Y/n/q per step) |
974
978
  | `/script apply -y [file] [key=value ...]` | Run all pending steps automatically |
975
979
 
976
- **`/script create ctx`** captures all work commands typed this session (`/read`, `/edit`, `/fix`, `/patch`, `/run`, `/save`, `/bkup`, `/map`, `/model`, `/host`) into a ready-to-run plan:
980
+ **`/script create ctx`** captures all work commands typed this session (`/read`, `/edit`, `/fim`, `/fix`, `/patch`, `/run`, `/save`, `/bkup`, `/map`, `/model`, `/host`) into a ready-to-run plan:
977
981
 
978
982
  ```
979
983
  > /host http://192.168.1.50:11434
@@ -1064,12 +1068,14 @@ Any `{{key}}` found but not yet set is registered as NaN — `/script reapply` w
1064
1068
 
1065
1069
  ---
1066
1070
 
1067
- ### Output capture (`->`, `$` and `~`)
1071
+ ### Output capture (`->`, `$`, `~` and `@`)
1068
1072
 
1069
- Any command — LLM reply, tool output, or proc result — can be captured into a session variable using the `->` suffix. Two special tokens expand anywhere in a command or message:
1073
+ Any command — LLM reply, tool output, or proc result — can be captured into a session variable using the `->` suffix. Three special tokens expand anywhere in a command or message:
1070
1074
 
1071
1075
  - `$` — last captured output (last AI reply or tool result)
1072
1076
  - `~` — last user input (last message or command you typed)
1077
+ - `@[dir]` — file picker: shows a numbered tree rooted at `dir` (default: `.`); type a number to select a file; the token is replaced by the chosen path
1078
+ - `@/[suffix]` — directory picker: shows a numbered tree of directories; type a number; `@/suffix` is replaced by `chosen_dir/suffix`; multiple `@/suffix` tokens in one command share a single pick
1073
1079
 
1074
1080
  ```
1075
1081
  /map keyword extract auth.py -> keywords # capture tool output into variable
@@ -1094,6 +1100,23 @@ summarize this for me -> myplan # capture LLM reply
1094
1100
  поясни: $ # ask main model to explain its own reply
1095
1101
  ```
1096
1102
 
1103
+ **`@` — file picker (numbered tree):**
1104
+ ```
1105
+ /readln @ # pick any file from current directory
1106
+ /readln @src # pick from src/ subtree
1107
+ /fim @src fix the null check # pick file, then run /fim on it
1108
+ ```
1109
+ Type `@` (optionally followed by a path, no space), press Enter — a numbered tree appears; type the number to substitute the path.
1110
+
1111
+ **`@/` — directory picker:**
1112
+ ```
1113
+ /save @/result.txt code # pick a directory, save to chosen_dir/result.txt
1114
+ /save @/result1.txt @/result2.txt code # pick once, both tokens get the same prefix
1115
+ ```
1116
+ Type `@/suffix` — a numbered tree of directories appears; pick one; every `@/suffix` in the command is replaced by `chosen_dir/suffix`. Use this when you want to save output into a deeply nested directory without typing the full path.
1117
+
1118
+ `@` and `@/` work wherever `$` and `~` work: in any command or message.
1119
+
1097
1120
  `->` stores the full text (including ANSI-stripped terminal output) and also updates `$` for immediate reuse. Variables captured with `->` appear in `/var get` like any other session variable.
1098
1121
 
1099
1122
  ---
@@ -1347,7 +1370,7 @@ Use `list:` when you want to explore a single question from multiple angles simu
1347
1370
  | `ctx: last` | Last message only (default) |
1348
1371
  | `ctx: none` | No context — prompt only |
1349
1372
 
1350
- **`$` and `~` expansion** — `$` expands to the last AI reply, `~` to your last input:
1373
+ **`$`, `~` and `@` expansion** — `$` expands to the last AI reply, `~` to your last input, `@` opens a file picker:
1351
1374
 
1352
1375
  ```
1353
1376
  /parallel $ profile: short # ask short model to summarise last reply
@@ -1790,7 +1813,7 @@ For human input, the corrected command is shown with `[fix?]` and you are asked
1790
1813
 
1791
1814
  ## Part of the SIMARGL toolkit
1792
1815
 
1793
- 1bcoder is one of four tools that together form an **intellectual development support system**:
1816
+ 1bcoder is one of five tools that together form an **intellectual development support system**:
1794
1817
 
1795
1818
  | Tool | Role |
1796
1819
  |---|---|
@@ -1798,16 +1821,18 @@ For human input, the corrected command is shown with `[fix?]` and you are asked
1798
1821
  | **[svitovyd](https://github.com/szholobetsky/svitovyd)** | Project map — scans any codebase and produces a structural map of definitions and cross-file dependencies; exposes it as an MCP server |
1799
1822
  | **[1bcoder](https://github.com/szholobetsky/1bcoder)** | AI coding assistant for small local models — surgical context management, agents, parallel inference, proc scripts |
1800
1823
  | **[yasna](https://github.com/szholobetsky/yasna)** | Session memory — indexes conversations from all AI agents so you can find what was discussed, when, and where |
1824
+ | **[radogast](https://github.com/szholobetsky/radogast)** | Context drift monitor — measures how far an AI agent's conversation has drifted from the original task |
1801
1825
 
1802
1826
  - **simargl** answers: *what code is related to this task?*
1803
1827
  - **svitovyd** answers: *how is the code structured and what depends on what?*
1804
1828
  - **1bcoder** answers: *how do I work with local models efficiently?*
1805
1829
  - **yasna** answers: *where did I already discuss this?*
1830
+ - **radogast** answers: *is the AI agent still on track toward the goal?*
1806
1831
 
1807
- Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, remember what was decided.
1832
+ Together they cover the full development loop: understand the codebase, find relevant history, work with AI locally, remember what was decided, and verify the context stays on target.
1808
1833
 
1809
1834
  ---
1810
1835
 
1811
- **(c) 2026 Stanislav Zholobetskyi**
1836
+ **(c) 2026 Stanislav Zholobetskyi, Oleh Andriichuk**
1812
1837
  Institute for Information Recording, National Academy of Sciences of Ukraine, Kyiv
1813
1838
  *PhD research: «Intelligent Technology for Software Development and Maintenance Support»*
@@ -10,6 +10,8 @@
10
10
  /scan = /agent scan {{args}}
11
11
  /compact = /agent compact {{args}}
12
12
  /websearch = /agent websearch {{args}}
13
+ /visual_search = /flow visual_search {{args}}
14
+ /deepagent = /flow deepagent {{args}}
13
15
  /webask = /flow webask {{args}}
14
16
  /simargl = /run simargl {{args}}
15
17
  /sim = /run simargl {{args}}