feat(tools): add minio ingestion into memory namespaces

This commit is contained in:
William Valentin
2026-02-16 14:17:52 -08:00
parent 3203c1f3fe
commit 0be93c20b5
10 changed files with 407 additions and 8 deletions
+50 -1
View File
@@ -27,6 +27,7 @@ Tools are executable capabilities that the AI agent can call to perform actions
- **Web**: `web.fetch`, `web.search`
- **Browser**: `browser.navigate`, `browser.screenshot`
- **Memory**: `memory.read`, `memory.write`, `memory.search`
- **MinIO**: `minio.share`, `minio.ingest`
- **Media**: `media.send`, `image.analyze`, `audio.transcribe`
- **System**: `system.info`
- **Session**: `sessions.list`, `sessions.delete`
@@ -466,7 +467,7 @@ Tools are organized into groups:
- `group:web`: Web and browser tools
- `group:memory`: Memory and search tools
There are additional groups for specific integrations (gmail/gcal/gdocs/gdrive/gtasks/cron). See `TOOL_GROUPS` in `src/tools/policy.ts`.
There are additional groups for specific integrations (gmail/gcal/gdocs/gdrive/gtasks/cron/minio). See `TOOL_GROUPS` in `src/tools/policy.ts`.
### Policy Resolution
@@ -958,6 +959,54 @@ Search memory using hybrid (keyword + vector) search.
}
```
### MinIO Tools
#### `minio.share`
Upload a local file to MinIO and return a temporary presigned download URL.
#### `minio.ingest`
Read a text-like object from MinIO and write it into a memory namespace.
```json
{
"name": "minio.ingest",
"description": "Read a text-like object from MinIO and ingest it into memory namespace for later retrieval/search.",
"inputSchema": {
"type": "object",
"properties": {
"object_key": {
"type": "string",
"description": "Object key in MinIO bucket"
},
"bucket": {
"type": "string",
"description": "Optional bucket override"
},
"namespace": {
"type": "string",
"description": "Memory namespace (default: global/knowledge)"
},
"mode": {
"type": "string",
"enum": ["append", "replace"],
"description": "Write mode"
},
"max_chars": {
"type": "number",
"description": "Maximum characters to ingest"
},
"force": {
"type": "boolean",
"description": "Override non-text extension/content safety checks"
}
},
"required": ["object_key"]
}
}
```
### Media Tools
#### `media.send`
+19
View File
@@ -61,6 +61,25 @@
],
"test_status": "pnpm eslint src/gateway/ui/pages/dashboard.js + pnpm typecheck passing; full pnpm lint currently fails due pre-existing unrelated repo lint errors"
},
"minio-knowledge-ingestion-tool": {
"status": "completed",
"date": "2026-02-16",
"updated": "2026-02-16",
"summary": "Added `minio.ingest` tool to import text-like objects from MinIO into memory namespaces (`append`/`replace`) with extension/content safety checks, truncation controls, and force override. Wired tool registration when MinIO + memory are enabled, updated tool policy/groups/docs, and added focused tests.",
"files_modified": [
"src/tools/builtin/minio-ingest.ts",
"src/tools/builtin/minio-ingest.test.ts",
"src/tools/builtin/index.ts",
"src/tools/index.ts",
"src/daemon/index.ts",
"src/tools/policy.ts",
"src/tools/policy.test.ts",
"README.md",
"docs/api/TOOLS.md",
"docs/plans/state.json"
],
"test_status": "pnpm test:run src/tools/builtin/minio-ingest.test.ts src/tools/policy.test.ts + pnpm typecheck passing"
},
"backup-session-summary-audit-trail": {
"status": "completed",
"date": "2026-02-16",