loom-agent 0.0.1__py3-none-any.whl → 0.0.2__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.

Potentially problematic release.


This version of loom-agent might be problematic. Click here for more details.

Files changed (38) hide show
  1. loom/builtin/tools/calculator.py +4 -0
  2. loom/builtin/tools/document_search.py +5 -0
  3. loom/builtin/tools/glob.py +4 -0
  4. loom/builtin/tools/grep.py +4 -0
  5. loom/builtin/tools/http_request.py +5 -0
  6. loom/builtin/tools/python_repl.py +5 -0
  7. loom/builtin/tools/read_file.py +4 -0
  8. loom/builtin/tools/task.py +5 -0
  9. loom/builtin/tools/web_search.py +4 -0
  10. loom/builtin/tools/write_file.py +4 -0
  11. loom/components/agent.py +121 -5
  12. loom/core/agent_executor.py +505 -320
  13. loom/core/compression_manager.py +17 -10
  14. loom/core/context_assembly.py +329 -0
  15. loom/core/events.py +414 -0
  16. loom/core/execution_context.py +119 -0
  17. loom/core/tool_orchestrator.py +383 -0
  18. loom/core/turn_state.py +188 -0
  19. loom/core/types.py +15 -4
  20. loom/interfaces/event_producer.py +172 -0
  21. loom/interfaces/tool.py +22 -1
  22. loom/security/__init__.py +13 -0
  23. loom/security/models.py +85 -0
  24. loom/security/path_validator.py +128 -0
  25. loom/security/validator.py +346 -0
  26. loom/tasks/PHASE_1_FOUNDATION/task_1.1_agent_events.md +121 -0
  27. loom/tasks/PHASE_1_FOUNDATION/task_1.2_streaming_api.md +521 -0
  28. loom/tasks/PHASE_1_FOUNDATION/task_1.3_context_assembler.md +606 -0
  29. loom/tasks/PHASE_2_CORE_FEATURES/task_2.1_tool_orchestrator.md +743 -0
  30. loom/tasks/PHASE_2_CORE_FEATURES/task_2.2_security_validator.md +676 -0
  31. loom/tasks/README.md +109 -0
  32. loom/tasks/__init__.py +11 -0
  33. loom/tasks/sql_placeholder.py +100 -0
  34. loom_agent-0.0.2.dist-info/METADATA +295 -0
  35. {loom_agent-0.0.1.dist-info → loom_agent-0.0.2.dist-info}/RECORD +37 -19
  36. loom_agent-0.0.1.dist-info/METADATA +0 -457
  37. {loom_agent-0.0.1.dist-info → loom_agent-0.0.2.dist-info}/WHEEL +0 -0
  38. {loom_agent-0.0.1.dist-info → loom_agent-0.0.2.dist-info}/licenses/LICENSE +0 -0
