350b902584
Live run #692 got all the way to nocodb_upsert on a fresh Substack CRM record and hit HTTPError 400 Bad Request on the POST. The traceback only showed the URL and status, not the NocoDB response body — the actual field-level reason for the 400 is in that body, and the synthetic test in test_upsert_synthetic.py already calls out the SingleSelect-options-not-set gap on the live table as the likely culprit. Wrap the POST and PATCH in 'if not resp.ok' to raise a RuntimeError that includes the response body, table_id, and record_keys (or record_id) so the next run's log can pinpoint the exact NocoDB column that's rejecting the record. Offline tests: 10/10 still pass. Refs: INB-17 Co-Authored-By: Paperclip <noreply@paperclip.ing>
46 lines
1.9 KiB
JSON
46 lines
1.9 KiB
JSON
{
|
|
"$schema": "https://opencode.ai/config.json",
|
|
"provider": {
|
|
"ollama": {
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"name": "Ollama (InboxOS FRP)",
|
|
"options": {
|
|
"baseURL": "{env:OLLAMA_BASE_URL}"
|
|
},
|
|
"models": {
|
|
"lfm2.5:8b": { "name": "LFM 2.5 (8B Local) - Legacy small/fast model. No longer used by either pipeline." },
|
|
"gemma4:12b": { "name": "Gemma 4 (12B Local) - Historical pipeline smart-retry model (chain step 2)." },
|
|
"gemma4:e4b": { "name": "Gemma 4 (E4B Local) - Historical pipeline primary model (chain step 1)." },
|
|
"gemma4:31b-cloud": { "name": "Gemma 4 (31B Cloud) - Live pipeline model for classify + extract; historical pipeline last-resort escalation (chain step 3)." }
|
|
}
|
|
}
|
|
},
|
|
"command": {
|
|
"inboxos:classify": {
|
|
"description": "Classify an InboxOS email into zero or more extraction modules.",
|
|
"model": "ollama/gemma4:e4b",
|
|
"template": "{file:./.opencode/commands/inboxos:classify.md}"
|
|
},
|
|
"inboxos:extract-crm": {
|
|
"description": "Extract structured Personal CRM fields from an email.",
|
|
"model": "ollama/gemma4:e4b",
|
|
"template": "{file:./.opencode/commands/inboxos:extract-crm.md}"
|
|
},
|
|
"inboxos:extract-finance": {
|
|
"description": "Extract structured Finance/P&L fields from an email.",
|
|
"model": "ollama/gemma4:e4b",
|
|
"template": "{file:./.opencode/commands/inboxos:extract-finance.md}"
|
|
},
|
|
"inboxos:extract-intel": {
|
|
"description": "Extract structured Daily News / Intel fields from an email.",
|
|
"model": "ollama/gemma4:e4b",
|
|
"template": "{file:./.opencode/commands/inboxos:extract-intel.md}"
|
|
},
|
|
"inboxos:extract-promotions": {
|
|
"description": "Extract structured Promotions/Marketing fields from an email.",
|
|
"model": "ollama/gemma4:e4b",
|
|
"template": "{file:./.opencode/commands/inboxos:extract-promotions.md}"
|
|
}
|
|
}
|
|
}
|