-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathrow-request.json
More file actions
1870 lines (1870 loc) · 199 KB
/
Copy pathrow-request.json
File metadata and controls
1870 lines (1870 loc) · 199 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"model": "gpt-5.5",
"store": false,
"stream": true,
"instructions": "You are an AI coding assistant, powered by GPT-5, operating in CodeboltAi. You pair program with users to solve coding tasks.\n\n## Communication\n\n- Always ensure **only relevant sections** (code snippets, tables, commands, or structured data) are formatted in valid Markdown with proper fencing\n- Avoid wrapping the entire message in a single code block\n- Use Markdown **only where semantically correct** (e.g., `inline code`, code fences, lists, tables)\n- ALWAYS use backticks to format file, directory, function, and class names\n- Use \\( and \\) for inline math, \\[ and \\] for block math\n- Optimize writing for clarity and skimmability\n- Ensure code snippets are properly formatted for markdown rendering\n- Do not add narration comments inside code\n- Refer to code changes as \"edits\" not \"patches\"\n- State assumptions and continue; don't stop for approval unless blocked\n\n## Status Updates\n\n**Definition**: A brief progress note (1-3 sentences) about what just happened, what you're about to do, blockers/risks if relevant.\n\n**Critical execution rule**: If you say you're about to do something, actually do it in the same turn (run the tool call right after).\n\n**Guidelines**:\n- Use correct tenses: \"I'll\" or \"Let me\" for future actions, past tense for past actions, present tense for current actions\n- Skip saying what just happened if there's no new information since your previous update\n- Check off completed TODOs before reporting progress\n- Before starting any new file or code edit, reconcile the todo list\n- If you decide to skip a task, explicitly state a one-line justification and mark the task as cancelled\n- Reference todo task names (not IDs); never reprint the full list\n- Don't mention updating the todo list\n- Use backticks when mentioning files, directories, functions, etc (e.g., `app/components/Card.tsx`)\n- Only pause if you truly cannot proceed without the user or a tool result\n- Don't add headings like \"Update:\"\n\n**Example**:\n> \"Let me search for where the load balancer is configured.\"\n> \"I found the load balancer configuration. Now I'll update the number of replicas to 3.\"\n> \"My edit introduced a linter error. Let me fix that.\"\n\n## Summary\n\nAt the end of your turn, provide a summary:\n\n- Summarize any changes at a high-level and their impact\n- If the user asked for info, summarize the answer but don't explain your search process\n- If the user asked a basic query, skip the summary entirely\n- Use concise bullet points for lists; short paragraphs if needed\n- Use markdown if you need headings\n- Don't repeat the plan\n- Include short code fences only when essential; never fence the entire message\n- Use backticks when mentioning files, directories, functions, etc\n- Keep the summary short, non-repetitive, and high-signal\n- The user can view full code changes in the editor, so only flag specific code changes that are very important\n- Don't add headings like \"Summary:\" or \"Update:\"\n\n## Completion\n\n**CRITICAL — You MUST verify your work before calling `attempt_completion`. Never mark a task as done without first confirming there are no errors.**\n\nWhen all goal tasks are done, follow this mandatory sequence:\n\n### Step 1: Detect the project stack\n- Look at the project files to identify the language/framework (e.g., `package.json` → Node/JS/TS, `requirements.txt`/`pyproject.toml` → Python, `go.mod` → Go, `Cargo.toml` → Rust, `pom.xml`/`build.gradle` → Java, etc.)\n\n### Step 2: Run verification checks (use the terminal)\nRun **all applicable** checks for the detected stack. Skip a check only if the project has no config for it:\n\n- **Build**: Run the project's build command (e.g., `npm run build`, `go build ./...`, `cargo build`, `mvn compile`, `python -m py_compile`)\n- **Type check**: Run the type checker if the project uses one (e.g., `npx tsc --noEmit`, `mypy .`, `pyright`)\n- **Lint**: Run the linter if configured (e.g., `npm run lint`, `flake8`, `golangci-lint run`, `cargo clippy`)\n- **Test**: Run the test suite if tests exist (e.g., `npm test`, `pytest`, `go test ./...`, `cargo test`)\n\n### Step 3: Fix any errors\n- If ANY check fails, **fix the errors** and re-run the failing check until it passes\n- Do NOT call `attempt_completion` while any check is still failing\n- Repeat Steps 2-3 until all checks pass\n\n### Step 4: Complete\n1. Confirm that all tasks are checked off in the todo list\n2. Reconcile and close the todo list\n3. Give your summary per the summary spec\n4. **Only now** call `attempt_completion`\n\n## Workflow\n\n1. When a new goal is detected: if needed, run a brief discovery pass (read-only code/context scan)\n2. For medium-to-large tasks, create a structured plan directly in the todo list. For simpler tasks or read-only tasks, skip the todo list and execute directly\n3. Before logical groups of tool calls, update any relevant todo items, then write a brief status update\n4. When all code tasks for the goal are done, **run the verification checks** (build → typecheck → lint → test) and fix any errors before proceeding\n5. Once all checks pass, reconcile and close the todo list, and give a brief summary\n6. **Enforce**: status_update at kickoff, before/after each tool batch, after each todo update, before edits/build/tests, after completion, and before yielding\n\n## Tool Calling\n\n- Use only provided tools; follow their schemas exactly\n- Parallelize tool calls: batch read-only context reads and independent edits instead of serial calls\n- Application events may appear as user messages wrapped in XML-like tags such as thread_completion_event, thread_failure_event, background_command_completion_event, background_command_failure_event, steering_message, or agent_event. Treat these as system-provided event notifications, not as user requests and not as prior assistant output.\n- When a background child thread completion event arrives, incorporate the completion result into your current task state and continue the workflow from there.\n- When a background child thread failure event arrives, surface the failure to the parent workflow and either retry, continue with remaining independent work, or stop with a clear error depending on the user's objective.\n- If you are orchestrating child threads in batches, after the current batch has completed, launch the next batch with the thread tools thread_create_start or thread_create_background. Do not use shell commands such as echo just to log, wait, or announce batch transitions.\n- Use `codebase_search` to search for code in the codebase\n- If actions are dependent or might conflict, sequence them; otherwise, run them in the same batch/turn.\n- Don't mention tool names to the user; describe actions naturally.\n- If task-local information is discoverable via tools, prefer that over asking the user.\n- Read multiple files as needed; don't guess.\n- Give a brief progress note before the first tool call each turn; add another before any new batch and before ending your turn.\n- Whenever you complete tasks, call todo_write to update the todo list before reporting progress.\n- There is no apply_patch CLI available in terminal. Use the appropriate tool for editing the code instead.\n- Gate before new edits: Before starting any new file or code edit, reconcile the TODO list via todo_write (merge=true): mark newly completed tasks as completed and set the next task to in_progress.\n- Cadence after steps: After each successful step (e.g., install, file created, endpoint added, migration run), immediately update the corresponding TODO item's status via todo_write.\n- Before processing todo items, you must start them in \"in_progress\" using the write_tool, and mark newly completed tasks as \"completed\" and set the next task to \"in_progress\".\n\n## Tool Discovery\n\n- Do not search for all tools at the start of a task.\n- Use tools already available in the current prompt first.\n- Search for additional tools only when the next concrete step requires a capability that is not already available.\n- Make each tool-discovery query narrow and step-scoped, such as the current file operation, browser action, deployment step, or external integration.\n- Prefer `get_available_tools_manifest` for deterministic category or exact-tool lookup; use `tool_search` only when semantic matching is needed.\n- After discovering and using a tool for the current step, continue the task and defer future tool discovery until a later step actually needs it.\n\n## Context Understanding\n\nSemantic search (`codebase_search`) is your MAIN exploration tool.\n\n**CRITICAL**:\n- Mark newly completed tasks as completed and set the next task to in_progress. `write_tool`\n- Start with a broad, high-level query that captures overall intent (e.g., \"authentication flow\" or \"error-handling policy\"), not low-level terms\n- Break multi-part questions into focused sub-queries\n- **MANDATORY**: Run multiple `codebase_search` searches with different wording; first-pass results often miss key details\n- Keep searching new areas until you're CONFIDENT nothing important remains\n- If you've performed an edit that may partially fulfill the query but you're not confident, gather more information before ending your turn\n- Bias towards not asking the user for help if you can find the answer yourself\n\n## Maximize Parallel Tool Calls\n\n**CRITICAL INSTRUCTION**: For maximum efficiency, invoke all relevant tools concurrently with `multi_tool_use.parallel` rather than sequentially. Prioritize calling tools in parallel whenever possible.\n\n**Examples**:\n- When reading 3 files, run 3 tool calls in parallel to read all 3 files at once\n- When running multiple read-only commands like `read_file`, `grep_search` or `codebase_search`, always run all commands in parallel\n- Limit to 3-5 tool calls at a time or they might time out\n\n**Cases that SHOULD use parallel tool calls**:\n- Searching for different patterns (imports, usage, definitions)\n- Multiple grep searches with different regex patterns\n- Reading multiple files or searching different directories\n- Combining `codebase_search` with grep for comprehensive results\n- Any information gathering where you know upfront what you're looking for\n\nBefore making tool calls, briefly consider what information is needed for the current step. Execute independent reads together, but do not broaden the search to future steps or unrelated capabilities.\n\n**DEFAULT TO PARALLEL**: Unless you have a specific reason why operations MUST be sequential (output of A required for input of B), always execute multiple tools simultaneously. Parallel tool execution can be 3-5x faster than sequential calls.\n\n## Searching Code\n\n- **ALWAYS prefer** using `codebase_search` over grep for searching for code because it is much faster for efficient codebase exploration\n- Use grep to search for exact strings, symbols, or other patterns\n\n## Making Code Changes\n\nWhen making code changes, **NEVER output code to the USER**, unless requested. Instead use one of the code edit tools to implement the change.\n\n**EXTREMELY important** that your generated code can be run immediately:\n\n- Add all necessary import statements, dependencies, and endpoints required to run the code\n- If creating the codebase from scratch, create an appropriate dependency management file (e.g., `requirements.txt`) with package versions and a helpful README\n- If building a web app from scratch, give it a beautiful and modern UI, imbued with best UX practices\n- **NEVER generate** an extremely long hash or any non-textual code, such as binary\n\n- Every time you write code, follow the code style guidelines\n\n## Code Style\n\n**IMPORTANT**: The code you write will be reviewed by humans; optimize for clarity and readability. Write **HIGH-VERBOSITY code**, even if you have been asked to communicate concisely with the user.\n\n### Naming\n\n- Avoid short variable/symbol names. Never use 1-2 character names\n- Functions should be verbs/verb-phrases, variables should be nouns/noun-phrases\n- Use meaningful variable names as described in Martin's \"Clean Code\":\n - Descriptive enough that comments are generally not needed\n - Prefer full words over abbreviations\n - Use variables to capture the meaning of complex conditions or operations\n\n**Examples (Bad → Good)**:\n- `genYmdStr` → `generateDateString`\n- `n` → `numSuccessfulRequests`\n- `[key, value] of map` → `[userId, user] of userIdToUser`\n- `resMs` → `fetchUserDataResponseMs`\n\n### Static Typed Languages\n\n- Explicitly annotate function signatures and exported/public APIs\n- Don't annotate trivially inferred variables\n- Avoid unsafe typecasts or types like `any`\n\n### Control Flow\n\n- Use guard clauses/early returns\n- Handle error and edge cases first\n- Avoid unnecessary try/catch blocks\n- **NEVER catch errors** without meaningful handling\n- Avoid deep nesting beyond 2-3 levels\n\n### Comments\n\n- Do not add comments for trivial or obvious code. Where needed, keep them concise\n- Add comments for complex or hard-to-understand code; explain \"why\" not \"how\"\n- Never use inline comments. Comment above code lines or use language-specific docstrings for functions\n- Avoid TODO comments. Implement instead\n\n### Formatting\n\n- Match existing code style and formatting\n- Prefer multi-line over one-liners/complex ternaries\n- Wrap long lines\n- Don't reformat unrelated code\n\n\n\n## Non-Compliance\n\n- If you fail to call `todo_write` to check off tasks before claiming them done, self-correct in the next turn immediately\n- If you used tools without a status update, or failed to update todos correctly, self-correct next turn before proceeding\n- **CRITICAL**: If you call `attempt_completion` without having run and passed the verification checks (build, typecheck, lint, test), you MUST self-correct immediately — run the checks, fix any failures, and only then call `attempt_completion` again\n- If you report code work as done without a successful test/build run, self-correct next turn by running and fixing first\n- If a turn contains any tool call, the message MUST include at least one micro-update near the top before those calls\n\n## Citing Code\n\nThere are two ways to display code to the user:\n\n### Method 1: Citing Code That Is In The Codebase\n\nUse this format:\n\n\\`\\`\\`filepath startLine-endLine\ncode content here\n\\`\\`\\`\n\nWhere `startLine` and `endLine` are line numbers and the filepath is the path to the file. All three must be provided, and do not add anything else (like a language tag).\n\n**Working example**:\n\n\\`\\`\\`src/components/Todo.tsx 1-3\nexport const Todo = () => {\n return <div>Todo</div>; // Implement this!\n};\n\\`\\`\\`\n\nThe code block should contain the code content from the file, although you are allowed to truncate the code, add your own edits, or add comments for readability. If you do truncate the code, include a comment to indicate that there is more code that is not shown.\n\n**YOU MUST SHOW AT LEAST 1 LINE OF CODE** or else the block will not render properly in the editor.\n\n### Method 2: Proposing New Code That Is Not In The Codebase\n\nUse fenced code blocks with language tags. Do not include anything other than the language tag.\n\n**Examples**:\n\n\\`\\`\\`python\nfor i in range(10):\n print(i)\n\\`\\`\\`\n\n\\`\\`\\`bash\nsudo apt update && sudo apt upgrade -y\n\\`\\`\\`\n\n### For Both Methods\n\n- Do not include line numbers\n- Do not add any leading indentation before \\`\\`\\` fences, even if it clashes with the indentation of the surrounding text\n\n## Inline Line Numbers\n\nCode chunks that you receive (via tool calls or from user) may include inline line numbers in the form \"Lxxx:LINE_CONTENT\", e.g., \"L123:LINE_CONTENT\". Treat the \"Lxxx:\" prefix as metadata and do NOT treat it as part of the actual code.\n\n## Markdown Spec\n\nSpecific markdown rules:\n\n- Users love it when you organize messages using `###` headings and `##` headings. Never use `#` headings as users find them overwhelming\n- Use bold markdown (`**text**`) to highlight critical information, such as the specific answer to a question, or a key insight\n- Bullet points (formatted with `- ` instead of `• `) should also have bold markdown as a pseudo-heading, especially if there are sub-bullets\n- Convert `- item: description` bullet point pairs to use bold markdown like: `- **item**: description`\n- When mentioning files, directories, classes, or functions by name, use backticks to format them (e.g., `app/components/Card.tsx`)\n- When mentioning URLs, do NOT paste bare URLs. Always use backticks or markdown links. Prefer markdown links when there's descriptive anchor text; otherwise wrap the URL in backticks (e.g., `https://example.com`)\n- If there is a mathematical expression that is unlikely to be copied and pasted in the code, use inline math (\\( and \\)) or block math (\\[ and \\]) to format it\n\n## TODO Spec\n\n**Purpose**: Use the `todo_write` tool to track and manage tasks.\n\n### Defining Tasks\n\n- Create atomic todo items (≤14 words, verb-led, clear outcome) using `todo_write` before starting work on an implementation task\n- Todo items should be high-level, meaningful, nontrivial tasks that would take a user at least 5 minutes to perform\n- They can be user-facing UI elements, added/updated/deleted logical elements, architectural updates, etc.\n- Changes across multiple files can be contained in one task\n- Don't cram multiple semantically different steps into one todo, but if there's a clear higher-level grouping then use that\n- Prefer fewer, larger todo items\n- Todo items should NOT include operational actions done in service of higher-level tasks\n- If the user asks you to plan but not implement, don't create a todo list until it's actually time to implement\n- If the user asks you to implement, do not output a separate text-based High-Level Plan. Just build and display the todo list\n\n### Todo Item Content\n\n- Should be simple, clear, and short, with just enough context that a user can quickly understand the task\n- Should be a verb and action-oriented, like \"Add LRUCache interface to types.ts\" or \"Create new widget on the landing page\"\n- **SHOULD NOT** include details like specific types, variable names, event names, etc., or making comprehensive lists of items or elements that will be updated, unless the user's goal is a large refactor that just involves making these changes\n- **IMPORTANT**: Always finish small talk responses with a codebolt-attempt_completion tool call do not proceed to the next turn\n\nAvailable capabilities:\nTool groups:\n- Action Block (3): Use CodeBolt Action Block tools.\n Tools: actionBlock_getDetail, actionBlock_list, actionBlock_start\n- Agent (6): Use CodeBolt Agent tools.\n Tools: agent_details, agent_find, agent_get_llm_roles, agent_list, agent_send_message, agent_start\n- Artifact (5): Use CodeBolt Artifact tools.\n Tools: artifact_create, artifact_delete, artifact_get, artifact_list, artifact_update\n- Async (2): Use CodeBolt Async tools.\n Tools: async_task_control, async_task_list\n- Autotesting (18): Use CodeBolt Autotesting tools.\n Tools: autotesting_add_case_to_suite, autotesting_create_case, autotesting_create_run, autotesting_create_suite, autotesting_delete_case, autotesting_delete_suite, autotesting_get_case, autotesting_get_run, autotesting_get_suite, autotesting_list_cases, autotesting_list_runs, autotesting_list_suites, +6 more\n- Background (4): Use CodeBolt Background tools.\n Tools: background_threads_add_running_agent, background_threads_check_completion, background_threads_get_running_count, background_threads_on_completion\n- Browser (33): Use CodeBolt Browser tools.\n Tools: browser_action, browser_click, browser_click_element, browser_close, browser_enter, browser_extract_content, browser_extract_text, browser_get_actionable_elements, browser_get_content, browser_get_current_state, browser_get_html, browser_get_info, +21 more\n- Calendar (8): Use CodeBolt Calendar tools.\n Tools: calendar_create_event, calendar_delete_event, calendar_get_event, calendar_get_status, calendar_get_upcoming, calendar_list_events, calendar_mark_complete, calendar_update_event\n- Canvas (9): Use CodeBolt Canvas tools.\n Tools: canvas_add_content, canvas_create, canvas_delete, canvas_get, canvas_get_content, canvas_link_artifact, canvas_list, canvas_readme, canvas_replace_content\n- Capability (7): Use CodeBolt Capability tools.\n Tools: capability_detail, capability_get_detail, capability_get_status, capability_list, capability_list_powers, capability_list_skills, capability_stop\n- Chat (7): Use CodeBolt Chat tools.\n Tools: chat_ask, chat_confirm, chat_get_history, chat_notify, chat_send, chat_stop_process, chat_wait_reply\n- Codebase (2): Use CodeBolt Codebase tools.\n Tools: codebase_search, codebase_search_mcp_tool\n- Codemap (7): Use CodeBolt Codemap tools.\n Tools: codemap_create, codemap_delete, codemap_get, codemap_list, codemap_save, codemap_set_status, codemap_update\n- Codeutils (4): Use CodeBolt Codeutils tools.\n Tools: codeutils_get_files_markdown, codeutils_get_matcher_list, codeutils_match_detail, codeutils_perform_match\n- Completion (1): Use CodeBolt Completion tools.\n Tools: attempt_completion\n- Computer (1): Use CodeBolt Computer tools.\n Tools: computer_use\n- Connector Management (5): Discover, install, configure, and inspect available cloud connectors.\n Tools: cloud_codebolt_connectors--get_connector_details, cloud_codebolt_connectors--list_available_connectors, cloud_codebolt_connectors--list_installed_connectors, cloud_codebolt_connectors--request_connector_install, cloud_codebolt_connectors--search_available_connectors\n- Context (16): Use CodeBolt Context tools.\n Tools: context_compaction_dry_run, context_compaction_get_config, context_compaction_get_step_specs, context_compaction_run, context_compaction_update_config, context_compaction_validate_config, context_evaluate_rules, context_get, context_get_required_variables, context_list_memory_types, context_rule_create, context_rule_delete, +4 more\n- Dbmemory (2): Use CodeBolt Dbmemory tools.\n Tools: dbmemory_add_knowledge, dbmemory_get_knowledge\n- Debug (2): Use CodeBolt Debug tools.\n Tools: debug_add_log, debug_open_browser\n- Deliberation (8): Use CodeBolt Deliberation tools.\n Tools: deliberation_create, deliberation_get, deliberation_get_winner, deliberation_list, deliberation_respond, deliberation_summary, deliberation_update, deliberation_vote\n- Docs (7): Use CodeBolt Docs tools.\n Tools: docs_cache_status, docs_download_latest, docs_get_module_dts, docs_get_module_spec, docs_get_spec, docs_manifest, docs_search\n- Environment (17): Use CodeBolt Environment tools.\n Tools: environment_computer_use, environment_create, environment_delete, environment_get, environment_get_local_providers, environment_get_runner_providers, environment_get_running_providers, environment_list, environment_merge_and_close, environment_restart, environment_send_message, environment_start, +5 more\n- Episodic (19): Use CodeBolt Episodic tools.\n Tools: episodic_append_event, episodic_archive_memory, episodic_create_memory, episodic_get_agents, episodic_get_event_types, episodic_get_memory, episodic_get_tags, episodic_list_memories, episodic_memory_append_event, episodic_memory_archive, episodic_memory_create, episodic_memory_get, +7 more\n- Eventlog (10): Use CodeBolt Eventlog tools.\n Tools: eventlog_append_event, eventlog_append_events, eventlog_create_instance, eventlog_delete_instance, eventlog_get_instance, eventlog_get_instance_stats, eventlog_get_stats, eventlog_list_instances, eventlog_query_events, eventlog_update_instance\n- Eventqueue (3): Use CodeBolt Eventqueue tools.\n Tools: eventqueue_get_pending, eventqueue_get_stats, eventqueue_wait_next\n- Execution (17): Use CodeBolt Execution tools.\n Tools: execution_plan_acquire_next_task, execution_plan_add_group, execution_plan_add_task, execution_plan_approve_gate, execution_plan_complete_task, execution_plan_create, execution_plan_delete, execution_plan_fail_task, execution_plan_get_all, execution_plan_get_detail, execution_plan_get_readiness, execution_plan_get_ready_tasks, +5 more\n- Execution Plan (17): Use CodeBolt Execution Plan tools.\n Tools: executionPlan_acquireNextTask, executionPlan_addGroup, executionPlan_addTask, executionPlan_approveGate, executionPlan_completeTask, executionPlan_create, executionPlan_delete, executionPlan_failTask, executionPlan_getAll, executionPlan_getDetail, executionPlan_getReadiness, executionPlan_getReadyTasks, +5 more\n- Feature (9): Use CodeBolt Feature tools.\n Tools: feature_plan_add_section, feature_plan_create, feature_plan_get, feature_plan_list, feature_plan_remove_section, feature_plan_reorder_sections, feature_plan_review, feature_plan_update, feature_plan_update_section\n- Feedback (7): Use CodeBolt Feedback tools.\n Tools: feedback_create, feedback_get, feedback_list, feedback_reply, feedback_respond, feedback_update_status, feedback_update_summary\n- File (15): Use CodeBolt File tools.\n Tools: edit, file_intent_cancel, file_intent_check_overlap, file_intent_complete, file_intent_create, file_intent_delete, file_intent_get, file_intent_get_blocked, file_intent_get_by_agent, file_intent_get_files_with_intents, file_intent_list, file_intent_update, +3 more\n- Flags (13): Use CodeBolt Flags tools.\n Tools: flags_add_available, flags_disable, flags_disable_thread, flags_enable, flags_enable_thread, flags_get_available, flags_get_effective, flags_get_enabled, flags_get_thread, flags_has, flags_remove_available, flags_set_enabled, +1 more\n- Fork (1): Use CodeBolt Fork tools.\n Tools: fork_context\n- Fs (13): Use CodeBolt Fs tools.\n Tools: fs_create_file, fs_create_folder, fs_delete_file, fs_delete_folder, fs_file_search, fs_grep_search, fs_list_code_definitions, fs_list_directory, fs_list_file, fs_read_file, fs_read_many_files, fs_search_files, +1 more\n- Generate Named Tag (1): Use CodeBolt Generate Named Tag tools.\n Tools: generateNamedTag\n- Git (11): Use CodeBolt Git tools.\n Tools: git_add, git_branch, git_checkout, git_clone, git_commit, git_diff, git_init, git_logs, git_pull, git_push, git_status\n- History (2): Use CodeBolt History tools.\n Tools: history_summarize, history_summarize_all\n- Job (13): Use CodeBolt Job tools.\n Tools: job_add_dependency, job_bid_add, job_create, job_delete, job_get, job_get_blocked, job_get_ready, job_group_create, job_list, job_lock, job_remove_dependency, job_unlock, +1 more\n- Kg (40): Use CodeBolt Kg tools.\n Tools: kg_add_edge, kg_add_edges, kg_add_memory_record, kg_add_memory_records, kg_create_instance, kg_create_instance_template, kg_create_view, kg_create_view_template, kg_delete_edge, kg_delete_instance, kg_delete_instance_template, kg_delete_memory_record, +28 more\n- Kv Store (3): Use CodeBolt Kv Store tools.\n Tools: kvStore_createInstance, kvStore_get, kvStore_set\n- Llm (6): Use CodeBolt Llm tools.\n Tools: llm_delete_role, llm_get_config, llm_get_configured_providers, llm_inference, llm_list_roles, llm_set_role\n- Mail (23): Use CodeBolt Mail tools.\n Tools: mail_acknowledge, mail_archive_thread, mail_check_conflicts, mail_create_thread, mail_fetch_inbox, mail_find_or_create_thread, mail_force_reserve_files, mail_get_agent, mail_get_message, mail_get_messages, mail_get_thread, mail_list_agents, +11 more\n- Mcp (4): Use CodeBolt Mcp tools.\n Tools: mcp_configure_server, mcp_execute_tool, mcp_get_tools, mcp_list_servers\n- Memory (12): Use CodeBolt Memory tools.\n Tools: memory_json_delete, memory_json_list, memory_json_save, memory_json_update, memory_markdown_delete, memory_markdown_list, memory_markdown_save, memory_markdown_update, memory_todo_delete, memory_todo_list, memory_todo_save, memory_todo_update\n- Memory Ingestion (2): Use CodeBolt Memory Ingestion tools.\n Tools: memoryIngestion_create, memoryIngestion_execute\n- Note (10): Use CodeBolt Note tools.\n Tools: note_add_comment, note_create, note_delete, note_delete_comment, note_get, note_link_artifact, note_list, note_list_comments, note_resolve_comment, note_update\n- Outputparsers (6): Use CodeBolt Outputparsers tools.\n Tools: outputparsers_parse_csv, outputparsers_parse_errors, outputparsers_parse_json, outputparsers_parse_text, outputparsers_parse_warnings, outputparsers_parse_xml\n- Persistent (9): Use CodeBolt Persistent tools.\n Tools: persistent_memory_create, persistent_memory_delete, persistent_memory_execute_retrieval, persistent_memory_get, persistent_memory_get_step_specs, persistent_memory_list, persistent_memory_retrieve, persistent_memory_update, persistent_memory_validate\n- Portfolio (14): Use CodeBolt Portfolio tools.\n Tools: portfolio_add_appreciation, portfolio_add_karma, portfolio_add_talent, portfolio_add_testimonial, portfolio_delete_testimonial, portfolio_endorse_talent, portfolio_get, portfolio_get_by_project, portfolio_get_conversations, portfolio_get_karma_history, portfolio_get_ranking, portfolio_get_talents, +2 more\n- Project (5): Use CodeBolt Project tools.\n Tools: project_get_editor_status, project_get_path, project_get_repo_map, project_get_settings, project_run\n- Rag (2): Use CodeBolt Rag tools.\n Tools: rag_add_file, rag_retrieve_knowledge\n- Review (8): Use CodeBolt Review tools.\n Tools: review_add_comment, review_approve, review_create, review_get, review_list, review_request_changes, review_submit, review_update\n- Review Merge Request (16): Use CodeBolt Review Merge Request tools.\n Tools: reviewMergeRequest_addLinkedJob, reviewMergeRequest_addReview, reviewMergeRequest_byAgent, reviewMergeRequest_bySwarm, reviewMergeRequest_checkConflict, reviewMergeRequest_create, reviewMergeRequest_delete, reviewMergeRequest_get, reviewMergeRequest_list, reviewMergeRequest_merge, reviewMergeRequest_pending, reviewMergeRequest_readyToMerge, +4 more\n- Roadmap (3): Use CodeBolt Roadmap tools.\n Tools: roadmap_createIdea, roadmap_createPhase, roadmap_get\n- Rule (7): Use CodeBolt Rule tools.\n Tools: rule_create, rule_delete, rule_evaluate, rule_get, rule_get_possible_variables, rule_list, rule_update\n- Search (2): Use CodeBolt Search tools.\n Tools: glob, grep\n- Send To Named Tag (1): Use CodeBolt Send To Named Tag tools.\n Tools: sendToNamedTag\n- Skill (1): Use CodeBolt Skill tools.\n Tools: skill_detail\n- State (5): Use CodeBolt State tools.\n Tools: state_add_agent, state_get_agent, state_get_app, state_get_project, state_update_project\n- Task (7): Use CodeBolt Task tools.\n Tools: task_assign, task_create, task_delete, task_execute, task_get, task_list, task_update\n- Terminal (7): Use CodeBolt Terminal tools.\n Tools: execute_command, terminal_get_command_status, terminal_list_commands, terminal_read_command_output, terminal_stop_command, terminal_tui, terminal_wait_command\n- Thread (19): Use CodeBolt Thread tools.\n Tools: thread_add_context, thread_create, thread_create_background, thread_create_start, thread_delete, thread_get, thread_get_context, thread_get_context_compacted, thread_get_context_summary, thread_get_messages, thread_get_raw_conversations, thread_list, +7 more\n- Todo (6): Use CodeBolt Todo tools.\n Tools: todo_add, todo_export, todo_import, todo_list, todo_list_incomplete, todo_update\n- Tokenizer (2): Use CodeBolt Tokenizer tools.\n Tools: tokenizer_add, tokenizer_get\n- Tool Search (2): Use CodeBolt Tool Search tools.\n Tools: get_available_tools_manifest, tool_search\n- Update (14): Use CodeBolt Update tools.\n Tools: update_request_add_comment, update_request_add_dispute, update_request_complete, update_request_create, update_request_delete, update_request_get, update_request_list, update_request_merge, update_request_resolve_dispute, update_request_start_work, update_request_submit, update_request_unwatch, +2 more\n- User (10): Use CodeBolt User tools.\n Tools: user_message_get_config, user_message_get_current, user_message_get_mentioned_files, user_message_get_text, user_utilities_get_current, user_utilities_get_current_file, user_utilities_get_mentioned_files, user_utilities_get_mentioned_mcps, user_utilities_get_selection, user_utilities_get_text\n- Utils (1): Use CodeBolt Utils tools.\n Tools: utils_edit_file_and_apply_diff\n- Vector (4): Use CodeBolt Vector tools.\n Tools: vector_add_item, vector_get, vector_query, vector_query_items\n- Web Fetch (1): Use CodeBolt Web Fetch tools.\n Tools: web_fetch\n- Web Search (2): Use CodeBolt Web Search tools.\n Tools: search_get_first_link, search_web\nResource groups:\n- Action Blocks: Discover and run reusable predefined workflows composed of coordinated actions.\n- Agents: Discover and start specialized agents to perform delegated tasks.\n- Capabilities: Discover and invoke reusable application or agent capabilities by type and identifier.\n- Skills: Load specialized instructions and workflows for a particular kind of task.",
"input": [
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "The user selected the following capabilities for this turn:\n- environment-thread-lifecycle (skill): skill context loaded\n\nSkill capabilities are auto-loaded as prompt context below. Talents and powers are not auto-started.\nUse the capability tool to inspect or invoke selected talents/powers only if the user request needs them.\n\n--- Selected skill capability: environment-thread-lifecycle ---\nBase directory for this skill: /Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt/.agents/skills/environment-thread-lifecycle\n\n# Environment Thread Lifecycle\n\nTreat a newly created environment as an isolated resource owned by the thread that requested its creation. The child must make changes only inside that environment, never in the parent's workspace. The owning parent must not finish until the child thread has stopped and the environment has been finalized with `environment_merge_and_close`.\n\n## Isolation invariant\n\n- Once a child is assigned a new environment, that environment is its only writable workspace. The child must not create, edit, move, delete, format, or generate files in the parent's workspace, even when parent paths are visible or writable through shared tooling.\n- Scope every mutating tool call, command, and working directory to the child environment. If the execution context cannot be confirmed as the child environment, do not perform the mutation; resolve the environment context first.\n- Tell the child explicitly in its task instructions that all writes must remain in its assigned environment and that it must not apply or copy its changes into the parent workspace.\n- Return results through the child-thread result and retain code changes through `environment_merge_and_close`. Filesystem visibility, a shared current working directory, or access to the parent repository does not authorize direct writes to the parent.\n- If work was accidentally written to the parent, stop child work and report the affected paths. Do not hide the boundary violation by copying, reverting, or deleting files unless the user explicitly authorizes that remediation.\n\n## Ownership invariant\n\n- A parent owns each environment created for one of its direct child threads.\n- Record the child thread ID and environment ID immediately after creation. Never rely on remembering or rediscovering them at cleanup time.\n- Ownership follows creation, not ancestry. If a child thread creates another environment for its own child, that child thread owns the nested environment. It must finalize the nested environment before reporting completion to its parent.\n- Reusing an existing environment does not transfer ownership. Do not merge or close a reused, shared, pre-existing, or user-supplied environment unless the user explicitly assigns that responsibility.\n\n## Start child work\n\nWhen the child needs a new environment, prefer one `thread_create_start` call with `remoteEnv: true` and an available `environmentProvider`. Do not call `environment_create` first for the same task. Use `environment_create` separately only when the user explicitly wants an environment prepared before any thread starts.\n\nAfter starting the thread:\n\n1. Capture the returned thread ID.\n2. Capture the created environment ID from the response. If it is not exposed directly, call `thread_get` and read the thread's environment metadata, such as `flowData.environment.id`.\n3. Add both IDs to the parent's owned-environment ledger before doing other work.\n4. Confirm the child is executing in the recorded environment before allowing it to make changes.\n\nIf the environment ID cannot be resolved, stop creating additional child environments and resolve the ownership record first.\n\n## Wait and finalize\n\nFor every owned environment:\n\n1. Wait for its child thread to reach a terminal state with `thread_wait_for_completion` or `async_task_control`. A bounded timeout means the child is still running; wait again or deliberately stop it before cleanup.\n2. Inspect the child result. Verify that its mutations were confined to the child environment, and perform any necessary follow-up while the environment remains open.\n3. Call `environment_merge_and_close` exactly once with the recorded environment ID.\n4. Require a successful response before removing the entry from the owned-environment ledger. Retain and report any returned review merge request ID.\n\n`environment_merge_and_close` creates a retained review merge request and closes the environment. Do not claim that its changes are already integrated into the parent branch unless the response or a separate merge operation explicitly confirms that.\n\nDo not manually reproduce, copy, or apply the child's changes in the parent workspace as a substitute for merge-and-close. Any later integration into the parent must use the explicit merge workflow and authorization applicable to that repository.\n\nFinalize owned environments even when child work fails, provided the environment may contain useful diagnostics or partial changes. Do not substitute `environment_delete`; deletion can discard the work that merge-and-close is meant to retain.\n\n## Failure handling\n\nIf merge-and-close fails:\n\n- Keep the environment in the owned ledger and treat it as open.\n- Preserve the environment ID and any returned review merge request ID.\n- Use read-only status/details to understand the failure and fix a clear recoverable cause.\n- Retry at most once automatically. Do not assume repeated merge-and-close calls are idempotent.\n- If it still fails, report the unresolved environment and error clearly. Do not report the parent task as fully complete.\n\nBefore the parent thread returns its final result, its owned-environment ledger must be empty. Summarize each finalized child with its thread ID, environment ID, and review merge request ID when available.\n\nCapability references:\n- {\"type\":\"skill-root\",\"path\":\"/Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt/.agents/skills/environment-thread-lifecycle\"}\n- {\"type\":\"skill-file\",\"path\":\"/Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt/.agents/skills/environment-thread-lifecycle/SKILL.md\"}\n\nThis is the CodeBolt AI Agent. Setting up context for our chat.\nToday's date is Tuesday, 1 September 2026 (formatted according to the user's locale).\nOperating system: undefined\nEffective project directory for this task: /Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt\n\nFiles in current directory: .DS_Store, .agentfs, .agents, .claude, .codebolt, .codebolt.log, .codeboltconfig.yaml, .codex-tmp, .devcontainer, .git, .github, .gitignore, .vscode, 2026-05-30-180936-local-command-caveatcaveat-the-messages-below.txt, 2026-07-09-194622-look-at-sdkscodeboltjs-and-sdksagent-and-d.txt, AGENT.md.bak, Analyzing Web Fetch Tool Architecture.md, Composer.html, LICENSE, aftercompact-raw-request.json ... and 57 more files\nAsync task policy: long-running commands and child threads are tracked as async tasks with execution_mode foreground_scoped, auto_scoped, background_scoped, or background_detached. Scoped tasks are owned by the current agent run and are stopped if the user force-stops the agent. Before completing, use async_task_list to inspect unresolved scoped work and async_task_control to wait, stop, or explicitly detach each running task. background_detached tasks survive user force-stop and natural completion, so detach only intentional background services such as dev servers.\n\nI'm currently working in the effective project directory: /Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt\nHere is the folder structure of the current working directories:\n\nShowing up to 200 items (files + folders). Folders or files indicated with ... contain more items not shown, were ignored, or the display limit (200 items) was reached.\n\n/Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt/\n├───.gitignore\n├───2026-05-30-180936-local-command-caveatcaveat-the-messages-below.txt\n├───2026-07-09-194622-look-at-sdkscodeboltjs-and-sdksagent-and-d.txt\n├───aftercompact-raw-request.json\n├───Analyzing Web Fetch Tool Architecture.md\n├───ascii-art (3).txt\n├───async-task-lifecycle-explainer.html\n├───automations-calendar-routing-review.html\n├───beforecompaction-raw-request.json\n├───cloud-connectors-review.html\n├───cloud-workers-review.html\n├───codebolt-ai-byok-encrypted-db-review.html\n├───codebolt-ai-inference-routing-review copy.html\n├───codebolt-ai-inference-routing-review.html\n├───codebolt-docs-mcp-review.html\n├───command-registry-pr-details.html\n├───Composer.html\n├───event-trigger-processing-review.html\n├───execution-plan-scheduler-review.html\n├───LICENSE\n├───llm-telemetry.ndjson\n├───logo.jpg\n├───mail-inbox-routing-summary.html\n├───mcp-changes-review.html\n├───multillm-missing-adapters-deduped.md\n├───namedTag.html\n├───openconnector-integration-tasks.md\n├───orchestrator-removal-thread-coordination-review.html\n├───package-lock.json\n├───package.json\n├───plan-tool-changes-summary.html\n├───plantool.md\n├───remote-sandbox-settings-flow.html\n├───remoteAgent.md\n├───routing-profile-virtual-worker-review.html\n├───sample.json\n├───sample.md\n├───session-ses_201c.md\n├───tasks.md\n├───thread.json\n├───tools-namespace-migration-review.html\n├───virtual-worker-environment-model-implementation-review.html\n├───virtual-worker-local-cloud-architecture.html\n├───virtual-worker-routing-architecture.html\n├───virtual-worker-routing-implementation-review.html\n├───.agentfs/...\n├───.agents/...\n├───.claude/...\n├───.codebolt/...\n├───.codex-tmp/...\n├───.devcontainer/...\n├───.git/...\n├───.github/...\n├───.vscode/...\n├───agentflow/\n│ ├───agent/\n│ └───shared-nodes/\n├───canvas/\n│ └───canvas_1784109117141_2qigmn.canvas\n├───cloud/\n│ ├───codebolt-docs-service/\n│ ├───codeboltCloudAgentWorker/\n│ ├───codeboltInferenceWorker/\n│ ├───codeboltPreviewProviders/\n│ ├───codeboltRuntimeProviders/\n│ ├───codeboltwranglerWsServer/\n│ ├───event-processor-worker/\n│ ├───event-source-worker/\n│ ├───log-ingest-worker/\n│ ├───openconnector/\n│ └───staticsitepreviewworker/\n├───docs/\n│ ├───agent-creator-agent-design.md\n│ ├───agent-creator-audit.md\n│ ├───agent-creator-implementation-summary.md\n│ ├───dynamic-tool-discovery-plan.md\n│ ├───final-project-sync-child-environment-model.html\n│ ├───final-project-sync-child-environment-model.md\n│ ├───multi-project-migration-ledger.md\n│ ├───multi-project-single-server-architecture.md\n│ ├───project-git-flow.html\n│ ├───project-identity-review.html\n│ ├───project-sync-resolve-architecture.html\n│ ├───remote-environments-architecture.html\n│ ├───omniroute-provider-references/\n│ └───runner-nodes/\n├───documents/\n│ ├───design language.md\n│ └───docs/\n├───lib/\n│ └───sqlite-wasm-vec/\n├───node_modules/...\n├───old/\n│ ├───application-data.md\n│ ├───data-storage-migration-plan.md\n│ ├───MigrateTools.md\n│ ├───MissingCliFeatures.md\n│ ├───scroll.md\n│ ├───server-data-storage-locations.md\n│ ├───aidocs/\n│ ├───codex-plugin/\n│ ├───conceptbank/\n│ ├───docs/\n│ ├───featuredocs/\n│ ├───Installation/\n│ ├───perfoptimizationneeds/\n│ ├───plasn/\n│ └───rules/\n├───packages/\n│ ├───ai-routing/\n│ ├───cli/\n│ ├───codeboltNarrative/\n│ ├───electron/\n│ ├───event-engine/\n│ ├───gotui/\n│ ├───gotuijspackage/\n│ ├───multillm/\n│ ├───narrativejspackage/\n│ ├───server/\n│ ├───types/\n│ ├───ui/\n│ ├───web/\n│ └───websearch/\n├───plugins/\n│ ├───cloud-plugin/\n│ ├───issue-runner-plugin/\n│ ├───remote-execution-plugin/\n│ ├───sample-tool-plugin/\n│ ├───slack-virtual-worker-plugin/\n│ └───virtual-worker-test-plugin/\n├───providers/\n│ ├───cloudprovider/\n│ └───local-filesystem-provider/\n├───scripts/\n│ ├───backup-arrow-yug-artifact-registry.ps1\n│ ├───chat-client.mjs\n│ ├───connect_r2.sql\n│ ├───export-codeboltjs-searchable-tools.mjs\n│ ├───publish-binaries.sh\n│ ├───release-cli.sh\n│ ├───release-codeboltjs.sh\n│ ├───release-pluginSdk.sh\n│ ├───release-types.sh\n│ ├───release-wrappers.sh\n│ ├───runduckdb.ms\n│ ├───sync-agentflow-runtime.mjs\n│ ├───sync-capability-executors.mjs\n│ └───test-ws.js\n├───sdks/\n│ ├───agent/\n│ ├───api-docs-index/\n│ ├───chat-widget/\n│ ├───clientsdk/\n│ ├───cloudsdk/\n│ ├───codeboltjs/\n│ ├───externalSdk/\n│ ├───gatewayProtocol/\n│ ├───pluginSdk/\n│ └───thirdpartyagents/\n├───standalone-sdk/\n│ ├───cloud-chat-contracts/\n│ ├───standalone-agent-core/\n│ └───standalone-ai/\n├───static-panel-preview/\n│ ├───index-variation-preview.png\n│ ├───index-variation-v10-preview.png\n│ ├───index-variation-v10.html\n│ ├───index-variation-v11.html\n│ ├───index-variation-v12-preview.png\n│ ├───index-variation-v12.html\n│ ├───index-variation-v13-preview.png\n│ ├───index-variation-v13.html\n│ ├───index-variation-v14.html\n│ ├───index-variation-v15-preview.png\n│ ├───index-variation-v15.html\n│ ├───index-variation-v16-preview.png\n│ ├───index-variation-v16.html\n│ ├───index-variation-v17-preview.png\n│ ├───index-variation-v17.html\n│ ├───index-variation-v18-preview.png\n│ ├───index-variation-v18.html\n│ ├───index-variation-v19-preview.png\n│ ├───index-variation-v19.html\n│ ├───index-variation-v2-preview.png\n│ ├───index-variation-v2.html\n│ ├───index-variation-v20-preview.png\n│ ├───index-variation-v20.html\n│ ├───index-variation-v21-preview.png\n│ ├───index-variation-v21.html\n│ ├───index-variation-v22-preview.png\n│ ├───index-variation-v22.html\n│ ├───index-variation-v23-preview.png\n│ ├───index-variation-v23.html\n│ ├───index-variation-v24.html\n│ ├───index-variation-v25-preview.png\n│ ├───index-variation-v25.html\n│ └───index-variation-v26-preview.png\n│ └───...\n├───testing-narrative/...\n├───tests/\n└───tmp/..."
}
]
},
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "Implement all missing OmniRoute providers in Codebolt MultiLLM.\n\n References\n\n* Missing providers: multillm-missing-adapters-deduped.md\n\n* OmniRoute source: /Users/ravirawat/Documents/codeboltai/OmniRoute\n\n Instructions\n\n1. Create an execution plan using the execution-plan tool.\n\n2. When adding tasks to the execution plan, you may use task groups for organization, but each provider must still be created as a separate individual task.\n\n * 1 provider = 1 task.\n\n * Never put multiple providers inside a single task.\n\n * A group may contain multiple provider tasks, but the providers must remain independently executable tasks.\n\n3. For each provider task:\n\n * Create one separate agentfs-provider environment.\n\n Start one new thread using the act agent**.\n\n Assign *only that provider** to the child agent.\n\n * The child agent must work exclusively inside its assigned environment.\n\n * Do not expose or provide the parent project path to the child agent.\n\n4. Execute a maximum of 3 provider tasks/threads in parallel.\n\n5. Each child agent must implement, register, and test only its assigned provider, following the existing Codebolt MultiLLM architecture and using OmniRoute as the reference implementation.\n\n6. When a child task is complete, use merge-and-close to create the merge request and close its environment.\n\n7. Verify that every provider in multillm-missing-adapters-deduped.md has its own task, environment, thread, implementation, registration, tests, and merge.\n\n8. Do not consider the overall task complete until all individual provider tasks are completed and merged.\n\nFollow /environment-thread-lifecycle throughout the process."
}
]
},
{
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "I’ll first inspect the missing-provider list and the exact orchestration tool schemas so I can create one execution-plan task per provider and then launch child work in compliant batches of three.I’ll first inspect the missing-provider list and the exact orchestration tool schemas so I can create one execution-plan task per provider and then launch child work in compliant batches of three."
}
]
},
{
"type": "function_call",
"call_id": "call_AxCAuZ8FBfOL4QPJUJbTKnDb",
"name": "read_file",
"arguments": "{\"absolute_path\":\"/Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt/multillm-missing-adapters-deduped.md\",\"explanation\":\"I’ll read the missing-provider list to enumerate one execution-plan task per provider.\"}"
},
{
"type": "function_call",
"call_id": "call_XDYVLQTTV1jXXvL5P1zlbXFR",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"executionPlan_create\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect the execution-plan creation schema before creating the required plan.\"}"
},
{
"type": "function_call",
"call_id": "call_ULD6d7yzKhSRcNDpwhve3k5L",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"thread_create_start\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect the child-thread startup schema to launch isolated provider work correctly.\"}"
},
{
"type": "function_call",
"call_id": "call_fe5MY8EATMVgcEbZz7z32YHl",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"environment_merge_and_close\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect the merge-and-close schema needed to finalize each child environment.\"}"
},
{
"type": "function_call_output",
"call_id": "call_AxCAuZ8FBfOL4QPJUJbTKnDb",
"output": "# Deduped missing multillm provider adapters\r\n\r\nGenerated: 2026-08-02 11:38:09 +05:30\r\n\r\nThis list excludes provider folders already present in `D:\\Codeboltapps\\CodeBolt\\packages\\multillm\\providers`.\r\n\r\nTotal missing unique provider IDs: 316\r\n\r\n- a2a (LiteLLM)\r\n- adapta-web (OmniRoute)\r\n- agentrouter (OmniRoute)\r\n- agnes (OmniRoute)\r\n- agy (OmniRoute)\r\n- ai21 (OmniRoute, LiteLLM)\r\n- aihorde (OmniRoute)\r\n- aiml (LiteLLM)\r\n- aimlapi (OmniRoute)\r\n- ainative (OmniRoute)\r\n- aiohttp-openai (LiteLLM)\r\n- aion (OmniRoute)\r\n- alibaba (BitRouter, OmniRoute)\r\n- alibaba_cn (BitRouter)\r\n- alibaba_coding_plan (BitRouter)\r\n- amazon-nova (LiteLLM)\r\n- ambient (BitRouter)\r\n- ant-ling (OmniRoute)\r\n- antigravity (OmniRoute)\r\n- api-airforce (OmniRoute)\r\n- apiserpent (LiteLLM)\r\n- atlascloud (BitRouter)\r\n- auggie (OmniRoute)\r\n- aws-bedrock (BitRouter)\r\n- aws-polly (LiteLLM)\r\n- azure (BitRouter, LiteLLM)\r\n- azure-ai (LiteLLM)\r\n- bai (OmniRoute)\r\n- baichuan (OmniRoute)\r\n- baidu (OmniRoute)\r\n- bailian-coding-plan (OmniRoute)\r\n- base-llm (LiteLLM)\r\n- baseten (OmniRoute, LiteLLM)\r\n- bazaarlink (OmniRoute)\r\n- bedrock-mantle (LiteLLM)\r\n- bitrouter (BitRouter)\r\n- black-forest-labs (LiteLLM)\r\n- blackbox (OmniRoute)\r\n- bluesminds (OmniRoute)\r\n- brave (LiteLLM)\r\n- byteplus (Manifest, BitRouter, OmniRoute)\r\n- bytez (OmniRoute, LiteLLM)\r\n- cerebras (Manifest, BitRouter, OmniRoute, LiteLLM)\r\n- charm-hyper (OmniRoute)\r\n- chatgpt (LiteLLM)\r\n- chatgpt-web (OmniRoute)\r\n- cheaperinference (OmniRoute)\r\n- chenzk (OmniRoute)\r\n- chipotle (OmniRoute)\r\n- chutes (BitRouter, OmniRoute)\r\n- clarifai (LiteLLM)\r\n- claude (OmniRoute)\r\n- claude-code (BitRouter)\r\n- cline (OmniRoute)\r\n- cline-pass (Manifest)\r\n- clinepass (OmniRoute)\r\n- cloudflare-ai (OmniRoute)\r\n- clova-studio (OmniRoute)\r\n- codebuddy-cn (OmniRoute)\r\n- codestral (OmniRoute, LiteLLM)\r\n- codex (OmniRoute)\r\n- cohere (OmniRoute, LiteLLM)\r\n- cometapi (LiteLLM)\r\n- command-code (OmniRoute)\r\n- commandcode (Manifest)\r\n- compactifai (LiteLLM)\r\n- copilot (Manifest)\r\n- copilot-m365-web (OmniRoute)\r\n- copilot-web (OmniRoute)\r\n- coze (OmniRoute)\r\n- crof (OmniRoute)\r\n- cursor (OmniRoute)\r\n- custom-httpx (LiteLLM)\r\n- dahl (OmniRoute)\r\n- dashscope (LiteLLM)\r\n- databricks (OmniRoute, LiteLLM)\r\n- dataforseo (LiteLLM)\r\n- datarobot (LiteLLM)\r\n- deepgram (LiteLLM)\r\n- deepinfra (OmniRoute, LiteLLM)\r\n- deprecated-providers (LiteLLM)\r\n- devin (OmniRoute)\r\n- devin-cli (OmniRoute)\r\n- dgrid (OmniRoute)\r\n- dify (OmniRoute)\r\n- digitalocean (OmniRoute)\r\n- dit (OmniRoute)\r\n- docker-model-runner (LiteLLM)\r\n- doubao (OmniRoute)\r\n- duckduckgo (LiteLLM)\r\n- duckduckgo-web (OmniRoute)\r\n- e2b (LiteLLM)\r\n- elevenlabs (LiteLLM)\r\n- empower (LiteLLM)\r\n- exa-ai (LiteLLM)\r\n- factory (OmniRoute)\r\n- fal-ai (LiteLLM)\r\n- fastcrw (LiteLLM)\r\n- featherless-ai (OmniRoute, LiteLLM)\r\n- felo-web (OmniRoute)\r\n- firecrawl (LiteLLM)\r\n- fireworks (Manifest, OmniRoute)\r\n- fireworks-ai (LiteLLM)\r\n- freeaiapikey (OmniRoute)\r\n- freemodel-dev (OmniRoute)\r\n- freepik (OmniRoute)\r\n- freetheai (OmniRoute)\r\n- friendliai (OmniRoute, LiteLLM)\r\n- g4f-gemini (OmniRoute)\r\n- g4f-groq (OmniRoute)\r\n- g4f-nvidia (OmniRoute)\r\n- g4f-ollama (OmniRoute)\r\n- g4f-pollinations (OmniRoute)\r\n- galadriel (OmniRoute, LiteLLM)\r\n- gdc (LiteLLM)\r\n- gemini-free (Manifest)\r\n- ghe-copilot (OmniRoute)\r\n- gigachat (OmniRoute, LiteLLM)\r\n- github (OmniRoute, LiteLLM)\r\n- github-copilot (BitRouter, LiteLLM)\r\n- gitlab-duo (OmniRoute)\r\n- gitlawb (OmniRoute)\r\n- glm (OmniRoute)\r\n- gmicloud (BitRouter)\r\n- google (BitRouter)\r\n- google-ai (BitRouter)\r\n- google-pse (LiteLLM)\r\n- gradient-ai (LiteLLM)\r\n- grok-cli (OmniRoute)\r\n- grok-web (OmniRoute)\r\n- hackclub (OmniRoute)\r\n- haiper (OmniRoute)\r\n- hcnsec (OmniRoute)\r\n- heroku (OmniRoute, LiteLLM)\r\n- hosted-vllm (LiteLLM)\r\n- huggingchat (OmniRoute)\r\n- hyperagent (OmniRoute)\r\n- hyperbolic (OmniRoute, LiteLLM)\r\n- ideogram (OmniRoute)\r\n- iflytek (OmniRoute)\r\n- inception (OmniRoute, LiteLLM)\r\n- inference-net (OmniRoute)\r\n- infinity (LiteLLM)\r\n- inner-ai (OmniRoute)\r\n- internlm (OmniRoute)\r\n- jina-ai (LiteLLM)\r\n- kenari (OmniRoute)\r\n- kie (OmniRoute)\r\n- kilo (Manifest)\r\n- kilo-gateway (OmniRoute)\r\n- kilocode (OmniRoute)\r\n- kimi (OmniRoute)\r\n- kiro (Manifest, OmniRoute)\r\n- lambda-ai (OmniRoute, LiteLLM)\r\n- langflow (LiteLLM)\r\n- langgraph (LiteLLM)\r\n- lemonade (LiteLLM)\r\n- leonardo (OmniRoute)\r\n- linkup (LiteLLM)\r\n- liquid (OmniRoute)\r\n- litellm-proxy (LiteLLM)\r\n- llamacpp (Manifest)\r\n- llamafile (LiteLLM)\r\n- llamagate (OmniRoute)\r\n- llm7 (OmniRoute)\r\n- lm-studio (LiteLLM)\r\n- lmarena (OmniRoute)\r\n- longcat (OmniRoute)\r\n- manus (LiteLLM)\r\n- maritalk (OmniRoute)\r\n- meta-llama (OmniRoute, LiteLLM)\r\n- milvus (LiteLLM)\r\n- mimocode (OmniRoute)\r\n- minimax (Manifest, BitRouter, OmniRoute, LiteLLM)\r\n- minimax_cn (BitRouter)\r\n- modal (OmniRoute)\r\n- modelscope (OmniRoute, LiteLLM)\r\n- monsterapi (OmniRoute)\r\n- moonshot (Manifest, OmniRoute, LiteLLM)\r\n- moonshotai (BitRouter)\r\n- moonshotai_coding_plan (BitRouter)\r\n- morph (OmniRoute, LiteLLM)\r\n- muse-spark-web (OmniRoute)\r\n- nanogpt (OmniRoute)\r\n- nara (OmniRoute)\r\n- navy (OmniRoute)\r\n- nebius (OmniRoute, LiteLLM)\r\n- nlp-cloud (LiteLLM)\r\n- nlpcloud (OmniRoute)\r\n- notion-web (OmniRoute)\r\n- nous (Manifest)\r\n- nous-research (OmniRoute)\r\n- novita (BitRouter, OmniRoute, LiteLLM)\r\n- nscale (OmniRoute, LiteLLM)\r\n- nube (OmniRoute)\r\n- nvidia (Manifest, OmniRoute)\r\n- nvidia-nim (LiteLLM)\r\n- nvidia-riva (LiteLLM)\r\n- oci (LiteLLM)\r\n- ollama-cloud (Manifest, OmniRoute)\r\n- oobabooga (LiteLLM)\r\n- openadapter (OmniRoute)\r\n- openai-codex (BitRouter)\r\n- openai-like (LiteLLM)\r\n- opencode (OmniRoute)\r\n- opencode-go (Manifest, BitRouter)\r\n- opencode-zen (Manifest, BitRouter)\r\n- opensandbox (LiteLLM)\r\n- openvecta (OmniRoute)\r\n- orcarouter (OmniRoute)\r\n- ovhcloud (OmniRoute, LiteLLM)\r\n- parallel-ai (LiteLLM)\r\n- pass-through (LiteLLM)\r\n- petals (LiteLLM)\r\n- pg-vector (LiteLLM)\r\n- phala (BitRouter)\r\n- pioneer (Manifest, OmniRoute)\r\n- plamo (OmniRoute)\r\n- poe (OmniRoute)\r\n- pollinations (OmniRoute)\r\n- predibase (OmniRoute, LiteLLM)\r\n- promptql (OmniRoute)\r\n- publicai (OmniRoute)\r\n- puter (OmniRoute)\r\n- qianfan (BitRouter, OmniRoute)\r\n- qianfan_cn (BitRouter)\r\n- qiniu (OmniRoute)\r\n- qoder (OmniRoute)\r\n- qwen (Manifest, OmniRoute)\r\n- qwen-cloud (OmniRoute)\r\n- qwen-cloud-token-plan (OmniRoute)\r\n- ragflow (LiteLLM)\r\n- recraft (LiteLLM)\r\n- redpill (BitRouter)\r\n- reducto (LiteLLM)\r\n- reka (OmniRoute)\r\n- requesty (OmniRoute)\r\n- routeway (OmniRoute)\r\n- runwayml (LiteLLM)\r\n- s3-vectors (LiteLLM)\r\n- sagemaker (LiteLLM)\r\n- sambanova (OmniRoute, LiteLLM)\r\n- sap (LiteLLM)\r\n- sarvam (OmniRoute)\r\n- scaleway (OmniRoute, LiteLLM)\r\n- sealion (OmniRoute)\r\n- searchapi (LiteLLM)\r\n- searxng (LiteLLM)\r\n- segmind (OmniRoute)\r\n- sensenova (OmniRoute)\r\n- serper (LiteLLM)\r\n- siliconflow (BitRouter, OmniRoute)\r\n- siliconflow_cn (BitRouter)\r\n- snowflake (OmniRoute, LiteLLM)\r\n- soniox (LiteLLM)\r\n- sparkdesk (OmniRoute)\r\n- stability (LiteLLM)\r\n- stability-ai (OmniRoute)\r\n- stepfun (BitRouter, OmniRoute)\r\n- stepfun_cn (BitRouter)\r\n- stepfun_step_plan (BitRouter)\r\n- stepfun_step_plan_cn (BitRouter)\r\n- sumopod (OmniRoute)\r\n- suno (OmniRoute)\r\n- supergrok (BitRouter)\r\n- synthetic (OmniRoute)\r\n- t3-web (OmniRoute)\r\n- tavily (LiteLLM)\r\n- tencent (BitRouter, OmniRoute, LiteLLM)\r\n- tencent_cn (BitRouter)\r\n- theoldllm (OmniRoute)\r\n- tinfoil (BitRouter)\r\n- tinyfish (LiteLLM)\r\n- together (OmniRoute)\r\n- together-ai (LiteLLM)\r\n- tokenrouter (OmniRoute)\r\n- topaz (LiteLLM)\r\n- trae (OmniRoute)\r\n- triton (LiteLLM)\r\n- typhoon (OmniRoute)\r\n- udio (OmniRoute)\r\n- uncloseai (OmniRoute)\r\n- upstage (OmniRoute)\r\n- v0 (LiteLLM)\r\n- v0-vercel (OmniRoute)\r\n- venice (OmniRoute)\r\n- veoaifree-web (OmniRoute)\r\n- vercel-ai-gateway (OmniRoute, LiteLLM)\r\n- vertex (BitRouter, OmniRoute)\r\n- vertex-ai (LiteLLM)\r\n- vllm (LiteLLM)\r\n- volcengine (OmniRoute, LiteLLM)\r\n- voyage (LiteLLM)\r\n- wafer (OmniRoute)\r\n- wandb (OmniRoute, LiteLLM)\r\n- watsonx (LiteLLM)\r\n- windsurf (OmniRoute)\r\n- writer (OmniRoute)\r\n- x5lab (OmniRoute)\r\n- xai (Manifest, BitRouter, OmniRoute, LiteLLM)\r\n- xai-oauth (OmniRoute)\r\n- xiaomi (Manifest, BitRouter)\r\n- xiaomi_token_plan (BitRouter)\r\n- xiaomi_token_plan_cn (BitRouter)\r\n- xiaomi_token_plan_eu (BitRouter)\r\n- xiaomi-mimo (OmniRoute)\r\n- xiaomi-mimo-token-plan (OmniRoute)\r\n- xinference (LiteLLM)\r\n- yi (OmniRoute)\r\n- you-com (LiteLLM)\r\n- yuanbao-web (OmniRoute)\r\n- zai_coding_plan (BitRouter)\r\n- zai-web (OmniRoute)\r\n- zed-hosted (OmniRoute)\r\n- zenmux (OmniRoute)\r\n- zenmux-free (OmniRoute)\r\n"
},
{
"type": "function_call_output",
"call_id": "call_XDYVLQTTV1jXXvL5P1zlbXFR",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"executionPlan_create\",\n \"description\": \"Create a new empty execution plan. After creating it, use executionPlan_addTask for ordinary top-level tasks that should run as a simple sequence. Use executionPlan_addGroup only when a section needs scheduler structure, such as parallel tracks, a bounded task pool, a manual approval gate, a barrier, a loop, a condition, or a wait condition.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Plan name\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Plan description\"\n },\n \"agentId\": {\n \"type\": \"string\",\n \"description\": \"Agent ID\"\n },\n \"agentName\": {\n \"type\": \"string\",\n \"description\": \"Agent name\"\n },\n \"status\": {\n \"type\": \"string\",\n \"description\": \"Plan status\"\n },\n \"planId\": {\n \"type\": \"string\",\n \"description\": \"Plan ID\"\n },\n \"explanation\": {\n \"type\": \"string\",\n \"description\": \"Explanation\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"executionPlan_create\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_ULD6d7yzKhSRcNDpwhve3k5L",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"thread_create_start\",\n \"description\": \"Creates and immediately starts a new thread for an agent task. Use this tool directly whenever the user wants an agent to perform a task in an environment. To reuse an existing environment, provide environment or environmentId. When a remote environment does not exist yet, set remoteEnv to true and provide environmentProvider so this tool creates it automatically before starting the thread. Do not call environment_create first for the same task. If this tool creates a remote environment for a child job, the parent agent owns its lifecycle and must call environment_merge_and_close with the environment ID after the child finishes.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"options\": {\n \"description\": \"Advanced thread creation and start options. Prefer the top-level task, selectedAgent, environment, and environmentId fields for common use.\",\n \"type\": \"object\"\n },\n \"task\": {\n \"description\": \"Task prompt to start the new thread with. This is sent as the thread userMessage.\",\n \"type\": \"string\"\n },\n \"userMessage\": {\n \"description\": \"Optional explicit user message to start the thread with. Defaults to task.\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Optional title of the new thread. Defaults to task.\",\n \"type\": \"string\"\n },\n \"description\": {\n \"description\": \"Optional description of the new thread. Defaults to task.\",\n \"type\": \"string\"\n },\n \"selectedAgent\": {\n \"description\": \"Optional selected agent id or selected agent object.\",\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\"\n }\n ]\n },\n \"agentId\": {\n \"description\": \"Optional agent id.\",\n \"type\": \"string\"\n },\n \"groupId\": {\n \"description\": \"Optional group ID for organizing threads.\",\n \"type\": \"string\"\n },\n \"isGrouped\": {\n \"description\": \"Whether the thread belongs to a group.\",\n \"type\": \"boolean\"\n },\n \"policyProfileId\": {\n \"description\": \"Explicit guardrail policy profile id for this thread.\",\n \"type\": \"string\"\n },\n \"policyProfileName\": {\n \"description\": \"Guardrail policy profile name to resolve for this thread, for example \\\"allow-all\\\".\",\n \"type\": \"string\"\n },\n \"environment\": {\n \"description\": \"Existing environment id or environment object to run the new thread in. When provided, the thread starts in that environment instead of creating a new one.\",\n \"anyOf\": [\n {\n \"type\": \"string\"\n },\n {\n \"type\": \"object\"\n }\n ]\n },\n \"environmentId\": {\n \"description\": \"Existing environment id to run the new thread in. Alias for environment.\",\n \"type\": \"string\"\n },\n \"remoteEnv\": {\n \"description\": \"If true, creates a remote environment and starts the agent there. If false/undefined, runs locally.\",\n \"type\": \"boolean\"\n },\n \"environmentProvider\": {\n \"description\": \"The environment provider to use when remoteEnv is true. Object with name, optional unique_id and providerId.\",\n \"type\": \"object\"\n },\n \"environmentName\": {\n \"description\": \"Optional custom name for the remote environment.\",\n \"type\": \"string\"\n },\n \"waitForCompletion\": {\n \"description\": \"If true, wait for the thread to complete before returning. Defaults to false.\",\n \"type\": \"boolean\"\n },\n \"execution_mode\": {\n \"description\": \"Unified task execution mode. Defaults to background_scoped. foreground_scoped and auto_scoped wait boundedly before converting to background_scoped; background_detached survives user force-stop.\",\n \"enum\": [\n \"foreground_scoped\",\n \"auto_scoped\",\n \"background_scoped\",\n \"background_detached\"\n ],\n \"type\": \"string\"\n },\n \"wait_ms\": {\n \"description\": \"Milliseconds to wait before returning. foreground_scoped/auto_scoped convert to background_scoped if still running.\",\n \"type\": \"number\"\n },\n \"llm\": {\n \"description\": \"Optional runtime LLM override for the started agent/thread. Use llm_get_configured_providers before choosing provider/model.\",\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n },\n \"roleOverrides\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"object\",\n \"properties\": {\n \"provider\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"provider\",\n \"model\"\n ]\n }\n }\n }\n },\n \"contextoverride_id\": {\n \"description\": \"Saved context id returned by thread_save_context to use as startup context for the new agent/thread.\",\n \"type\": \"string\"\n },\n \"explanation\": {\n \"description\": \"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"task\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"thread_create_start\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_fe5MY8EATMVgcEbZz7z32YHl",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"environment_merge_and_close\",\n \"description\": \"Creates a retained review merge request from a running environment, then closes the environment without merging the request.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"explanation\": {\n \"description\": \"One sentence explaining why the environment changes should be retained and the environment closed.\",\n \"type\": \"string\"\n },\n \"environmentId\": {\n \"description\": \"The ID of the running environment.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"environmentId\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"environment_merge_and_close\"\n }\n }\n }\n]"
},
{
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "I found 316 total missing adapters, but the request is specifically for OmniRoute-backed providers, so I’ll derive only entries tagged `OmniRoute`. I also need the execution-plan task/group schemas and an agent lookup for `act` before creating tasks and launching the first batch.I found 316 total missing adapters, but the request is specifically for OmniRoute-backed providers, so I’ll derive only entries tagged `OmniRoute`. I also need the execution-plan task/group schemas and an agent lookup for `act` before creating tasks and launching the first batch."
}
]
},
{
"type": "function_call",
"call_id": "call_58nk9oLdFButOQmf7M1G15KV",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"executionPlan_addGroup\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect the group schema to organize provider tasks without combining providers.\"}"
},
{
"type": "function_call",
"call_id": "call_vRxlLuYv6FOYcaQbZG59Hehj",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"executionPlan_addTask\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect the task schema to create exactly one execution-plan task per provider.\"}"
},
{
"type": "function_call",
"call_id": "call_w0prrrOsZ1nI6XW7pxX9Vi9a",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"agent_find\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect the agent lookup schema to resolve the requested act agent.\"}"
},
{
"type": "function_call",
"call_id": "call_XVk2h0NCvu5hUm4C3TAkSmNX",
"name": "execute_command",
"arguments": "{\"command\":\"python3 - <<'PY'\\nfrom pathlib import Path\\nproviders=[]\\nfor line in Path('multillm-missing-adapters-deduped.md').read_text().splitlines():\\n if line.startswith('- ') and 'OmniRoute' in line:\\n providers.append(line[2:].split(' (',1)[0])\\nprint(len(providers))\\nfor provider in providers:\\n print(provider)\\nPY\",\"execution_mode\":\"foreground_scoped\",\"wait_ms\":1000,\"explanation\":\"I’ll extract the OmniRoute-tagged providers so each can become an individual task.\"}"
},
{
"type": "function_call_output",
"call_id": "call_58nk9oLdFButOQmf7M1G15KV",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"executionPlan_addGroup\",\n \"description\": \"Add a scheduler group to an execution plan. Use this only when tasks need structure beyond the default top-level sequence: sequenceGroup for an explicit nested ordered section, parallelGroup for tracks that can run concurrently, taskPoolGroup for many similar tasks with maxConcurrency, barrierGroup for a synchronization point, manualGateGroup for approval-gated work, loopGroup for repeated work, ifGroup for conditional work, or waitUntilGroup for work blocked on checks/conditions. For one normal sequential step, use executionPlan_addTask instead. Nested group tasks should use { \\\"type\\\": \\\"task\\\", \\\"task\\\": { \\\"name\\\": \\\"...\\\", \\\"description\\\": \\\"...\\\" } }; the app hydrates those tasks and keeps them inside the group rather than duplicating them as top-level plan tasks. A shorthand tasks array is accepted and normalized into the correct group collection.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"planId\": {\n \"type\": \"string\",\n \"description\": \"Execution plan ID\"\n },\n \"group\": {\n \"type\": \"object\",\n \"description\": \"Scheduler container to add. Use groups for parallelism, bounded pools, explicit nested sequences, gates, barriers, loops, conditions, or waits. Use executionPlan_addTask without groupId for a normal top-level sequential task. New scheduler groups use items; legacy groups can still use groupItems, loopTasks, ifTasks, or waitTasks. You may also provide a tasks array as shorthand.\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"enum\": [\n \"sequenceGroup\",\n \"parallelGroup\",\n \"taskPoolGroup\",\n \"barrierGroup\",\n \"manualGateGroup\",\n \"loopGroup\",\n \"ifGroup\",\n \"waitUntilGroup\"\n ],\n \"description\": \"Group type\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Group name\"\n },\n \"groupId\": {\n \"type\": \"string\",\n \"description\": \"Optional stable group ID. Use this ID later as task.groupId to add tasks into the group.\"\n },\n \"groupItems\": {\n \"type\": \"object\",\n \"description\": \"parallelGroup tracks. Each track can run alongside other tracks, while items inside the same track remain ordered. Example: { \\\"frontend\\\": [{ \\\"type\\\": \\\"task\\\", \\\"task\\\": { \\\"name\\\": \\\"Build UI\\\" } }] }\",\n \"additionalProperties\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n }\n },\n \"items\": {\n \"type\": \"array\",\n \"description\": \"Child task/group list for sequenceGroup, taskPoolGroup, barrierGroup, manualGateGroup, or simple parallelGroup. Wrap nested tasks as { \\\"type\\\": \\\"task\\\", \\\"task\\\": { ... } }.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"maxConcurrency\": {\n \"type\": \"number\",\n \"description\": \"Maximum child tasks that can be active at once for parallelGroup or taskPoolGroup.\"\n },\n \"schedulingPolicy\": {\n \"type\": \"string\",\n \"enum\": [\n \"fifo\",\n \"priority\"\n ],\n \"description\": \"Optional scheduling policy for taskPoolGroup.\"\n },\n \"completionPolicy\": {\n \"type\": \"object\",\n \"description\": \"Optional barrier completion policy, e.g. { \\\"type\\\": \\\"all\\\" }, { \\\"type\\\": \\\"any\\\" }, or { \\\"type\\\": \\\"at_least\\\", \\\"count\\\": 2 }.\",\n \"additionalProperties\": true\n },\n \"loopTasks\": {\n \"type\": \"array\",\n \"description\": \"loopGroup child items. Each child is a task wrapper or nested group.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"ifTasks\": {\n \"type\": \"array\",\n \"description\": \"ifGroup child items. Each child is a task wrapper or nested group.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"waitSteps\": {\n \"type\": \"array\",\n \"description\": \"waitUntilGroup wait condition/checklist labels.\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"waitTasks\": {\n \"type\": \"array\",\n \"description\": \"waitUntilGroup child items. Each child is a task wrapper or nested group.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"tasks\": {\n \"type\": \"array\",\n \"description\": \"Optional shorthand child task/group list. For parallelGroup it is placed in trackName/groupTrackName or parallelTrack1; for loopGroup/ifGroup/waitUntilGroup it maps to loopTasks/ifTasks/waitTasks; for sequenceGroup/taskPoolGroup/barrierGroup/manualGateGroup it maps to items.\",\n \"items\": {\n \"type\": \"object\",\n \"additionalProperties\": true\n }\n },\n \"trackName\": {\n \"type\": \"string\",\n \"description\": \"Optional parallelGroup track name for tasks shorthand.\"\n },\n \"groupTrackName\": {\n \"type\": \"string\",\n \"description\": \"Alias for trackName.\"\n },\n \"condition\": {\n \"type\": \"string\",\n \"description\": \"Optional condition for ifGroup or waitUntilGroup.\"\n },\n \"iterationListId\": {\n \"type\": \"string\",\n \"description\": \"Optional loopGroup iteration list identifier.\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"additionalProperties\": true\n },\n \"explanation\": {\n \"type\": \"string\",\n \"description\": \"Explanation\"\n }\n },\n \"required\": [\n \"planId\",\n \"group\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"executionPlan_addGroup\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_vRxlLuYv6FOYcaQbZG59Hehj",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"executionPlan_addTask\",\n \"description\": \"Add one normal task to an execution plan. Use this for default plan steps: top-level tasks are displayed and scheduled as a simple sequence. If task.groupId matches an existing group, the task is appended inside that group instead. Do not use this to create parallelism, task pools, gates, barriers, loops, conditions, or waits; create those containers with executionPlan_addGroup.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"planId\": {\n \"type\": \"string\",\n \"description\": \"Execution plan ID\"\n },\n \"task\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Task name\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Task description\"\n },\n \"priority\": {\n \"type\": \"string\",\n \"description\": \"Task priority\"\n },\n \"taskType\": {\n \"type\": \"string\",\n \"description\": \"Task type\"\n },\n \"status\": {\n \"type\": \"string\",\n \"description\": \"Task status\"\n },\n \"assignedTo\": {\n \"type\": \"string\",\n \"description\": \"Assigned to\"\n },\n \"groupId\": {\n \"type\": \"string\",\n \"description\": \"Optional existing execution plan group ID. Omit this for a normal top-level sequential task. When provided and it matches a group, the task is nested in that group instead of added top-level.\"\n },\n \"trackName\": {\n \"type\": \"string\",\n \"description\": \"Optional parallel group track name when adding into a parallelGroup. Defaults to parallelTrack1.\"\n },\n \"groupTrackName\": {\n \"type\": \"string\",\n \"description\": \"Alias for trackName.\"\n },\n \"parallelTrackName\": {\n \"type\": \"string\",\n \"description\": \"Alias for trackName.\"\n },\n \"estimatedTime\": {\n \"type\": \"number\",\n \"description\": \"Estimated time\"\n },\n \"dependencies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Dependencies\"\n }\n },\n \"required\": [\n \"name\"\n ]\n },\n \"explanation\": {\n \"type\": \"string\",\n \"description\": \"Explanation\"\n }\n },\n \"required\": [\n \"planId\",\n \"task\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"executionPlan_addTask\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_w0prrrOsZ1nI6XW7pxX9Vi9a",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"agent_find\",\n \"description\": \"Finds agents suitable for a given task.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"explanation\": {\n \"description\": \"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\n \"type\": \"string\"\n },\n \"task\": {\n \"description\": \"The task description to find agents for.\",\n \"type\": \"string\"\n },\n \"max_results\": {\n \"description\": \"Maximum number of results (default: 3).\",\n \"type\": \"number\"\n },\n \"outputType\": {\n \"type\": \"string\",\n \"enum\": [\n \"text\",\n \"resources\"\n ],\n \"description\": \"Output format. Use \\\"text\\\" for a readable response or \\\"resources\\\" to return tool_search_output with callable resources and runner tools.\"\n }\n },\n \"required\": [\n \"task\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"agent_find\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_XVk2h0NCvu5hUm4C3TAkSmNX",
"output": "Command executed: python3 - <<'PY'\nfrom pathlib import Path\nproviders=[]\nfor line in Path('multillm-missing-adapters-deduped.md').read_text().splitlines():\n if line.startswith('- ') and 'OmniRoute' in line:\n providers.append(line[2:].split(' (',1)[0])\nprint(len(providers))\nfor provider in providers:\n print(provider)\nPY\n\nOutput:\nCommand executed.\nOutput:\n195\nadapta-web\nagentrouter\nagnes\nagy\nai21\naihorde\naimlapi\nainative\naion\nalibaba\nant-ling\nantigravity\napi-airforce\nauggie\nbai\nbaichuan\nbaidu\nbailian-coding-plan\nbaseten\nbazaarlink\nblackbox\nbluesminds\nbyteplus\nbytez\ncerebras\ncharm-hyper\nchatgpt-web\ncheaperinference\nchenzk\nchipotle\nchutes\nclaude\ncline\nclinepass\ncloudflare-ai\nclova-studio\ncodebuddy-cn\ncodestral\ncodex\ncohere\ncommand-code\ncopilot-m365-web\ncopilot-web\ncoze\ncrof\ncursor\ndahl\ndatabricks\ndeepinfra\ndevin\ndevin-cli\ndgrid\ndify\ndigitalocean\ndit\ndoubao\nduckduckgo-web\nfactory\nfeatherless-ai\nfelo-web\nfireworks\nfreeaiapikey\nfreemodel-dev\nfreepik\nfreetheai\nfriendliai\ng4f-gemini\ng4f-groq\ng4f-nvidia\ng4f-ollama\ng4f-pollinations\ngaladriel\nghe-copilot\ngigachat\ngithub\ngitlab-duo\ngitlawb\nglm\ngrok-cli\ngrok-web\nhackclub\nhaiper\nhcnsec\nheroku\nhuggingchat\nhyperagent\nhyperbolic\nideogram\niflytek\ninception\ninference-net\ninner-ai\ninternlm\nkenari\nkie\nkilo-gateway\nkilocode\nkimi\nkirolambda-ai\nleonardo\nliquid\nllamagate\nllm7\nlmarena\nlongcat\nmaritalk\nmeta-llama\nmimocode\nminimax\nmodal\nmodelscope\nmonsterapi\nmoonshot\nmorph\nmuse-spark-web\nnanogpt\nnara\nnavy\nnebius\nnlpcloud\nnotion-web\nnous-research\nnovita\nnscale\nnube\nnvidia\nollama-cloud\nopenadapter\nopencode\nopenvecta\norcarouter\novhcloud\npioneer\nplamo\npoe\npollinations\npredibase\npromptql\npublicai\nputer\nqianfan\nqiniu\nqoder\nqwen\nqwen-cloud\nqwen-cloud-token-plan\nreka\nrequesty\nrouteway\nsambanova\nsarvam\nscaleway\nsealion\nsegmind\nsensenova\nsiliconflow\nsnowflake\nsparkdesk\nstability-ai\nstepfun\nsumopod\nsuno\nsynthetic\nt3-web\ntencent\ntheoldllm\ntogether\ntokenrouter\ntrae\ntyphoon\nudio\nuncloseai\nupstage\nv0-vercel\nvenice\nveoaifree-web\nvercel-ai-gateway\nvertex\nvolcengine\nwafer\nwandb\nwindsurf\nwriter\nx5lab\nxai\nxai-oauth\nxiaomi-mimo\nxiaomi-mimo-token-plan\nyi\nyuanbao-web\nzai-web\nzed-hosted\nzenmux\nzenmux-free"
},
{
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The extracted OmniRoute list appears to contain one formatting anomaly around `kiro` and `lambda-ai`, so I’ll validate that section and then load the callable execution-plan/thread tools if needed.The extracted OmniRoute list appears to contain one formatting anomaly around `kiro` and `lambda-ai`, so I’ll validate that section and then load the callable execution-plan/thread tools if needed."
}
]
},
{
"type": "function_call",
"call_id": "call_vjTVoc3aEZfay19n4MBhlYJk",
"name": "grep",
"arguments": "{\"path\":\"/Users/ravirawat/Documents/codeboltai/AiEditor/CodeBolt/multillm-missing-adapters-deduped.md\",\"pattern\":\"kiro|lambda-ai\",\"explanation\":\"I’ll verify whether the OmniRoute list has a line-break issue affecting provider task creation.\"}"
},
{
"type": "function_call",
"call_id": "call_FrURyRVGt2Z4UyaKfTvjqCwa",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"details\",\"pattern\":\"executionPlan_*\",\"outputType\":\"tool_search_output\",\"limit\":4,\"explanation\":\"I’ll load execution-plan tools so I can create the requested plan and provider tasks.\"}"
},
{
"type": "function_call",
"call_id": "call_jh8g52bD33WTIqDpcVC3BsH6",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"details\",\"pattern\":\"thread_*\",\"outputType\":\"tool_search_output\",\"limit\":4,\"explanation\":\"I’ll load thread lifecycle tools needed for child provider work orchestration.\"}"
},
{
"type": "function_call",
"call_id": "call_VmwAoHHmE6Kmykp14T9ix6l0",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"details\",\"pattern\":\"environment_*\",\"outputType\":\"tool_search_output\",\"limit\":4,\"explanation\":\"I’ll load environment lifecycle tools needed to merge and close child environments.\"}"
},
{
"type": "function_call_output",
"call_id": "call_vjTVoc3aEZfay19n4MBhlYJk",
"output": "No matches found for pattern: \"kiro|lambda-ai\""
},
{
"type": "function_call_output",
"call_id": "call_FrURyRVGt2Z4UyaKfTvjqCwa",
"output": "{\"searchResult\":{\"summary\":\"found 4 tools and 0 resources\",\"tools\":[{\"type\":\"function\",\"name\":\"executionPlan_acquireNextTask\",\"description\":\"Atomically lease one or more ready execution-plan tasks for an agent. This reserves work but does not execute it.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"planId\":{\"type\":\"string\",\"description\":\"Execution plan ID\"},\"explanation\":{\"type\":\"string\",\"description\":\"One sentence explanation for the user.\"},\"agentId\":{\"type\":\"string\",\"description\":\"Optional agent ID requesting work.\"},\"capabilities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional agent capabilities used to filter ready tasks.\"},\"maxTasks\":{\"type\":\"number\",\"description\":\"Maximum number of ready tasks to lease. Defaults to 1.\"},\"leaseDurationMs\":{\"type\":\"number\",\"description\":\"Lease duration in milliseconds.\"}},\"required\":[\"planId\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"executionPlan_acquireNextTask\"}}},{\"type\":\"function\",\"name\":\"executionPlan_addGroup\",\"description\":\"Add a scheduler group to an execution plan. Use this only when tasks need structure beyond the default top-level sequence: sequenceGroup for an explicit nested ordered section, parallelGroup for tracks that can run concurrently, taskPoolGroup for many similar tasks with maxConcurrency, barrierGroup for a synchronization point, manualGateGroup for approval-gated work, loopGroup for repeated work, ifGroup for conditional work, or waitUntilGroup for work blocked on checks/conditions. For one normal sequential step, use executionPlan_addTask instead. Nested group tasks should use { \\\"type\\\": \\\"task\\\", \\\"task\\\": { \\\"name\\\": \\\"...\\\", \\\"description\\\": \\\"...\\\" } }; the app hydrates those tasks and keeps them inside the group rather than duplicating them as top-level plan tasks. A shorthand tasks array is accepted and normalized into the correct group collection.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"planId\":{\"type\":\"string\",\"description\":\"Execution plan ID\"},\"group\":{\"type\":\"object\",\"description\":\"Scheduler container to add. Use groups for parallelism, bounded pools, explicit nested sequences, gates, barriers, loops, conditions, or waits. Use executionPlan_addTask without groupId for a normal top-level sequential task. New scheduler groups use items; legacy groups can still use groupItems, loopTasks, ifTasks, or waitTasks. You may also provide a tasks array as shorthand.\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"sequenceGroup\",\"parallelGroup\",\"taskPoolGroup\",\"barrierGroup\",\"manualGateGroup\",\"loopGroup\",\"ifGroup\",\"waitUntilGroup\"],\"description\":\"Group type\"},\"name\":{\"type\":\"string\",\"description\":\"Group name\"},\"groupId\":{\"type\":\"string\",\"description\":\"Optional stable group ID. Use this ID later as task.groupId to add tasks into the group.\"},\"groupItems\":{\"type\":\"object\",\"description\":\"parallelGroup tracks. Each track can run alongside other tracks, while items inside the same track remain ordered. Example: { \\\"frontend\\\": [{ \\\"type\\\": \\\"task\\\", \\\"task\\\": { \\\"name\\\": \\\"Build UI\\\" } }] }\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}}},\"items\":{\"type\":\"array\",\"description\":\"Child task/group list for sequenceGroup, taskPoolGroup, barrierGroup, manualGateGroup, or simple parallelGroup. Wrap nested tasks as { \\\"type\\\": \\\"task\\\", \\\"task\\\": { ... } }.\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}},\"maxConcurrency\":{\"type\":\"number\",\"description\":\"Maximum child tasks that can be active at once for parallelGroup or taskPoolGroup.\"},\"schedulingPolicy\":{\"type\":\"string\",\"enum\":[\"fifo\",\"priority\"],\"description\":\"Optional scheduling policy for taskPoolGroup.\"},\"completionPolicy\":{\"type\":\"object\",\"description\":\"Optional barrier completion policy, e.g. { \\\"type\\\": \\\"all\\\" }, { \\\"type\\\": \\\"any\\\" }, or { \\\"type\\\": \\\"at_least\\\", \\\"count\\\": 2 }.\",\"additionalProperties\":true},\"loopTasks\":{\"type\":\"array\",\"description\":\"loopGroup child items. Each child is a task wrapper or nested group.\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}},\"ifTasks\":{\"type\":\"array\",\"description\":\"ifGroup child items. Each child is a task wrapper or nested group.\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}},\"waitSteps\":{\"type\":\"array\",\"description\":\"waitUntilGroup wait condition/checklist labels.\",\"items\":{\"type\":\"string\"}},\"waitTasks\":{\"type\":\"array\",\"description\":\"waitUntilGroup child items. Each child is a task wrapper or nested group.\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}},\"tasks\":{\"type\":\"array\",\"description\":\"Optional shorthand child task/group list. For parallelGroup it is placed in trackName/groupTrackName or parallelTrack1; for loopGroup/ifGroup/waitUntilGroup it maps to loopTasks/ifTasks/waitTasks; for sequenceGroup/taskPoolGroup/barrierGroup/manualGateGroup it maps to items.\",\"items\":{\"type\":\"object\",\"additionalProperties\":true}},\"trackName\":{\"type\":\"string\",\"description\":\"Optional parallelGroup track name for tasks shorthand.\"},\"groupTrackName\":{\"type\":\"string\",\"description\":\"Alias for trackName.\"},\"condition\":{\"type\":\"string\",\"description\":\"Optional condition for ifGroup or waitUntilGroup.\"},\"iterationListId\":{\"type\":\"string\",\"description\":\"Optional loopGroup iteration list identifier.\"}},\"required\":[\"type\"],\"additionalProperties\":true},\"explanation\":{\"type\":\"string\",\"description\":\"Explanation\"}},\"required\":[\"planId\",\"group\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"executionPlan_addGroup\"}}},{\"type\":\"function\",\"name\":\"executionPlan_addTask\",\"description\":\"Add one normal task to an execution plan. Use this for default plan steps: top-level tasks are displayed and scheduled as a simple sequence. If task.groupId matches an existing group, the task is appended inside that group instead. Do not use this to create parallelism, task pools, gates, barriers, loops, conditions, or waits; create those containers with executionPlan_addGroup.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"planId\":{\"type\":\"string\",\"description\":\"Execution plan ID\"},\"task\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Task name\"},\"description\":{\"type\":\"string\",\"description\":\"Task description\"},\"priority\":{\"type\":\"string\",\"description\":\"Task priority\"},\"taskType\":{\"type\":\"string\",\"description\":\"Task type\"},\"status\":{\"type\":\"string\",\"description\":\"Task status\"},\"assignedTo\":{\"type\":\"string\",\"description\":\"Assigned to\"},\"groupId\":{\"type\":\"string\",\"description\":\"Optional existing execution plan group ID. Omit this for a normal top-level sequential task. When provided and it matches a group, the task is nested in that group instead of added top-level.\"},\"trackName\":{\"type\":\"string\",\"description\":\"Optional parallel group track name when adding into a parallelGroup. Defaults to parallelTrack1.\"},\"groupTrackName\":{\"type\":\"string\",\"description\":\"Alias for trackName.\"},\"parallelTrackName\":{\"type\":\"string\",\"description\":\"Alias for trackName.\"},\"estimatedTime\":{\"type\":\"number\",\"description\":\"Estimated time\"},\"dependencies\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Dependencies\"}},\"required\":[\"name\"]},\"explanation\":{\"type\":\"string\",\"description\":\"Explanation\"}},\"required\":[\"planId\",\"task\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"executionPlan_addTask\"}}},{\"type\":\"function\",\"name\":\"executionPlan_approveGate\",\"description\":\"Approve a manualGateGroup so its child items can become ready.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"planId\":{\"type\":\"string\",\"description\":\"Execution plan ID\"},\"explanation\":{\"type\":\"string\",\"description\":\"One sentence explanation for the user.\"},\"groupId\":{\"type\":\"string\",\"description\":\"Manual gate group ID\"}},\"required\":[\"planId\",\"groupId\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"executionPlan_approveGate\"}}}],\"resources\":[]}}"
},
{
"type": "function_call_output",
"call_id": "call_jh8g52bD33WTIqDpcVC3BsH6",
"output": "{\"searchResult\":{\"summary\":\"found 4 tools and 0 resources\",\"tools\":[{\"type\":\"function\",\"name\":\"thread_add_context\",\"description\":\"Replaces the current context memory messages for a thread, preserving the previous context in history.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"threadId\":{\"type\":\"string\",\"description\":\"The thread ID.\"},\"title\":{\"type\":\"string\",\"description\":\"Optional context title.\"},\"messages\":{\"type\":\"array\",\"description\":\"Optional replacement context messages.\"},\"summary\":{\"type\":\"string\",\"description\":\"Optional stored context summary.\"},\"compactedContext\":{\"type\":\"object\",\"description\":\"Optional compacted context placeholder or data.\"},\"metadata\":{\"type\":\"object\",\"description\":\"Optional metadata for the context record.\"},\"explanation\":{\"description\":\"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\"type\":\"string\"}},\"required\":[\"threadId\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"thread_add_context\"}}},{\"type\":\"function\",\"name\":\"thread_create\",\"description\":\"Creates a new thread with the specified options.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"options\":{\"description\":\"Thread creation options object containing thread parameters.\",\"type\":\"object\"},\"explanation\":{\"description\":\"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\"type\":\"string\"}},\"required\":[\"options\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"thread_create\"}}},{\"type\":\"function\",\"name\":\"thread_create_background\",\"description\":\"Creates a thread in the background and resolves when the agent starts or fails.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"groupId\":{\"description\":\"Optional group ID for organizing threads.\",\"type\":\"string\"},\"title\":{\"description\":\"Title of the background thread.\",\"type\":\"string\"},\"task\":{\"description\":\"Task description related to the thread.\",\"type\":\"string\"},\"description\":{\"description\":\"Description of the thread.\",\"type\":\"string\"},\"userMessage\":{\"description\":\"The user message to start the thread with.\",\"type\":\"string\"},\"selectedAgent\":{\"description\":\"The selected agent id get it from <workerAgent> tag \",\"type\":\"string\"},\"isGrouped\":{\"description\":\"Whether the thread belongs to a group\",\"type\":\"boolean\"},\"policyProfileId\":{\"description\":\"Explicit guardrail policy profile id for this thread.\",\"type\":\"string\"},\"policyProfileName\":{\"description\":\"Guardrail policy profile name to resolve for this thread, for example \\\"allow-all\\\".\",\"type\":\"string\"},\"remoteEnv\":{\"description\":\"If true, creates a remote environment and starts the agent there. If false/undefined, runs locally.\",\"type\":\"boolean\"},\"environmentProvider\":{\"description\":\"The environment provider to use when remoteEnv is true. Object with name, optional unique_id and providerId.\",\"type\":\"object\"},\"environmentName\":{\"description\":\"Optional custom name for the remote environment.\",\"type\":\"string\"},\"execution_mode\":{\"description\":\"Unified task execution mode. Defaults to background_scoped. foreground_scoped and auto_scoped wait boundedly before converting to background_scoped; background_detached survives user force-stop.\",\"enum\":[\"foreground_scoped\",\"auto_scoped\",\"background_scoped\",\"background_detached\"],\"type\":\"string\"},\"wait_ms\":{\"description\":\"Milliseconds to wait before returning. foreground_scoped/auto_scoped convert to background_scoped if still running.\",\"type\":\"number\"},\"llm\":{\"description\":\"Optional runtime LLM override for the started agent/thread. Use llm_get_configured_providers before choosing provider/model.\",\"type\":\"object\",\"properties\":{\"provider\":{\"type\":\"string\"},\"model\":{\"type\":\"string\"},\"roleOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"provider\":{\"type\":\"string\"},\"model\":{\"type\":\"string\"}},\"required\":[\"provider\",\"model\"]}}}},\"contextoverride_id\":{\"description\":\"Saved context id returned by thread_save_context to use as startup context for the new agent/thread.\",\"type\":\"string\"},\"explanation\":{\"description\":\"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\"type\":\"string\"}},\"required\":[\"task\",\"selectedAgent\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"thread_create_background\"}}},{\"type\":\"function\",\"name\":\"thread_create_start\",\"description\":\"Creates and immediately starts a new thread for an agent task. Use this tool directly whenever the user wants an agent to perform a task in an environment. To reuse an existing environment, provide environment or environmentId. When a remote environment does not exist yet, set remoteEnv to true and provide environmentProvider so this tool creates it automatically before starting the thread. Do not call environment_create first for the same task. If this tool creates a remote environment for a child job, the parent agent owns its lifecycle and must call environment_merge_and_close with the environment ID after the child finishes.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"options\":{\"description\":\"Advanced thread creation and start options. Prefer the top-level task, selectedAgent, environment, and environmentId fields for common use.\",\"type\":\"object\"},\"task\":{\"description\":\"Task prompt to start the new thread with. This is sent as the thread userMessage.\",\"type\":\"string\"},\"userMessage\":{\"description\":\"Optional explicit user message to start the thread with. Defaults to task.\",\"type\":\"string\"},\"title\":{\"description\":\"Optional title of the new thread. Defaults to task.\",\"type\":\"string\"},\"description\":{\"description\":\"Optional description of the new thread. Defaults to task.\",\"type\":\"string\"},\"selectedAgent\":{\"description\":\"Optional selected agent id or selected agent object.\",\"anyOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"agentId\":{\"description\":\"Optional agent id.\",\"type\":\"string\"},\"groupId\":{\"description\":\"Optional group ID for organizing threads.\",\"type\":\"string\"},\"isGrouped\":{\"description\":\"Whether the thread belongs to a group.\",\"type\":\"boolean\"},\"policyProfileId\":{\"description\":\"Explicit guardrail policy profile id for this thread.\",\"type\":\"string\"},\"policyProfileName\":{\"description\":\"Guardrail policy profile name to resolve for this thread, for example \\\"allow-all\\\".\",\"type\":\"string\"},\"environment\":{\"description\":\"Existing environment id or environment object to run the new thread in. When provided, the thread starts in that environment instead of creating a new one.\",\"anyOf\":[{\"type\":\"string\"},{\"type\":\"object\"}]},\"environmentId\":{\"description\":\"Existing environment id to run the new thread in. Alias for environment.\",\"type\":\"string\"},\"remoteEnv\":{\"description\":\"If true, creates a remote environment and starts the agent there. If false/undefined, runs locally.\",\"type\":\"boolean\"},\"environmentProvider\":{\"description\":\"The environment provider to use when remoteEnv is true. Object with name, optional unique_id and providerId.\",\"type\":\"object\"},\"environmentName\":{\"description\":\"Optional custom name for the remote environment.\",\"type\":\"string\"},\"waitForCompletion\":{\"description\":\"If true, wait for the thread to complete before returning. Defaults to false.\",\"type\":\"boolean\"},\"execution_mode\":{\"description\":\"Unified task execution mode. Defaults to background_scoped. foreground_scoped and auto_scoped wait boundedly before converting to background_scoped; background_detached survives user force-stop.\",\"enum\":[\"foreground_scoped\",\"auto_scoped\",\"background_scoped\",\"background_detached\"],\"type\":\"string\"},\"wait_ms\":{\"description\":\"Milliseconds to wait before returning. foreground_scoped/auto_scoped convert to background_scoped if still running.\",\"type\":\"number\"},\"llm\":{\"description\":\"Optional runtime LLM override for the started agent/thread. Use llm_get_configured_providers before choosing provider/model.\",\"type\":\"object\",\"properties\":{\"provider\":{\"type\":\"string\"},\"model\":{\"type\":\"string\"},\"roleOverrides\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"object\",\"properties\":{\"provider\":{\"type\":\"string\"},\"model\":{\"type\":\"string\"}},\"required\":[\"provider\",\"model\"]}}}},\"contextoverride_id\":{\"description\":\"Saved context id returned by thread_save_context to use as startup context for the new agent/thread.\",\"type\":\"string\"},\"explanation\":{\"description\":\"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\"type\":\"string\"}},\"required\":[\"task\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"thread_create_start\"}}}],\"resources\":[]}}"
},
{
"type": "function_call_output",
"call_id": "call_VmwAoHHmE6Kmykp14T9ix6l0",
"output": "{\"searchResult\":{\"summary\":\"found 4 tools and 0 resources\",\"tools\":[{\"type\":\"function\",\"name\":\"environment_computer_use\",\"description\":\"Observe and control a remote environment desktop through its environment provider. Check capabilities before acting.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"environmentId\":{\"type\":\"string\",\"description\":\"Environment that will fulfill the computer-use request.\"},\"operation\":{\"type\":\"string\",\"enum\":[\"getStatus\",\"getCapabilities\",\"startSession\",\"endSession\",\"observe\",\"move\",\"click\",\"drag\",\"scroll\",\"typeText\",\"pressKeys\",\"readClipboard\",\"writeClipboard\",\"listApplications\",\"launchApplication\",\"terminateApplication\",\"listWindows\",\"focusWindow\",\"setWindowBounds\",\"setElementValue\",\"waitForState\"],\"description\":\"Computer-use operation to execute.\"},\"sessionId\":{\"type\":\"string\",\"description\":\"Stable session identifier. Reuse it across observations and actions.\"},\"target\":{\"type\":\"object\",\"description\":\"Optional desktop, window, or snapshot-scoped semantic element target.\",\"properties\":{\"kind\":{\"type\":\"string\",\"enum\":[\"desktop\",\"window\",\"element\"]},\"displayId\":{\"type\":\"string\"},\"applicationId\":{\"type\":\"string\"},\"processId\":{\"type\":\"number\"},\"windowId\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"snapshotId\":{\"type\":\"string\"},\"elementToken\":{\"type\":\"string\"}},\"required\":[\"kind\"],\"additionalProperties\":false},\"params\":{\"type\":\"object\",\"description\":\"Operation parameters such as point, from/to, text, keys, bounds, or conditions.\",\"additionalProperties\":true},\"explanation\":{\"type\":\"string\",\"description\":\"One sentence explanation of why computer use is needed.\"}},\"required\":[\"environmentId\",\"operation\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"environment_computer_use\"}}},{\"type\":\"function\",\"name\":\"environment_create\",\"description\":\"Creates an environment only, without starting an agent task or thread. Use this tool only when the user explicitly wants an environment prepared for later use. If the user wants an agent to perform a task in an environment, use thread_create_start directly instead; it can reuse an existing environment or create the required remote environment. Do not call environment_create before thread_create_start for the same task. When a parent agent creates an environment for a child job, the parent owns its lifecycle and must call environment_merge_and_close with the environment ID after the child finishes. The provider must be from the available local or runner providers list.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"explanation\":{\"description\":\"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\"type\":\"string\"},\"name\":{\"description\":\"The name of the environment to create.\",\"type\":\"string\"},\"description\":{\"description\":\"Optional description of the environment.\",\"type\":\"string\"},\"provider\":{\"description\":\"Provider configuration object. Must include at least a name or unique_id matching an available local or runner provider.\",\"type\":\"object\"},\"config\":{\"description\":\"Optional additional configuration.\",\"type\":\"object\"}},\"required\":[\"name\",\"provider\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"environment_create\"}}},{\"type\":\"function\",\"name\":\"environment_delete\",\"description\":\"Deletes an environment by ID.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"explanation\":{\"description\":\"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\"type\":\"string\"},\"environmentId\":{\"description\":\"The ID of the environment to delete.\",\"type\":\"string\"}},\"required\":[\"environmentId\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"environment_delete\"}}},{\"type\":\"function\",\"name\":\"environment_get\",\"description\":\"Gets an environment by its ID.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"explanation\":{\"description\":\"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\"type\":\"string\"},\"environmentId\":{\"description\":\"The ID of the environment to retrieve.\",\"type\":\"string\"}},\"required\":[\"environmentId\"],\"additionalProperties\":false},\"kind\":\"codeboltTool\",\"route\":{\"mode\":\"runner\",\"runner\":\"codebolt_tool_execute\",\"fixed\":{\"toolName\":\"environment_get\"}}}],\"resources\":[]}}"
},
{
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The tool catalog shows plan creation exists, but it isn’t exposed in my initial callable set, so I’ll try the discovered plan-creation action directly and resolve the `act` agent/provider details in parallel.The tool catalog shows plan creation exists, but it isn’t exposed in my initial callable set, so I’ll try the discovered plan-creation action directly and resolve the `act` agent/provider details in parallel.The tool catalog shows plan creation exists, but it isn’t exposed in my initial callable set, so I’ll try the discovered plan-creation action directly and resolve the `act` agent/provider details in parallel.The tool catalog shows plan creation exists, but it isn’t exposed in my initial callable set, so I’ll try the discovered plan-creation action directly and resolve the `act` agent/provider details in parallel."
}
]
},
{
"type": "function_call",
"call_id": "call_9RNBE6kQpuNQVIhcyDc71e4C",
"name": "executionPlan_addTask",
"arguments": "{\"planId\":\"omniroute-multillm-missing-providers-2026-09-01\",\"task\":{\"name\":\"Implement adapta-web provider\",\"description\":\"Implement, register, and test only the adapta-web OmniRoute provider in a dedicated child environment.\",\"taskType\":\"provider\",\"status\":\"pending\",\"assignedTo\":\"act\"},\"explanation\":\"I’ll verify whether the execution plan can be addressed by a stable plan ID before bulk task creation.\"}"
},
{
"type": "function_call",
"call_id": "call_cbCGz00sZvulR8MXlJdDMbR7",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"details\",\"pattern\":\"agent_find\",\"outputType\":\"tool_search_output\",\"limit\":1,\"explanation\":\"I’ll load the agent lookup action to resolve the requested act agent if direct naming is insufficient.\"}"
},
{
"type": "function_call",
"call_id": "call_PdeuY87Bx1TAgekNrbrS0YKn",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"details\",\"pattern\":\"environment_get_runner_providers\",\"outputType\":\"tool_search_output\",\"limit\":1,\"explanation\":\"I’ll load provider discovery so agentfs-provider can be passed accurately to child thread creation.\"}"
},
{
"type": "function_call_output",
"call_id": "call_9RNBE6kQpuNQVIhcyDc71e4C",
"output": "Failed to add task to execution plan: Execution plan with id omniroute-multillm-missing-providers-2026-09-01 not found"
},
{
"type": "function_call_output",
"call_id": "call_cbCGz00sZvulR8MXlJdDMbR7",
"output": "Skipping tool execution due to previous tool user rejection."
},
{
"type": "function_call_output",
"call_id": "call_PdeuY87Bx1TAgekNrbrS0YKn",
"output": "Skipping tool execution due to previous tool user rejection."
},
{
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The stable plan ID was rejected because the plan has not been created yet, and the plan-create action is discoverable but not currently callable in my static tool set. I’ll inspect whether the alternate execution namespace can be invoked and get the environment provider list schema.The stable plan ID was rejected because the plan has not been created yet, and the plan-create action is discoverable but not currently callable in my static tool set. I’ll inspect whether the alternate execution namespace can be invoked and get the environment provider list schema."
}
]
},
{
"type": "function_call",
"call_id": "call_lyNFGEWhOWqz9CyrZjV6W1jR",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"execution_plan_create\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect the alternate execution-plan creation tool name because the camelCase creator is not callable from my current set.\"}"
},
{
"type": "function_call",
"call_id": "call_Q8eTi6y3mjS1KVlO5M4W282M",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"environment_get_runner_providers\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect environment provider discovery to confirm the agentfs-provider identifier.\"}"
},
{
"type": "function_call",
"call_id": "call_mTSkjpwsfGHD0SpPbaUo0cL6",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"thread_get\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect thread details retrieval in case child creation does not directly expose environment IDs.\"}"
},
{
"type": "function_call",
"call_id": "call_WHKYOMMENNzXK421PztuixqD",
"name": "get_available_tools_manifest",
"arguments": "{\"mode\":\"get\",\"toolName\":\"thread_wait_for_completion\",\"outputType\":\"text\",\"explanation\":\"I’ll inspect child thread completion waiting needed before merge-and-close.\"}"
},
{
"type": "function_call_output",
"call_id": "call_lyNFGEWhOWqz9CyrZjV6W1jR",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"execution_plan_create\",\n \"description\": \"Create a new empty execution plan. After creating it, use executionPlan_addTask for ordinary top-level tasks that should run as a simple sequence. Use executionPlan_addGroup only when a section needs scheduler structure, such as parallel tracks, a bounded task pool, a manual approval gate, a barrier, a loop, a condition, or a wait condition.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\",\n \"description\": \"Plan name\"\n },\n \"description\": {\n \"type\": \"string\",\n \"description\": \"Plan description\"\n },\n \"agentId\": {\n \"type\": \"string\",\n \"description\": \"Agent ID\"\n },\n \"agentName\": {\n \"type\": \"string\",\n \"description\": \"Agent name\"\n },\n \"status\": {\n \"type\": \"string\",\n \"description\": \"Plan status\"\n },\n \"planId\": {\n \"type\": \"string\",\n \"description\": \"Plan ID\"\n },\n \"explanation\": {\n \"type\": \"string\",\n \"description\": \"Explanation\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"execution_plan_create\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_Q8eTi6y3mjS1KVlO5M4W282M",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"environment_get_runner_providers\",\n \"description\": \"Gets available runner environment providers.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"explanation\": {\n \"description\": \"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"environment_get_runner_providers\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_mTSkjpwsfGHD0SpPbaUo0cL6",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"thread_get\",\n \"description\": \"Retrieves detailed information about a specific thread.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"threadId\": {\n \"description\": \"The ID of the thread to retrieve.\",\n \"type\": \"string\"\n },\n \"explanation\": {\n \"description\": \"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"threadId\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"thread_get\"\n }\n }\n }\n]"
},
{
"type": "function_call_output",
"call_id": "call_WHKYOMMENNzXK421PztuixqD",
"output": "Returned 1 callable tool definition(s) and 0 resource(s).\n\nCallable tools:\n[\n {\n \"type\": \"function\",\n \"name\": \"thread_wait_for_completion\",\n \"description\": \"Compatibility wrapper that waits for a previously started thread through async_task_control. The wait is bounded.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"threadId\": {\n \"description\": \"Thread ID returned by thread_create_start or thread_create_background.\",\n \"type\": \"string\"\n },\n \"timeoutMs\": {\n \"description\": \"Maximum wait time in milliseconds. Defaults to the runtime bounded wait.\",\n \"type\": \"number\"\n },\n \"explanation\": {\n \"description\": \"One sentence explanation as to why this tool is being used, and how it contributes to the goal.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"threadId\"\n ],\n \"additionalProperties\": false\n },\n \"kind\": \"codeboltTool\",\n \"route\": {\n \"mode\": \"runner\",\n \"runner\": \"codebolt_tool_execute\",\n \"fixed\": {\n \"toolName\": \"thread_wait_for_completion\"\n }\n }\n }\n]"
}
],
"text": {
"verbosity": "medium"
},
"include": [
"reasoning.encrypted_content"
],
"tool_choice": "auto",
"parallel_tool_calls": true,
"tools": [
{
"type": "function",
"name": "attempt_completion",
"description": "Signals the completion of the task and returns the final result.",
"parameters": {
"type": "object",
"properties": {
"result": {
"type": "object",
"description": "The final result of the task. The structure of this object should match the format specified in the system prompt.",
"additionalProperties": true
},
"explanation": {
"type": "string",
"description": "Optional explanation of why the task is receiving this result."
}
},
"required": [
"result"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "cloud_codebolt_connectors--get_connector_details",
"description": "Get provider metadata, auth methods, connection status, and available actions for a connector service.",
"parameters": {
"type": "object",
"required": [
"service"
],
"properties": {
"service": {
"type": "string",
"description": "Connector service id, for example clickup, airtable, or github_app."
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "cloud_codebolt_connectors--list_available_connectors",
"description": "List connector providers available in the CodeBolt OpenConnector catalog, including auth methods and connection status for the current workspace.",
"parameters": {
"type": "object",
"properties": {
"search": {
"type": "string",
"description": "Optional case-insensitive provider search."
},
"category": {
"type": "string",
"description": "Optional category filter."
},
"connectedOnly": {
"type": "boolean",
"description": "Only return connected providers."
},
"limit": {
"type": "number",
"description": "Maximum providers to return."
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "cloud_codebolt_connectors--list_installed_connectors",
"description": "List connector providers that are connected and enabled for the current workspace.",
"parameters": {
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Maximum providers to return."
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "cloud_codebolt_connectors--request_connector_install",
"description": "Ask the user to configure a connector in the CodeBolt portal, then wait until they mark setup completed.",
"parameters": {
"type": "object",
"required": [
"service"
],
"properties": {
"service": {
"type": "string",
"description": "Connector service id."
},
"connectionName": {
"type": "string",
"description": "Connection name. Defaults to default."
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "cloud_codebolt_connectors--search_available_connectors",
"description": "Search connector providers that are not necessarily installed, so an agent can identify a needed connector and ask the user to connect it.",
"parameters": {
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Provider name, service id, category, or description search."
},
"limit": {
"type": "number",
"description": "Maximum providers to return."
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "edit",
"description": "Edits a file by replacing specified text with new text. The tool finds all occurrences of 'old_string' in the file and replaces them with 'new_string'. Use this for precise, targeted edits to existing files.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"absolute_path": {
"description": "The absolute path to the file to edit (e.g., '/home/user/project/file.txt').",
"type": "string"
},
"old_string": {
"description": "The exact text to find in the file. Must be unique enough to identify the correct location. Include surrounding context if needed for uniqueness.",
"type": "string"
},
"new_string": {
"description": "The text to replace old_string with. Can be empty to delete the old text.",
"type": "string"
},
"expected_occurrences": {
"description": "Optional: The expected number of times old_string appears. If specified and the actual count differs, the edit will fail. Use this to ensure you are editing exactly what you intend.",
"type": "number"
}
},
"required": [
"absolute_path",
"old_string",
"new_string"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "execute_command",
"description": "Execute a CLI command on the system. Use this when you need to perform system operations or run specific commands to accomplish any step in the user's task. You must tailor your command to the user's system and provide a clear explanation of what the command does. Prefer to execute complex CLI commands over creating executable scripts, as they are more flexible and easier to run. For any interactive command, always pass the --yes flag to automatically confirm prompts.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.Use correct tenses: I'll or Let me for future actions, past tense for past actions, present tense for current actions",
"type": "string"
},
"command": {
"type": "string",
"description": "The CLI command to execute. This should be valid for the current operating system. For multiline shell constructs, prefer `command_lines` so physical line breaks are preserved."
},
"command_lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Physical shell lines for a multiline command. Use this for heredocs, continued pipelines, quoted multiline scripts, and similar shell constructs."
},
"execution_mode": {
"type": "string",
"enum": [
"foreground_scoped",
"auto_scoped",
"background_scoped",
"background_detached"
],
"description": "How to manage the command. foreground_scoped waits inline up to a bounded timeout then converts to background_scoped. auto_scoped waits briefly then converts to background_scoped. background_scoped returns a task id quickly and is stopped on user force-stop. background_detached is for intentional services/dev servers that should survive."
},
"wait_ms": {
"type": "number",
"description": "Milliseconds to wait before returning. foreground_scoped/auto_scoped convert to background_scoped if still running; background modes use this as a startup output capture window."
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "get_available_tools_manifest",
"description": "Browse the CodeBolt tool catalogue deterministically. Use categories to discover namespaces, list with a category or pattern to narrow candidates, and get with an exact toolName to retrieve one callable schema. Avoid broad details calls because full schemas are context-heavy.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"mode": {
"description": "categories: compact category catalogue. list: tool names/descriptions only. get: callable schema for one exact tool. details: callable schemas for a narrow category or pattern only.",
"type": "string",
"enum": [
"categories",
"list",
"details",
"get"
]
},
"outputType": {
"description": "Optional output override. categories and list return text; details/get default to tool_search_output. Use text to inspect filtered schemas without injecting tools.",
"type": "string",
"enum": [
"text",
"tool_search_output"
]
},
"category": {
"description": "Optional exact category/namespace filter, for example \"mail\", \"browser\", \"project\", \"agent\", or \"inbox\".",
"type": "string"
},
"pattern": {
"description": "Optional wildcard or substring filter over tool names, display names, descriptions, and categories. Examples: \"file*\", \"*inbox*\", \"mail_*\".",
"type": "string"
},
"toolName": {
"description": "Exact tool name for mode \"get\", for example \"mail_fetch_inbox\".",
"type": "string"
},
"limit": {
"description": "Maximum number of categories/tools to return. Defaults: categories 50, list 20, details 5. Maximums: categories 100, list 50, details 10.",
"type": "number"
},
"includeDescriptions": {
"description": "Whether list mode includes one-line tool descriptions. Defaults to true.",
"type": "boolean"
},
"includeResources": {
"description": "Whether to include resource-like capabilities such as ActionBlocks, agents, and skills. Defaults to false; callable tools still include registered, plugin, local, and MCP tools.",
"type": "boolean"
},
"runtimeToolSetId": {
"description": "Optional runtime tool-set id. Defaults to all registered runtime tool sets.",
"type": "string"
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "glob",
"description": "Finds files matching a glob pattern. Use this to locate files by name pattern, extension, or path structure. Supports standard glob syntax like *, **, and {a,b} alternatives.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"pattern": {
"description": "The glob pattern to match files (e.g., '**/*.ts', 'src/**/*.{js,jsx}', '**/test/*.spec.ts').",
"type": "string"
},
"path": {
"description": "Optional: The directory to search in. If not specified, searches from the project root.",
"type": "string"
}
},
"required": [
"pattern"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "grep",
"description": "Searches for text patterns in files using grep-like functionality. Supports regex patterns and can filter by file types. Use this to find specific text, function definitions, imports, or any pattern across files.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"path": {
"description": "The absolute path to search within. Can be a file or directory.",
"type": "string"
},
"pattern": {
"description": "The text pattern or regex to search for.",
"type": "string"
},
"include": {
"description": "Glob pattern for files to include (e.g., '*.ts', '*.{js,jsx,ts,tsx}').",
"type": "string"
},
"exclude": {
"description": "Glob pattern for files/directories to exclude (e.g., 'node_modules/**').",
"type": "string"
},
"case_sensitive": {
"description": "Whether the search is case sensitive. Defaults to true.",
"type": "boolean"
}
},
"required": [
"path",
"pattern"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "read_file",
"description": "Reads and returns the content of a specified file. If the file is large, the content will be truncated. The tool's response will clearly indicate if truncation has occurred and will provide details on how to read more of the file using the 'offset' and 'limit' parameters. Handles text files and can read specific line ranges.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"absolute_path": {
"description": "The absolute path to the file to read (e.g., '/home/user/project/file.txt'). Relative paths are not supported. You must provide an absolute path.",
"type": "string"
},
"offset": {
"description": "Optional: For text files, the 0-based line number to start reading from. Requires 'limit' to be set. Use for paginating through large files.",
"type": "number"
},
"limit": {
"description": "Optional: For text files, maximum number of lines to read. Use with 'offset' to paginate through large files. If omitted, reads the entire file (if feasible, up to a default limit).",
"type": "number"
}
},
"required": [
"absolute_path"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "read_many_files",
"description": "Reads multiple files at once based on file paths, directory paths, or glob patterns. Efficiently retrieves content from multiple files in a single operation. Useful for reading related files, getting an overview of a directory's contents, or batch processing.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"paths": {
"description": "An array of file paths, directory paths, or glob patterns to read (e.g., ['/path/to/file.ts', '/path/to/dir', '**/*.json']).",
"type": "array",
"items": {
"type": "string"
}
},
"include": {
"description": "Optional glob patterns for files to include (e.g., ['*.ts', '*.tsx']).",
"type": "array",
"items": {
"type": "string"
}
},
"exclude": {
"description": "Optional glob patterns for files/directories to exclude (e.g., ['*.test.ts', 'node_modules']).",
"type": "array",
"items": {
"type": "string"
}
},
"recursive": {
"description": "Whether to search recursively through subdirectories. Defaults to true.",
"type": "boolean"
},
"use_default_excludes": {
"description": "Whether to use default exclusion patterns (node_modules, .git, etc.). Defaults to true.",
"type": "boolean"
},
"max_files": {
"description": "Maximum number of files to read. Useful for limiting output size.",
"type": "number"
},
"max_total_size": {
"description": "Maximum total size of content to read in bytes.",
"type": "number"
},
"include_metadata": {
"description": "Whether to include file metadata (size, etc.) in output.",
"type": "boolean"
}
},
"required": [
"paths"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "search_get_first_link",
"description": "Get first search result link",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query"
},
"explanation": {
"type": "string",
"description": "Explanation"
}
},
"required": [
"query"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "search_web",
"description": "Perform a web search",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query"
},
"provider": {
"type": "string",
"description": "Optional web search provider id"
},
"count": {
"type": "number",
"description": "Maximum number of results"
},
"explanation": {
"type": "string",
"description": "Explanation"
}
},
"required": [
"query"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "terminal_get_command_status",
"description": "Get durable status for a managed terminal command, including final exit state when available.",
"parameters": {
"type": "object",
"properties": {
"process_id": {
"type": "number",
"description": "Process ID returned by execute_command."
},
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
}
},
"required": [
"process_id"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "terminal_list_commands",
"description": "List currently running managed terminal commands.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
}
},
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "terminal_read_command_output",
"description": "Read captured output for a managed terminal command.",
"parameters": {
"type": "object",
"properties": {
"process_id": {
"type": "number",
"description": "Process ID returned by execute_command."
},
"lines": {
"type": "number",
"description": "Optional number of trailing lines to return."
},
"tail_bytes": {
"type": "number",
"description": "Optional number of trailing bytes to inspect."
},
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
}
},
"required": [
"process_id"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "terminal_stop_command",
"description": "Stop a managed terminal command by process ID.",
"parameters": {
"type": "object",
"properties": {
"process_id": {
"type": "number",
"description": "Process ID returned by execute_command."
},
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
}
},
"required": [
"process_id"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "terminal_tui",
"description": "Controls terminal user interfaces through a headless screen model. Supports run, attach, output, screen, type, write, press, resize, search, region, cursor, wait, wheel, sessions_list, sessions_switch, kill, and cleanup.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"action": {
"description": "TUI action name. Examples: run, attach, screen, type, press, wait, sessions_list, kill.",
"type": "string"
},
"params": {
"description": "Action-specific parameters. For run use command, args, cwd, env, visible, sessionId, terminalId, cols, rows.",
"type": "object"
}
},
"required": [
"action"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "terminal_wait_command",
"description": "Wait for a managed terminal command to finish, fail, or stop.",
"parameters": {
"type": "object",
"properties": {
"process_id": {
"type": "number",
"description": "Process ID returned by execute_command."
},
"timeout_ms": {
"type": "number",
"description": "Maximum time to wait in milliseconds."
},
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
}
},
"required": [
"process_id"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "tool_search",
"description": "Searches for available tools by name, description, or functionality using full-text search. Use this to discover which tools are available for a given task.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"description": "One sentence explanation as to why this tool is being used, and how it contributes to the goal.",
"type": "string"
},
"query": {
"description": "The search query to find relevant tools (e.g. \"create environment\", \"read file\", \"git commit\").",
"type": "string"
},
"limit": {
"description": "Maximum number of results to return (default: 10).",
"type": "number"
},
"kind": {
"description": "Filter results by exact tool action kind, not namespace: \"read\", \"edit\", \"delete\", \"execute\", \"search\", \"fetch\", \"other\". Use category for browser/git/context/etc.",
"type": "string"
},
"category": {
"description": "Filter results by exact tool namespace/category, such as \"browser\" for browser_* tools or \"git\" for git_* tools.",
"type": "string"
},
"searchScope": {
"description": "Search scope mode. Defaults to \"tools\". Use \"tools+resources\" to include ActionBlocks, agents, capabilities, and skills as resources, or use a narrower resource scope.",
"type": "string",
"enum": [
"tools",
"tools+resources",
"tools+actionBlock",
"tools+agent",
"tools+capability",
"tools+skill"
]
},
"runtimeToolSetId": {
"description": "Optional runtime tool-set id. Defaults to all registered runtime tool sets.",
"type": "string"
}
},
"required": [
"query"
],
"additionalProperties": false
},
"strict": false
},
{
"type": "function",
"name": "web_fetch",
"description": "Fetch a specific URL and return readable text content. Use this when the user provides a URL or after another tool gives you a source URL.",
"parameters": {
"type": "object",
"properties": {
"explanation": {
"type": "string",
"description": "One sentence explanation of why this URL is being fetched."
},
"url": {
"type": "string",
"description": "The http or https URL to fetch."
},
"prompt": {
"type": "string",
"description": "The prompt to run on the fetched content."
},
"summarize_by_llm": {
"type": "boolean",
"description": "Controls secondary LLM processing. Defaults to true when prompt is present; set false to return raw fetched content."
},
"max_chars": {
"type": "number",
"description": "Maximum number of content characters to return. Defaults to 100000."
},
"timeout_ms": {
"type": "number",