|
|
|
merged
[v17] viin_brain + viin_web_editor: Polish v1.2 (WI-3..8)
|
[DOC] viin_brain, viin_web_editor: WI-8 release notes v1.2 + README + P1..P15 status sync
|
Failed
|
|
|
|
|
|
|
|
closed
[IMP] viin_brain: remove migration script
|
[IMP] viin_brain: remove migration script
This module is currently under development, no consumer.
|
Failed
|
|
|
|
|
|
|
|
merged
[IMP] viin_ai_rag: remove orphan knowledge_article_id field and
|
[REF] viin_brain, viin_ai_brain: drop group_brain_user, use
base.group_user
group_brain_user was effectively an alias of base.group_user (it just
implied base.group_user and added no behavior). Carrying it around
inflated ACL/ir.rule entries and produced redundant runtime state with
no functional benefit.
- security/res_groups.xml: remove group_brain_user; group_brain_editor
now implies base.group_user directly. Two Brain groups remain:
editor + admin.
- ir.model.access.csv, ir_rules.xml: replace every group_brain_user
reference with base.group_user.
- Drop the auto-enroll machinery that only existed to put internal
users into group_brain_user: remove hooks.py (post_init_hook),
models/res_users.py (_brain_maybe_enroll), the
brain_default_enable_for_all_employees setting field and its
Settings UI block. Every internal user can use Brain by default;
vault membership + role drive editor/admin capabilities.
- Update __manifest__.py description (3 groups -> 2 groups), drop the
post_init_hook key, and update the demo data note.
- Tests: delete test_brain_security_default_enroll.py (covered a
feature that no longer exists and imported the deleted hooks
module), drop the cls.group_brain_user alias from common.py /
test_brain_comment.py / test_brain_tools.py, and switch remaining
references in test_brain_snapshot.py / test_brain_vault.py /
test_brain_acl_multicompany.py to group_internal_user.
- docs/brain/security.md, ai-bridge.md, roadmap.md: align wording
with the 2-group model.
|
Killed
|
|
Not finished
|
|
|
|
|
|
merged
[IMP] viin_ai_rag: remove orphan knowledge_article_id field and
|
[REF] viin_brain, viin_ai_brain: drop group_brain_user, use base.group_user
group_brain_user was effectively an alias of base.group_user (it just
implied base.group_user and added no behavior). Carrying it around
inflated ACL/ir.rule entries and produced redundant runtime state with
no functional benefit.
- security/res_groups.xml: remove group_brain_user; group_brain_editor
now implies base.group_user directly. Two Brain groups remain:
editor + admin.
- ir.model.access.csv, ir_rules.xml: replace every group_brain_user
reference with base.group_user.
- Drop the auto-enroll machinery that only existed to put internal
users into group_brain_user: remove hooks.py (post_init_hook),
models/res_users.py (_brain_maybe_enroll), the
brain_default_enable_for_all_employees setting field and its
Settings UI block. Every internal user can use Brain by default;
vault membership + role drive editor/admin capabilities.
- Update __manifest__.py description (3 groups -> 2 groups), drop the
post_init_hook key, and update the demo data note.
- Tests: delete test_brain_security_default_enroll.py (covered a
feature that no longer exists and imported the deleted hooks
module), drop the cls.group_brain_user alias from common.py /
test_brain_comment.py / test_brain_tools.py, and switch remaining
references in test_brain_snapshot.py / test_brain_vault.py /
test_brain_acl_multicompany.py to group_internal_user.
- docs/brain/security.md, ai-bridge.md, roadmap.md: align wording
with the 2-group model.
|
Killed
|
|
Not finished
|
|
|
|
|
|
merged
[IMP] viin_ai_rag: remove orphan knowledge_article_id field and
|
[IMP] viin_ai_rag: remove orphan knowledge_article_id field and
selection
Removes Knowledge module integration that was replaced by viin_ai_brain
(Layer-3 connector). The `knowledge_article_id` field, `'knowledge'`
source_type selection, and related `_extract_text` branch are no longer
needed:
- viin.ai.source.knowledge_article_id field deleted
- source_type selection `'knowledge'` removed (base now has pdf, url,
text only)
- _extract_text dispatcher simplified (no knowledge.article logic)
- Manifest: wording updated; no depends change
- Docs: knowledge_article_id row removed; Brain coverage note points to
viin_ai_brain
Layer separation preserved: viin_ai_brain (Layer-3) owns Brain
integration with correct key 'brain_page'.
Resolves carry-over WI-4 from campaign 2026-04-26-ai17-lint-followup
(wrong premise: bridge module for Odoo EE; correction: Brain is already
in Viindoo stack via viin_ai_brain).
|
Killed
|
|
Not finished
|
|
|
|
|
|
closed
[IMP] viin_ai_rag: remove orphan knowledge_article_id field and selection
|
[IMP] viin_ai_rag: remove orphan knowledge_article_id field and selection
Removes Knowledge module integration that was replaced by viin_ai_brain (Layer-3 connector). The `knowledge_article_id` field, `'knowledge'` source_type selection, and related `_extract_text` branch are no longer needed:
- viin.ai.source.knowledge_article_id field deleted
- source_type selection `'knowledge'` removed (base now has pdf, url, text only)
- _extract_text dispatcher simplified (no knowledge.article logic)
- Migration: pre-migrate.py maps knowledge→brain_page, drops orphan FK column
- Manifest: wording updated; no depends change
- Docs: knowledge_article_id row removed; Brain coverage note points to viin_ai_brain
Layer separation preserved: viin_ai_brain (Layer-3) owns Brain integration with correct key 'brain_page'.
Resolves carry-over WI-4 from campaign 2026-04-26-ai17-lint-followup (wrong premise: bridge module for Odoo EE; correction: Brain is already in Viindoo stack via viin_ai_brain).
|
Killed
|
|
Not finished
|
|
|
|
|
|
merged
[FIX] ai17 lint follow-up: manifest, RST underline, prettier, comodel, access rule
|
[FIX] viin_ai_brain: add base.group_user to viin.ai.brain.tools access rule
ir.model.access.csv entry 'viin.ai.brain.tools all' had an empty group_id,
which triggered:
Rule viin.ai.brain.tools all has no group, this is a deprecated feature.
Every access-granting rule should specify a group.
Per Brain access matrix (docs/brain/security.md §4), viin.ai.brain.tools
tools are available to all internal users. Set group_id = base.group_user.
viin.ai.brain.tools is an AbstractModel dispatcher (no DB table); read-only
access (perm_read=1, others=0) allows internal users to invoke tool methods
via env['viin.ai.brain.tools'].tool_<name>() inside ir.actions.server code.
|
Killed
|
|
Not finished
|
|
|
|
|
|
merged
ai17 lint cleanup: fix 6 CI lint categories (test_lint + test_pylint + test_eslint)
|
[FIX] viin_ai_brain, viin_brain: eslint --fix prettier auto-format
Run eslint --fix with Odoo web/tooling _eslintrc.json on
viin_ai_brain/static/src and viin_brain/static/src to clear 132
prettier/prettier violations (single->double quote, line-wrap, indent)
and 2 prefer-const (dx/dy in graph_canvas.js).
3 violations remain for separate manual commit (no-self-assign,
unused _t, unused ns).
|
Failed
|
|
|
|
|
|
|
|
merged
[FIX] ci_workflows: Add addon repo clones
|
[FIX] ci_workflows: Add addon repo clones
Fixes nightly-extended failure where viin_ai_base could not resolve
viin_api_request_logger from tvtmaaddons17, and reports-extended hard-fail
on missing to_account_reports from erponline-enterprise17.
All Odoo-touching jobs (pr-gate-core, nightly-extended, nightly-v3-visual,
reports-extended) now:
- Run on self-hosted runner [self-hosted, "Viindoo Runbot"]
- Clone tvtmaaddons@17.0 and erponline-enterprise@17.0 via SSH
- Extend ADDONS_PATH with all addon directories in correct precedence order:
/tmp/odoo/addons,/tmp/tvtmaaddons,/tmp/erponline-enterprise,${{ github.workspace }}
Reports-extended fail-fast stub removed; tour execution now runs with full
addon resolution.
ci.yaml::odoo-install remains gated (if: false) with updated TODO referencing
follow-up ticket WI-ai17-odoo-install-ungate.
Refs: Viindoo/ai #24939135709
|
Failed
|
|
|
|
|
|
|
|
merged
[17.0][IMP] viin_brain: v3 UI absorption + v1.0 campaign close
|
[IMP] viin_brain: default admin grants + group hygiene + category rename
- Grant base.user_root + base.user_admin -> group_brain_admin at install
(non-demo, per Odoo app convention — matches to_approvals pattern)
This ensures admin users always reach Brain without relying on demo
data reload, which is the correct production-grade fix for the
AccessDenied mount issue that prompted WI-V3-R7's test-layer workaround.
- group_brain_user implies base.group_user (Brain User is always an
internal employee — standard Odoo module-group hygiene).
- Rename category "Viindoo Brain" -> "Brain" in Settings > Users UI.
Partial resolution of AUD-012. Full auto-grant of every base.group_user
into group_brain_user remains scoped to WI-V3-R8 (v1.1).
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX] ci: stabilize github action gates
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX] pylint
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX] ESLint/Prettier
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX+IMP]
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX] prettier
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
update roadmap
|
Killed
|
|
Not finished
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[IMP] viin_brain: reconcile audit closure and stabilize tours
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[IMP] viin_brain: align lint and editor module fixes
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX] viin_brain: harden UI and browser tours
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
fix layout
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
fix(brain-layout): restore 3-column shell — flex-direction column, no duplicate header, BS tokens
- .o_brain_app flex-direction: row → column so BrainHeader stacks as top bar
instead of appearing as a left-side strip beside o_brain_app_body
- Remove duplicate .o_brain_header block from brain_app.scss (source of truth
stays in brain_header.scss; duplicate was overriding flex-wrap and height)
- brain_header.scss: replace hardcoded hex trust-chip tokens (#E5F0FF, #1a5fad…)
with Bootstrap semantic vars (--bs-info-bg-subtle, --bs-warning-text-emphasis…)
so trust chips respond correctly to Odoo theme switching
- Add min-height: 48px to .o_brain_header (was lost when duplicate was present)
- Fix .o_brain_editor_placeholder: remove dashed border + secondary background
that made the active editor look like an empty box; add ::before placeholder
text only when contenteditable is empty and unfocused
- Add missing CSS for P8 drag-reorder:
.o_brain_page_drag_handle (grab cursor, hide-until-hover)
.o_brain_page_node--dragging (opacity 0.4)
.o_brain_page_node--drop-target (border-top primary color)
- Add missing CSS for P6 metadata chips:
.o_brain_page_meta_chips container
.o_brain_meta_chip --restricted (warning palette) and --shared (info palette)
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
feat(brain-p5p6p8): graph traversal tests + metadata chips + drag reorder
P5 — test_graph_traversal.py (14 tests):
- depth=0/1/2, direction outgoing/incoming/both, link_type filter
- max_results cap, no-cycle guard, via_link_ids assertion
- ACL: non-vault-member gets empty traversal; vault member sees full graph
P6 — page_chrome metadata badges:
- page_editor.js: track state.hasActiveShare (async share-link count)
- page_editor.xml: o_brain_page_meta_chips row with restricted + shared badges
P8 — VaultSidebar drag reorder (all/tree mode):
- HTML5 drag-and-drop: draggable="true" on <li>, drag handle ⠿
- onDragStart/Over/Leave/Drop/End handlers; visual classes --dragging/--drop-target
- _reorderPage(): swap sequence on drop then reload pages
|
Killed
|
|
Not finished
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
feat(brain-p4): dynamic slash command registry for BrainSlashMenu
Two new files wire the Brain slash menu (viin_web_editor.commands) which
was previously empty for non-AI users.
native_commands.js (viin_web_editor)
- Single bridge file between OdooEditor native features and BrainSlashMenu
- Registers: Image (MediaDialog), Video (MediaDialog), Table 3×3,
2-column layout, 3-column layout
- Dynamic contract: future Odoo commands → add one entry here, all
downstream consumers pick it up automatically
brain_commands.js (viin_brain)
- Full set of Brain block commands into viin_web_editor.commands:
Text (H1/H2/H3, paragraph, quote, code), Lists (bullet, numbered),
Brain (wikilink, record mention, external link),
Embed (record, recordset, page, database)
BrainSlashMenu adapter enhanced
- Add insertHtml(html) — explicit name for insertHTML execCommand
- Add formatBlock(tag) — converts current block (h1-h6, p, pre, blockquote)
- Add execCommand(name, arg) for list toggles (insertUnorderedList, etc.)
Both files load in web.assets_backend (eager bundle). MediaDialog is
already in that bundle via web_editor.assets_media_dialog.
|
Killed
|
|
Not finished
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX+IMP] viin_brain{*} various bugs fixing and improvements
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX+IMP] viin_brain{*} various bugs fixing and improvements
|
Killed
|
Not started
|
Not finished
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[FIX] viin_brain: WI-14 AC gaps — link_type labels, record mentions, daily filter
- AC-7: GraphPanel now shows link_type badge (wikilink/related/etc.) next to each
page name; batch-reads viin.brain.link in one ORM call after graph_traverse
- AC-9: Add "Record Mentions" section to GraphPanel showing record_mention links
from the current page with clickable onOpenRecord (opens Odoo form view)
- AC-14: Add Daily notes toggle to DatabaseView toolbar; passes page_type='daily'
filter to brain_get_database_rows backend
- FIX: viin_brain_form_sidebar_views.xml crm.lead inherit_id was pointing to
an ir.actions.act_window instead of ir.ui.view — corrected to crm.crm_lead_view_form
Tests: 0 failed, 0 error(s) of 9 — TestAiReviewWorkflow on v17_brain_final_test
|
Failed
|
|
|
|
|
|
|
|
merged
viin_brain: P3–P12 buildout + WI-14 UI panels (9 sprints — viindoo-brain v17 campaign)
|
[ADD] viin_brain: WI-14 — UI panels (AI attribution badge + Graph panel + AI Review + filters)
Backend (viin_brain/models/viin_brain_page.py):
- action_ai_review_approve / action_ai_review_reject — record reviewer id + timestamp
- _check_ai_review_permission — vault editor/admin role guard (raises AccessError)
- brain_get_current_user_role — return 'admin'/'editor'/'commenter'/'viewer'/'viewer' (default)
- write() override — auto-flip ai_review_status=pending_review → human_modified on human content edit (skip when brain_agent_id context set, skip when caller wrote status explicitly)
Backend (viin_brain/models/viin_brain_database_view.py):
- brain_get_database_rows: new optional filters dict; filters.is_ai_authored restricts rows to AI-authored pages
New OWL components:
- AiAttributionBadge (3 files) — '✦ AI' chip + hover CSS tooltip with 5 rows (agent / confidence / trace / status / reviewer)
- GraphPanel (3 files) — tab inside BacklinkPanel: incoming (depth=1), outgoing (depth=2 nested via via_link_ids heuristic), siblings (same parent_id). ACL honored automatically via ORM
- AiReviewPanel (3 files) — tab inside BacklinkPanel: Approve / Reject buttons, role-guarded (only editor/admin can click), status + agent + confidence + reviewer meta
UI integration:
- BacklinkPanel: import GraphPanel + AiReviewPanel, add Graph tab (always) + AI Review tab (only when isAiAuthored), load is_ai_authored + parent_id in _loadBacklinks
- PageEditor: register AiAttributionBadge, include AI fields in page read, render badge in title row
- VaultSidebar: new '✦ AI' filter pill (mode=ai_authored), handle in _loadFilteredPages + empty-state message
- DatabaseView: toolbar toggle '✦ AI' (filterAiAuthored state), passes filters dict to brain_get_database_rows
Manifest:
- Register new components (SCSS + JS + XML) before page_editor + backlink_panel
- Register viin_brain_graph_panel_tour.js in web.assets_tests
Tests:
- TestAiReviewWorkflow (9 cases): approve/reject/admin-can-approve/viewer-cannot/commenter-cannot/human-modified/approved-stays/agent-edit-skips/role-helper
- Tour viin_brain_graph_panel_tour.js (AC-17): seed incoming + outgoing edges via wikilinks, verify tab renders both sections
Note: manually implemented (Option B) after /coder subprocess hit systematic
write-target drift pattern (pattern doc:
knowledge/viinforge/patterns/failure-2026-04-20-coder-writes-to-ai17-main-via-doc-refs.md).
BA_REVIEW + PLAN artifacts from /coder subprocess retained (acceptance_criteria.md +
implementation_plan.md) as design source.
|
Failed
|
|
|
|
|
|
|
|
merged
[BRAIN] Cụm Brain v17 Phase A (viin_web_editor + viin_brain + account_reports + viin_ai_brain)
|
[DOC] docs/brain: reflect cluster relocation to ai17
4 Brain modules (viin_web_editor, viin_brain, viin_brain_account_reports, viin_ai_brain) now co-located in ai17 after strategic re-route from erponline-enterprise17. Only runtime cross-repo dep remaining: to_account_reports for viin_brain_account_reports. See delivery/audit_campaign_brain_repo_retarget_2026-04-18.md (viinforge) for full re-route history.
|
Failed
|
|
|
|
|
|
|
|
merged
[BRAIN] Cụm Brain v17 Phase A (viin_web_editor + viin_brain + account_reports + viin_ai_brain)
|
[ADD] viin_ai_brain: WI-13 — AI Brain bridge (RAG + 9 tools + ChatGPT hookup, Phase A v1.0)
Layer-3 connector tying viin_brain (knowledge engine) to the viin_ai stack.
Ships the v1.0 commit line for the Brain cluster per CEO R1.
Data layer
* source_type ``brain_page`` / ``brain_vault`` on ``viin.ai.source``
* block-aware chunker — one chunk per block, glue short neighbours into
the next (>= 200 chars signal per chunk); falls back to plain-text
paragraph chunking when content_blocks is empty.
* ``viin.brain.page.write`` hook: content_html / content_blocks /
content_plain changes flip attached sources back to status='draft' so
the upstream cron re-embeds.
9 tools mapped to the 5 brain philosophies
T3 semantic — brain_semantic_search (pgvector similarity + ACL)
T2+T3 struct — brain_graph_traverse (BFS on viin.brain.link)
T3 temporal — brain_timeline_query (write_date range + filters)
T1 getter — brain_get_page_content (content_plain + links)
T5 writers — brain_create_page / brain_create_block /
brain_update_property (confidence + attribution)
T2+T5 — brain_create_link (non-destructive edge)
T4+T5 — brain_link_record (page↔Odoo record binding)
Topic "Knowledge Base Assistant" wires the 9 tools. Every writer reads
``agent_id`` / ``trace_id`` / ``confidence`` from context, stamps
``is_ai_authored`` + ``ai_review_status='pending_review'`` (or
``approved`` when vault.auto_approve_ai_content=True), and refuses when
vault.allow_ai_authoring=False.
Controllers
* /viin_ai_brain/wysiwyg/prompt — run agent once, return trace+content
* /viin_ai_brain/wysiwyg/alternatives — N rephrase / shorten / lengthen
* /viin_ai_brain/ai_block/fill — resolve inline ai_block via agent
OWL services
* viin_web_editor.chatgpt_backend_provider — force-override, routes
OdooEditor ChatGPT dialog prompts through Viindoo agent stack.
* viin_brain.ai_bridge — force-override, exposes openChat / runInlinePrompt
/ regenerate. Three slash commands (/ai_write, /ai_chat, /ai_block).
Tests (27 passed on v17_test_brain_wi13, 0 failed, 0 errors)
* test_brain_rag — source extension, chunking (blocks + fallback + glue),
re-embed on write, content-only field gating, full _process_pending pass.
* test_brain_tools — shape/ACL/attribution for each of the 9 tools,
auto-approve vault path, blocked-vault AccessError.
* test_chatgpt_backend — wysiwyg/prompt, wysiwyg/alternatives,
ai_block/fill (controller methods invoked directly with mocked
request + AIAgent.run, so no LLM call + no HttpCase server startup).
Dependencies: viin_ai_agent, viin_ai_rag, viin_brain, viin_web_editor.
Campaign 2026-04-17-viindoo-brain-v17 WI-13 (Phase A v1.0 commit line).
STATUS: DONE
SPRINT_DONE: job_id=2026-04-17-brain-wi13-ai-brain-bridge
|
Failed
|
|
|
|
|
|
|
|
merged
[BRAIN] Cụm Brain v17 Phase A (viin_web_editor + viin_brain + account_reports + viin_ai_brain)
|
[ADD] viin_ai_brain: WI-13 — AI Brain bridge (RAG + 9 tools + ChatGPT hookup, Phase A v1.0)
Layer-3 connector tying viin_brain (knowledge engine) to the viin_ai stack.
Ships the v1.0 commit line for the Brain cluster per CEO R1.
Data layer
* source_type ``brain_page`` / ``brain_vault`` on ``viin.ai.source``
* block-aware chunker — one chunk per block, glue short neighbours into
the next (>= 200 chars signal per chunk); falls back to plain-text
paragraph chunking when content_blocks is empty.
* ``viin.brain.page.write`` hook: content_html / content_blocks /
content_plain changes flip attached sources back to status='draft' so
the upstream cron re-embeds.
9 tools mapped to the 5 brain philosophies
T3 semantic — brain_semantic_search (pgvector similarity + ACL)
T2+T3 struct — brain_graph_traverse (BFS on viin.brain.link)
T3 temporal — brain_timeline_query (write_date range + filters)
T1 getter — brain_get_page_content (content_plain + links)
T5 writers — brain_create_page / brain_create_block /
brain_update_property (confidence + attribution)
T2+T5 — brain_create_link (non-destructive edge)
T4+T5 — brain_link_record (page↔Odoo record binding)
Topic "Knowledge Base Assistant" wires the 9 tools. Every writer reads
``agent_id`` / ``trace_id`` / ``confidence`` from context, stamps
``is_ai_authored`` + ``ai_review_status='pending_review'`` (or
``approved`` when vault.auto_approve_ai_content=True), and refuses when
vault.allow_ai_authoring=False.
Controllers
* /viin_ai_brain/wysiwyg/prompt — run agent once, return trace+content
* /viin_ai_brain/wysiwyg/alternatives — N rephrase / shorten / lengthen
* /viin_ai_brain/ai_block/fill — resolve inline ai_block via agent
OWL services
* viin_web_editor.chatgpt_backend_provider — force-override, routes
OdooEditor ChatGPT dialog prompts through Viindoo agent stack.
* viin_brain.ai_bridge — force-override, exposes openChat / runInlinePrompt
/ regenerate. Three slash commands (/ai_write, /ai_chat, /ai_block).
Tests (27 passed on v17_test_brain_wi13, 0 failed, 0 errors)
* test_brain_rag — source extension, chunking (blocks + fallback + glue),
re-embed on write, content-only field gating, full _process_pending pass.
* test_brain_tools — shape/ACL/attribution for each of the 9 tools,
auto-approve vault path, blocked-vault AccessError.
* test_chatgpt_backend — wysiwyg/prompt, wysiwyg/alternatives,
ai_block/fill (controller methods invoked directly with mocked
request + AIAgent.run, so no LLM call + no HttpCase server startup).
Dependencies: viin_ai_agent, viin_ai_rag, viin_brain, viin_web_editor.
Campaign 2026-04-17-viindoo-brain-v17 WI-13 (Phase A v1.0 commit line).
STATUS: DONE
SPRINT_DONE: job_id=2026-04-17-brain-wi13-ai-brain-bridge
|
Failed
|
|
|
|
|