basic-open-agent-tools 1.3.0__tar.gz → 1.3.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- basic_open_agent_tools-1.3.2/PKG-INFO +298 -0
- basic_open_agent_tools-1.3.2/README.md +188 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/pyproject.toml +11 -3
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/__init__.py +1 -1
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/helpers.py +10 -4
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/todo/persistence.py +19 -10
- basic_open_agent_tools-1.3.2/src/basic_open_agent_tools.egg-info/PKG-INFO +298 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools.egg-info/requires.txt +2 -2
- basic_open_agent_tools-1.3.0/PKG-INFO +0 -435
- basic_open_agent_tools-1.3.0/README.md +0 -325
- basic_open_agent_tools-1.3.0/src/basic_open_agent_tools.egg-info/PKG-INFO +0 -435
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/LICENSE +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/setup.cfg +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/_logging.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/archive/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/archive/compression.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/archive/formats.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/color/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/color/analysis.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/color/conversion.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/color/generation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/confirmation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/crypto/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/crypto/encoding.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/crypto/generation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/crypto/hashing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/data/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/data/config_processing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/data/csv_tools.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/data/json_tools.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/data/validation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/business.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/formatting.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/info.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/operations.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/ranges.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/timezone.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/datetime/validation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/decorators.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/diagrams/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/diagrams/mermaid.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/diagrams/plantuml.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/excel/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/excel/formatting.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/excel/reading.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/excel/writing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/exceptions.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/file_system/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/file_system/editor.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/file_system/info.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/file_system/operations.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/file_system/tree.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/file_system/validation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/html/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/html/generation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/html/parsing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/image/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/image/manipulation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/image/reading.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/logging/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/logging/parsing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/logging/rotation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/logging/structured.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/markdown/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/markdown/generation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/markdown/parsing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/network/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/network/dns.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/network/http_client.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/pdf/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/pdf/creation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/pdf/manipulation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/pdf/parsing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/powerpoint/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/powerpoint/reading.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/powerpoint/writing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/system/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/system/environment.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/system/info.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/system/processes.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/system/runtime.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/system/shell.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/text/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/text/processing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/todo/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/todo/operations.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/todo/validation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/types.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/utilities/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/utilities/debugging.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/utilities/timing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/word/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/word/reading.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/word/styles.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/word/writing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/xml/__init__.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/xml/authoring.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/xml/parsing.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/xml/transformation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/xml/validation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools.egg-info/SOURCES.txt +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools.egg-info/dependency_links.txt +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools.egg-info/top_level.txt +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/tests/test_confirmation.py +0 -0
- {basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/tests/test_helpers_new_modules.py +0 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: basic-open-agent-tools
|
|
3
|
+
Version: 1.3.2
|
|
4
|
+
Summary: An open foundational toolkit providing essential components for building AI agents with minimal dependencies for local (non-HTTP/API) actions.
|
|
5
|
+
Author-email: Open Agent Tools <unseriousai@gmail.com>
|
|
6
|
+
Project-URL: Homepage, https://github.com/open-agent-tools/basic-open-agent-tools
|
|
7
|
+
Project-URL: Documentation, https://github.com/open-agent-tools/basic-open-agent-tools#readme
|
|
8
|
+
Project-URL: Repository, https://github.com/open-agent-tools/basic-open-agent-tools
|
|
9
|
+
Project-URL: Issues, https://github.com/open-agent-tools/basic-open-agent-tools/issues
|
|
10
|
+
Keywords: ai,agents,toolkit,automation,local-tools
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Natural Language :: English
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Communications :: Chat
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
25
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
26
|
+
Classifier: Typing :: Typed
|
|
27
|
+
Requires-Python: >=3.9
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
License-File: LICENSE
|
|
30
|
+
Provides-Extra: system
|
|
31
|
+
Requires-Dist: psutil>=5.9.0; extra == "system"
|
|
32
|
+
Provides-Extra: pdf
|
|
33
|
+
Requires-Dist: PyPDF2>=3.0.0; extra == "pdf"
|
|
34
|
+
Requires-Dist: reportlab>=4.0.0; extra == "pdf"
|
|
35
|
+
Provides-Extra: xml
|
|
36
|
+
Requires-Dist: lxml>=4.9.0; extra == "xml"
|
|
37
|
+
Requires-Dist: defusedxml>=0.7.1; extra == "xml"
|
|
38
|
+
Provides-Extra: word
|
|
39
|
+
Requires-Dist: python-docx>=0.8.11; extra == "word"
|
|
40
|
+
Provides-Extra: excel
|
|
41
|
+
Requires-Dist: openpyxl>=3.1.0; extra == "excel"
|
|
42
|
+
Provides-Extra: powerpoint
|
|
43
|
+
Requires-Dist: python-pptx>=0.6.21; extra == "powerpoint"
|
|
44
|
+
Provides-Extra: image
|
|
45
|
+
Requires-Dist: Pillow>=10.0.0; extra == "image"
|
|
46
|
+
Provides-Extra: data
|
|
47
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "data"
|
|
48
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "data"
|
|
49
|
+
Requires-Dist: tomli-w>=1.0.0; extra == "data"
|
|
50
|
+
Provides-Extra: all
|
|
51
|
+
Requires-Dist: psutil>=5.9.0; extra == "all"
|
|
52
|
+
Requires-Dist: PyPDF2>=3.0.0; extra == "all"
|
|
53
|
+
Requires-Dist: reportlab>=4.0.0; extra == "all"
|
|
54
|
+
Requires-Dist: lxml>=4.9.0; extra == "all"
|
|
55
|
+
Requires-Dist: defusedxml>=0.7.1; extra == "all"
|
|
56
|
+
Requires-Dist: python-docx>=0.8.11; extra == "all"
|
|
57
|
+
Requires-Dist: openpyxl>=3.1.0; extra == "all"
|
|
58
|
+
Requires-Dist: python-pptx>=0.6.21; extra == "all"
|
|
59
|
+
Requires-Dist: Pillow>=10.0.0; extra == "all"
|
|
60
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "all"
|
|
61
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "all"
|
|
62
|
+
Requires-Dist: tomli-w>=1.0.0; extra == "all"
|
|
63
|
+
Provides-Extra: strands
|
|
64
|
+
Requires-Dist: strands>=0.1.0; extra == "strands"
|
|
65
|
+
Requires-Dist: anthropic>=0.25.0; extra == "strands"
|
|
66
|
+
Requires-Dist: python-dotenv>=1.0.0; extra == "strands"
|
|
67
|
+
Provides-Extra: dev
|
|
68
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
69
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
70
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
71
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
72
|
+
Requires-Dist: mypy>=1.0.0; extra == "dev"
|
|
73
|
+
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
|
|
74
|
+
Requires-Dist: freezegun>=1.2.0; extra == "dev"
|
|
75
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "dev"
|
|
76
|
+
Requires-Dist: tomli-w>=1.0.0; extra == "dev"
|
|
77
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "dev"
|
|
78
|
+
Requires-Dist: google-adk[eval]>=0.1.0; extra == "dev"
|
|
79
|
+
Requires-Dist: psutil>=5.9.0; extra == "dev"
|
|
80
|
+
Requires-Dist: PyPDF2>=3.0.0; extra == "dev"
|
|
81
|
+
Requires-Dist: reportlab>=4.0.0; extra == "dev"
|
|
82
|
+
Requires-Dist: lxml>=4.9.0; extra == "dev"
|
|
83
|
+
Requires-Dist: defusedxml>=0.7.1; extra == "dev"
|
|
84
|
+
Requires-Dist: python-docx>=0.8.11; extra == "dev"
|
|
85
|
+
Requires-Dist: openpyxl>=3.1.0; extra == "dev"
|
|
86
|
+
Requires-Dist: python-pptx>=0.6.21; extra == "dev"
|
|
87
|
+
Requires-Dist: Pillow>=10.0.0; extra == "dev"
|
|
88
|
+
Requires-Dist: strands>=0.1.0; extra == "dev"
|
|
89
|
+
Requires-Dist: anthropic>=0.25.0; extra == "dev"
|
|
90
|
+
Requires-Dist: python-dotenv>=1.0.0; extra == "dev"
|
|
91
|
+
Provides-Extra: test
|
|
92
|
+
Requires-Dist: pytest>=7.0.0; extra == "test"
|
|
93
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
|
|
94
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
|
|
95
|
+
Requires-Dist: freezegun>=1.2.0; extra == "test"
|
|
96
|
+
Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "test"
|
|
97
|
+
Requires-Dist: tomli-w>=1.0.0; extra == "test"
|
|
98
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "test"
|
|
99
|
+
Requires-Dist: google-adk[eval]>=0.1.0; extra == "test"
|
|
100
|
+
Requires-Dist: psutil>=5.9.0; extra == "test"
|
|
101
|
+
Requires-Dist: PyPDF2>=3.0.0; extra == "test"
|
|
102
|
+
Requires-Dist: reportlab>=4.0.0; extra == "test"
|
|
103
|
+
Requires-Dist: lxml>=4.9.0; extra == "test"
|
|
104
|
+
Requires-Dist: defusedxml>=0.7.1; extra == "test"
|
|
105
|
+
Requires-Dist: python-docx>=0.8.11; extra == "test"
|
|
106
|
+
Requires-Dist: openpyxl>=3.1.0; extra == "test"
|
|
107
|
+
Requires-Dist: python-pptx>=0.6.21; extra == "test"
|
|
108
|
+
Requires-Dist: Pillow>=10.0.0; extra == "test"
|
|
109
|
+
Dynamic: license-file
|
|
110
|
+
|
|
111
|
+
# basic-open-agent-tools
|
|
112
|
+
|
|
113
|
+
An open foundational toolkit providing essential components for building AI agents with minimal dependencies for local (non-HTTP/API) actions.
|
|
114
|
+
|
|
115
|
+
## Installation
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
pip install basic-open-agent-tools
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Or with UV:
|
|
122
|
+
```bash
|
|
123
|
+
uv add basic-open-agent-tools
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Optional Dependencies
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
pip install basic-open-agent-tools[all] # Everything
|
|
130
|
+
pip install basic-open-agent-tools[system] # Process management, system info
|
|
131
|
+
pip install basic-open-agent-tools[pdf] # PDF reading and creation
|
|
132
|
+
pip install basic-open-agent-tools[xml] # XML parsing and validation
|
|
133
|
+
pip install basic-open-agent-tools[word] # Word document operations
|
|
134
|
+
pip install basic-open-agent-tools[excel] # Excel spreadsheet operations
|
|
135
|
+
pip install basic-open-agent-tools[powerpoint] # PowerPoint presentations
|
|
136
|
+
pip install basic-open-agent-tools[image] # Image processing
|
|
137
|
+
pip install basic-open-agent-tools[data] # YAML and TOML support
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Quick Start
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
import basic_open_agent_tools as boat
|
|
144
|
+
|
|
145
|
+
# Essential tools for general-purpose agents (~23 tools)
|
|
146
|
+
tools = boat.load_essential()
|
|
147
|
+
|
|
148
|
+
# Pre-configured loadouts for specific roles
|
|
149
|
+
tools = boat.load_coder_loadout() # ~105 tools for development
|
|
150
|
+
tools = boat.load_docs_loadout() # ~130 tools for documentation
|
|
151
|
+
tools = boat.load_data_analyst_loadout() # ~115 tools for data analysis
|
|
152
|
+
tools = boat.load_web_publisher_loadout() # ~90 tools for web content
|
|
153
|
+
tools = boat.load_visual_designer_loadout() # ~60 tools for graphics
|
|
154
|
+
tools = boat.load_office_suite_loadout() # ~80 tools for Office work
|
|
155
|
+
|
|
156
|
+
# Or load everything
|
|
157
|
+
tools = boat.load_all_tools() # All 337 functions
|
|
158
|
+
|
|
159
|
+
# Use with any agent framework
|
|
160
|
+
from google.adk.agents import Agent
|
|
161
|
+
agent = Agent(tools=boat.load_coder_loadout())
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Available Modules
|
|
165
|
+
|
|
166
|
+
**21 modules** with **337 total functions** — all with `@strands_tool` decorator and Google ADK compatible signatures.
|
|
167
|
+
|
|
168
|
+
| Module | Count | Description |
|
|
169
|
+
|--------|------:|-------------|
|
|
170
|
+
| **Core Operations** | | |
|
|
171
|
+
| `file_system` | 19 | File/directory operations, tree generation |
|
|
172
|
+
| `text` | 10 | Text processing, case conversion, formatting |
|
|
173
|
+
| `data` | 23 | JSON, CSV, YAML, TOML processing and validation |
|
|
174
|
+
| `datetime` | 46 | Date/time operations, timezones, formatting, parsing |
|
|
175
|
+
| **Document Processing** | | |
|
|
176
|
+
| `excel` | 24 | Spreadsheet reading, writing, formatting, charts |
|
|
177
|
+
| `xml` | 24 | XML parsing, authoring, validation, transformation |
|
|
178
|
+
| `pdf` | 20 | PDF creation, reading, manipulation |
|
|
179
|
+
| `word` | 18 | Word document operations and formatting |
|
|
180
|
+
| `html` | 17 | HTML generation and parsing |
|
|
181
|
+
| `diagrams` | 16 | Mermaid and PlantUML diagram generation |
|
|
182
|
+
| `markdown` | 17 | Markdown generation, parsing, HTML conversion |
|
|
183
|
+
| `powerpoint` | 10 | PowerPoint presentation operations |
|
|
184
|
+
| **System & Network** | | |
|
|
185
|
+
| `system` | 19 | Shell commands, process management, environment |
|
|
186
|
+
| `network` | 4 | HTTP client, DNS lookup, port checking |
|
|
187
|
+
| `utilities` | 8 | Debugging, timing, performance tools |
|
|
188
|
+
| **Security & Data** | | |
|
|
189
|
+
| `crypto` | 14 | Hashing, encoding, UUID/token generation |
|
|
190
|
+
| `color` | 14 | Color conversion, palette generation, analysis |
|
|
191
|
+
| `image` | 12 | Image manipulation and metadata reading |
|
|
192
|
+
| `archive` | 9 | ZIP, TAR, GZIP, BZIP2, XZ compression |
|
|
193
|
+
| **Task Management** | | |
|
|
194
|
+
| `todo` | 8 | Task creation, validation, management |
|
|
195
|
+
| `logging` | 5 | Structured logging and log rotation |
|
|
196
|
+
|
|
197
|
+
## Key Features
|
|
198
|
+
|
|
199
|
+
- **Agent-Friendly** — Simplified type signatures prevent "signature too complex" errors
|
|
200
|
+
- **Minimal Dependencies** — Pure Python core; optional deps only when needed
|
|
201
|
+
- **Modular** — Load only what you need
|
|
202
|
+
- **Multi-Framework** — Works with Google ADK, LangChain, Strands Agents, custom frameworks
|
|
203
|
+
- **Smart Confirmations** — Write/delete operations adapt to interactive, agent, or automation contexts
|
|
204
|
+
- **Pre-configured Loadouts** — 6 curated tool bundles optimized for specific use cases
|
|
205
|
+
|
|
206
|
+
## Loadouts
|
|
207
|
+
|
|
208
|
+
Choose the right loadout for your agent's role to minimize token usage and maximize relevance:
|
|
209
|
+
|
|
210
|
+
| Loadout | Tools | Best For | Includes |
|
|
211
|
+
|---------|------:|----------|----------|
|
|
212
|
+
| `load_coder_loadout()` | ~105 | Dev, DevOps, automation | File system, system ops, network, logging, crypto, archive, configs |
|
|
213
|
+
| `load_docs_loadout()` | ~130 | Technical writing, reports | Word, PDF, Markdown, HTML, diagrams, images, text |
|
|
214
|
+
| `load_data_analyst_loadout()` | ~115 | Data/financial analysis, BI | Excel, CSV, validation, diagrams, JSON, YAML, XML |
|
|
215
|
+
| `load_web_publisher_loadout()` | ~90 | Web dev, content management | HTML, XML, Markdown, network, text processing |
|
|
216
|
+
| `load_visual_designer_loadout()` | ~60 | Graphics, infographics | Image processing, diagrams, color tools |
|
|
217
|
+
| `load_office_suite_loadout()` | ~80 | Office productivity | Excel, Word, PowerPoint, file operations |
|
|
218
|
+
|
|
219
|
+
## Tool Loaders
|
|
220
|
+
|
|
221
|
+
Beyond loadouts, build custom tool sets by combining loaders:
|
|
222
|
+
|
|
223
|
+
```python
|
|
224
|
+
import basic_open_agent_tools as boat
|
|
225
|
+
|
|
226
|
+
# Use-case focused loaders
|
|
227
|
+
boat.load_essential() # ~23 most commonly needed tools
|
|
228
|
+
boat.load_core_readonly() # 28 read-only tools (filesystem, text, data parsing)
|
|
229
|
+
boat.load_converters() # 78 pure transformation tools (text, datetime, crypto, color)
|
|
230
|
+
boat.load_document_readers() # Extract content from PDF, Word, Excel, PowerPoint, images
|
|
231
|
+
boat.load_writers() # All file creation/modification tools
|
|
232
|
+
boat.load_analyst_tools() # Data analysis and validation tools
|
|
233
|
+
boat.load_web_tools() # HTML, Markdown, network operations
|
|
234
|
+
boat.load_devtools() # Debugging, logging, performance measurement
|
|
235
|
+
boat.load_structured_data_tools() # CSV, JSON, XML, YAML, TOML, INI
|
|
236
|
+
boat.load_office_suite() # Excel, Word, PowerPoint tools
|
|
237
|
+
boat.load_markup_tools() # HTML, Markdown, XML processing
|
|
238
|
+
|
|
239
|
+
# Per-module loaders (21 total — one for each module)
|
|
240
|
+
boat.load_all_filesystem_tools()
|
|
241
|
+
boat.load_all_text_tools()
|
|
242
|
+
boat.load_all_data_tools()
|
|
243
|
+
# ... etc.
|
|
244
|
+
|
|
245
|
+
# Combine and deduplicate
|
|
246
|
+
custom = boat.merge_tool_lists(
|
|
247
|
+
boat.load_all_filesystem_tools(),
|
|
248
|
+
boat.load_all_text_tools(),
|
|
249
|
+
boat.load_all_data_tools(),
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
# Inspect available tools
|
|
253
|
+
boat.list_all_available_tools() # List all tool names
|
|
254
|
+
boat.get_tool_info(some_tool) # Get tool metadata
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Safety Features
|
|
258
|
+
|
|
259
|
+
All write/delete operations include a `skip_confirm` parameter with three modes:
|
|
260
|
+
|
|
261
|
+
| Mode | When | Behavior |
|
|
262
|
+
|------|------|----------|
|
|
263
|
+
| **Bypass** | `skip_confirm=True` or `BYPASS_TOOL_CONSENT=true` env var | Proceeds immediately — for CI/CD and automation |
|
|
264
|
+
| **Interactive** | Terminal with `skip_confirm=False` | Prompts user with `y/n` and preview info |
|
|
265
|
+
| **Agent** | Non-TTY with `skip_confirm=False` | Raises `CONFIRMATION_REQUIRED` error; LLM can ask user and retry |
|
|
266
|
+
|
|
267
|
+
```python
|
|
268
|
+
# Safe by default — adapts to context
|
|
269
|
+
boat.file_system.write_file_from_string(
|
|
270
|
+
file_path="/tmp/example.txt",
|
|
271
|
+
content="Hello, World!",
|
|
272
|
+
skip_confirm=False # Interactive prompt OR agent error
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
# Explicit bypass
|
|
276
|
+
boat.file_system.write_file_from_string(
|
|
277
|
+
file_path="/tmp/example.txt",
|
|
278
|
+
content="Updated content",
|
|
279
|
+
skip_confirm=True
|
|
280
|
+
)
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Documentation
|
|
284
|
+
|
|
285
|
+
- **[Getting Started](docs/getting-started.md)** — Installation and setup
|
|
286
|
+
- **[API Reference](docs/api-reference.md)** — Complete function reference
|
|
287
|
+
- **[Examples](docs/examples.md)** — Usage examples and patterns
|
|
288
|
+
- **[FAQ](docs/faq.md)** — Troubleshooting and common questions
|
|
289
|
+
- **[Contributing](docs/contributing.md)** — Development guidelines
|
|
290
|
+
- **[Changelog](CHANGELOG.md)** — Version history
|
|
291
|
+
|
|
292
|
+
## Contributing
|
|
293
|
+
|
|
294
|
+
We welcome contributions! See our [Contributing Guide](docs/contributing.md) for development setup, coding standards, and pull request process.
|
|
295
|
+
|
|
296
|
+
## License
|
|
297
|
+
|
|
298
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# basic-open-agent-tools
|
|
2
|
+
|
|
3
|
+
An open foundational toolkit providing essential components for building AI agents with minimal dependencies for local (non-HTTP/API) actions.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install basic-open-agent-tools
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or with UV:
|
|
12
|
+
```bash
|
|
13
|
+
uv add basic-open-agent-tools
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Optional Dependencies
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pip install basic-open-agent-tools[all] # Everything
|
|
20
|
+
pip install basic-open-agent-tools[system] # Process management, system info
|
|
21
|
+
pip install basic-open-agent-tools[pdf] # PDF reading and creation
|
|
22
|
+
pip install basic-open-agent-tools[xml] # XML parsing and validation
|
|
23
|
+
pip install basic-open-agent-tools[word] # Word document operations
|
|
24
|
+
pip install basic-open-agent-tools[excel] # Excel spreadsheet operations
|
|
25
|
+
pip install basic-open-agent-tools[powerpoint] # PowerPoint presentations
|
|
26
|
+
pip install basic-open-agent-tools[image] # Image processing
|
|
27
|
+
pip install basic-open-agent-tools[data] # YAML and TOML support
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
import basic_open_agent_tools as boat
|
|
34
|
+
|
|
35
|
+
# Essential tools for general-purpose agents (~23 tools)
|
|
36
|
+
tools = boat.load_essential()
|
|
37
|
+
|
|
38
|
+
# Pre-configured loadouts for specific roles
|
|
39
|
+
tools = boat.load_coder_loadout() # ~105 tools for development
|
|
40
|
+
tools = boat.load_docs_loadout() # ~130 tools for documentation
|
|
41
|
+
tools = boat.load_data_analyst_loadout() # ~115 tools for data analysis
|
|
42
|
+
tools = boat.load_web_publisher_loadout() # ~90 tools for web content
|
|
43
|
+
tools = boat.load_visual_designer_loadout() # ~60 tools for graphics
|
|
44
|
+
tools = boat.load_office_suite_loadout() # ~80 tools for Office work
|
|
45
|
+
|
|
46
|
+
# Or load everything
|
|
47
|
+
tools = boat.load_all_tools() # All 337 functions
|
|
48
|
+
|
|
49
|
+
# Use with any agent framework
|
|
50
|
+
from google.adk.agents import Agent
|
|
51
|
+
agent = Agent(tools=boat.load_coder_loadout())
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Available Modules
|
|
55
|
+
|
|
56
|
+
**21 modules** with **337 total functions** — all with `@strands_tool` decorator and Google ADK compatible signatures.
|
|
57
|
+
|
|
58
|
+
| Module | Count | Description |
|
|
59
|
+
|--------|------:|-------------|
|
|
60
|
+
| **Core Operations** | | |
|
|
61
|
+
| `file_system` | 19 | File/directory operations, tree generation |
|
|
62
|
+
| `text` | 10 | Text processing, case conversion, formatting |
|
|
63
|
+
| `data` | 23 | JSON, CSV, YAML, TOML processing and validation |
|
|
64
|
+
| `datetime` | 46 | Date/time operations, timezones, formatting, parsing |
|
|
65
|
+
| **Document Processing** | | |
|
|
66
|
+
| `excel` | 24 | Spreadsheet reading, writing, formatting, charts |
|
|
67
|
+
| `xml` | 24 | XML parsing, authoring, validation, transformation |
|
|
68
|
+
| `pdf` | 20 | PDF creation, reading, manipulation |
|
|
69
|
+
| `word` | 18 | Word document operations and formatting |
|
|
70
|
+
| `html` | 17 | HTML generation and parsing |
|
|
71
|
+
| `diagrams` | 16 | Mermaid and PlantUML diagram generation |
|
|
72
|
+
| `markdown` | 17 | Markdown generation, parsing, HTML conversion |
|
|
73
|
+
| `powerpoint` | 10 | PowerPoint presentation operations |
|
|
74
|
+
| **System & Network** | | |
|
|
75
|
+
| `system` | 19 | Shell commands, process management, environment |
|
|
76
|
+
| `network` | 4 | HTTP client, DNS lookup, port checking |
|
|
77
|
+
| `utilities` | 8 | Debugging, timing, performance tools |
|
|
78
|
+
| **Security & Data** | | |
|
|
79
|
+
| `crypto` | 14 | Hashing, encoding, UUID/token generation |
|
|
80
|
+
| `color` | 14 | Color conversion, palette generation, analysis |
|
|
81
|
+
| `image` | 12 | Image manipulation and metadata reading |
|
|
82
|
+
| `archive` | 9 | ZIP, TAR, GZIP, BZIP2, XZ compression |
|
|
83
|
+
| **Task Management** | | |
|
|
84
|
+
| `todo` | 8 | Task creation, validation, management |
|
|
85
|
+
| `logging` | 5 | Structured logging and log rotation |
|
|
86
|
+
|
|
87
|
+
## Key Features
|
|
88
|
+
|
|
89
|
+
- **Agent-Friendly** — Simplified type signatures prevent "signature too complex" errors
|
|
90
|
+
- **Minimal Dependencies** — Pure Python core; optional deps only when needed
|
|
91
|
+
- **Modular** — Load only what you need
|
|
92
|
+
- **Multi-Framework** — Works with Google ADK, LangChain, Strands Agents, custom frameworks
|
|
93
|
+
- **Smart Confirmations** — Write/delete operations adapt to interactive, agent, or automation contexts
|
|
94
|
+
- **Pre-configured Loadouts** — 6 curated tool bundles optimized for specific use cases
|
|
95
|
+
|
|
96
|
+
## Loadouts
|
|
97
|
+
|
|
98
|
+
Choose the right loadout for your agent's role to minimize token usage and maximize relevance:
|
|
99
|
+
|
|
100
|
+
| Loadout | Tools | Best For | Includes |
|
|
101
|
+
|---------|------:|----------|----------|
|
|
102
|
+
| `load_coder_loadout()` | ~105 | Dev, DevOps, automation | File system, system ops, network, logging, crypto, archive, configs |
|
|
103
|
+
| `load_docs_loadout()` | ~130 | Technical writing, reports | Word, PDF, Markdown, HTML, diagrams, images, text |
|
|
104
|
+
| `load_data_analyst_loadout()` | ~115 | Data/financial analysis, BI | Excel, CSV, validation, diagrams, JSON, YAML, XML |
|
|
105
|
+
| `load_web_publisher_loadout()` | ~90 | Web dev, content management | HTML, XML, Markdown, network, text processing |
|
|
106
|
+
| `load_visual_designer_loadout()` | ~60 | Graphics, infographics | Image processing, diagrams, color tools |
|
|
107
|
+
| `load_office_suite_loadout()` | ~80 | Office productivity | Excel, Word, PowerPoint, file operations |
|
|
108
|
+
|
|
109
|
+
## Tool Loaders
|
|
110
|
+
|
|
111
|
+
Beyond loadouts, build custom tool sets by combining loaders:
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
import basic_open_agent_tools as boat
|
|
115
|
+
|
|
116
|
+
# Use-case focused loaders
|
|
117
|
+
boat.load_essential() # ~23 most commonly needed tools
|
|
118
|
+
boat.load_core_readonly() # 28 read-only tools (filesystem, text, data parsing)
|
|
119
|
+
boat.load_converters() # 78 pure transformation tools (text, datetime, crypto, color)
|
|
120
|
+
boat.load_document_readers() # Extract content from PDF, Word, Excel, PowerPoint, images
|
|
121
|
+
boat.load_writers() # All file creation/modification tools
|
|
122
|
+
boat.load_analyst_tools() # Data analysis and validation tools
|
|
123
|
+
boat.load_web_tools() # HTML, Markdown, network operations
|
|
124
|
+
boat.load_devtools() # Debugging, logging, performance measurement
|
|
125
|
+
boat.load_structured_data_tools() # CSV, JSON, XML, YAML, TOML, INI
|
|
126
|
+
boat.load_office_suite() # Excel, Word, PowerPoint tools
|
|
127
|
+
boat.load_markup_tools() # HTML, Markdown, XML processing
|
|
128
|
+
|
|
129
|
+
# Per-module loaders (21 total — one for each module)
|
|
130
|
+
boat.load_all_filesystem_tools()
|
|
131
|
+
boat.load_all_text_tools()
|
|
132
|
+
boat.load_all_data_tools()
|
|
133
|
+
# ... etc.
|
|
134
|
+
|
|
135
|
+
# Combine and deduplicate
|
|
136
|
+
custom = boat.merge_tool_lists(
|
|
137
|
+
boat.load_all_filesystem_tools(),
|
|
138
|
+
boat.load_all_text_tools(),
|
|
139
|
+
boat.load_all_data_tools(),
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
# Inspect available tools
|
|
143
|
+
boat.list_all_available_tools() # List all tool names
|
|
144
|
+
boat.get_tool_info(some_tool) # Get tool metadata
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Safety Features
|
|
148
|
+
|
|
149
|
+
All write/delete operations include a `skip_confirm` parameter with three modes:
|
|
150
|
+
|
|
151
|
+
| Mode | When | Behavior |
|
|
152
|
+
|------|------|----------|
|
|
153
|
+
| **Bypass** | `skip_confirm=True` or `BYPASS_TOOL_CONSENT=true` env var | Proceeds immediately — for CI/CD and automation |
|
|
154
|
+
| **Interactive** | Terminal with `skip_confirm=False` | Prompts user with `y/n` and preview info |
|
|
155
|
+
| **Agent** | Non-TTY with `skip_confirm=False` | Raises `CONFIRMATION_REQUIRED` error; LLM can ask user and retry |
|
|
156
|
+
|
|
157
|
+
```python
|
|
158
|
+
# Safe by default — adapts to context
|
|
159
|
+
boat.file_system.write_file_from_string(
|
|
160
|
+
file_path="/tmp/example.txt",
|
|
161
|
+
content="Hello, World!",
|
|
162
|
+
skip_confirm=False # Interactive prompt OR agent error
|
|
163
|
+
)
|
|
164
|
+
|
|
165
|
+
# Explicit bypass
|
|
166
|
+
boat.file_system.write_file_from_string(
|
|
167
|
+
file_path="/tmp/example.txt",
|
|
168
|
+
content="Updated content",
|
|
169
|
+
skip_confirm=True
|
|
170
|
+
)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Documentation
|
|
174
|
+
|
|
175
|
+
- **[Getting Started](docs/getting-started.md)** — Installation and setup
|
|
176
|
+
- **[API Reference](docs/api-reference.md)** — Complete function reference
|
|
177
|
+
- **[Examples](docs/examples.md)** — Usage examples and patterns
|
|
178
|
+
- **[FAQ](docs/faq.md)** — Troubleshooting and common questions
|
|
179
|
+
- **[Contributing](docs/contributing.md)** — Development guidelines
|
|
180
|
+
- **[Changelog](CHANGELOG.md)** — Version history
|
|
181
|
+
|
|
182
|
+
## Contributing
|
|
183
|
+
|
|
184
|
+
We welcome contributions! See our [Contributing Guide](docs/contributing.md) for development setup, coding standards, and pull request process.
|
|
185
|
+
|
|
186
|
+
## License
|
|
187
|
+
|
|
188
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta:__legacy__"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "basic-open-agent-tools"
|
|
7
|
-
version = "1.3.
|
|
7
|
+
version = "1.3.2"
|
|
8
8
|
description = "An open foundational toolkit providing essential components for building AI agents with minimal dependencies for local (non-HTTP/API) actions."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -108,7 +108,7 @@ dev = [
|
|
|
108
108
|
"tomli>=2.0.0; python_version < '3.11'",
|
|
109
109
|
"tomli-w>=1.0.0",
|
|
110
110
|
"pyyaml>=6.0.0",
|
|
111
|
-
"google-adk>=0.1.0",
|
|
111
|
+
"google-adk[eval]>=0.1.0",
|
|
112
112
|
"psutil>=5.9.0",
|
|
113
113
|
"PyPDF2>=3.0.0",
|
|
114
114
|
"reportlab>=4.0.0",
|
|
@@ -131,7 +131,7 @@ test = [
|
|
|
131
131
|
"tomli>=2.0.0; python_version < '3.11'",
|
|
132
132
|
"tomli-w>=1.0.0",
|
|
133
133
|
"pyyaml>=6.0.0",
|
|
134
|
-
"google-adk>=0.1.0",
|
|
134
|
+
"google-adk[eval]>=0.1.0",
|
|
135
135
|
"psutil>=5.9.0",
|
|
136
136
|
"PyPDF2>=3.0.0",
|
|
137
137
|
"reportlab>=4.0.0",
|
|
@@ -191,10 +191,18 @@ warn_unused_ignores = false # Changed: optional strands import creates unused i
|
|
|
191
191
|
warn_no_return = true
|
|
192
192
|
warn_unreachable = true
|
|
193
193
|
strict_equality = true
|
|
194
|
+
exclude = [
|
|
195
|
+
'venv',
|
|
196
|
+
'.venv',
|
|
197
|
+
'env',
|
|
198
|
+
'.env',
|
|
199
|
+
]
|
|
194
200
|
|
|
195
201
|
[[tool.mypy.overrides]]
|
|
196
202
|
module = ["strands", "strands.*", "pkg_resources", "PyPDF2", "reportlab", "reportlab.*", "docx", "docx.*", "openpyxl", "openpyxl.*", "pptx", "pptx.*", "PIL", "PIL.*", "defusedxml", "defusedxml.*"]
|
|
197
203
|
ignore_missing_imports = true
|
|
204
|
+
follow_imports = "skip"
|
|
205
|
+
ignore_errors = true
|
|
198
206
|
|
|
199
207
|
[tool.pytest.ini_options]
|
|
200
208
|
testpaths = ["tests"]
|
{basic_open_agent_tools-1.3.0 → basic_open_agent_tools-1.3.2}/src/basic_open_agent_tools/helpers.py
RENAMED
|
@@ -1163,8 +1163,9 @@ def load_essential() -> list[Callable[..., Any]]:
|
|
|
1163
1163
|
Perfect for agents that need basic file operations, data processing,
|
|
1164
1164
|
and common utilities without overwhelming them with specialized tools.
|
|
1165
1165
|
|
|
1166
|
-
Includes (~
|
|
1167
|
-
- File I/O: read, write, list, check existence (
|
|
1166
|
+
Includes (~24 essential tools):
|
|
1167
|
+
- File I/O: read, write, list, check existence, cwd (8 tools)
|
|
1168
|
+
- Shell: execute shell commands (1 tool)
|
|
1168
1169
|
- Data: JSON/CSV/YAML read/write (6 tools)
|
|
1169
1170
|
- Text: whitespace cleaning (1 tool)
|
|
1170
1171
|
- Time: current date and datetime (2 tools)
|
|
@@ -1178,7 +1179,7 @@ def load_essential() -> list[Callable[..., Any]]:
|
|
|
1178
1179
|
|
|
1179
1180
|
Example:
|
|
1180
1181
|
>>> essential_tools = load_essential()
|
|
1181
|
-
>>> len(essential_tools) >=
|
|
1182
|
+
>>> len(essential_tools) >= 22
|
|
1182
1183
|
True
|
|
1183
1184
|
>>> # Use for a general-purpose agent
|
|
1184
1185
|
>>> agent = Agent(
|
|
@@ -1199,11 +1200,12 @@ def load_essential() -> list[Callable[..., Any]]:
|
|
|
1199
1200
|
write_file_from_string,
|
|
1200
1201
|
)
|
|
1201
1202
|
from .network import http_request
|
|
1203
|
+
from .system import execute_shell_command, get_current_directory
|
|
1202
1204
|
from .text import clean_whitespace
|
|
1203
1205
|
|
|
1204
1206
|
tools: list[Callable[..., Any]] = []
|
|
1205
1207
|
|
|
1206
|
-
# Core file operations (
|
|
1208
|
+
# Core file operations (8 tools)
|
|
1207
1209
|
tools.extend(
|
|
1208
1210
|
[
|
|
1209
1211
|
read_file_to_string,
|
|
@@ -1213,6 +1215,7 @@ def load_essential() -> list[Callable[..., Any]]:
|
|
|
1213
1215
|
file_exists,
|
|
1214
1216
|
directory_exists,
|
|
1215
1217
|
delete_file,
|
|
1218
|
+
get_current_directory,
|
|
1216
1219
|
]
|
|
1217
1220
|
)
|
|
1218
1221
|
|
|
@@ -1237,6 +1240,9 @@ def load_essential() -> list[Callable[..., Any]]:
|
|
|
1237
1240
|
# Crypto utilities (2 tools)
|
|
1238
1241
|
tools.extend([hash_sha256, generate_uuid])
|
|
1239
1242
|
|
|
1243
|
+
# Shell (1 tool)
|
|
1244
|
+
tools.append(execute_shell_command)
|
|
1245
|
+
|
|
1240
1246
|
# Network (1 tool)
|
|
1241
1247
|
tools.append(http_request)
|
|
1242
1248
|
|
|
@@ -242,6 +242,9 @@ def _build_id_mapping(
|
|
|
242
242
|
) -> dict[int, int]:
|
|
243
243
|
"""Build mapping of old IDs to new IDs for renumbering.
|
|
244
244
|
|
|
245
|
+
Only renumber tasks that have ID conflicts with current tasks.
|
|
246
|
+
Non-conflicting tasks keep their original IDs.
|
|
247
|
+
|
|
245
248
|
Args:
|
|
246
249
|
file_tasks: Tasks from file (keyed by task ID)
|
|
247
250
|
current_tasks: Current tasks in memory (keyed by task ID)
|
|
@@ -251,20 +254,26 @@ def _build_id_mapping(
|
|
|
251
254
|
Dictionary mapping old_id -> new_id
|
|
252
255
|
"""
|
|
253
256
|
id_mapping = {}
|
|
254
|
-
current_next_id = next_id
|
|
255
257
|
|
|
256
|
-
#
|
|
258
|
+
# Assign IDs: conflicts get new IDs, non-conflicts keep original
|
|
257
259
|
for old_id in sorted(file_tasks.keys()):
|
|
258
|
-
if old_id in current_tasks:
|
|
259
|
-
# Conflict - assign new ID
|
|
260
|
-
id_mapping[old_id] = current_next_id
|
|
261
|
-
current_next_id += 1
|
|
262
|
-
else:
|
|
260
|
+
if old_id not in current_tasks:
|
|
263
261
|
# No conflict - keep original ID
|
|
264
262
|
id_mapping[old_id] = old_id
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
263
|
+
# Conflicts will be handled in the next loop
|
|
264
|
+
|
|
265
|
+
# Now handle conflicts by assigning sequential IDs
|
|
266
|
+
used_ids = set(current_tasks.keys()) | set(id_mapping.values())
|
|
267
|
+
new_id = next_id
|
|
268
|
+
|
|
269
|
+
for old_id in sorted(file_tasks.keys()):
|
|
270
|
+
if old_id in current_tasks:
|
|
271
|
+
# Conflict - find next available ID
|
|
272
|
+
while new_id in used_ids:
|
|
273
|
+
new_id += 1
|
|
274
|
+
id_mapping[old_id] = new_id
|
|
275
|
+
used_ids.add(new_id)
|
|
276
|
+
new_id += 1
|
|
268
277
|
|
|
269
278
|
return id_mapping
|
|
270
279
|
|