148 lines
6.4 KiB
Markdown
148 lines
6.4 KiB
Markdown
# node-red-contrib-nextcloud-agent
|
|
|
|
Node-RED nodes for **generic CLI agent** integration with Nextcloud.
|
|
|
|
Works alongside your existing [`nextcloud-nodered-ocs-api`](https://kode.hannesahlin.se/n3wk/nextcloud-nodered-ocs-api) and [`nextcloud-collabora-nodered`](https://kode.hannesahlin.se/n3wk/nextcloud-collabora-nodered) setup.
|
|
|
|
## Nodes
|
|
|
|
| Node | Category | Description |
|
|
|------|----------|-------------|
|
|
| `agent-config` | config | Shared configuration (CLI path, workspace, API endpoint) |
|
|
| `agent-exec` | agent | Execute agent CLI commands (`run`, `version`, `help`, etc.) |
|
|
| `agent-file` | agent | Read/write/list files in the agent workspace |
|
|
| `agent-process` | agent | Manage persistent agent processes |
|
|
|
|
## Quick Install
|
|
|
|
```bash
|
|
# Clone this repo
|
|
git clone https://kode.hannesahlin.se/n3wk/nextcloud-nodered-agent.git
|
|
cd nextcloud-nodered-agent
|
|
|
|
# Integrate into your existing nextcloud-node-red
|
|
NODERED_DIR=/path/to/nextcloud-node-red ./integrate-into-nodered.sh
|
|
|
|
# Rebuild and restart
|
|
cd /path/to/nextcloud-node-red
|
|
docker compose build --no-cache
|
|
docker compose up -d
|
|
```
|
|
|
|
## Bootstrap Install (VM-agnostic)
|
|
|
|
```bash
|
|
curl -fsSL https://kode.hannesahlin.se/n3wk/nextcloud-nodered-agent/raw/branch/main/bootstrap-install.sh | sudo -u ncdeploy bash
|
|
```
|
|
|
|
This auto-detects your `nextcloud-node-red` installation and patches it.
|
|
|
|
## Configuration
|
|
|
|
In Node-RED, add an **agent config** node:
|
|
|
|
- **CLI Command**: `agent` (install your agent in the Docker container)
|
|
- **Workspace Directory**: `/data/agent-workspace` (shared Docker volume)
|
|
- **API Endpoint**: `http://localhost:3000` (if agent runs in server mode)
|
|
- **Default Arguments**: `--verbose` (space-separated defaults)
|
|
- **Max Concurrent Processes**: `3`
|
|
|
|
**Important**: You must edit the Dockerfile after integration to install YOUR specific agent CLI.
|
|
|
|
## Example Flows
|
|
|
|
Import `flows/example-flows.json` for:
|
|
|
|
1. **Run Task** - Use `agent-exec` to execute a one-off task
|
|
2. **Persistent Process** - Start a process, send follow-up inputs, check status
|
|
3. **Nextcloud + Agent** - List Nextcloud files → process with agent → save back
|
|
|
|
## Docker Requirements
|
|
|
|
The integration script adds to your `nextcloud-node-red`:
|
|
- **You must add agent CLI installation** to Dockerfile (script adds placeholder)
|
|
- `agent-workspace` Docker volume mounted at `/data/agent-workspace`
|
|
- Nodes copied to `/opt/nextcloud-nodes/node-red-contrib-nextcloud-agent` and installed at container start
|
|
|
|
## Architecture
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ Nextcloud (https://cloud.example.com) │
|
|
│ ┌───────────────────────────────────────────────────────────┐ │
|
|
│ │ nodered_embed app → iframe → Node-RED :1880 │ │
|
|
│ │ ┌─────────────────────────────────────────────────────┐ │ │
|
|
│ │ │ agent nodes │ │ │
|
|
│ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │
|
|
│ │ │ │ exec │ │ file │ │ process │ │ │ │
|
|
│ │ │ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │ │ │
|
|
│ │ │ │ │ │ │ │ │
|
|
│ │ │ ▼ ▼ ▼ │ │ │
|
|
│ │ │ ┌─────────────────────────────────────────┐ │ │ │
|
|
│ │ │ │ Your CLI Agent (in container) │ │ │ │
|
|
│ │ │ │ Workspace: /data/agent-workspace │ │ │ │
|
|
│ │ │ └─────────────────────────────────────────┘ │ │ │
|
|
│ │ └─────────────────────────────────────────────────────┘ │ │
|
|
│ └───────────────────────────────────────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Usage Examples
|
|
|
|
### Execute Task with agent-exec
|
|
|
|
```javascript
|
|
// Inject node
|
|
msg.prompt = "Process all files in /data/input and generate summary";
|
|
return msg;
|
|
```
|
|
|
|
Connect to `agent-exec` with command `run`.
|
|
|
|
### Persistent Process
|
|
|
|
```javascript
|
|
// Start process
|
|
msg.action = "start";
|
|
msg.processId = "my-processor";
|
|
msg.payload = "Watch /data/input for new files and process them";
|
|
return msg;
|
|
|
|
// Send follow-up
|
|
msg.action = "send";
|
|
msg.processId = "my-processor";
|
|
msg.payload = "Also generate CSV export";
|
|
return msg;
|
|
```
|
|
|
|
### Read/Write Files in Workspace
|
|
|
|
```javascript
|
|
// Write agent output to file
|
|
msg.filePath = "results/output.txt";
|
|
msg.payload = msg.payload; // from agent-exec
|
|
msg.operation = "write";
|
|
return msg;
|
|
```
|
|
|
|
## Integration with Nextcloud Nodes
|
|
|
|
Combine with your existing `file-operations`, `ocs-api`, `collectives` nodes:
|
|
|
|
1. **Read from Nextcloud** → `file-operations` (list/download)
|
|
2. **Process with agent** → `agent-exec` (transform, analyze, generate)
|
|
3. **Write to workspace** → `agent-file` (save intermediate)
|
|
4. **Upload to Nextcloud** → `file-operations` (upload)
|
|
|
|
## Troubleshooting
|
|
|
|
| Issue | Solution |
|
|
|-------|----------|
|
|
| `agent: command not found` | Edit Dockerfile to install your agent CLI, then rebuild |
|
|
| Permission denied on workspace | Ensure `agent-workspace` volume has correct permissions |
|
|
| Process won't start | Check `docker logs nextcloud-node-red` for agent errors |
|
|
| Nodes not appearing | Restart Node-RED container; check `/data/node_modules/node-red-contrib-nextcloud-agent` |
|
|
|
|
## License
|
|
|
|
MIT — see [LICENSE](LICENSE) |