agent-gantry 0.1.0__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.
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/01-advanced-routing-orchestration.md +74 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/02-enterprise-security-governance.md +92 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/03-frictionless-onboarding.md +107 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/04-developer-experience-ui.md +109 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/05-smart-learning.md +121 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/06-state-management.md +146 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/README.md +96 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/bug_report.md +57 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
- agent_gantry-0.1.0/.github/ISSUE_TEMPLATE/general_feature_request.md +53 -0
- agent_gantry-0.1.0/.github/copilot-instructions.md +238 -0
- agent_gantry-0.1.0/.github/workflows/ci.yml +102 -0
- agent_gantry-0.1.0/.github/workflows/publish.yml +31 -0
- agent_gantry-0.1.0/.gitignore +92 -0
- agent_gantry-0.1.0/CHANGELOG.md +51 -0
- agent_gantry-0.1.0/CONTRIBUTING.md +358 -0
- agent_gantry-0.1.0/LICENSE +21 -0
- agent_gantry-0.1.0/PKG-INFO +768 -0
- agent_gantry-0.1.0/PUBLISHING.md +87 -0
- agent_gantry-0.1.0/QUICK_REFERENCE.md +257 -0
- agent_gantry-0.1.0/README.md +620 -0
- agent_gantry-0.1.0/agent_gantry/README.md +100 -0
- agent_gantry-0.1.0/agent_gantry/__init__.py +39 -0
- agent_gantry-0.1.0/agent_gantry/adapters/README.md +177 -0
- agent_gantry-0.1.0/agent_gantry/adapters/__init__.py +27 -0
- agent_gantry-0.1.0/agent_gantry/adapters/embedders/README.md +42 -0
- agent_gantry-0.1.0/agent_gantry/adapters/embedders/__init__.py +21 -0
- agent_gantry-0.1.0/agent_gantry/adapters/embedders/base.py +70 -0
- agent_gantry-0.1.0/agent_gantry/adapters/embedders/nomic.py +278 -0
- agent_gantry-0.1.0/agent_gantry/adapters/embedders/openai.py +59 -0
- agent_gantry-0.1.0/agent_gantry/adapters/embedders/simple.py +58 -0
- agent_gantry-0.1.0/agent_gantry/adapters/executors/README.md +36 -0
- agent_gantry-0.1.0/agent_gantry/adapters/executors/__init__.py +9 -0
- agent_gantry-0.1.0/agent_gantry/adapters/executors/a2a_executor.py +177 -0
- agent_gantry-0.1.0/agent_gantry/adapters/executors/base.py +73 -0
- agent_gantry-0.1.0/agent_gantry/adapters/executors/mcp_client.py +199 -0
- agent_gantry-0.1.0/agent_gantry/adapters/rerankers/README.md +29 -0
- agent_gantry-0.1.0/agent_gantry/adapters/rerankers/__init__.py +9 -0
- agent_gantry-0.1.0/agent_gantry/adapters/rerankers/base.py +39 -0
- agent_gantry-0.1.0/agent_gantry/adapters/rerankers/cohere.py +46 -0
- agent_gantry-0.1.0/agent_gantry/adapters/tool_spec/__init__.py +19 -0
- agent_gantry-0.1.0/agent_gantry/adapters/tool_spec/base.py +138 -0
- agent_gantry-0.1.0/agent_gantry/adapters/tool_spec/providers.py +526 -0
- agent_gantry-0.1.0/agent_gantry/adapters/tool_spec/registry.py +183 -0
- agent_gantry-0.1.0/agent_gantry/adapters/vector_stores/README.md +37 -0
- agent_gantry-0.1.0/agent_gantry/adapters/vector_stores/__init__.py +21 -0
- agent_gantry-0.1.0/agent_gantry/adapters/vector_stores/base.py +139 -0
- agent_gantry-0.1.0/agent_gantry/adapters/vector_stores/lancedb.py +690 -0
- agent_gantry-0.1.0/agent_gantry/adapters/vector_stores/memory.py +134 -0
- agent_gantry-0.1.0/agent_gantry/adapters/vector_stores/remote.py +104 -0
- agent_gantry-0.1.0/agent_gantry/cli/README.md +24 -0
- agent_gantry-0.1.0/agent_gantry/cli/__init__.py +11 -0
- agent_gantry-0.1.0/agent_gantry/cli/__main__.py +8 -0
- agent_gantry-0.1.0/agent_gantry/cli/main.py +83 -0
- agent_gantry-0.1.0/agent_gantry/core/README.md +212 -0
- agent_gantry-0.1.0/agent_gantry/core/__init__.py +19 -0
- agent_gantry-0.1.0/agent_gantry/core/context.py +108 -0
- agent_gantry-0.1.0/agent_gantry/core/executor.py +436 -0
- agent_gantry-0.1.0/agent_gantry/core/gantry.py +981 -0
- agent_gantry-0.1.0/agent_gantry/core/registry.py +194 -0
- agent_gantry-0.1.0/agent_gantry/core/router.py +399 -0
- agent_gantry-0.1.0/agent_gantry/core/security.py +164 -0
- agent_gantry-0.1.0/agent_gantry/integrations/README.md +273 -0
- agent_gantry-0.1.0/agent_gantry/integrations/__init__.py +19 -0
- agent_gantry-0.1.0/agent_gantry/integrations/decorator.py +614 -0
- agent_gantry-0.1.0/agent_gantry/integrations/framework_adapters.py +57 -0
- agent_gantry-0.1.0/agent_gantry/metrics/README.md +24 -0
- agent_gantry-0.1.0/agent_gantry/metrics/__init__.py +10 -0
- agent_gantry-0.1.0/agent_gantry/metrics/token_usage.py +152 -0
- agent_gantry-0.1.0/agent_gantry/observability/README.md +27 -0
- agent_gantry-0.1.0/agent_gantry/observability/__init__.py +17 -0
- agent_gantry-0.1.0/agent_gantry/observability/console.py +247 -0
- agent_gantry-0.1.0/agent_gantry/observability/opentelemetry_adapter.py +125 -0
- agent_gantry-0.1.0/agent_gantry/observability/telemetry.py +101 -0
- agent_gantry-0.1.0/agent_gantry/providers/README.md +28 -0
- agent_gantry-0.1.0/agent_gantry/providers/__init__.py +9 -0
- agent_gantry-0.1.0/agent_gantry/providers/a2a_client.py +208 -0
- agent_gantry-0.1.0/agent_gantry/schema/README.md +29 -0
- agent_gantry-0.1.0/agent_gantry/schema/__init__.py +77 -0
- agent_gantry-0.1.0/agent_gantry/schema/a2a.py +89 -0
- agent_gantry-0.1.0/agent_gantry/schema/config.py +158 -0
- agent_gantry-0.1.0/agent_gantry/schema/events.py +68 -0
- agent_gantry-0.1.0/agent_gantry/schema/execution.py +83 -0
- agent_gantry-0.1.0/agent_gantry/schema/introspection.py +130 -0
- agent_gantry-0.1.0/agent_gantry/schema/query.py +122 -0
- agent_gantry-0.1.0/agent_gantry/schema/skill.py +167 -0
- agent_gantry-0.1.0/agent_gantry/schema/tool.py +229 -0
- agent_gantry-0.1.0/agent_gantry/servers/README.md +29 -0
- agent_gantry-0.1.0/agent_gantry/servers/__init__.py +21 -0
- agent_gantry-0.1.0/agent_gantry/servers/a2a_server.py +234 -0
- agent_gantry-0.1.0/agent_gantry/servers/mcp_server.py +249 -0
- agent_gantry-0.1.0/docs/README.md +18 -0
- agent_gantry-0.1.0/docs/cli.md +39 -0
- agent_gantry-0.1.0/docs/configuration.md +212 -0
- agent_gantry-0.1.0/docs/index.md +17 -0
- agent_gantry-0.1.0/docs/issue_template_implementation.md +190 -0
- agent_gantry-0.1.0/docs/llm_sdk_compatibility.md +801 -0
- agent_gantry-0.1.0/docs/local_persistence_and_skills.md +129 -0
- agent_gantry-0.1.0/docs/phase2.md +374 -0
- agent_gantry-0.1.0/docs/phase5_mcp.md +365 -0
- agent_gantry-0.1.0/docs/phase6_a2a.md +382 -0
- agent_gantry-0.1.0/docs/semantic_tool_decorator.md +337 -0
- agent_gantry-0.1.0/docs/vector_store_llm_integration.md +127 -0
- agent_gantry-0.1.0/examples/README.md +117 -0
- agent_gantry-0.1.0/examples/agent_frameworks/README.md +54 -0
- agent_gantry-0.1.0/examples/agent_frameworks/agent_framework_example.py +72 -0
- agent_gantry-0.1.0/examples/agent_frameworks/autogen_example.py +60 -0
- agent_gantry-0.1.0/examples/agent_frameworks/crewai_example.py +79 -0
- agent_gantry-0.1.0/examples/agent_frameworks/generic_adapters_example.py +52 -0
- agent_gantry-0.1.0/examples/agent_frameworks/google_adk_example.py +90 -0
- agent_gantry-0.1.0/examples/agent_frameworks/langchain_example.py +80 -0
- agent_gantry-0.1.0/examples/agent_frameworks/langgraph_example.py +74 -0
- agent_gantry-0.1.0/examples/agent_frameworks/llamaindex_example.py +56 -0
- agent_gantry-0.1.0/examples/agent_frameworks/semantic_kernel_example.py +75 -0
- agent_gantry-0.1.0/examples/basics/README.md +19 -0
- agent_gantry-0.1.0/examples/basics/async_demo.py +36 -0
- agent_gantry-0.1.0/examples/basics/multi_tool_demo.py +111 -0
- agent_gantry-0.1.0/examples/basics/tool_creation_patterns.py +114 -0
- agent_gantry-0.1.0/examples/basics/tool_demo.py +36 -0
- agent_gantry-0.1.0/examples/execution/README.md +20 -0
- agent_gantry-0.1.0/examples/execution/batch_execution_demo.py +49 -0
- agent_gantry-0.1.0/examples/execution/circuit_breaker_demo.py +45 -0
- agent_gantry-0.1.0/examples/execution/security_demo.py +53 -0
- agent_gantry-0.1.0/examples/fast_track_demo.py +173 -0
- agent_gantry-0.1.0/examples/llm_integration/README.md +25 -0
- agent_gantry-0.1.0/examples/llm_integration/anthropic_demo.py +113 -0
- agent_gantry-0.1.0/examples/llm_integration/decorator_demo.py +59 -0
- agent_gantry-0.1.0/examples/llm_integration/google_genai_demo.py +137 -0
- agent_gantry-0.1.0/examples/llm_integration/groq_demo.py +100 -0
- agent_gantry-0.1.0/examples/llm_integration/llm_demo.py +149 -0
- agent_gantry-0.1.0/examples/llm_integration/mistral_demo.py +100 -0
- agent_gantry-0.1.0/examples/llm_integration/multi_turn_conversation.py +160 -0
- agent_gantry-0.1.0/examples/llm_integration/openai_demo.py +121 -0
- agent_gantry-0.1.0/examples/llm_integration/token_savings_demo.py +256 -0
- agent_gantry-0.1.0/examples/observability/README.md +16 -0
- agent_gantry-0.1.0/examples/observability/multi_provider_metrics_demo.py +59 -0
- agent_gantry-0.1.0/examples/observability/telemetry_demo.py +36 -0
- agent_gantry-0.1.0/examples/observability/token_savings_demo.py +101 -0
- agent_gantry-0.1.0/examples/project_demo/main.py +93 -0
- agent_gantry-0.1.0/examples/project_demo/tools/tools.py +2243 -0
- agent_gantry-0.1.0/examples/protocols/README.md +21 -0
- agent_gantry-0.1.0/examples/protocols/a2a_integration_demo.py +209 -0
- agent_gantry-0.1.0/examples/protocols/claude_desktop_config.json +14 -0
- agent_gantry-0.1.0/examples/protocols/mcp_integration_demo.py +201 -0
- agent_gantry-0.1.0/examples/routing/README.md +25 -0
- agent_gantry-0.1.0/examples/routing/custom_adapter_demo.py +65 -0
- agent_gantry-0.1.0/examples/routing/filtering_demo.py +47 -0
- agent_gantry-0.1.0/examples/routing/health_aware_routing_demo.py +68 -0
- agent_gantry-0.1.0/examples/routing/nomic_tool_demo.py +114 -0
- agent_gantry-0.1.0/examples/testing_limits/README.md +20 -0
- agent_gantry-0.1.0/examples/testing_limits/real_world_30_tools_test.py +311 -0
- agent_gantry-0.1.0/examples/testing_limits/stress_test_100_tools.py +157 -0
- agent_gantry-0.1.0/pyproject.toml +164 -0
- agent_gantry-0.1.0/tests/README.md +29 -0
- agent_gantry-0.1.0/tests/__init__.py +3 -0
- agent_gantry-0.1.0/tests/conftest.py +93 -0
- agent_gantry-0.1.0/tests/test_decorator.py +572 -0
- agent_gantry-0.1.0/tests/test_examples_agent_frameworks.py +109 -0
- agent_gantry-0.1.0/tests/test_framework_adapters.py +36 -0
- agent_gantry-0.1.0/tests/test_gantry.py +232 -0
- agent_gantry-0.1.0/tests/test_lancedb_nomic.py +510 -0
- agent_gantry-0.1.0/tests/test_llm_sdk_compatibility.py +390 -0
- agent_gantry-0.1.0/tests/test_modules/__init__.py +1 -0
- agent_gantry-0.1.0/tests/test_modules/module_a.py +18 -0
- agent_gantry-0.1.0/tests/test_modules/module_b.py +18 -0
- agent_gantry-0.1.0/tests/test_modules/module_c_duplicate.py +12 -0
- agent_gantry-0.1.0/tests/test_modules/module_custom_attr.py +12 -0
- agent_gantry-0.1.0/tests/test_modules/module_no_tools.py +4 -0
- agent_gantry-0.1.0/tests/test_observability_token_usage.py +259 -0
- agent_gantry-0.1.0/tests/test_phase2.py +445 -0
- agent_gantry-0.1.0/tests/test_phase3_routing.py +145 -0
- agent_gantry-0.1.0/tests/test_phase4_adapters.py +86 -0
- agent_gantry-0.1.0/tests/test_phase5_mcp.py +513 -0
- agent_gantry-0.1.0/tests/test_phase6_a2a.py +423 -0
- agent_gantry-0.1.0/tests/test_refactoring_improvements.py +299 -0
- agent_gantry-0.1.0/tests/test_retrieval.py +55 -0
- agent_gantry-0.1.0/tests/test_token_savings_and_accuracy.py +134 -0
- agent_gantry-0.1.0/tests/test_tool.py +164 -0
- agent_gantry-0.1.0/tests/test_tool_spec_adapters.py +519 -0
- agent_gantry-0.1.0/uv.lock +8864 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "🎯 Advanced Routing & Orchestration"
|
|
3
|
+
about: Feature requests for hierarchical routing, tool chaining, and parameter-aware routing
|
|
4
|
+
title: "[Routing] "
|
|
5
|
+
labels: ["enhancement", "routing", "orchestration"]
|
|
6
|
+
assignees: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Feature Area
|
|
10
|
+
<!-- Check the area(s) this feature request relates to -->
|
|
11
|
+
- [ ] Hierarchical / Domain Routing (Router of Routers)
|
|
12
|
+
- [ ] Tool Chaining / Pipelines (Atomic Workflows)
|
|
13
|
+
- [ ] Parameter-Aware Routing (Contextual Feasibility)
|
|
14
|
+
|
|
15
|
+
## Problem Statement
|
|
16
|
+
<!-- Describe the current limitation or problem this feature would solve -->
|
|
17
|
+
|
|
18
|
+
**Current Behavior:**
|
|
19
|
+
<!-- What happens now? -->
|
|
20
|
+
|
|
21
|
+
**Desired Behavior:**
|
|
22
|
+
<!-- What should happen instead? -->
|
|
23
|
+
|
|
24
|
+
## Proposed Solution
|
|
25
|
+
|
|
26
|
+
### Overview
|
|
27
|
+
<!-- High-level description of your proposed solution -->
|
|
28
|
+
|
|
29
|
+
### Technical Details
|
|
30
|
+
<!-- Technical implementation details, if applicable -->
|
|
31
|
+
|
|
32
|
+
### Example Usage
|
|
33
|
+
<!-- Provide a code example or pseudocode showing how this would work -->
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
# Example usage
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Use Case
|
|
40
|
+
<!-- Describe a real-world scenario where this feature would be valuable -->
|
|
41
|
+
|
|
42
|
+
**Example Scenario:**
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
**Expected Benefit:**
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## Context: Current Architecture
|
|
49
|
+
|
|
50
|
+
Currently, Agent-Gantry excels at "Flat" Semantic Retrieval (finding the best tool for a query). This feature request aims to expand beyond that foundation.
|
|
51
|
+
|
|
52
|
+
### Hierarchical / Domain Routing
|
|
53
|
+
- **Goal**: As tool counts grow from 100 to 10,000, implement a "Router of Routers" pattern
|
|
54
|
+
- **Example**: First route to "Finance Domain", then to "Tax Calculator"
|
|
55
|
+
- **Benefit**: Improved scalability and reduced noise in vector search
|
|
56
|
+
|
|
57
|
+
### Tool Chaining / Pipelines
|
|
58
|
+
- **Goal**: Support Atomic Workflows—pre-defined chains of tools exposed as a single "Meta-Tool"
|
|
59
|
+
- **Example**: `onboard_employee` executes `create_email` → `create_slack` → `send_welcome`
|
|
60
|
+
- **Benefit**: Reduce LLM complexity by handling multi-step workflows internally
|
|
61
|
+
|
|
62
|
+
### Parameter-Aware Routing
|
|
63
|
+
- **Goal**: Enhance router to check Contextual Feasibility beyond semantic similarity
|
|
64
|
+
- **Example**: If a tool requires `order_id` and no such entity exists in conversation history, penalize that tool's score
|
|
65
|
+
- **Benefit**: More accurate tool selection based on available context
|
|
66
|
+
|
|
67
|
+
## Additional Context
|
|
68
|
+
<!-- Add any other context, screenshots, or references -->
|
|
69
|
+
|
|
70
|
+
## Related Issues
|
|
71
|
+
<!-- Link to related issues or PRs -->
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
**Note**: This feature aligns with the strategic roadmap for scaling Agent-Gantry to handle enterprise-scale tool inventories and complex orchestration patterns.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "🔒 Enterprise Security & Governance"
|
|
3
|
+
about: Feature requests for HITL, PII redaction, rate limiting, and compliance features
|
|
4
|
+
title: "[Security] "
|
|
5
|
+
labels: ["enhancement", "security", "governance", "compliance"]
|
|
6
|
+
assignees: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Feature Area
|
|
10
|
+
<!-- Check the area(s) this feature request relates to -->
|
|
11
|
+
- [ ] Human-in-the-Loop (HITL) Protocol
|
|
12
|
+
- [ ] PII Redaction / Data Loss Prevention (DLP)
|
|
13
|
+
- [ ] Rate Limiting & Quotas
|
|
14
|
+
- [ ] Other Compliance/Governance Feature
|
|
15
|
+
|
|
16
|
+
## Problem Statement
|
|
17
|
+
<!-- Describe the current security or governance gap this feature would address -->
|
|
18
|
+
|
|
19
|
+
**Current Behavior:**
|
|
20
|
+
<!-- What security/governance mechanisms exist today? -->
|
|
21
|
+
|
|
22
|
+
**Desired Behavior:**
|
|
23
|
+
<!-- What additional safeguards are needed? -->
|
|
24
|
+
|
|
25
|
+
## Proposed Solution
|
|
26
|
+
|
|
27
|
+
### Overview
|
|
28
|
+
<!-- High-level description of your proposed solution -->
|
|
29
|
+
|
|
30
|
+
### Security Model
|
|
31
|
+
<!-- Describe the security model, threat model, or compliance requirement -->
|
|
32
|
+
|
|
33
|
+
### Technical Details
|
|
34
|
+
<!-- Technical implementation details, if applicable -->
|
|
35
|
+
|
|
36
|
+
### Example Usage
|
|
37
|
+
<!-- Provide a code example showing how this would work -->
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
# Example usage
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Use Case
|
|
44
|
+
<!-- Describe a real-world scenario where this security feature is critical -->
|
|
45
|
+
|
|
46
|
+
**Example Scenario:**
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
**Risk Mitigation:**
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## Context: Current Security Features
|
|
53
|
+
|
|
54
|
+
Agent-Gantry currently provides:
|
|
55
|
+
- ✅ Zero-Trust architecture with capability-based permissions
|
|
56
|
+
- ✅ Circuit breakers for automatic failure detection
|
|
57
|
+
- ✅ Tool-level health tracking and observability
|
|
58
|
+
|
|
59
|
+
This feature request aims to enhance compliance and governance capabilities.
|
|
60
|
+
|
|
61
|
+
### Human-in-the-Loop (HITL) Protocol
|
|
62
|
+
- **Goal**: Standardized hook for "Sensitive Tools" requiring human approval
|
|
63
|
+
- **Example**: Instead of executing `delete_production_db` immediately, return `PendingApproval` status requiring secondary confirmation
|
|
64
|
+
- **Benefit**: Prevent catastrophic actions through mandatory human oversight
|
|
65
|
+
|
|
66
|
+
### PII Redaction / DLP
|
|
67
|
+
- **Goal**: Middleware to automatically detect and redact sensitive information
|
|
68
|
+
- **Example**: Strip credit cards, API keys, PII from tool inputs/outputs before logging to telemetry
|
|
69
|
+
- **Benefit**: Compliance with GDPR, HIPAA, and other data protection regulations
|
|
70
|
+
|
|
71
|
+
### Rate Limiting & Quotas
|
|
72
|
+
- **Goal**: Per-tool or per-user rate limits
|
|
73
|
+
- **Example**: "The `send_sms` tool can only be called 10 times per hour"
|
|
74
|
+
- **Benefit**: Prevent abuse, control costs, and ensure fair resource usage
|
|
75
|
+
|
|
76
|
+
## Compliance Requirements
|
|
77
|
+
<!-- List any specific compliance standards this feature would help meet -->
|
|
78
|
+
- [ ] GDPR (General Data Protection Regulation)
|
|
79
|
+
- [ ] HIPAA (Health Insurance Portability and Accountability Act)
|
|
80
|
+
- [ ] SOC 2
|
|
81
|
+
- [ ] ISO 27001
|
|
82
|
+
- [ ] PCI DSS
|
|
83
|
+
- [ ] Other:
|
|
84
|
+
|
|
85
|
+
## Additional Context
|
|
86
|
+
<!-- Add any other context, security considerations, or references -->
|
|
87
|
+
|
|
88
|
+
## Related Issues
|
|
89
|
+
<!-- Link to related issues or PRs -->
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
**Note**: This feature aligns with the strategic goal of making Agent-Gantry production-ready for enterprise deployments with strict compliance requirements.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "🚀 Frictionless Onboarding (Importers)"
|
|
3
|
+
about: Feature requests for automatic tool import from various sources (OpenAPI, databases, etc.)
|
|
4
|
+
title: "[Importer] "
|
|
5
|
+
labels: ["enhancement", "importer", "dx", "onboarding"]
|
|
6
|
+
assignees: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Feature Area
|
|
10
|
+
<!-- Check the area(s) this feature request relates to -->
|
|
11
|
+
- [ ] OpenAPI / Swagger Ingestion
|
|
12
|
+
- [ ] Database Introspection
|
|
13
|
+
- [ ] Other Tool Source Integration
|
|
14
|
+
|
|
15
|
+
## Problem Statement
|
|
16
|
+
<!-- Describe the current onboarding friction this feature would eliminate -->
|
|
17
|
+
|
|
18
|
+
**Current Behavior:**
|
|
19
|
+
<!-- How do users currently register tools from this source? -->
|
|
20
|
+
|
|
21
|
+
**Desired Behavior:**
|
|
22
|
+
<!-- What one-line import experience should exist? -->
|
|
23
|
+
|
|
24
|
+
## Proposed Solution
|
|
25
|
+
|
|
26
|
+
### Overview
|
|
27
|
+
<!-- High-level description of the importer -->
|
|
28
|
+
|
|
29
|
+
### Import Source
|
|
30
|
+
<!-- Describe the source system, format, or protocol -->
|
|
31
|
+
|
|
32
|
+
### Technical Details
|
|
33
|
+
<!-- Technical implementation details, if applicable -->
|
|
34
|
+
|
|
35
|
+
### Example Usage
|
|
36
|
+
<!-- Provide a code example showing the one-line import -->
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
# Example usage
|
|
40
|
+
from agent_gantry import AgentGantry
|
|
41
|
+
|
|
42
|
+
gantry = AgentGantry()
|
|
43
|
+
|
|
44
|
+
# One-line import example
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Use Case
|
|
48
|
+
<!-- Describe a real-world scenario where this importer would be valuable -->
|
|
49
|
+
|
|
50
|
+
**Example Scenario:**
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
**Expected Benefit:**
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## Context: Current Tool Registration
|
|
57
|
+
|
|
58
|
+
Currently, Agent-Gantry supports tool registration from:
|
|
59
|
+
- ✅ Python functions (via `@gantry.register` decorator)
|
|
60
|
+
- ✅ MCP servers (via `add_mcp_server`)
|
|
61
|
+
- ✅ A2A agents (via `add_a2a_agent`)
|
|
62
|
+
|
|
63
|
+
This feature request aims to expand "one-line import" capabilities for additional sources.
|
|
64
|
+
|
|
65
|
+
### OpenAPI / Swagger Ingestion
|
|
66
|
+
- **Goal**: One-line import for existing REST APIs
|
|
67
|
+
- **Example**: `gantry.ingest_openapi("https://api.stripe.com/v1/spec.json")`
|
|
68
|
+
- **Benefit**: Auto-generate tool definitions and schemas for every endpoint
|
|
69
|
+
- **Output**: Creates tools like `stripe_create_charge`, `stripe_list_customers`, etc.
|
|
70
|
+
|
|
71
|
+
### Database Introspection
|
|
72
|
+
- **Goal**: Auto-generate tools for SQL queries based on schema
|
|
73
|
+
- **Example**: `gantry.ingest_postgres(connection_string, tables=["users", "orders"])`
|
|
74
|
+
- **Benefit**: Creates CRUD tools like `search_users`, `get_user_by_id`, `update_order_status`
|
|
75
|
+
- **Output**: Type-safe tools based on database schema
|
|
76
|
+
|
|
77
|
+
### Other Integration Ideas
|
|
78
|
+
- GraphQL schema introspection
|
|
79
|
+
- gRPC service definitions
|
|
80
|
+
- Kubernetes API resources
|
|
81
|
+
- Cloud provider APIs (AWS, GCP, Azure)
|
|
82
|
+
- SaaS APIs (Slack, GitHub, Jira, etc.)
|
|
83
|
+
|
|
84
|
+
## Schema Mapping
|
|
85
|
+
<!-- Describe how the source schema would map to Agent-Gantry tool definitions -->
|
|
86
|
+
|
|
87
|
+
**Source Schema:**
|
|
88
|
+
```
|
|
89
|
+
<!-- Example of source format -->
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Generated Tool:**
|
|
93
|
+
```python
|
|
94
|
+
# Example of generated AgentGantry tool
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Authentication & Configuration
|
|
98
|
+
<!-- How would authentication and configuration be handled? -->
|
|
99
|
+
|
|
100
|
+
## Additional Context
|
|
101
|
+
<!-- Add any other context, API documentation links, or references -->
|
|
102
|
+
|
|
103
|
+
## Related Issues
|
|
104
|
+
<!-- Link to related issues or PRs -->
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
**Note**: This feature aligns with the strategic goal of reducing friction in tool onboarding and accelerating time-to-value for Agent-Gantry users.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "🎨 Developer Experience & UI"
|
|
3
|
+
about: Feature requests for Gantry Dashboard, visualization, testing, and debugging tools
|
|
4
|
+
title: "[DX] "
|
|
5
|
+
labels: ["enhancement", "dx", "ui", "tooling"]
|
|
6
|
+
assignees: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Feature Area
|
|
10
|
+
<!-- Check the area(s) this feature request relates to -->
|
|
11
|
+
- [ ] Gantry Dashboard (Web UI)
|
|
12
|
+
- [ ] Simulation & Replay (Snapshot Testing)
|
|
13
|
+
- [ ] Visualization Tools
|
|
14
|
+
- [ ] Debugging Tools
|
|
15
|
+
- [ ] Other DX Enhancement
|
|
16
|
+
|
|
17
|
+
## Problem Statement
|
|
18
|
+
<!-- Describe the current DX limitation this feature would solve -->
|
|
19
|
+
|
|
20
|
+
**Current Behavior:**
|
|
21
|
+
<!-- What developer workflow exists today? -->
|
|
22
|
+
|
|
23
|
+
**Desired Behavior:**
|
|
24
|
+
<!-- What improved workflow should exist? -->
|
|
25
|
+
|
|
26
|
+
## Proposed Solution
|
|
27
|
+
|
|
28
|
+
### Overview
|
|
29
|
+
<!-- High-level description of your proposed solution -->
|
|
30
|
+
|
|
31
|
+
### User Interface
|
|
32
|
+
<!-- If this involves a UI, describe the interface or provide mockups -->
|
|
33
|
+
|
|
34
|
+
### Technical Details
|
|
35
|
+
<!-- Technical implementation details, if applicable -->
|
|
36
|
+
|
|
37
|
+
### Example Usage
|
|
38
|
+
<!-- Provide examples or screenshots showing how this would work -->
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
# Example usage or CLI command
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Use Case
|
|
45
|
+
<!-- Describe a real-world developer workflow this would improve -->
|
|
46
|
+
|
|
47
|
+
**Example Scenario:**
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
**Expected Benefit:**
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
## Context: Current Developer Tools
|
|
54
|
+
|
|
55
|
+
Agent-Gantry currently provides:
|
|
56
|
+
- ✅ CLI for listing and searching tools (`agent-gantry list`, `agent-gantry search`)
|
|
57
|
+
- ✅ Structured logging and telemetry
|
|
58
|
+
- ✅ OpenTelemetry integration for tracing
|
|
59
|
+
|
|
60
|
+
This feature request aims to enhance the developer experience with additional tooling.
|
|
61
|
+
|
|
62
|
+
### Gantry Dashboard (Web UI)
|
|
63
|
+
- **Goal**: Lightweight local web server for development and debugging
|
|
64
|
+
- **Technology**: Streamlit, FastUI, or similar
|
|
65
|
+
- **Features**:
|
|
66
|
+
- Visualize the Vector Space (see how tools cluster)
|
|
67
|
+
- Monitor Circuit Breaker status (manually reset tripped breakers)
|
|
68
|
+
- View Traces/Logs in real-time
|
|
69
|
+
- Manually test tools without an LLM
|
|
70
|
+
- Inspect tool registrations and metadata
|
|
71
|
+
- Performance metrics and health dashboard
|
|
72
|
+
|
|
73
|
+
### Simulation & Replay
|
|
74
|
+
- **Goal**: Record and replay tool execution sessions for testing
|
|
75
|
+
- **Features**:
|
|
76
|
+
- Record a session of tool executions
|
|
77
|
+
- Replay sessions against new tool code
|
|
78
|
+
- Detect regressions (Snapshot Testing for Agents)
|
|
79
|
+
- Compare behavior before/after changes
|
|
80
|
+
- **Use Case**: Ensure tool changes don't break existing agent workflows
|
|
81
|
+
|
|
82
|
+
### Visualization Tools
|
|
83
|
+
- **Ideas**:
|
|
84
|
+
- Tool similarity heatmaps
|
|
85
|
+
- Routing decision trees
|
|
86
|
+
- Token usage analytics
|
|
87
|
+
- Tool execution timelines
|
|
88
|
+
|
|
89
|
+
### Debugging Tools
|
|
90
|
+
- **Ideas**:
|
|
91
|
+
- Interactive tool tester
|
|
92
|
+
- Schema validator
|
|
93
|
+
- Embedding inspector
|
|
94
|
+
- Query analyzer (why was this tool ranked high/low?)
|
|
95
|
+
|
|
96
|
+
## UI/UX Considerations
|
|
97
|
+
<!-- Describe any specific UI/UX requirements or considerations -->
|
|
98
|
+
|
|
99
|
+
## Technical Stack Preferences
|
|
100
|
+
<!-- Any preferences for frameworks, libraries, or approaches? -->
|
|
101
|
+
|
|
102
|
+
## Additional Context
|
|
103
|
+
<!-- Add any other context, mockups, or references -->
|
|
104
|
+
|
|
105
|
+
## Related Issues
|
|
106
|
+
<!-- Link to related issues or PRs -->
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
**Note**: This feature aligns with the strategic goal of providing a best-in-class developer experience for building and debugging agent systems.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "🧠 Smart Learning"
|
|
3
|
+
about: Feature requests for feedback loops, RLHF for tools, and adaptive routing
|
|
4
|
+
title: "[Learning] "
|
|
5
|
+
labels: ["enhancement", "learning", "rlhf", "adaptive"]
|
|
6
|
+
assignees: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Feature Area
|
|
10
|
+
<!-- Check the area(s) this feature request relates to -->
|
|
11
|
+
- [ ] Feedback Loop (RLHF for Tools)
|
|
12
|
+
- [ ] Adaptive Embeddings
|
|
13
|
+
- [ ] Tool Performance Learning
|
|
14
|
+
- [ ] User Preference Learning
|
|
15
|
+
- [ ] Other Learning Feature
|
|
16
|
+
|
|
17
|
+
## Problem Statement
|
|
18
|
+
<!-- Describe the current limitation in learning/adaptation this feature would address -->
|
|
19
|
+
|
|
20
|
+
**Current Behavior:**
|
|
21
|
+
<!-- How does routing/selection work today? -->
|
|
22
|
+
|
|
23
|
+
**Desired Behavior:**
|
|
24
|
+
<!-- How should the system learn and adapt? -->
|
|
25
|
+
|
|
26
|
+
## Proposed Solution
|
|
27
|
+
|
|
28
|
+
### Overview
|
|
29
|
+
<!-- High-level description of the learning mechanism -->
|
|
30
|
+
|
|
31
|
+
### Learning Mechanism
|
|
32
|
+
<!-- Describe how feedback is collected and applied -->
|
|
33
|
+
|
|
34
|
+
### Technical Details
|
|
35
|
+
<!-- Technical implementation details, if applicable -->
|
|
36
|
+
|
|
37
|
+
### Example Usage
|
|
38
|
+
<!-- Provide a code example showing how this would work -->
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
# Example usage
|
|
42
|
+
from agent_gantry import AgentGantry
|
|
43
|
+
|
|
44
|
+
gantry = AgentGantry()
|
|
45
|
+
|
|
46
|
+
# Example of feedback collection and learning
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Use Case
|
|
50
|
+
<!-- Describe a real-world scenario where learning would improve outcomes -->
|
|
51
|
+
|
|
52
|
+
**Example Scenario:**
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
**Expected Improvement:**
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## Context: Current Routing Behavior
|
|
59
|
+
|
|
60
|
+
Agent-Gantry currently uses:
|
|
61
|
+
- ✅ Semantic similarity (vector search)
|
|
62
|
+
- ✅ Intent classification
|
|
63
|
+
- ✅ MMR diversity
|
|
64
|
+
- ✅ Static health metrics (success rate, circuit breaker state)
|
|
65
|
+
|
|
66
|
+
This feature request aims to add **adaptive learning** capabilities that improve over time.
|
|
67
|
+
|
|
68
|
+
### Feedback Loop (RLHF for Tools)
|
|
69
|
+
- **Goal**: Learn from tool selection feedback to improve future routing
|
|
70
|
+
- **Mechanism**:
|
|
71
|
+
- If an LLM tries to use a tool and fails (or user explicitly says "wrong tool")
|
|
72
|
+
- Record this negative feedback in a feedback store
|
|
73
|
+
- Adjust embeddings or routing weights to penalize Tool A for Query X
|
|
74
|
+
- Even if semantically similar, learn that Tool A is bad for this query type
|
|
75
|
+
- **Example**:
|
|
76
|
+
```python
|
|
77
|
+
# User corrects tool selection
|
|
78
|
+
await gantry.record_feedback(
|
|
79
|
+
query="cancel my subscription",
|
|
80
|
+
selected_tool="pause_subscription", # Wrong
|
|
81
|
+
correct_tool="cancel_subscription", # Correct
|
|
82
|
+
feedback_type="tool_selection_error"
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
# Future queries automatically improve
|
|
86
|
+
tools = await gantry.retrieve_tools("cancel my subscription")
|
|
87
|
+
# Now correctly ranks cancel_subscription higher
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Adaptive Embeddings
|
|
91
|
+
- **Goal**: Fine-tune embeddings based on actual usage patterns
|
|
92
|
+
- **Approach**:
|
|
93
|
+
- Collect positive/negative pairs from tool execution outcomes
|
|
94
|
+
- Periodically retrain or adjust embeddings
|
|
95
|
+
- Learn domain-specific semantics
|
|
96
|
+
|
|
97
|
+
### Tool Performance Learning
|
|
98
|
+
- **Goal**: Learn which tools work well together, which fail frequently, etc.
|
|
99
|
+
- **Metrics**: Track correlation between tool pairs, failure patterns, timing
|
|
100
|
+
|
|
101
|
+
### User Preference Learning
|
|
102
|
+
- **Goal**: Learn per-user or per-team tool preferences
|
|
103
|
+
- **Example**: Team A prefers `slack_notify` over `email_notify`
|
|
104
|
+
|
|
105
|
+
## Feedback Collection Strategy
|
|
106
|
+
<!-- How would feedback be collected? Manual, automatic, both? -->
|
|
107
|
+
|
|
108
|
+
## Privacy & Data Considerations
|
|
109
|
+
<!-- Any privacy concerns with collecting feedback data? -->
|
|
110
|
+
|
|
111
|
+
## Evaluation Metrics
|
|
112
|
+
<!-- How would you measure if the learning is working? -->
|
|
113
|
+
|
|
114
|
+
## Additional Context
|
|
115
|
+
<!-- Add any other context, research papers, or references -->
|
|
116
|
+
|
|
117
|
+
## Related Issues
|
|
118
|
+
<!-- Link to related issues or PRs -->
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
**Note**: This feature aligns with the strategic goal of creating a self-improving tool orchestration system that gets better with use.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "💾 State Management"
|
|
3
|
+
about: Feature requests for session memory, context persistence, and stateful tools
|
|
4
|
+
title: "[State] "
|
|
5
|
+
labels: ["enhancement", "state", "memory", "session"]
|
|
6
|
+
assignees: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Feature Area
|
|
10
|
+
<!-- Check the area(s) this feature request relates to -->
|
|
11
|
+
- [ ] Session Memory / Context Store
|
|
12
|
+
- [ ] Cross-Tool State Sharing
|
|
13
|
+
- [ ] Persistent State Storage
|
|
14
|
+
- [ ] State Scoping (user, session, global)
|
|
15
|
+
- [ ] Other State Management Feature
|
|
16
|
+
|
|
17
|
+
## Problem Statement
|
|
18
|
+
<!-- Describe the current limitation in state management this feature would address -->
|
|
19
|
+
|
|
20
|
+
**Current Behavior:**
|
|
21
|
+
<!-- How is state currently handled? -->
|
|
22
|
+
|
|
23
|
+
**Desired Behavior:**
|
|
24
|
+
<!-- What state management capabilities are needed? -->
|
|
25
|
+
|
|
26
|
+
## Proposed Solution
|
|
27
|
+
|
|
28
|
+
### Overview
|
|
29
|
+
<!-- High-level description of the state management solution -->
|
|
30
|
+
|
|
31
|
+
### State Model
|
|
32
|
+
<!-- Describe the state model, scope, and lifecycle -->
|
|
33
|
+
|
|
34
|
+
### Technical Details
|
|
35
|
+
<!-- Technical implementation details, if applicable -->
|
|
36
|
+
|
|
37
|
+
### Example Usage
|
|
38
|
+
<!-- Provide a code example showing how state would be accessed -->
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
# Example usage
|
|
42
|
+
from agent_gantry import AgentGantry
|
|
43
|
+
|
|
44
|
+
gantry = AgentGantry()
|
|
45
|
+
|
|
46
|
+
@gantry.register
|
|
47
|
+
async def read_file(filename: str, ctx) -> str:
|
|
48
|
+
"""Read a file and remember it."""
|
|
49
|
+
# Store in session memory
|
|
50
|
+
content = read_from_disk(filename)
|
|
51
|
+
ctx.memory["last_file"] = filename
|
|
52
|
+
ctx.memory["file_content"] = content
|
|
53
|
+
return content
|
|
54
|
+
|
|
55
|
+
@gantry.register
|
|
56
|
+
async def summarize_last_file(ctx) -> str:
|
|
57
|
+
"""Summarize the last file that was read."""
|
|
58
|
+
# Access from session memory
|
|
59
|
+
filename = ctx.memory.get("last_file")
|
|
60
|
+
content = ctx.memory.get("file_content")
|
|
61
|
+
return f"Summary of {filename}: {generate_summary(content)}"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Use Case
|
|
65
|
+
<!-- Describe a real-world scenario where state management would be valuable -->
|
|
66
|
+
|
|
67
|
+
**Example Scenario:**
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
**Expected Benefit:**
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## Context: Current State Handling
|
|
74
|
+
|
|
75
|
+
Currently, Agent-Gantry is largely stateless:
|
|
76
|
+
- ✅ Tools are pure functions or async callables
|
|
77
|
+
- ✅ Context is passed via LLM conversation history
|
|
78
|
+
- ⚠️ No built-in mechanism for tools to share state
|
|
79
|
+
- ⚠️ Tools must pass state via arguments every time
|
|
80
|
+
|
|
81
|
+
This feature request aims to add **session-scoped state management** for tools.
|
|
82
|
+
|
|
83
|
+
### Session Memory
|
|
84
|
+
- **Goal**: Tools can persist state within a session without external DBs
|
|
85
|
+
- **Example**: "What file was I reading?" without passing filename every time
|
|
86
|
+
- **Scope**: Per-session, per-user, or per-conversation
|
|
87
|
+
- **Storage**: In-memory by default, pluggable backends (Redis, etc.)
|
|
88
|
+
|
|
89
|
+
### Use Cases
|
|
90
|
+
1. **Multi-Step Workflows**: Tool A stores intermediate results for Tool B
|
|
91
|
+
2. **File Operations**: Remember "current working directory" or "active file"
|
|
92
|
+
3. **Conversation Context**: Track entities, IDs, or references mentioned in conversation
|
|
93
|
+
4. **Caching**: Store expensive computation results within a session
|
|
94
|
+
5. **User Preferences**: Remember user choices within a session
|
|
95
|
+
|
|
96
|
+
### State API Design Considerations
|
|
97
|
+
```python
|
|
98
|
+
# Option 1: Context parameter
|
|
99
|
+
@gantry.register
|
|
100
|
+
async def my_tool(arg: str, ctx: ExecutionContext) -> str:
|
|
101
|
+
ctx.memory["key"] = "value"
|
|
102
|
+
return ctx.memory.get("other_key", default="")
|
|
103
|
+
|
|
104
|
+
# Option 2: Session object
|
|
105
|
+
@gantry.register(stateful=True)
|
|
106
|
+
async def my_tool(arg: str, session: Session) -> str:
|
|
107
|
+
await session.set("key", "value")
|
|
108
|
+
return await session.get("other_key")
|
|
109
|
+
|
|
110
|
+
# Option 3: Decorator-based
|
|
111
|
+
@gantry.register
|
|
112
|
+
@gantry.with_memory(scope="session")
|
|
113
|
+
async def my_tool(arg: str, memory: dict) -> str:
|
|
114
|
+
memory["key"] = "value"
|
|
115
|
+
return memory.get("other_key", "")
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## State Scoping
|
|
119
|
+
<!-- Define different scope levels for state -->
|
|
120
|
+
- [ ] **Session-scoped**: State persists for a single agent session
|
|
121
|
+
- [ ] **User-scoped**: State persists across sessions for a user
|
|
122
|
+
- [ ] **Global-scoped**: State shared across all users (with proper isolation)
|
|
123
|
+
- [ ] **Tool-scoped**: Each tool instance has its own state
|
|
124
|
+
|
|
125
|
+
## Persistence Strategy
|
|
126
|
+
<!-- How should state be persisted? -->
|
|
127
|
+
- [ ] In-memory only (lost on restart)
|
|
128
|
+
- [ ] Redis/Memcached
|
|
129
|
+
- [ ] Database (PostgreSQL, SQLite)
|
|
130
|
+
- [ ] File-based
|
|
131
|
+
- [ ] Pluggable backend
|
|
132
|
+
|
|
133
|
+
## Thread Safety & Concurrency
|
|
134
|
+
<!-- How should concurrent access be handled? -->
|
|
135
|
+
|
|
136
|
+
## TTL & Expiration
|
|
137
|
+
<!-- Should state expire automatically? -->
|
|
138
|
+
|
|
139
|
+
## Additional Context
|
|
140
|
+
<!-- Add any other context, architecture diagrams, or references -->
|
|
141
|
+
|
|
142
|
+
## Related Issues
|
|
143
|
+
<!-- Link to related issues or PRs -->
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
**Note**: This feature aligns with the strategic goal of supporting stateful tool patterns and multi-step agent workflows without requiring external state management.
|