diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5401976..f630c50 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -167,6 +167,7 @@ model StoryLog { status TestStatus? commit_hash String? commit_message String? + metadata Json? created_at DateTime @default(now()) @@index([story_id, created_at]) diff --git a/src/tools/log-commit.ts b/src/tools/log-commit.ts index 01e86b0..2629405 100644 --- a/src/tools/log-commit.ts +++ b/src/tools/log-commit.ts @@ -1,5 +1,6 @@ import { z } from 'zod' import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' +import type { Prisma } from '@prisma/client' import { prisma } from '../prisma.js' import { requireWriteAccess } from '../auth.js' import { userCanAccessStory } from '../access.js' @@ -23,7 +24,7 @@ export function registerLogCommitTool(server: McpServer) { 'Forbidden for demo accounts.', inputSchema, }, - async ({ story_id, content, commit_hash, commit_message }) => + async ({ story_id, content, commit_hash, commit_message, metadata }) => withToolErrors(async () => { const auth = await requireWriteAccess() if (!(await userCanAccessStory(story_id, auth.userId))) { @@ -36,6 +37,7 @@ export function registerLogCommitTool(server: McpServer) { content, commit_hash, commit_message, + metadata: (metadata ?? undefined) as Prisma.InputJsonValue | undefined, }, select: { id: true, created_at: true }, }) diff --git a/src/tools/log-implementation.ts b/src/tools/log-implementation.ts index f12de38..53034f3 100644 --- a/src/tools/log-implementation.ts +++ b/src/tools/log-implementation.ts @@ -1,12 +1,11 @@ import { z } from 'zod' import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' +import type { Prisma } from '@prisma/client' import { prisma } from '../prisma.js' import { requireWriteAccess } from '../auth.js' import { userCanAccessStory } from '../access.js' import { toolError, toolJson, withToolErrors } from '../errors.js' -// metadata is accepted on input but not yet written — schema sync after -// Scrum4Me PR #2 lands adds the StoryLog.metadata JSONB column. const inputSchema = z.object({ story_id: z.string().min(1), content: z.string().min(1), @@ -23,7 +22,7 @@ export function registerLogImplementationTool(server: McpServer) { 'Forbidden for demo accounts.', inputSchema, }, - async ({ story_id, content }) => + async ({ story_id, content, metadata }) => withToolErrors(async () => { const auth = await requireWriteAccess() if (!(await userCanAccessStory(story_id, auth.userId))) { @@ -34,6 +33,7 @@ export function registerLogImplementationTool(server: McpServer) { story_id, type: 'IMPLEMENTATION_PLAN', content, + metadata: (metadata ?? undefined) as Prisma.InputJsonValue | undefined, }, select: { id: true, created_at: true }, }) diff --git a/src/tools/log-test-result.ts b/src/tools/log-test-result.ts index d6eaa05..c4f70f3 100644 --- a/src/tools/log-test-result.ts +++ b/src/tools/log-test-result.ts @@ -1,5 +1,6 @@ import { z } from 'zod' import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js' +import type { Prisma } from '@prisma/client' import { prisma } from '../prisma.js' import { requireWriteAccess } from '../auth.js' import { userCanAccessStory } from '../access.js' @@ -22,7 +23,7 @@ export function registerLogTestResultTool(server: McpServer) { 'Forbidden for demo accounts.', inputSchema, }, - async ({ story_id, content, status }) => + async ({ story_id, content, status, metadata }) => withToolErrors(async () => { const auth = await requireWriteAccess() if (!(await userCanAccessStory(story_id, auth.userId))) { @@ -34,6 +35,7 @@ export function registerLogTestResultTool(server: McpServer) { type: 'TEST_RESULT', content, status, + metadata: (metadata ?? undefined) as Prisma.InputJsonValue | undefined, }, select: { id: true, created_at: true }, }) diff --git a/vendor/scrum4me b/vendor/scrum4me index a8adac1..43a4294 160000 --- a/vendor/scrum4me +++ b/vendor/scrum4me @@ -1 +1 @@ -Subproject commit a8adac127fc09486d0b3e63544b5ddf8791f3c04 +Subproject commit 43a429442491c29148c921fa2943960f70dd9fb6