Files
ajarbot/n8n_workflows/content_pipeline_clean.json

1 line
23 KiB
JSON
Raw Normal View History

feat: RSO observation system, child safety, Discord adapter, Telegram watchdog, email attachments Core agent improvements: - RSO (Relevance Scoring & Observation) system: interaction_logger, memory_scorer, signal_detector - Memory access logging (memory_access_log table) for relevance scoring; high-signal turn detection - Rich conversation storage for notable turns; compact_conversation truncates long user messages - Task-type classifier (query/action/analysis/creative) for observation tagging - Nested sub-agent visibility: deep delegations now register against the main agent's manager Child safety (Gabriel profile): - child_safety.py: filtering, audit logging, prompt constants for restricted sessions - .kiro/specs/child-safety-profile: requirements, design, tasks specs - GABRIEL_BOT_PROPOSAL.md: initial proposal doc - Reduced context window (10 msgs) and tutor-mode identity for restricted users Telegram adapter: - Polling watchdog: auto-restarts updater if polling drops unexpectedly - get_me() with exponential-backoff retry on NetworkError at startup - Correct stop() ordering: signal watchdog before cancelling tasks Email / Gmail: - send_email: supports file attachments (attachments list param) - get_email: surfaces attachment metadata in response Scheduled tasks / weather: - Remove OpenWeatherMap API calls from morning-weather task; use wttr.in exclusively - New scheduled tasks and scheduler state persistence Discord: - adapters/discord/__init__.py scaffold - discord-plugin: MCP plugin for Claude Code Discord integration (server.ts, skills, config) Infrastructure: - n8n workflow exports (garvis_webhook, content_pipeline variants) - memory_workspace: context, homelab-repo-updates, weekly observation summaries, error logs - UCS C240 migration plan doc - requirements.txt: new deps - .claude/settings.json, fix_hooks.py: hook/permission tuning
2026-04-23 07:54:01 -06:00
{"name": "Content Pipeline - BlendedFamilyKitchen", "nodes": [{"parameters": {"rule": {"interval": [{"field": "minutes", "minutesInterval": 30}]}}, "id": "a1b2c3d4-1111-4000-8000-000000000001", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": [0, 300]}, {"parameters": {"method": "POST", "url": "http://192.168.2.210:5000/webapi/auth.cgi", "sendBody": true, "bodyParameters": {"parameters": [{"name": "api", "value": "SYNO.API.Auth"}, {"name": "version", "value": "6"}, {"name": "method", "value": "login"}, {"name": "account", "value": "={{ $env.SYNOLOGY_USER }}"}, {"name": "passwd", "value": "={{ $env.SYNOLOGY_PASS }}"}, {"name": "format", "value": "sid"}]}}, "id": "a1b2c3d4-1111-4000-8000-000000000002", "name": "NAS Login", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [220, 300]}, {"parameters": {"method": "POST", "url": "http://192.168.2.210:5000/webapi/entry.cgi", "sendBody": true, "bodyParameters": {"parameters": [{"name": "api", "value": "SYNO.FileStation.List"}, {"name": "version", "value": "2"}, {"name": "method", "value": "list"}, {"name": "folder_path", "value": "/BlendedFamilyKitchen/DropZone"}, {"name": "_sid", "value": "={{ $json.data.sid }}"}]}}, "id": "a1b2c3d4-1111-4000-8000-000000000003", "name": "Poll NAS DropZone", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [440, 300]}, {"parameters": {"conditions": {"options": {"caseSensitive": true, "leftValue": "", "typeValidation": "strict"}, "conditions": [{"id": "cond1", "leftValue": "={{ $json.data.files.length }}", "rightValue": "0", "operator": {"type": "number", "operation": "gt"}}], "combinator": "and"}}, "id": "a1b2c3d4-1111-4000-8000-000000000004", "name": "IF New Files?", "type": "n8n-nodes-base.if", "typeVersion": 2, "position": [660, 300]}, {"parameters": {"fieldToSplitOut": "data.files"}, "id": "a1b2c3d4-1111-4000-8000-000000000005", "name": "Split Into Batches", "type": "n8n-nodes-base.splitOut", "typeVersion": 1, "position": [880, 200]}, {"parameters": {"mode": "manual", "duplicateItem": false, "assignments": {"assignments": [{"id": "a1", "name": "filename", "value": "={{ $json.name }}", "type": "string"}, {"id": "a2", "name": "filepath", "value": "={{ $json.path }}", "type": "string"}, {"id": "a3", "name": "filesize", "value": "={{ $json.additional?.size }}", "type": "number"}, {"id": "a4", "name": "timestamp", "value": "={{ $now.toISO() }}", "type": "string"}]}}, "id": "a1b2c3d4-1111-4000-8000-000000000006", "name": "Extract Metadata", "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [1100, 200]}, {"parameters": {"method": "POST", "url": "http://192.168.2.210:5000/webapi/entry.cgi", "sendBody": true, "bodyParameters": {"parameters": [{"name": "api", "value": "SYNO.FileStation.Download"}, {"name": "version", "value": "2"}, {"name": "method", "value": "download"}, {"name": "path", "value": "={{ $json.filepath }}"}, {"name": "_sid", "value": "={{ $('NAS Login').item.json.data.sid }}"}]}, "options": {"response": {"response": {"responseFormat": "file"}}}}, "id": "a1b2c3d4-1111-4000-8000-000000000007", "name": "Download Raw Video", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [1320, 200]}, {"parameters": {"command": "=ffmpeg -i /tmp/{{ $json.filename }} -vn -acodec pcm_s16le -ar 16000 -ac 1 /tmp/{{ $json.filename }}_audio.wav && echo '{\"status\":\"ok\",\"audio_file\":\"/tmp/{{ $json.filename }}_audio.wav\"}'"}, "id": "a1b2c3d4-1111-4000-8000-000000000008", "name": "FFmpeg Extract Audio", "type": "n8n-nodes-base.executeCommand", "typeVersion": 1, "position": [1540, 200]}, {"parameters": {"method": "POST", "url": "http://localhost:9000/asr", "sendBody": true, "contentType": "multipart-form-data", "bodyParameters": {"parameters": [{"name": "audio_file", "value": "={{ $json.audio_file }}"}, {"name": "task", "value": "transcribe"}, {"name": "language", "value": "en"}, {"name": "output", "value": "srt"}]}}, "id": "a1b2c3d4-1111-4000-8000-000000000009", "name": "Whisper Transcribe", "type": "n8n-nodes-base.httpRequest", "ty