feat: IDEA-118 copilot-integratie (Fase 5 Deel B) — @s4m-kit + /copilot + app-tools #75
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/copilot-fase5-ops-integration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Samenvatting
Integreert de IDEA-118 in-app copilot in het Ops-dashboard (pilot-app) — Deel B van Fase 5 (Deel A = de centrale service-deploy op 154, apart). Het plan is DUBBEL-GO na 4 cross-model-reviewrondes; deze implementatie is per-taak build-geverifieerd + holistisch code-reviewed (GO).
@s4m-kitals submodule (vendor/scrum4me-copilot, Forgejo) +tsconfig(@s4m-kit/*-path + verplichteexcludevoor de vendored tests /service-workspace / genestescrum4me-shared-submodule, zodat de brede**/*.ts-include geen Ops-vreemde deps trekt) +zod@^4.next.config.tswebpackextensionAlias(.js→.ts, de Turbopack-fix) +package.json-scripts op--webpack.app/api/s4m/[...path]/route.ts:createS4MRoutes-proxy (SSE pass-through + server-side app-key) met 2 read-only app-tools (recente_deploys,deploy_details) opFlowRun/FlowStep. User-scoped: beide handlers re-fetchengetCurrentUser()+ filteren opuser_id./copilot-paneel (nav-suite Chat·Documentatie·Ideas·Jobs via@s4m-kit) + AppNav-item.deploy/ops-agent/baseline/flows/update_ops_dashboard.ymluitgebreid met één stapgit_submodule_update(nágit_pull, vóórprisma_migrate_deploy_ops_dashboard); migrate/build/up/smoke ongewijzigd.proxy.ts:/api/s4m/*vrijgesteld van de CSRF double-submit-gate.⚠️ Security-noot (CSRF-exemptie — bewust, graag mee-reviewen)
proxy.tsstelt/api/s4m/*vrij van de double-submit CSRF-header-check. De kit-hook (generiek pakket) kan Ops' CSRF-token niet injecteren, waardoor élke chat/tool-POST anders 403'd zou worden. Veilig omdatops_sessionsameSite: 'strict'is (een cross-site POST draagt geen sessie →getCurrentUser()= null → de route'srequireSessiongeeft 401) én de app-tools read-only zijn. De double-submit-check is voor deze route dus redundant; de exemptie is prefix-scoped (/api/s4m+/api/s4m/..., geen sibling-over-match).Verificatie
git submodule update --init --recursive vendor/scrum4me-copilot && npx tsc --noEmit→ 0 errors (deexcludehoudt vendored tests/service + de genestescrum4me-shared-lib — dieyamlimporteert — buiten de typecheck, óók met de geneste submodule aanwezig).npm run build(next build --webpack) → Compiled successfully;/copilot+/api/s4m/[...path]in de route-list, geen module-resolution-errors (bewijst@s4m-kit/*+../protocol/srcresolutie onder webpackextensionAlias).docker build(clean-context: Alpine,npm ciincl. zod,prisma generate, submodule-COPY, bundle) → exit 0.Na de merge (154 — Fase-5 Task A5, door 154-claude)
De live
/etc/ops-agent/flows/update_ops_dashboard.ymlsyncen met deze baseline (de extragit_submodule_update-stap) +S4M_COPILOT_URL=http://scrum4me-copilot:8100&S4M_COPILOT_APP_KEY=<COPILOT_APP_OPS_KEY>in/srv/scrum4me/ops-dashboard/.env, dan deupdate_ops_dashboard-flow draaien. Daarna de browser-e2e (Deel C).Test Plan
update_ops_dashboard-flow draait groen (submodule-init in de build-context;curl_smoke_ops_dashboard/login OK)./copilot: één chat-beurt streamt SSE; "toon de recente deploys" → app-tool-round-trip (Ops-FlowRun); Documentatie/Ideas/Jobs-tabs laden Ops-product-data (cmp43iaoi000h6o7rxklqivl5).🤖 Generated with Claude Code