kader 0.1.6__py3-none-any.whl → 1.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kader
3
- Version: 0.1.6
3
+ Version: 1.1.0
4
4
  Summary: kader coding agent
5
5
  Requires-Python: >=3.11
6
+ Requires-Dist: aiofiles>=25.1.0
6
7
  Requires-Dist: faiss-cpu>=1.9.0
8
+ Requires-Dist: google-genai>=1.61.0
7
9
  Requires-Dist: jinja2>=3.1.6
8
10
  Requires-Dist: loguru>=0.7.3
9
11
  Requires-Dist: ollama>=0.6.1
@@ -32,6 +34,7 @@ Kader is an intelligent coding agent designed to assist with software developmen
32
34
  - 🔄 **ReAct Agent Framework** - Reasoning and Acting agent architecture
33
35
  - 🗂️ **File System Tools** - Read, write, search, and edit files
34
36
  - 🔍 **Planning Agent** - Task planning and execution capabilities
37
+ - 🤝 **Agent-As-Tool** - Spawn sub-agents for specific tasks with isolated memory
35
38
 
36
39
  ## Installation
37
40
 
@@ -177,6 +180,40 @@ Kader provides several agent types:
177
180
  - **PlanningAgent**: Agent that plans multi-step tasks
178
181
  - **BaseAgent**: Base agent class for creating custom agents
179
182
 
183
+ ### Agent-As-Tool (AgentTool)
184
+
185
+ The `AgentTool` allows you to wrap a `ReActAgent` as a callable tool, enabling agents to spawn sub-agents for specific tasks with isolated memory contexts.
186
+
187
+ ```python
188
+ from kader.tools import AgentTool
189
+
190
+ # Autonomous execution (runs without pausing for confirmation)
191
+ autonomous_agent = AgentTool(
192
+ name="research_agent",
193
+ description="Research topics autonomously",
194
+ interrupt_before_tool=False,
195
+ )
196
+ result = autonomous_agent.execute(task="Find info about topic X")
197
+
198
+ # Interactive execution (pauses for user confirmation before each tool)
199
+ def my_callback(tool_call_dict, llm_content=None):
200
+ user_input = input("Execute? [y/n]: ")
201
+ return (user_input.lower() == 'y', None)
202
+
203
+ interactive_agent = AgentTool(
204
+ name="interactive_agent",
205
+ interrupt_before_tool=True,
206
+ tool_confirmation_callback=my_callback,
207
+ )
208
+ result = interactive_agent.execute(task="Analyze data and generate report")
209
+ ```
210
+
211
+ **Key Features:**
212
+ - Each sub-agent has isolated memory (separate `SlidingWindowConversationManager`)
213
+ - Default tools included: filesystem, web search, command executor
214
+ - Optional `interrupt_before_tool` for user confirmation before tool execution
215
+ - Task completes when the agent returns its final response
216
+
180
217
  ### Memory Management
181
218
 
182
219
  Kader's memory system includes:
@@ -194,6 +231,7 @@ Kader includes a rich set of tools:
194
231
  - **Command Executor**: Execute shell commands safely
195
232
  - **Web Tools**: Search and fetch web content
196
233
  - **RAG Tools**: Retrieval Augmented Generation capabilities
234
+ - **AgentTool**: Spawn sub-agents for specific tasks
197
235
 
198
236
  ## Examples
199
237
 