loom/tasks/README.md ADDED
@@ -0,0 +1,109 @@
1
+ # Loom 2.0 任务追踪目录
2
+
3
+ 本目录包含所有开发任务的详细规范和检查清单。
4
+
5
+ ## 📂 目录结构
6
+
7
+ ```
8
+ loom/tasks/
9
+ ├── README.md # 本文件
10
+ ├── PHASE_1_FOUNDATION/ # 阶段 1:基础架构
11
+ │ ├── task_1.1_agent_events.md ✅ 完成
12
+ │ ├── task_1.2_streaming_api.md ⏳ 待开始
13
+ │ └── task_1.3_rag_context_fix.md ⏳ 待开始
14
+ ├── PHASE_2_CORE_FEATURES/ # 阶段 2:核心功能
15
+ │ ├── task_2.1_tool_orchestrator.md ⏳ 待开始
16
+ │ ├── task_2.2_security_validator.md ⏳ 待开始
17
+ │ └── task_2.4_prompt_engineering.md ⏳ 待开始
18
+ └── PHASE_3_OPTIMIZATION/ # 阶段 3:高级优化
19
+ ├── task_3.1_memory_optimization.md ⏳ 待开始
20
+ ├── task_3.2_error_recovery.md ⏳ 待开始
21
+ └── task_3.3_tt_recursion.md ⏳ 待开始(可选)
22
+ ```
23
+
24
+ ## 📊 当前状态
25
+
26
+ **开始日期**: 2025-10-25
27
+ **当前阶段**: 阶段 1 - 基础架构
28
+ **已完成**: 1/9 任务 (11%)
29
+ **进行中**: 0 任务
30
+
31
+ ## ✅ 已完成任务
32
+
33
+ ### Task 1.1: AgentEvent 模型 ✅
34
+
35
+ - **完成日期**: 2025-10-25
36
+ - **时间**: 1 天
37
+ - **交付物**:
38
+ - `loom/core/events.py` (420 行)
39
+ - `loom/interfaces/event_producer.py` (120 行)
40
+ - `tests/unit/test_agent_events.py` (31 个测试,全部通过)
41
+ - `docs/agent_events_guide.md` (650 行)
42
+ - `examples/agent_events_demo.py` (350 行)
43
+ - **总结**: `docs/TASK_1.1_COMPLETION_SUMMARY.md`
44
+
45
+ ## 🔄 下一个任务
46
+
47
+ **推荐**: Task 1.2 - 重构 Agent.execute() 为流式接口
48
+
49
+ **原因**:
50
+ 1. P0 优先级(必须完成)
51
+ 2. 依赖 Task 1.1(已完成)
52
+ 3. 是后续任务的基础
53
+
54
+ ## 📝 使用说明
55
+
56
+ ### 开始新任务
57
+
58
+ 1. 从 `loom/tasks/PHASE_X/` 找到任务文件
59
+ 2. 阅读任务规范和检查清单
60
+ 3. 逐项完成检查清单
61
+ 4. 运行测试验证
62
+ 5. 创建完成总结文档
63
+
64
+ ### 任务文件格式
65
+
66
+ 每个任务文件包含:
67
+
68
+ - **元信息**: 优先级、预计时间、依赖
69
+ - **目标**: 清晰的任务目标
70
+ - **背景**: 为什么需要这个任务
71
+ - **详细步骤**: 具体的实现步骤
72
+ - **代码示例**: 伪代码或参考实现
73
+ - **验收标准**: 明确的完成标准
74
+ - **测试要求**: 测试覆盖率和测试用例
75
+ - **文档要求**: 需要更新的文档
76
+ - **检查清单**: 逐项检查的清单
77
+
78
+ ### 完成任务
79
+
80
+ 完成任务后:
81
+
82
+ 1. ✅ 所有检查清单项都完成
83
+ 2. ✅ 所有测试通过
84
+ 3. ✅ 代码审查(自查或同行审查)
85
+ 4. ✅ 文档更新
86
+ 5. ✅ 创建 `TASK_X.X_COMPLETION_SUMMARY.md`
87
+ 6. ✅ 更新 `LOOM_2.0_DEVELOPMENT_PLAN.md`
88
+
89
+ ## 🎯 质量标准
90
+
91
+ 所有任务必须满足:
92
+
93
+ - ✅ 测试覆盖率 ≥ 80%
94
+ - ✅ 所有单元测试通过
95
+ - ✅ 所有集成测试通过
96
+ - ✅ 代码遵循 PEP 8
97
+ - ✅ 类型提示完整
98
+ - ✅ 文档字符串完整
99
+ - ✅ 无明显性能问题
100
+
101
+ ## 🔗 相关文档
102
+
103
+ - [Loom 2.0 开发计划](../../LOOM_2.0_DEVELOPMENT_PLAN.md) - 总体规划
104
+ - [AgentEvent 使用指南](../../docs/agent_events_guide.md) - 事件系统文档
105
+ - [架构设计文档](../../docs/) - 架构和接口定义
106
+
107
+ ---
108
+
109
+ **最后更新**: 2025-10-25
loom/tasks/__init__.py ADDED
@@ -0,0 +1,11 @@
1
+ from .sql_placeholder import (
2
+ SQLPlaceholderPlan,
3
+ generate_placeholder_sql_plan,
4
+ parse_placeholders,
5
+ )
6
+
7
+ __all__ = [
8
+ "SQLPlaceholderPlan",
9
+ "generate_placeholder_sql_plan",
10
+ "parse_placeholders",
11
+ ]
@@ -0,0 +1,100 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from dataclasses import dataclass
5
+ from typing import Dict, List
6
+
7
+
8
+ PLACEHOLDER_PATTERN = re.compile(r"{{\s*(?P<name>[\w\-]+)\s*:\s*(?P<desc>[^}]+)\s*}}")
9
+
10
+
11
+ @dataclass(frozen=True)
12
+ class Placeholder:
13
+ """Represents a placeholder extracted from a context template."""
14
+
15
+ name: str
16
+ description: str
17
+
18
+
19
+ @dataclass
20
+ class SQLPlaceholderPlan:
21
+ """Plan describing how to populate placeholders using a single SQL result row."""
22
+
23
+ context_template: str
24
+ sql: str
25
+ placeholder_columns: Dict[str, str]
26
+ data_source: Dict[str, str]
27
+ schedule: str
28
+ window_start: str
29
+ window_end: str
30
+
31
+
32
+ def parse_placeholders(template: str) -> List[Placeholder]:
33
+ """Extract placeholders of the form {{name: description}} from a template."""
34
+ matches = PLACEHOLDER_PATTERN.findall(template)
35
+ return [Placeholder(name=m[0].strip(), description=m[1].strip()) for m in matches]
36
+
37
+
38
+ def _infer_column_alias(placeholder: Placeholder, index: int) -> str:
39
+ """Infer a sensible column alias for a placeholder."""
40
+ desc = placeholder.description.lower()
41
+ if placeholder.name == "top_product":
42
+ return "top_product_name"
43
+ if "销量" in desc:
44
+ return "total_quantity"
45
+ if "收入" in desc or "revenue" in desc or "gmv" in desc:
46
+ return "total_revenue"
47
+ return f"{placeholder.name}_{index}"
48
+
49
+
50
+ def _build_top_product_query(window_start: str, window_end: str, database: str) -> str:
51
+ """Create SQL that returns the top-selling product for the window."""
52
+ # Doris uses MySQL-compatible syntax for DATE_ADD.
53
+ return (
54
+ "SELECT\n"
55
+ " p.product_name AS top_product_name,\n"
56
+ " SUM(oi.order_item_quantity) AS total_quantity,\n"
57
+ " SUM(oi.order_item_subtotal) AS total_revenue\n"
58
+ f"FROM {database}.orders AS o\n"
59
+ f"JOIN {database}.order_items AS oi\n"
60
+ " ON o.order_id = oi.order_item_order_id\n"
61
+ f"JOIN {database}.products AS p\n"
62
+ " ON p.product_id = oi.order_item_product_id\n"
63
+ f"WHERE o.order_date >= '{window_start}'\n"
64
+ f" AND o.order_date < DATE_ADD('{window_end}', INTERVAL 1 DAY)\n"
65
+ "GROUP BY p.product_name\n"
66
+ "ORDER BY total_quantity DESC\n"
67
+ "LIMIT 1;"
68
+ )
69
+
70
+
71
+ def generate_placeholder_sql_plan(
72
+ *,
73
+ context_template: str,
74
+ schedule: str,
75
+ window_start: str,
76
+ window_end: str,
77
+ data_source: Dict[str, str],
78
+ ) -> SQLPlaceholderPlan:
79
+ """Generate an execution plan that maps template placeholders to SQL columns."""
80
+ placeholders = parse_placeholders(context_template)
81
+ placeholder_columns: Dict[str, str] = {}
82
+ for idx, placeholder in enumerate(placeholders, start=1):
83
+ key = f"{placeholder.name}:{placeholder.description}"
84
+ placeholder_columns[key] = _infer_column_alias(placeholder, idx)
85
+
86
+ sql = _build_top_product_query(
87
+ window_start=window_start,
88
+ window_end=window_end,
89
+ database=data_source.get("database", "retail_db"),
90
+ )
91
+
92
+ return SQLPlaceholderPlan(
93
+ context_template=context_template,
94
+ sql=sql,
95
+ placeholder_columns=placeholder_columns,
96
+ data_source=data_source,
97
+ schedule=schedule,
98
+ window_start=window_start,
99
+ window_end=window_end,
100
+ )
@@ -0,0 +1,295 @@
1
+ Metadata-Version: 2.4
2
+ Name: loom-agent
3
+ Version: 0.0.2
4
+ Summary: Production-ready Python Agent framework with enterprise-grade reliability and observability
5
+ License: MIT
6
+ License-File: LICENSE
7
+ Keywords: ai,llm,agent,multi-agent,rag,tooling,asyncio
8
+ Author: kongusen
9
+ Author-email: wanghaishan0210@gmail.com
10
+ Requires-Python: >=3.11,<4.0
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Framework :: AsyncIO
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
21
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
22
+ Classifier: Topic :: Software Development :: Libraries
23
+ Classifier: Typing :: Typed
24
+ Provides-Extra: all
25
+ Provides-Extra: anthropic
26
+ Provides-Extra: mcp
27
+ Provides-Extra: observability
28
+ Provides-Extra: openai
29
+ Provides-Extra: retrieval
30
+ Provides-Extra: system
31
+ Provides-Extra: web
32
+ Requires-Dist: anthropic (>=0.7.0,<0.8.0) ; extra == "anthropic" or extra == "all"
33
+ Requires-Dist: asyncio-throttle (>=1.0.2,<2.0.0) ; extra == "all"
34
+ Requires-Dist: cachetools (>=5.3.0,<6.0.0) ; extra == "observability" or extra == "all"
35
+ Requires-Dist: chromadb (>=0.4.0,<0.5.0) ; extra == "retrieval" or extra == "all"
36
+ Requires-Dist: docker (>=7.0.0,<8.0.0) ; extra == "system" or extra == "all"
37
+ Requires-Dist: fastapi (>=0.104.0,<0.105.0) ; extra == "web" or extra == "all"
38
+ Requires-Dist: mcp (>=0.2.0,<0.3.0) ; extra == "mcp" or extra == "all"
39
+ Requires-Dist: numpy (>=1.24.0,<2.0.0) ; extra == "retrieval" or extra == "all"
40
+ Requires-Dist: openai (>=1.6.0,<2.0.0) ; extra == "openai" or extra == "all"
41
+ Requires-Dist: pinecone-client (>=2.2,<4.0) ; extra == "retrieval" or extra == "all"
42
+ Requires-Dist: psutil (>=5.9.0,<6.0.0) ; extra == "system" or extra == "all"
43
+ Requires-Dist: pydantic (>=2.5.0,<3.0.0)
44
+ Requires-Dist: structlog (>=23.2.0,<24.0.0) ; extra == "observability" or extra == "all"
45
+ Requires-Dist: uvicorn[standard] (>=0.24.0,<0.25.0) ; extra == "web" or extra == "all"
46
+ Requires-Dist: weakref-tools (>=1.0.0,<2.0.0) ; extra == "all"
47
+ Requires-Dist: websockets (>=12.0,<13.0) ; extra == "web" or extra == "all"
48
+ Project-URL: Documentation, https://github.com/kongusen/loom-agent#readme
49
+ Project-URL: Homepage, https://github.com/kongusen/loom-agent
50
+ Project-URL: Repository, https://github.com/kongusen/loom-agent
51
+ Description-Content-Type: text/markdown
52
+
53
+ # Loom Agent
54
+
55
+ <div align="center">
56
+
57
+ **Production-ready Python Agent framework with enterprise-grade reliability and observability**
58
+
59
+ [![PyPI](https://img.shields.io/pypi/v/loom-agent.svg)](https://pypi.org/project/loom-agent/)
60
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
61
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
62
+ [![Tests](https://img.shields.io/badge/tests-18%2F18%20passing-brightgreen.svg)](tests/)
63
+
64
+ [Documentation](docs/user/user-guide.md) | [API Reference](docs/user/api-reference.md) | [Contributing](CONTRIBUTING.md)
65
+
66
+ </div>
67
+
68
+ ---
69
+
70
+ ## 🎯 What is Loom Agent?
71
+
72
+ Loom Agent is a Python framework for building reliable AI agents with production-grade features like automatic retries, context compression, persistent memory, and comprehensive observability.
73
+
74
+ **Key Features:**
75
+
76
+ - 🚀 **Simple API** - Get started with just 3 lines of code
77
+ - 🔧 **Tool System** - Easy decorator-based tool creation
78
+ - 💾 **Persistent Memory** - Cross-session conversation history
79
+ - 📊 **Observability** - Structured logging with correlation IDs
80
+ - 🛡️ **Production Ready** - Circuit breakers, retries, and failover
81
+ - ⚡ **High Performance** - Parallel tool execution and smart context compression
82
+ - 🌐 **Multi-LLM** - OpenAI, Anthropic, and more
83
+
84
+ ## 📦 Installation
85
+
86
+ ```bash
87
+ # Basic installation
88
+ pip install loom-agent
89
+
90
+ # With OpenAI support
91
+ pip install loom-agent[openai]
92
+
93
+ # With all features
94
+ pip install loom-agent[all]
95
+ ```
96
+
97
+ **Requirements:** Python 3.11+
98
+
99
+ ## 🚀 Quick Start
100
+
101
+ ### Basic Agent
102
+
103
+ ```python
104
+ import asyncio
105
+ from loom import agent
106
+ from loom.builtin.llms import MockLLM
107
+
108
+ async def main():
109
+ # Create an agent
110
+ my_agent = agent(llm=MockLLM())
111
+
112
+ # Run it
113
+ result = await my_agent.run("Hello, world!")
114
+ print(result)
115
+
116
+ asyncio.run(main())
117
+ ```
118
+
119
+ ### With OpenAI
120
+
121
+ ```python
122
+ from loom import agent
123
+
124
+ # Create agent with OpenAI
125
+ my_agent = agent(
126
+ provider="openai",
127
+ model="gpt-4",
128
+ api_key="sk-..." # or set OPENAI_API_KEY env var
129
+ )
130
+
131
+ result = await my_agent.run("What is the capital of France?")
132
+ print(result)
133
+ ```
134
+
135
+ ### Custom Tools
136
+
137
+ ```python
138
+ from loom import agent, tool
139
+
140
+ @tool()
141
+ def add(a: int, b: int) -> int:
142
+ """Add two numbers together"""
143
+ return a + b
144
+
145
+ my_agent = agent(
146
+ provider="openai",
147
+ model="gpt-4",
148
+ tools=[add()]
149
+ )
150
+
151
+ result = await my_agent.run("What is 15 plus 27?")
152
+ print(result)
153
+ ```
154
+
155
+ ## 📚 Documentation
156
+
157
+ - **[Getting Started](docs/user/getting-started.md)** - Your first Loom agent in 5 minutes
158
+ - **[User Guide](docs/user/user-guide.md)** - Complete usage documentation
159
+ - **[API Reference](docs/user/api-reference.md)** - Detailed API documentation
160
+ - **[Contributing Guide](CONTRIBUTING.md)** - How to contribute
161
+
162
+ ## 🛠️ Core Components
163
+
164
+ ### Agent Builder
165
+ ```python
166
+ from loom import agent
167
+
168
+ my_agent = agent(
169
+ provider="openai", # LLM provider
170
+ model="gpt-4", # Model name
171
+ tools=[...], # Custom tools
172
+ memory=..., # Memory system
173
+ callbacks=[...] # Observability
174
+ )
175
+ ```
176
+
177
+ ### Tool Decorator
178
+ ```python
179
+ from loom import tool
180
+
181
+ @tool(description="Fetch weather data")
182
+ def get_weather(city: str) -> dict:
183
+ return {"temp": 72, "condition": "sunny"}
184
+ ```
185
+
186
+ ### Memory System
187
+ ```python
188
+ from loom import PersistentMemory
189
+
190
+ memory = PersistentMemory() # Conversations persist across restarts
191
+ agent = agent(llm=..., memory=memory)
192
+ ```
193
+
194
+ ### Observability
195
+ ```python
196
+ from loom import ObservabilityCallback, MetricsAggregator
197
+
198
+ obs = ObservabilityCallback()
199
+ metrics = MetricsAggregator()
200
+
201
+ agent = agent(llm=..., callbacks=[obs, metrics])
202
+ ```
203
+
204
+ ## 🎯 Supported Platforms
205
+
206
+ - **Python:** 3.11, 3.12
207
+ - **Operating Systems:** Linux, macOS, Windows
208
+ - **LLM Providers:** OpenAI, Anthropic, Ollama
209
+
210
+ ## ⚠️ Alpha Release Notice
211
+
212
+ **This is v0.0.1 - our first Alpha release!**
213
+
214
+ While Loom Agent includes production-grade features, this is an early release. You may experience:
215
+
216
+ - API changes in future versions
217
+ - Incomplete edge case handling
218
+ - Evolving documentation
219
+
220
+ We welcome your feedback and contributions to help improve the framework!
221
+
222
+ **What works well:**
223
+ - ✅ Core agent execution
224
+ - ✅ Tool system and decorators
225
+ - ✅ Basic memory and context management
226
+ - ✅ OpenAI integration
227
+ - ✅ Structured logging
228
+
229
+ **Coming soon:**
230
+ - More LLM provider integrations
231
+ - Enhanced tool library
232
+ - Performance optimizations
233
+ - Additional examples and tutorials
234
+
235
+ ## 🤝 Contributing
236
+
237
+ We welcome contributions! Here's how to get started:
238
+
239
+ 1. Fork the repository
240
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
241
+ 3. Make your changes and add tests
242
+ 4. Run tests: `poetry run pytest`
243
+ 5. Submit a pull request
244
+
245
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
246
+
247
+ ## 📊 Project Status
248
+
249
+ - **Version:** 0.0.1 (Alpha)
250
+ - **Status:** Active Development
251
+ - **Tests:** 18/18 passing ✅
252
+ - **Python:** 3.11+ supported
253
+
254
+ ## 🗺️ Roadmap
255
+
256
+ ### v0.1.0 (Planned)
257
+ - API stabilization
258
+ - More examples and tutorials
259
+ - Performance optimizations
260
+ - Extended documentation
261
+
262
+ ### v0.2.0 (Planned)
263
+ - Additional LLM providers
264
+ - Plugin system
265
+ - Web UI for debugging
266
+
267
+ ### v1.0.0 (Goal)
268
+ - Stable API
269
+ - Production-grade quality
270
+ - Comprehensive documentation
271
+ - Community ecosystem
272
+
273
+ ## 📄 License
274
+
275
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
276
+
277
+ ## 🔗 Links
278
+
279
+ - **PyPI:** https://pypi.org/project/loom-agent/
280
+ - **GitHub:** https://github.com/kongusen/loom-agent
281
+ - **Issues:** https://github.com/kongusen/loom-agent/issues
282
+ - **Releases:** [v0.0.1](releases/v0.0.1.md)
283
+
284
+ ## 🙏 Acknowledgments
285
+
286
+ Special thanks to the Claude Code project for inspiration and to all early testers and contributors!
287
+
288
+ ---
289
+
290
+ **Built with ❤️ for the AI community**
291
+
292
+ <div align="center">
293
+ <sub>If you find Loom Agent useful, please consider giving it a ⭐ on GitHub!</sub>
294
+ </div>
295
+
@@ -24,27 +24,30 @@ loom/builtin/retriever/qdrant_store.py,sha256=PRin2SVkhK0VAKZFtmojF3uye0P66LS5m0
24
24
  loom/builtin/retriever/vector_store.py,sha256=AVB3rHfGVJQ_Q78owi2wUTWeqxDhWjO6cQCyp7zPLtM,3718
25
25
  loom/builtin/retriever/vector_store_config.py,sha256=YI7i_Dq1vjO3doVCOLM1PZD47sm2xJj2--pEh9Xjisc,7485
26
26
  loom/builtin/tools/__init__.py,sha256=BnXMYnL6bzd-dR4HmONiVEj8sCAL_0h9X_MrNtTVYOw,802
27
- loom/builtin/tools/calculator.py,sha256=arbkiF_qnOy9MNc-Q98gXphTDtsHtC2ZdCZV41uxb3I,1206
28
- loom/builtin/tools/document_search.py,sha256=d2fKdIGHa2KkAEMdgR2My_ZXMEjq17cTm4z1h-3-4w8,3400
29
- loom/builtin/tools/glob.py,sha256=C_jlXxZ0j3uz-YYqnz9P13QNnemUeZ976no88Ei4DFI,801
30
- loom/builtin/tools/grep.py,sha256=ngUSQqKmvny-zELURQdLJVCvmI99OO-vQjyd_zgTizE,1844
31
- loom/builtin/tools/http_request.py,sha256=n18WOrBxPrUght7P08dFBtGSkcDyCXimAPBHfibuDck,2710
32
- loom/builtin/tools/python_repl.py,sha256=naomX1F0BrtbMn2wD8idUGrCUnTxP-tXu85A4q9xJsU,2174
33
- loom/builtin/tools/read_file.py,sha256=JCLEuWy4pd2RX2WMqPmEyqrGmoPWlD2Jh-5KpDa941I,991
34
- loom/builtin/tools/task.py,sha256=LFM0Q0pjl4tpmeg5teOMOP3dhRSarGzwzuo0SYptWuo,6078
35
- loom/builtin/tools/web_search.py,sha256=_3Q6bkwvrWW4RDGmXtG6QF-PL9hQ05a8hosi2aEpYiY,1916
36
- loom/builtin/tools/write_file.py,sha256=OfoJVGoO2CsQfJiWvVeBy3a-cHdzSGAgD_1h3EASXkI,1006
27
+ loom/builtin/tools/calculator.py,sha256=fly54MNcv03XJLo-qwLGmBHi6c6jKGAJ1FI0mky9vWQ,1340
28
+ loom/builtin/tools/document_search.py,sha256=wTLiSORE9_qDQi0678jhenMboXPElyxhDIq-C9GDuzg,3543
29
+ loom/builtin/tools/glob.py,sha256=rn9pCDJef-3icK7vAARl312xaYlT0X1TBMBcGRxbuJI,898
30
+ loom/builtin/tools/grep.py,sha256=VpcAa4-w3X7byzuWHK-2YLhA9W7DGeA2LwhLN86_HL0,1941
31
+ loom/builtin/tools/http_request.py,sha256=unu2DdT50povWfIGv2Dg60bkwjFIlYHJLwVT3N9DWMc,2944
32
+ loom/builtin/tools/python_repl.py,sha256=rznRXVAxNsixoKaNEekXri-X1I8PlqHO4erQzyk2apY,2410
33
+ loom/builtin/tools/read_file.py,sha256=Vj_vT7kCEomz3MNjHJatElKBAgsBKI9uaPYq0zw5Ekc,1088
34
+ loom/builtin/tools/task.py,sha256=5ITLNyNrWOHs3rfCxnPRta6qathxhRgZVtGvghN2zJM,6305
35
+ loom/builtin/tools/web_search.py,sha256=wh1TmfEpHPtCjSPCxmWVUsIevjF-CAMxAaymZd64wzU,2059
36
+ loom/builtin/tools/write_file.py,sha256=9YnsgUh0wOfAuFRNE0OhCKFiK_PL7vfibThx9sHfS24,1108
37
37
  loom/callbacks/base.py,sha256=dCI8i-2m-V3Wuw-8UInUDh_tp_0zU3W_HyaeHus10q8,188
38
38
  loom/callbacks/logging.py,sha256=rOO4GSB8hw7gpZnmQmO5IYkctz_hTgo4L7rMnVqBSgU,304
39
39
  loom/callbacks/metrics.py,sha256=_mrC0tjFmus2dvON-BFWfzAhcYUwoppIKYEV9q57MU8,670
40
40
  loom/callbacks/observability.py,sha256=to9l9A7SIY6awZP8nHOHCLMknlWhXqV8iXLIQ0XRGtc,8534
41
- loom/components/agent.py,sha256=ZnK2WB-Ys57pwRZTQuPHAaMgHpbnHorJxlmrNAJFLfc,3978
42
- loom/core/agent_executor.py,sha256=Or-WSyRkxqnCF5Xohy7Yr53lTkMO_V8AQwANRaOuNiE,20521
41
+ loom/components/agent.py,sha256=8j5rCZUrkw5nah4eloa6lBmqzz2kh-SPEdXTCXQKi4k,8380
42
+ loom/core/agent_executor.py,sha256=q-TXQBXjeYw2TDflx8bRHlXQJww8l3AdigHqadevpsM,22861
43
43
  loom/core/circuit_breaker.py,sha256=ye46zUCCaQ_HN2tnh0ugzkTvZzzSUlgM4L-Lc50WSXU,6024
44
- loom/core/compression_manager.py,sha256=iAnAVZ9yie7zqPi35rd1Zr7jrmfiVGkWhZYFORak2G8,12735
44
+ loom/core/compression_manager.py,sha256=x0YlJSdvFa-65qV0Af21_wmSGSvPTdyjgbBf5VyjYCg,13029
45
+ loom/core/context_assembly.py,sha256=Sj6Y_unb3gL9DJQoHb1U7UmqgdKJahr17Dmi0asd8fw,10525
45
46
  loom/core/context_retriever.py,sha256=wWr2JsFrvOzk_QEysvglP6NjSywPYczk4ZusCPqEF4M,5370
46
47
  loom/core/error_classifier.py,sha256=yPoqO-KBAusDrhWXDSFmGgOo6diW9cE0q19KdtUylSI,6675
47
48
  loom/core/errors.py,sha256=3A3FBZOtYsoZYjEUneTTz3O1jzYGF3-eIyzguVD4mL8,2318
49
+ loom/core/events.py,sha256=fZd6dYsZwDYrPYo__edXvEj8ZhhUa_Tt1bKDZPg_boI,12356
50
+ loom/core/execution_context.py,sha256=HnoTXx8HELMNi1iM8bA6Gq5nYQvsVSrefuLGbRNLWRU,3621
48
51
  loom/core/message_queue.py,sha256=K8ZqkwXSEZ6DlMPOkMj04coMzDgwFO3HHWB5EP36v-s,5659
49
52
  loom/core/permission_store.py,sha256=kZF63b0PLMyZzgtq6X8MBYaqEJp4Gz-7AeV4Eq54-rE,1809
50
53
  loom/core/permissions.py,sha256=C92jUr_F2NTfrKEIyAnLpInXMD6LrpVBIL9XQbiVrtQ,2443
@@ -54,14 +57,17 @@ loom/core/structured_logger.py,sha256=VI1NRQ6XAljrKV2GUq9I7pL86o_huR2NRFCfL1hx2m
54
57
  loom/core/subagent_pool.py,sha256=riDf2eXiy8pHO49aBaxO2unlSwsUc3dLnGvXS8cVkzg,7829
55
58
  loom/core/system_prompt.py,sha256=eOXXQlxqNosGNWofYdcUMuO4txobceGSO9PqrDGDJxI,5277
56
59
  loom/core/system_reminders.py,sha256=mozKaey47oHT9zu367oCKNKGOoIxnwL0Wt4bswtylwA,9027
60
+ loom/core/tool_orchestrator.py,sha256=81loORaBugC9etqiRF9ExrmN6OjtDUtnwbCzT98KagQ,12285
57
61
  loom/core/tool_pipeline.py,sha256=v_ke2Pc3sgEGuVXdlZ8sjFG3rPAEO2daZeNEGO1-4xA,4823
58
- loom/core/types.py,sha256=kmO9ZAxpeVlp3QZp_YZLKD-nbMNQeHGjTo1xKREhZ_c,11375
62
+ loom/core/turn_state.py,sha256=pVIV16g5VsIeChfXCiaxVaKffOO73GhF9-4hvKzO-M8,5860
63
+ loom/core/types.py,sha256=HQcYZ70J_ueqfigR2rF-EJTNePDI-RaDrDVCz0BkCoc,11744
59
64
  loom/interfaces/compressor.py,sha256=O9ALDFTTKB19kiooN_moTQi4goeVe46mXOjS8F-KFo4,1863
60
65
  loom/interfaces/embedding.py,sha256=iJ1omki4WKiMtYriAvoKZ7iCg-FOl7xjbBe5ElkX-Sg,1129
66
+ loom/interfaces/event_producer.py,sha256=VTOiVi0RMgGxCu1ivpz7D32e-3TAnPDRW0dE7_MEDdY,4375
61
67
  loom/interfaces/llm.py,sha256=wTWMFsYslrvDDfVTkwWEIy2XI-Sde5fKdsckWdSEbvQ,958
62
68
  loom/interfaces/memory.py,sha256=hI9KdatK3twrn7bT2womIUAnmeBL2P7F-LQ5aA46FiY,699
63
69
  loom/interfaces/retriever.py,sha256=fRLyB3qVmoK8LybsjW_8u8C_ZpDavrc1gfJscYqPazQ,4342
64
- loom/interfaces/tool.py,sha256=vdshAX-rtF26_Zls2Jbbq7jLB7DYm1J8PlJUCMr9rNw,494
70
+ loom/interfaces/tool.py,sha256=3JA0NYNuXT7krlLEF75gMJ_AROpWMDJwqqAuWqcZllY,1340
65
71
  loom/interfaces/vector_store.py,sha256=6FTUuWREil3neEbW6dEW7CFWFQaLltEaBrcamgqEjIM,1880
66
72
  loom/llm/__init__.py,sha256=dLuyWiw9ybOaEGt1AOQA2c2a39lzAr1G3ad5WrEoRQ4,287
67
73
  loom/llm/config.py,sha256=mIgQPcc4qkN1HoRsyG9BgU75ayjSRpdSa_1SB8YaY14,6933
@@ -80,10 +86,22 @@ loom/patterns/multi_agent.py,sha256=uA9ZlRMWPVRhT5xL5Dn8kbbuTmOEtl72Mv8XqWlSzVM,
80
86
  loom/patterns/rag.py,sha256=-0XjBZI1cPD0PcDAZXs8PMiWuGsK4JwlmomaxzQBNIY,7462
81
87
  loom/plugins/registry.py,sha256=H7AAA9TsEZKiztfK0zEf6HkZWPbX-pmflVtTaW9kI70,1669
82
88
  loom/resilience/__init__.py,sha256=HHTBZTWG09AzN_AzjiRLPzTZI9cXpA7g2irSo0sUqLM,136
89
+ loom/security/__init__.py,sha256=Lm1ro1GRvGwE7Q7rY2oJ_QldJV4ZldgRSy2wfT2hwYs,370
90
+ loom/security/models.py,sha256=77RBB8UeS9MJdntKac0kR6TDybS2O_dhe1rQhdmSc1o,2335
91
+ loom/security/path_validator.py,sha256=HRzdP9jawPzfp3igPP6-qXUSNwuFTk4ua7us9DEYEPk,3370
92
+ loom/security/validator.py,sha256=HWBfY-X-Go2QUoNCWUzP-l4i0Ryx2q9ClrvrYbcqIoc,11526
93
+ loom/tasks/PHASE_1_FOUNDATION/task_1.1_agent_events.md,sha256=6xOcvId5EHAAVAe1qe1W29Ux3JvOfbDW-2KJ8f46fyE,3528
94
+ loom/tasks/PHASE_1_FOUNDATION/task_1.2_streaming_api.md,sha256=0bIblMx-OrK9BWcSWQv3pwkJlfY5iSg2vuBKUDaJ2Hs,14838
95
+ loom/tasks/PHASE_1_FOUNDATION/task_1.3_context_assembler.md,sha256=5feduFlGa_ZQW46O3Rygs-0DNahFKnVlkUM2FNrL_ls,17050
96
+ loom/tasks/PHASE_2_CORE_FEATURES/task_2.1_tool_orchestrator.md,sha256=trpw_Rq5EXHXG2eEBbxjH0G8lVf5m3YVamNk4IcG8Hk,21749
97
+ loom/tasks/PHASE_2_CORE_FEATURES/task_2.2_security_validator.md,sha256=-8ZrHWNRlRmYjz0-XBh5Po0FpdNoHgLeV8dEQkqXnxU,20126
98
+ loom/tasks/README.md,sha256=0AeVml7wAIBS0SLlXopmBoSvt0cf7BhroruIj8gnv0k,3154
99
+ loom/tasks/__init__.py,sha256=uPEJg4KxsLhaB9ycZuhYmvJR53Z_e9ChIXzC9gfAdOg,220
100
+ loom/tasks/sql_placeholder.py,sha256=I3lYI8ZnBDTCekFneq_AhlcisYopVI1y4HVQnYSt_38,3285
83
101
  loom/tooling.py,sha256=sLAnjArQCU3oWuUTUDzNioZXZG33jYe3tGaIUpR22e4,2495
84
102
  loom/utils/agent_loader.py,sha256=ngtD-mVNcHhs9xzx8rVHuWNFktdgH3zfy1ZkAzEBX-4,7034
85
103
  loom/utils/token_counter.py,sha256=H0JY7HH8R0LhpWVamvx3Uuds9tphJar-c0hOrvJzYJU,462
86
- loom_agent-0.0.1.dist-info/METADATA,sha256=xcXZt38abOc29NJFUhtLWAbNAq2FXuHlV_ZjDsR1a50,15939
87
- loom_agent-0.0.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
88
- loom_agent-0.0.1.dist-info/licenses/LICENSE,sha256=2Fc25AXQ9WYE1SNVk4OYhze80Jq2yZvQnquS-2_Ytm4,1065
89
- loom_agent-0.0.1.dist-info/RECORD,,
104
+ loom_agent-0.0.2.dist-info/METADATA,sha256=weticNS2DjR9SnOPmxEAPQsqv4u0QmkYf5lLAREwub8,8537
105
+ loom_agent-0.0.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
106
+ loom_agent-0.0.2.dist-info/licenses/LICENSE,sha256=2Fc25AXQ9WYE1SNVk4OYhze80Jq2yZvQnquS-2_Ytm4,1065
107
+ loom_agent-0.0.2.dist-info/RECORD,,