feat(PBI-102): MCP-support voor ProductDoc-revisions + PbiDoc + nieuwe tools #3

Merged
janpeter merged 3 commits from feat/pbi-102-pbi-doc-linking into main 2026-05-17 02:45:51 +02:00
Owner

Wat verandert

MCP-counterpart van Scrum4Me PR #13 (PBI-102). Voegt support toe voor ProductDocRevision + PbiDoc-junction in alle relevante MCP-tools, en breidt schema/lib uit zodat de mirror van lib/product-doc-write.ts werkt.

Commits

  1. feat(PBI-102): sync Scrum4Me schema + mirror writeProductDoc-laag (T-1123)

    • prisma/schema.prisma gesynced (GRILLS enum, ProductDocRevision, PbiDoc, FK's)
    • Nieuw onder src/lib/: product-doc-schemas.ts, product-doc-parser.ts, product-doc-frontmatter.ts, product-doc-write.ts (DRY-mirror — wijzig BEIDE zijden)
  2. feat(PBI-102): MCP idea-flow + wait-for-job naar ProductDoc-revisions (T-1124, T-1125, T-1126)

    • update_idea_grill_md / update_idea_plan_md → writeProductDoc(folder=GRILLS|PLANS) + zet Idea.{grill,plan}_doc_id + dual-write Idea.{grill,plan}_md voor backward-compat. Vereist Idea.product_id.
    • get_idea_context laadt plan_doc.current_revision.content_md met fallback naar legacy strings. Output-contract identiek + nieuwe optionele plan_doc/grill_doc-pointers
    • P1 uit review: wait-for-job.ts payload idea.{plan,grill}_md komt nu uit revision-content; downstream agents zien dezelfde keys
  3. feat(PBI-102): MCP create_pbi.source_docs + create_product_doc + link_pbi_doc (T-1127, T-1128, T-1129)

    • create_pbi: optionele source_docs: [{doc_id, revision_id?, role}]. Server resolvet revision_id naar doc.current_revision_id op linkmoment en bevriest die. Cross-product + revision-belongs-to-doc validatie.
    • Nieuw create_product_doc: wrapper rondom writeProductDoc voor Claude-Code-flow. Slug auto-derived uit frontmatter title.
    • Nieuw link_pbi_doc: idempotente PbiDoc-upsert voor achteraf-koppelen.
    • Beide nieuwe tools geregistreerd in src/index.ts.

Verificatie

  • npm run build && npm test: 399/399 tests pass
  • Schema-mirror bevat alle Scrum4Me PBI-102 wijzigingen

Test plan

  • Merge AFTER Scrum4Me PR #13 is gemerged (anders verwijst MCP-schema naar velden die nog niet in DB zitten)
  • Productie-rollout: nieuwe MCP-server-versie inzetten (npm run build + restart proces)
  • Smoke-test create_product_doc + link_pbi_doc via een lokale MCP-tool-aanroep
  • Verify dat wait_for_job payload idea.plan_md correct gevuld is (uit revision)

🤖 Generated with Claude Code

## Wat verandert MCP-counterpart van [Scrum4Me PR #13](https://git.jp-visser.nl/janpeter/Scrum4Me/pulls/13) (PBI-102). Voegt support toe voor `ProductDocRevision` + `PbiDoc`-junction in alle relevante MCP-tools, en breidt schema/lib uit zodat de mirror van `lib/product-doc-write.ts` werkt. ## Commits 1. **`feat(PBI-102): sync Scrum4Me schema + mirror writeProductDoc-laag`** (T-1123) - `prisma/schema.prisma` gesynced (GRILLS enum, ProductDocRevision, PbiDoc, FK's) - Nieuw onder `src/lib/`: `product-doc-schemas.ts`, `product-doc-parser.ts`, `product-doc-frontmatter.ts`, `product-doc-write.ts` (DRY-mirror — wijzig BEIDE zijden) 2. **`feat(PBI-102): MCP idea-flow + wait-for-job naar ProductDoc-revisions`** (T-1124, T-1125, T-1126) - `update_idea_grill_md` / `update_idea_plan_md` → `writeProductDoc(folder=GRILLS|PLANS)` + zet `Idea.{grill,plan}_doc_id` + dual-write `Idea.{grill,plan}_md` voor backward-compat. Vereist `Idea.product_id`. - `get_idea_context` laadt `plan_doc.current_revision.content_md` met fallback naar legacy strings. Output-contract identiek + nieuwe optionele `plan_doc/grill_doc`-pointers - **P1 uit review:** `wait-for-job.ts` payload `idea.{plan,grill}_md` komt nu uit revision-content; downstream agents zien dezelfde keys 3. **`feat(PBI-102): MCP create_pbi.source_docs + create_product_doc + link_pbi_doc`** (T-1127, T-1128, T-1129) - `create_pbi`: optionele `source_docs: [{doc_id, revision_id?, role}]`. Server resolvet `revision_id` naar `doc.current_revision_id` op linkmoment en bevriest die. Cross-product + revision-belongs-to-doc validatie. - **Nieuw `create_product_doc`**: wrapper rondom `writeProductDoc` voor Claude-Code-flow. Slug auto-derived uit frontmatter title. - **Nieuw `link_pbi_doc`**: idempotente PbiDoc-upsert voor achteraf-koppelen. - Beide nieuwe tools geregistreerd in `src/index.ts`. ## Verificatie - `npm run build && npm test`: **399/399 tests pass** - Schema-mirror bevat alle Scrum4Me PBI-102 wijzigingen ## Test plan - [ ] Merge AFTER Scrum4Me PR #13 is gemerged (anders verwijst MCP-schema naar velden die nog niet in DB zitten) - [ ] Productie-rollout: nieuwe MCP-server-versie inzetten (`npm run build` + restart proces) - [ ] Smoke-test `create_product_doc` + `link_pbi_doc` via een lokale MCP-tool-aanroep - [ ] Verify dat `wait_for_job` payload `idea.plan_md` correct gevuld is (uit revision) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sync prisma/schema.prisma vanaf Scrum4Me main+PBI-102: GRILLS enum,
ProductDocRevision + PbiDoc/PbiDocRole, Idea.{plan,grill}_doc_id FK's,
ProductDoc.current_revision_id pointer.

Nieuw onder src/lib/:
- product-doc-schemas.ts — minimal mirror van productDocFrontmatterSchema
- product-doc-parser.ts — yaml-frontmatter parser (DRY-mirror)
- product-doc-frontmatter.ts — setProductDocFrontmatterFields (DRY-mirror)
- product-doc-write.ts — writeProductDoc met hash+revision-skip
  (gespiegeld vanuit Scrum4Me/lib/product-doc-write.ts — wijzig beide)

Wordt in T-1124/T-1128 gebruikt door update_idea_*_md en create_product_doc.

Task: T-1123

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- update_idea_grill_md → writeProductDoc(folder=GRILLS) + zet Idea.grill_doc_id
  + dual-write Idea.grill_md voor backward-compat. Vereist Idea.product_id.
  Frontmatter wordt auto-toegevoegd als markdown geen yaml-header heeft.
- update_idea_plan_md → idem voor PLANS; plan-yaml-parse blijft eerst,
  bij parse-fail GEEN ProductDoc-write (status=PLAN_FAILED). Bij success:
  ProductDoc + revision + Idea.plan_doc_id + dual-write + log met
  pbi_title/story_count/task_count/revision.
- get_idea_context → laadt plan_doc/grill_doc.current_revision en
  prefereert revision-content boven legacy Idea.{grill,plan}_md.
  Output-contract identiek + nieuwe optionele plan_doc/grill_doc velden
  voor revision-aware consumenten.
- wait-for-job.ts (P1 uit review) → idem fallback; downstream agents
  zien dezelfde keys maar krijgen content uit revision wanneer aanwezig.

Tasks: T-1124, T-1125, T-1126

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- create_pbi: optionele `source_docs: [{doc_id, revision_id?, role}]`.
  Server resolvet revision_id naar doc.current_revision_id op linkmoment
  en bevriest die. Cross-product validatie + revision-belongs-to-doc
  check. PBI-create + PbiDoc-creates lopen in één $transaction. Return
  uitgebreid met source_docs[{doc_id, revision_id, revision, role}].
- create_product_doc (nieuw): wrapper rondom writeProductDoc voor de
  Claude-Code-flow. Slug auto-derived uit frontmatter title als omitted.
  Return: {doc_id, revision_id, revision, content_hash, noop, created}.
- link_pbi_doc (nieuw): idempotente PbiDoc-upsert voor achteraf-koppelen.
  Same-product check + revision-belongs-to-doc check.
- Beide nieuwe tools geregistreerd in src/index.ts.

Tasks: T-1127, T-1128, T-1129

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-mcp!3
No description provided.