[recipes] Add brain-bootstrap one-command installer#406
Conversation
The integration was ported from a bigint-id codebase and parsed thought and job ids as numbers. On Open Brain (UUID primary keys) that breaks at runtime: upsert_thought returns a UUID that extractThoughtId rejects as "no thought_id", /execute 400s on a UUID job_id, and the pro dashboard's ingest routes reject every UUID with a positive-integer guard. Convert every ingestion id field (integration + both dashboards) from number to string, validate job ids as UUIDs, and replace the 0 "no id" sentinel with an empty string. Pairs with the smart-ingest-tables schema so a job completes end to end on a fresh UUID install. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Post-UUID conversion, the integer job_id examples return 400 ("must be a UUID"). Align the docs with the handler's UUID_RE check.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
OB1 PR Gate✅ Folder structure — All files are in allowed directories Result: All 15 checks passed! Ready for human review. Post-Merge TasksThese don't block merge — they're reminders for admins after this PR lands.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3512d4d90b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "wikiPages", | ||
| "crmCore", | ||
| "crmEngagement", |
There was a problem hiding this comment.
Ship the schemas used by the default bundle
The default wiki-crm bundle walks these schema keys through readSchemaSql, which calls fail(...) when the referenced file is absent. In this checkout, find schemas -maxdepth 2 -type f shows no schemas/wiki-pages/schema.sql, schemas/crm-core/schema.sql, or schemas/crm-engagement/schema.sql, so the advertised one-command default aborts in step 2 before any functions or verification run. Either include those schemas in the repo or remove them from bundles that are meant to run from this checkout.
Useful? React with 👍 / 👎.
| "crmCore", | ||
| "crmEngagement", | ||
| ], | ||
| functions: ["open-brain-rest", "wiki-mcp", "crm-mcp", "wiki-profile"], |
There was a problem hiding this comment.
Ship the functions used by the default bundle
The deploy loop calls deployFunction for every name here, and that helper returns a missing-source failure that is treated as fatal at the end of the run. This checkout has no integrations/wiki-mcp or integrations/crm-mcp directories (checked with find integrations -maxdepth 2), so even after the SQL issue is fixed the default wiki-crm bundle cannot complete a live install. Add those functions or keep them out of live bundles until they exist.
Useful? React with 👍 / 👎.
| const jobId = typeof body.job_id === "string" && UUID_RE.test(body.job_id.trim()) | ||
| ? body.job_id.trim() | ||
| : ""; | ||
| if (!jobId) return json({ error: "job_id is required (must be a UUID)" }, 400); |
There was a problem hiding this comment.
Accept the ingest job IDs produced by the schema
The checked-in schemas/smart-ingest/schema.sql still creates ingestion_jobs.id as bigserial and ingestion_items.job_id as bigint, and createJob returns the raw data.id at runtime. Requiring a UUID string here means a dry-run job created with the repo's own schema cannot be executed through /smart-ingest/execute because it is rejected with 400 before the lookup; the dashboard proxy added the same UUID guard, so dry-run execution is broken unless a matching ID migration is shipped.
Useful? React with 👍 / 👎.
3512d4d to
f443406
Compare
f443406 to
6ba5727
Compare
Adds
recipes/brain-bootstrap: a one-command installer that provisions the schema, deploys the gateway, and points a Vercel deploy at the dashboard.Depends on #405 (stacked; diff includes ancestors until they merge).
Note for maintainers: the installer's
DASHBOARD_REPOand Vercel button currently default to thealanshurafa/OB1fork, where the complete milestone dashboard (CRM + wiki) lives until these PRs land upstream. Repoint to the canonical repo once merged.