feat(grid-agent): add generic LLM tool loop (#119)
This commit is contained in:
@@ -24,6 +24,8 @@ handles, the control sender, and observable receiver.
|
||||
| Coordinator task | `ServiceHandle.tasks[1]` | exactly one | shared cancellation token, joined second |
|
||||
| Body / message | typed boundary owners | 8 MiB / 64 KiB hard ceilings, with lower configured limits | rejected before enqueue |
|
||||
| Conversation / tool calls | request owner | 256 messages / 64 calls, with lower configured limits | rejected before request |
|
||||
| LLM request slots | shared `LlmClient` semaphore | 256 hard / configured concurrent requests | async acquire or cancellation |
|
||||
| Reasoning/tool session | `ToolLoop` caller | 32 turns / 256 calls hard, with lower configured limits | total timeout, cancellation, or supersession |
|
||||
| Authorized avatars | immutable `AgentConfig` set | 1,024 hard ceiling, lower configured limit | malformed, nil, duplicate, and wildcard input rejected |
|
||||
| Configuration / secret file | loader | 64 KiB / 16 KiB | regular non-symlink file only |
|
||||
|
||||
@@ -65,6 +67,10 @@ shutdown.
|
||||
- World changes cross only `WorldMutator::apply`, which always receives the
|
||||
proposed call and an explicit `PolicyDecision`. This issue supplies no live
|
||||
mutation implementation.
|
||||
- LLM traffic crosses one exact configured URL through `LlmClient`. Redirects
|
||||
are refused, response bodies are bounded while streaming, bearer secrets are
|
||||
redacted, and provider/model discovery does not exist. Proposed calls cross
|
||||
`ToolExecutor` only after registered-name and schema validation.
|
||||
- Signals and console output belong to the binary. The reusable core relies on
|
||||
no terminal, Unix socket, Unix signal, separator, or fixed platform path.
|
||||
|
||||
@@ -80,8 +86,14 @@ AgentService -> bounded Tokio channels/tasks -> injected GridBackend
|
||||
typed config/events/policy boundaries live-grid feature boundary
|
||||
| |
|
||||
+-----------------> libremetaverse-types +--> libremetaverse::GridClient
|
||||
|
||||
avatar session -> bounded ToolLoop -> exact-endpoint LlmClient
|
||||
|
|
||||
+-> validated ToolExecutor boundary
|
||||
```
|
||||
|
||||
The package has no build script or direct native dependency. The focused
|
||||
`dependency_policy` test rejects subprocess launch sites, unsafe/native ABI
|
||||
source, build scripts, and unreviewed direct dependency names in this package.
|
||||
The precise LLM compatibility and cancellation contract is documented in
|
||||
[`grid-agent-llm.md`](grid-agent-llm.md).
|
||||
|
||||
Reference in New Issue
Block a user