@@ -0,0 +1,56 @@
1
+ cli/README.md,sha256=DY3X7w6LPka1GzhtTrGwhpkFmx0YyRpcTCHjFmti3Yg,4654
2
+ cli/__init__.py,sha256=OAi_KSwcuYXR0sRxKuw1DYQrz1jbu8p7vn41_99f36I,107
3
+ cli/__main__.py,sha256=xO2JVjCsh691b-cjSBAEKocJeUeI3P0gfUqM-f1Mp1A,95
4
+ cli/app.py,sha256=3JwSr4224k2g7DUrWN3IGkCbzNzYDJdKBoIOfUCDeJM,28313
5
+ cli/app.tcss,sha256=szNaXxCEo0QfFyM1klPB21GzNaXV3wCxTbDm9e71ioA,4488
6
+ cli/llm_factory.py,sha256=wXZtCgf2yBeYYKBwbR2WqSbiYxB_26bTMOqcKlbOACE,5214
7
+ cli/utils.py,sha256=y4unmXrANLk-tTEumotq0wp-sreBlLVYKRxz4BMyWVM,2178
8
+ cli/widgets/__init__.py,sha256=1vj31CrJyxZROLthkKr79i_GbNyj8g3q60ZQPbJHK5k,300
9
+ cli/widgets/confirmation.py,sha256=7hXqGyhW5V9fmtjgiWR4z2fJWmKxWhUH9RigqDrTKp4,9396
10
+ cli/widgets/conversation.py,sha256=n99b9wjgrw4WTbWX4entK2Jx4xcP-n-F0KPJXC4w2oM,2720
11
+ cli/widgets/loading.py,sha256=wlhQ47ppSj8vCEqjrbG2mk1yKnfo8dWC5429Z2q1-0g,1689
12
+ kader/__init__.py,sha256=lv08nSC3h5YLdBU4WqXMz2YHHojy7mcBPMbfP251Rjo,654
13
+ kader/config.py,sha256=ra0VAUnbuo4rvIuMIqq3G9Kg5YYpzrc1Wp9bBMED9vo,4503
14
+ kader/agent/__init__.py,sha256=UJzUw9NIzggCrhIBHC6nJnfzkhCjCZnIzmD6uUn2SNA,159
15
+ kader/agent/agents.py,sha256=qG594bZ71tbTshwhSrbKOIpkSz1y3FjcLztxPKJRrfE,4837
16
+ kader/agent/base.py,sha256=uqLv4WEzEw9Nga9e_B4i2oriu9S3XquI4GfOPIKEaVI,40163
17
+ kader/agent/logger.py,sha256=3vFwz_yycSBU-5mcdalfZ3KBVT9P_20Q-WT5Al8yIXo,5796
18
+ kader/memory/__init__.py,sha256=VUzzhGOWvO_2aYB6uuavmtNI8l94K7H3uPn4_1MVUUs,1473
19
+ kader/memory/conversation.py,sha256=h6Bamd8_rYnk0Bwt4MJWZRfv2wxCcg6eUxPvzP-tIyA,11810
20
+ kader/memory/session.py,sha256=VhRPEO474SlwM5UOuFt-b_28sJs3j4SNrobCZvoP5Os,10811
21
+ kader/memory/state.py,sha256=itwRjA4PvLlqlRStu-PnMWgSNsMTeU7R0qPOuj0mVDM,5722
22
+ kader/memory/types.py,sha256=fCJAZo9HV91Mp27ycu8F1ED33vfC1KDICUJjkVBwTng,4861
23
+ kader/prompts/__init__.py,sha256=m5_QxZ7m4cwNyisEJ8zBOIJPzBeMjdEo_yTB9B6cRPc,349
24
+ kader/prompts/agent_prompts.py,sha256=o-JCDS_L2fPzJeIZxK5Hveg0DRmn0TSe-s0b85XloGA,1668
25
+ kader/prompts/base.py,sha256=mFfPfuTX7VNjjiBqez10S7oxyNpiw9U63hTVVAPmlKY,2387
26
+ kader/prompts/templates/executor_agent.j2,sha256=YtKH2LBbY4FrGxam-3Q0YPnnNnLxcV_9Q2ehUS-UrsA,2044
27
+ kader/prompts/templates/kader_planner.j2,sha256=ONpeuu6OvNuxv8d6zrjYSF1QFPoIDFBCqe7P0RmcD-I,3429
28
+ kader/prompts/templates/planning_agent.j2,sha256=Uc4SnMPv4vKWchhO0RLRNjbEio5CVlRgqDJG_dgM2Pk,1315
29
+ kader/prompts/templates/react_agent.j2,sha256=yME6Qgj2WTW8jRZ_yuQcY6xlXKcV7YUv5sz5ZfCl8P4,606
30
+ kader/providers/__init__.py,sha256=6vZvD0nPIMblZWddn7hZjO6a0VlL5ZKBDuLn7OE_0_w,211
31
+ kader/providers/base.py,sha256=gxpomjRAX9q3Qf4GHYxdiGI_GsRW9BG7PM38SKUAeCk,17105
32
+ kader/providers/google.py,sha256=UaTl2jodVNcsJ7SwARjIf6Q4XGtqA_h_g7cfx903xZE,24724
33
+ kader/providers/mock.py,sha256=VBuOFFPvDWn4QVFS9HXlwu3jswP0NNNxrMyL4Qgvm50,2723
34
+ kader/providers/ollama.py,sha256=R5F0zlmbGGwSxNVURU0dWa-gMG_V-CmVZdRvy_GMmuw,15577
35
+ kader/tools/README.md,sha256=lmw-Ghm8ie2pNcSTL4sJ7OKerkGvbXmlD9Zi87hiC-8,14347
36
+ kader/tools/__init__.py,sha256=c-GwhqnXDKhxF7oOGXd7WNckOl_zk55tm3N8B_qQ2f0,3325
37
+ kader/tools/agent.py,sha256=L13YgwuKMKN5AeoHYQPdRweMsuYVMStVd90CwRaA8lA,17135
38
+ kader/tools/base.py,sha256=oHqY1-5ihcH4ilvuHd-c5Vb81xm3jAlMrkRlR_8wltE,28840
39
+ kader/tools/exec_commands.py,sha256=nRKkV84Q8b9kHn8vSIKYe6eKhLx9pGRL-5C1hC11-7Y,7948
40
+ kader/tools/filesys.py,sha256=UwF-CPJu_S-hFR9HPnynx_3DOda58nc86n_qw8YngR8,19629
41
+ kader/tools/filesystem.py,sha256=ANTyiFgdxvYSWbp-hSH0AxGH_x-gx2V6XwYypE2MtoM,22733
42
+ kader/tools/protocol.py,sha256=xyLc-5xY1f9VvumnruoJpLldRk3vzDi1WEDcYXgH7o4,15825
43
+ kader/tools/rag.py,sha256=37Nd49D5R_DlWmMyhSdSvst_XFOnoxpaFNtlbLEt6qM,15653
44
+ kader/tools/todo.py,sha256=nkUOqPaxa6CbzVq7fVM36fAbPb6fg7Wrt6B8sxsN0Ys,9883
45
+ kader/tools/utils.py,sha256=bfq7b1vpA1qBaL_QZYBFTqOM35-omu_UeDjo6v0rxEg,14176
46
+ kader/tools/web.py,sha256=2Aqy0nO7ZwNLAqE9IWjCg5y8qnhbt-AIZOHy02XgbxA,8464
47
+ kader/utils/__init__.py,sha256=Df344mUuNiunB9WXucrxpS0yk0xddCNYZeJoZlmKPk8,229
48
+ kader/utils/checkpointer.py,sha256=318Yq1s68vfRXqmT6SuSGrbncpMoAz165vYaULpaZrU,12071
49
+ kader/utils/context_aggregator.py,sha256=5_2suuWSsJZhJ60zWTIkiEx5R5EIIdXak7MU98zwxqc,11772
50
+ kader/workflows/__init__.py,sha256=qaarPRT7xcY86dHmAUM6IQpLedKKBayFiASZr8-dSSA,297
51
+ kader/workflows/base.py,sha256=BCTMMWE-LW_qIU7TWZgTzu82EMem6Uy2hJv0sa7buc0,1892
52
+ kader/workflows/planner_executor.py,sha256=VK4bCGvoUJ0eezNmkVb-iPjis1HsZFjlAUTtmluF9zw,9392
53
+ kader-1.1.0.dist-info/METADATA,sha256=BI_L65fwCoPTFwx7Un9P2B804lYc3TVcjOGx_jwIys4,10968
54
+ kader-1.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
55
+ kader-1.1.0.dist-info/entry_points.txt,sha256=TK0VOtrfDFqZ8JQfxpuAHHvDLHyoiafUjS-VOixl02c,39
56
+ kader-1.1.0.dist-info/RECORD,,
@@ -1,45 +0,0 @@
1
- cli/README.md,sha256=DY3X7w6LPka1GzhtTrGwhpkFmx0YyRpcTCHjFmti3Yg,4654
2
- cli/__init__.py,sha256=OAi_KSwcuYXR0sRxKuw1DYQrz1jbu8p7vn41_99f36I,107
3
- cli/__main__.py,sha256=xO2JVjCsh691b-cjSBAEKocJeUeI3P0gfUqM-f1Mp1A,95
4
- cli/app.py,sha256=Gh5QgDwBkhQtM6dJuIY8erVCuMnDOe5pBrlyLx9ihiA,24809
5
- cli/app.tcss,sha256=2SeoN-1FrvYu9ERIPxSyGzz9evtb_-YjT4j0VOJsmzg,4207
6
- cli/utils.py,sha256=BcvQJWGyIC3wm5yT18Py7F7dcyT-h0W6F7AZwHovbS8,1729
7
- cli/widgets/__init__.py,sha256=1vj31CrJyxZROLthkKr79i_GbNyj8g3q60ZQPbJHK5k,300
8
- cli/widgets/confirmation.py,sha256=7hXqGyhW5V9fmtjgiWR4z2fJWmKxWhUH9RigqDrTKp4,9396
9
- cli/widgets/conversation.py,sha256=tW2Euox239B9avkGqmRnVwP1RMLd3oGFpjRrAyS4rn0,1519
10
- cli/widgets/loading.py,sha256=wlhQ47ppSj8vCEqjrbG2mk1yKnfo8dWC5429Z2q1-0g,1689
11
- kader/__init__.py,sha256=QXb0aQvySAiNmhP2kNMNtuuzG_eSUgRVcTRSafko1r0,602
12
- kader/config.py,sha256=B1s1PNgZ5SrFEJU5TtJG-ZAc7Umff4cwyHR7mfQgeLA,4261
13
- kader/agent/__init__.py,sha256=UJzUw9NIzggCrhIBHC6nJnfzkhCjCZnIzmD6uUn2SNA,159
14
- kader/agent/agents.py,sha256=lo41hlkPm3CStI9VAwSOR6IYhCBkqQJ48Ego5XN1XU8,4299
15
- kader/agent/base.py,sha256=-0pzD2IeCLuNSLs6pffxrPllAHjHD-a_i8Pq5dyoRhc,36703
16
- kader/agent/logger.py,sha256=3vFwz_yycSBU-5mcdalfZ3KBVT9P_20Q-WT5Al8yIXo,5796
17
- kader/memory/__init__.py,sha256=VUzzhGOWvO_2aYB6uuavmtNI8l94K7H3uPn4_1MVUUs,1473
18
- kader/memory/conversation.py,sha256=h6Bamd8_rYnk0Bwt4MJWZRfv2wxCcg6eUxPvzP-tIyA,11810
19
- kader/memory/session.py,sha256=VhRPEO474SlwM5UOuFt-b_28sJs3j4SNrobCZvoP5Os,10811
20
- kader/memory/state.py,sha256=itwRjA4PvLlqlRStu-PnMWgSNsMTeU7R0qPOuj0mVDM,5722
21
- kader/memory/types.py,sha256=h8B40dupNHNZgYC9WJ4hArnlUbX28Pv-XtgIcfUeqQw,3338
22
- kader/prompts/__init__.py,sha256=TS1kYmEX6TkZcB9GDiulZLI0i9RvFuqMR_kPZEn7AZU,230
23
- kader/prompts/agent_prompts.py,sha256=Gn3LKPlVLNy3JMWmtv4jcGr5jXu_YcR-0Y4qHjq-Y_s,809
24
- kader/prompts/base.py,sha256=mFfPfuTX7VNjjiBqez10S7oxyNpiw9U63hTVVAPmlKY,2387
25
- kader/prompts/templates/planning_agent.j2,sha256=Uc4SnMPv4vKWchhO0RLRNjbEio5CVlRgqDJG_dgM2Pk,1315
26
- kader/prompts/templates/react_agent.j2,sha256=yME6Qgj2WTW8jRZ_yuQcY6xlXKcV7YUv5sz5ZfCl8P4,606
27
- kader/providers/__init__.py,sha256=DYEZakt2SRy0Xd2vem93V_TRlY2s19KaJC9bSaOB1WY,154
28
- kader/providers/base.py,sha256=gxpomjRAX9q3Qf4GHYxdiGI_GsRW9BG7PM38SKUAeCk,17105
29
- kader/providers/mock.py,sha256=VBuOFFPvDWn4QVFS9HXlwu3jswP0NNNxrMyL4Qgvm50,2723
30
- kader/providers/ollama.py,sha256=lTuwzFFPMmlD5xBhK_mYG2AvTA0-OLcPDfPwc3lLkTQ,15557
31
- kader/tools/README.md,sha256=lmw-Ghm8ie2pNcSTL4sJ7OKerkGvbXmlD9Zi87hiC-8,14347
32
- kader/tools/__init__.py,sha256=6h4Tif5VcYyaL18b_feM91LEF_9nXqcaQwaQ920wRI0,2527
33
- kader/tools/base.py,sha256=oHqY1-5ihcH4ilvuHd-c5Vb81xm3jAlMrkRlR_8wltE,28840
34
- kader/tools/exec_commands.py,sha256=nRKkV84Q8b9kHn8vSIKYe6eKhLx9pGRL-5C1hC11-7Y,7948
35
- kader/tools/filesys.py,sha256=offjTGg1cOolwAGnGnnKguh3225tbVUUu-ipJ2TpaC8,19570
36
- kader/tools/filesystem.py,sha256=ANTyiFgdxvYSWbp-hSH0AxGH_x-gx2V6XwYypE2MtoM,22733
37
- kader/tools/protocol.py,sha256=xyLc-5xY1f9VvumnruoJpLldRk3vzDi1WEDcYXgH7o4,15825
38
- kader/tools/rag.py,sha256=37Nd49D5R_DlWmMyhSdSvst_XFOnoxpaFNtlbLEt6qM,15653
39
- kader/tools/todo.py,sha256=omirxoG7_KVHAmMoD12DGmn7scqRaewbI1cqWm0ShUo,7735
40
- kader/tools/utils.py,sha256=bfq7b1vpA1qBaL_QZYBFTqOM35-omu_UeDjo6v0rxEg,14176
41
- kader/tools/web.py,sha256=2Aqy0nO7ZwNLAqE9IWjCg5y8qnhbt-AIZOHy02XgbxA,8464
42
- kader-0.1.6.dist-info/METADATA,sha256=u3PFuX7e__OMAAhf2UGjxTY-BF90AvVQQFM47jw0EfI,9521
43
- kader-0.1.6.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
44
- kader-0.1.6.dist-info/entry_points.txt,sha256=TK0VOtrfDFqZ8JQfxpuAHHvDLHyoiafUjS-VOixl02c,39
45
- kader-0.1.6.dist-info/RECORD,,
File without changes