@burdenoff/mcp-libs 2026.825.3 → 2026.828.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/index.d.cts +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/modules/artistrybase/index.cjs +8 -8
- package/dist/modules/artistrybase/index.cjs.map +1 -1
- package/dist/modules/artistrybase/index.js +8 -8
- package/dist/modules/artistrybase/index.js.map +1 -1
- package/dist/modules/brainyrich/index.cjs.map +1 -1
- package/dist/modules/brainyrich/index.js.map +1 -1
- package/dist/modules/ecoimpacthub/index.cjs +12 -6
- package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
- package/dist/modules/ecoimpacthub/index.js +12 -6
- package/dist/modules/ecoimpacthub/index.js.map +1 -1
- package/dist/modules/theculturepost/index.cjs +16 -4
- package/dist/modules/theculturepost/index.cjs.map +1 -1
- package/dist/modules/theculturepost/index.js +16 -4
- package/dist/modules/theculturepost/index.js.map +1 -1
- package/dist/modules/timecampus/index.cjs +18 -9
- package/dist/modules/timecampus/index.cjs.map +1 -1
- package/dist/modules/timecampus/index.js +18 -9
- package/dist/modules/timecampus/index.js.map +1 -1
- package/dist/{tool-name-Bvb36qmq.d.cts → tool-name-DYWaobFF.d.cts} +1 -1
- package/dist/{tool-name-BaPNMZdj.d.ts → tool-name-nso0HFYX.d.ts} +1 -1
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/modules/artistrybase/operations.ts","../../../src/modules/artistrybase/tools/shared.ts","../../../src/modules/artistrybase/tools/library.ts","../../../src/modules/artistrybase/tools/production.ts","../../../src/modules/artistrybase/tools/review.ts","../../../src/modules/artistrybase/tools/portfolio.ts","../../../src/modules/artistrybase/tools/health.ts","../../../src/modules/artistrybase/resources.ts","../../../src/modules/artistrybase/prompts.ts","../../../src/modules/artistrybase/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the Artistrybase MCP module.\n *\n * Artistrybase is the multi-medium creative platform (audio, video, stories,\n * art) — the federated system of record for creative works, their immutable\n * versions and file assets, collections, productions and teams, the\n * review/feedback/approval + release pipeline, public portfolios, follows, and\n * licensing. Backend subgraph:\n * ~/products/artistrybase/wspace-artistrybase-svc/ (Hive service name\n * `artistrybase`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — Artistrybase inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is prefixed `art*` and every type/enum/input\n * is prefixed `Art*` (the subgraph's GraphQL naming contract); operations call\n * the fields by their REAL names. Uses template-string interpolation (not gql\n * tagged fragments) to match the canonical vibecontrols/kadaikodi modules.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const WORK_FIELDS = `\n id title summary medium status visibility productionId creatorId\n coverFileId currentVersionId durationMs tags publishedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const WORK_VERSION_FIELDS = `\n id workId versionNo label notes fileId checksum sizeBytes isPublished\n workspaceId createdAt updatedAt\n`;\n\nexport const ASSET_FIELDS = `\n id workId versionId kind fileId mimeType sizeBytes width height durationMs\n workspaceId createdAt updatedAt\n`;\n\nexport const COLLECTION_FIELDS = `\n id title slug description medium visibility tags coverFileId\n workspaceId createdAt updatedAt\n`;\n\nexport const PRODUCTION_FIELDS = `\n id title slug synopsis medium status ownerId tags startDate targetDate\n releasedAt workspaceId createdAt updatedAt\n`;\n\nexport const PRODUCTION_MEMBER_FIELDS = `\n id productionId memberId role title isLead workspaceId createdAt updatedAt\n`;\n\nexport const REFERENCE_FIELDS = `\n id productionId title note url fileId tags workspaceId createdAt updatedAt\n`;\n\nexport const REVIEW_ROUND_FIELDS = `\n id workId versionId round status title dueDate openedById closedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const FEEDBACK_FIELDS = `\n id reviewRoundId authorId body anchorType anchorValue status\n resolvedAt resolvedById workspaceId createdAt updatedAt\n`;\n\nexport const APPROVAL_FIELDS = `\n id reviewRoundId approverId decision comment decidedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const RELEASE_FIELDS = `\n id workId versionId channel status visibility notes scheduledFor\n publishedAt workspaceId createdAt updatedAt\n`;\n\nexport const PORTFOLIO_FIELDS = `\n id handle displayName bio avatarFileId bannerFileId links featuredWorkIds\n followerCount ownerId visibility workspaceId createdAt updatedAt\n`;\n\nexport const FOLLOW_FIELDS = `\n id portfolioId followerId notify workspaceId createdAt\n`;\n\nexport const LICENSE_FIELDS = `\n id workId name model status priceAmount currency spdx terms attribution\n workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Library — works\n// ---------------------------------------------------------------------------\n\nexport const GET_WORK = `\n query ArtistrybaseGetWork($id: ID!) {\n artWork(id: $id) {\n ${WORK_FIELDS}\n assets { ${ASSET_FIELDS} }\n versions { ${WORK_VERSION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_WORKS = `\n query ArtistrybaseListWorks(\n $medium: ArtMedium\n $status: ArtWorkStatus\n $productionId: ID\n $pagination: PaginationInput\n ) {\n artListWorks(\n medium: $medium\n status: $status\n productionId: $productionId\n pagination: $pagination\n ) {\n items { ${WORK_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_WORK = `\n mutation ArtistrybaseCreateWork($input: ArtCreateWorkInput!) {\n artCreateWork(input: $input) {\n ${WORK_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_WORK = `\n mutation ArtistrybaseUpdateWork($id: ID!, $input: ArtUpdateWorkInput!) {\n artUpdateWork(id: $id, input: $input) {\n ${WORK_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_WORK = `\n mutation ArtistrybaseArchiveWork($id: ID!) {\n artArchiveWork(id: $id)\n }\n`;\n\nexport const PUBLISH_WORK_VERSION = `\n mutation ArtistrybasePublishWorkVersion($workId: ID!, $versionId: ID!) {\n artPublishWorkVersion(workId: $workId, versionId: $versionId) {\n ${WORK_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Library — versions + assets\n// ---------------------------------------------------------------------------\n\nexport const LIST_WORK_VERSIONS = `\n query ArtistrybaseListWorkVersions($workId: ID!) {\n artListWorkVersions(workId: $workId) {\n ${WORK_VERSION_FIELDS}\n }\n }\n`;\n\nexport const ADD_WORK_VERSION = `\n mutation ArtistrybaseAddWorkVersion($input: ArtCreateWorkVersionInput!) {\n artAddWorkVersion(input: $input) {\n ${WORK_VERSION_FIELDS}\n }\n }\n`;\n\nexport const LIST_ASSETS = `\n query ArtistrybaseListAssets($workId: ID!) {\n artListAssets(workId: $workId) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\nexport const ADD_ASSET = `\n mutation ArtistrybaseAddAsset($input: ArtCreateAssetInput!) {\n artAddAsset(input: $input) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Library — collections\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLECTION = `\n query ArtistrybaseGetCollection($id: ID!) {\n artCollection(id: $id) {\n ${COLLECTION_FIELDS}\n works { ${WORK_FIELDS} }\n }\n }\n`;\n\nexport const LIST_COLLECTIONS = `\n query ArtistrybaseListCollections(\n $visibility: ArtVisibility\n $pagination: PaginationInput\n ) {\n artListCollections(visibility: $visibility, pagination: $pagination) {\n items { ${COLLECTION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation ArtistrybaseCreateCollection($input: ArtCreateCollectionInput!) {\n artCreateCollection(input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_COLLECTION = `\n mutation ArtistrybaseUpdateCollection($id: ID!, $input: ArtUpdateCollectionInput!) {\n artUpdateCollection(id: $id, input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const ADD_WORK_TO_COLLECTION = `\n mutation ArtistrybaseAddWorkToCollection($collectionId: ID!, $workId: ID!) {\n artAddWorkToCollection(collectionId: $collectionId, workId: $workId) {\n ${COLLECTION_FIELDS}\n works { id title medium status }\n }\n }\n`;\n\nexport const REMOVE_WORK_FROM_COLLECTION = `\n mutation ArtistrybaseRemoveWorkFromCollection($collectionId: ID!, $workId: ID!) {\n artRemoveWorkFromCollection(collectionId: $collectionId, workId: $workId) {\n ${COLLECTION_FIELDS}\n works { id title medium status }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Production — productions\n// ---------------------------------------------------------------------------\n\nexport const GET_PRODUCTION = `\n query ArtistrybaseGetProduction($id: ID!) {\n artProduction(id: $id) {\n ${PRODUCTION_FIELDS}\n members { ${PRODUCTION_MEMBER_FIELDS} }\n references { ${REFERENCE_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PRODUCTIONS = `\n query ArtistrybaseListProductions(\n $status: ArtProductionStatus\n $pagination: PaginationInput\n ) {\n artListProductions(status: $status, pagination: $pagination) {\n items { ${PRODUCTION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PRODUCTION = `\n mutation ArtistrybaseCreateProduction($input: ArtCreateProductionInput!) {\n artCreateProduction(input: $input) {\n ${PRODUCTION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PRODUCTION = `\n mutation ArtistrybaseUpdateProduction($id: ID!, $input: ArtUpdateProductionInput!) {\n artUpdateProduction(id: $id, input: $input) {\n ${PRODUCTION_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_PRODUCTION = `\n mutation ArtistrybaseTransitionProduction($id: ID!, $status: ArtProductionStatus!) {\n artTransitionProduction(id: $id, status: $status) {\n ${PRODUCTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Production — members + references\n// ---------------------------------------------------------------------------\n\nexport const LIST_PRODUCTION_MEMBERS = `\n query ArtistrybaseListProductionMembers($productionId: ID!) {\n artListProductionMembers(productionId: $productionId) {\n ${PRODUCTION_MEMBER_FIELDS}\n }\n }\n`;\n\nexport const ADD_PRODUCTION_MEMBER = `\n mutation ArtistrybaseAddProductionMember($input: ArtAddProductionMemberInput!) {\n artAddProductionMember(input: $input) {\n ${PRODUCTION_MEMBER_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_PRODUCTION_MEMBER = `\n mutation ArtistrybaseRemoveProductionMember($id: ID!) {\n artRemoveProductionMember(id: $id)\n }\n`;\n\nexport const LIST_REFERENCES = `\n query ArtistrybaseListReferences($productionId: ID!) {\n artListReferences(productionId: $productionId) {\n ${REFERENCE_FIELDS}\n }\n }\n`;\n\nexport const ADD_REFERENCE = `\n mutation ArtistrybaseAddReference($input: ArtCreateReferenceInput!) {\n artAddReference(input: $input) {\n ${REFERENCE_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_REFERENCE = `\n mutation ArtistrybaseRemoveReference($id: ID!) {\n artRemoveReference(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Review — review rounds, feedback, approvals\n// ---------------------------------------------------------------------------\n\nexport const GET_REVIEW_ROUND = `\n query ArtistrybaseGetReviewRound($id: ID!) {\n artReviewRound(id: $id) {\n ${REVIEW_ROUND_FIELDS}\n feedback { ${FEEDBACK_FIELDS} }\n approvals { ${APPROVAL_FIELDS} }\n }\n }\n`;\n\nexport const LIST_REVIEW_ROUNDS = `\n query ArtistrybaseListReviewRounds($workId: ID!, $status: ArtReviewStatus) {\n artListReviewRounds(workId: $workId, status: $status) {\n ${REVIEW_ROUND_FIELDS}\n }\n }\n`;\n\nexport const OPEN_REVIEW_ROUND = `\n mutation ArtistrybaseOpenReviewRound($input: ArtOpenReviewRoundInput!) {\n artOpenReviewRound(input: $input) {\n ${REVIEW_ROUND_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_REVIEW_ROUND = `\n mutation ArtistrybaseTransitionReviewRound($id: ID!, $status: ArtReviewStatus!) {\n artTransitionReviewRound(id: $id, status: $status) {\n ${REVIEW_ROUND_FIELDS}\n }\n }\n`;\n\nexport const ADD_FEEDBACK = `\n mutation ArtistrybaseAddFeedback($input: ArtAddFeedbackInput!) {\n artAddFeedback(input: $input) {\n ${FEEDBACK_FIELDS}\n }\n }\n`;\n\nexport const RESOLVE_FEEDBACK = `\n mutation ArtistrybaseResolveFeedback($id: ID!, $status: ArtFeedbackStatus!) {\n artResolveFeedback(id: $id, status: $status) {\n ${FEEDBACK_FIELDS}\n }\n }\n`;\n\nexport const RECORD_APPROVAL = `\n mutation ArtistrybaseRecordApproval($input: ArtRecordApprovalInput!) {\n artRecordApproval(input: $input) {\n ${APPROVAL_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Review — releases\n// ---------------------------------------------------------------------------\n\nexport const LIST_RELEASES = `\n query ArtistrybaseListReleases($workId: ID!, $status: ArtReleaseStatus) {\n artListReleases(workId: $workId, status: $status) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\nexport const CREATE_RELEASE = `\n mutation ArtistrybaseCreateRelease($input: ArtCreateReleaseInput!) {\n artCreateRelease(input: $input) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_RELEASE = `\n mutation ArtistrybasePublishRelease($id: ID!) {\n artPublishRelease(id: $id) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Portfolio — portfolios + follows\n// ---------------------------------------------------------------------------\n\nexport const GET_PORTFOLIO = `\n query ArtistrybaseGetPortfolio($id: ID!) {\n artPortfolio(id: $id) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const LIST_PORTFOLIOS = `\n query ArtistrybaseListPortfolios(\n $visibility: ArtVisibility\n $pagination: PaginationInput\n ) {\n artListPortfolios(visibility: $visibility, pagination: $pagination) {\n items { ${PORTFOLIO_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PORTFOLIO = `\n mutation ArtistrybaseCreatePortfolio($input: ArtCreatePortfolioInput!) {\n artCreatePortfolio(input: $input) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PORTFOLIO = `\n mutation ArtistrybaseUpdatePortfolio($id: ID!, $input: ArtUpdatePortfolioInput!) {\n artUpdatePortfolio(id: $id, input: $input) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PORTFOLIO = `\n mutation ArtistrybaseArchivePortfolio($id: ID!) {\n artArchivePortfolio(id: $id)\n }\n`;\n\nexport const FOLLOW_PORTFOLIO = `\n mutation ArtistrybaseFollowPortfolio($portfolioId: ID!, $notify: Boolean) {\n artFollowPortfolio(portfolioId: $portfolioId, notify: $notify) {\n ${FOLLOW_FIELDS}\n }\n }\n`;\n\nexport const UNFOLLOW_PORTFOLIO = `\n mutation ArtistrybaseUnfollowPortfolio($portfolioId: ID!) {\n artUnfollowPortfolio(portfolioId: $portfolioId)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Portfolio — licenses\n// ---------------------------------------------------------------------------\n\nexport const LIST_LICENSES = `\n query ArtistrybaseListLicenses($workId: ID!) {\n artListLicenses(workId: $workId) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\nexport const CREATE_LICENSE = `\n mutation ArtistrybaseCreateLicense($input: ArtCreateLicenseInput!) {\n artCreateLicense(input: $input) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LICENSE = `\n mutation ArtistrybaseUpdateLicense($id: ID!, $input: ArtUpdateLicenseInput!) {\n artUpdateLicense(id: $id, input: $input) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\nexport const ACTIVATE_LICENSE = `\n mutation ArtistrybaseActivateLicense($id: ID!) {\n artActivateLicense(id: $id) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query ArtistrybaseHealth {\n artHealth\n }\n`;\n","/**\n * Shared zod schemas for the Artistrybase tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. The `links` portfolio field is a\n * `JSON` scalar input, modelled as a permissive object record — the backend\n * accepts arbitrary JSON, but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const MediumEnum = z\n .enum(['ART', 'AUDIO', 'MIXED', 'STORY', 'VIDEO'])\n .describe('Creative medium of a work, collection, or production');\n\nexport const VisibilityEnum = z\n .enum(['PRIVATE', 'PUBLIC', 'UNLISTED'])\n .describe('Visibility of a work, collection, portfolio, or release');\n\nexport const WorkStatusEnum = z\n .enum(['APPROVED', 'ARCHIVED', 'DRAFT', 'IN_REVIEW', 'RELEASED'])\n .describe('Lifecycle status of a work');\n\nexport const AssetKindEnum = z\n .enum(['ATTACHMENT', 'CAPTION', 'COVER', 'MASTER', 'PREVIEW', 'SOURCE'])\n .describe('Kind of file asset attached to a work');\n\nexport const ProductionStatusEnum = z\n .enum(['CANCELLED', 'IN_PRODUCTION', 'ON_HOLD', 'PLANNING', 'POST', 'RELEASED', 'REVIEW'])\n .describe('Lifecycle status of a production');\n\nexport const ProductionRoleEnum = z\n .enum(['COLLABORATOR', 'CREATOR', 'EDITOR', 'OWNER', 'PRODUCER', 'REVIEWER', 'VIEWER'])\n .describe('Role of a member on a production team');\n\nexport const ReviewStatusEnum = z\n .enum(['APPROVED', 'CHANGES_REQUESTED', 'CLOSED', 'OPEN'])\n .describe('Lifecycle status of a review round');\n\nexport const FeedbackStatusEnum = z\n .enum(['OPEN', 'RESOLVED', 'WONT_FIX'])\n .describe('Resolution status of a piece of feedback');\n\nexport const AnchorTypeEnum = z\n .enum(['CHAPTER', 'GENERAL', 'PAGE', 'PIN', 'TIMECODE'])\n .describe('Where in-context feedback is anchored');\n\nexport const ApprovalDecisionEnum = z\n .enum(['APPROVED', 'PENDING', 'REJECTED'])\n .describe('Decision recorded on a review round by an approver');\n\nexport const ReleaseStatusEnum = z\n .enum(['FAILED', 'PUBLISHED', 'SCHEDULED', 'UNPUBLISHED'])\n .describe('Lifecycle status of a release');\n\nexport const LicenseModelEnum = z\n .enum(['FREE', 'LICENSE', 'MEMBERSHIP', 'PURCHASE'])\n .describe('Commercial model of a license');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs (e.g. portfolio links). */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Artistrybase library tools — works, immutable versions, file assets, and\n * curated collections.\n *\n * Surface (16):\n * works_{get,list,create,update,archive,publish_version}\n * works_{list_versions,add_version,list_assets,add_asset}\n * collections_{get,list,create,update,add_work,remove_work}\n *\n * Tool names match the sdk-libs-node `artistrybase` manifest exactly: versions\n * and assets are sub-resources of a work, so they live under the `works_*`\n * sub-API (works_list_versions, works_add_version, works_list_assets,\n * works_add_asset) rather than a separate group.\n *\n * All root fields are called by their REAL `art*` names (the subgraph's GraphQL\n * naming contract). Works/versions/assets reference a wspace-files-svc `File`\n * by id — blobs never live here.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { MediumEnum, VisibilityEnum, WorkStatusEnum, AssetKindEnum } from './shared.js';\n\nexport function registerLibraryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Works ────────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_get')),\n {\n title: 'Get Work',\n description:\n 'Fetch a single creative work by ID, including its file assets and immutable version history.',\n inputSchema: { id: z.string().describe('Work ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artWork: Record<string, unknown> | null;\n }>(ops.GET_WORK, { id });\n if (!data.artWork) return errorResult(`Work ${id} not found`);\n return jsonResult(data.artWork);\n } catch (error) {\n ctx.logger.error('artistrybase works_get failed', { error: String(error) });\n return errorResult(\n `Failed to get work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_list')),\n {\n title: 'List Works',\n description:\n 'List creative works in the bound workspace with optional medium/status/production filters and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n medium: MediumEnum.optional().describe('Filter by medium'),\n status: WorkStatusEnum.optional().describe('Filter by lifecycle status'),\n productionId: z.string().optional().describe('Filter to works of a production'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ medium, status, productionId, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {\n limit: limit ?? 50,\n offset: offset ?? 0,\n };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListWorks: Record<string, unknown>;\n }>(ops.LIST_WORKS, { medium, status, productionId, pagination });\n return jsonResult(data.artListWorks);\n } catch (error) {\n ctx.logger.error('artistrybase works_list failed', { error: String(error) });\n return errorResult(\n `Failed to list works: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_create')),\n {\n title: 'Create Work',\n description:\n 'Create a new creative work (any medium). Title is required; the work starts in DRAFT/PRIVATE unless overridden.',\n inputSchema: {\n title: z.string().min(1).describe('Work title'),\n medium: MediumEnum.optional().describe('Creative medium (default MIXED)'),\n summary: z.string().optional().describe('Short summary/description'),\n productionId: z.string().optional().describe('Owning production ID (optional)'),\n coverFileId: z.string().optional().describe('Cover image File ID (wspace-files-svc)'),\n durationMs: z.number().int().optional().describe('Duration in milliseconds (audio/video)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PRIVATE)'),\n },\n },\n async ({ title, medium, summary, productionId, coverFileId, durationMs, tags, visibility }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (medium !== undefined) input.medium = medium;\n if (summary !== undefined) input.summary = summary;\n if (productionId !== undefined) input.productionId = productionId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (durationMs !== undefined) input.durationMs = durationMs;\n if (tags !== undefined) input.tags = tags;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreateWork: Record<string, unknown>;\n }>(ops.CREATE_WORK, { input });\n return jsonResult(data.artCreateWork);\n } catch (error) {\n ctx.logger.error('artistrybase works_create failed', { error: String(error) });\n return errorResult(\n `Failed to create work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_update')),\n {\n title: 'Update Work',\n description:\n 'Update a work. At least one mutable field must be provided. Use `visibility` to publish/unlist a work.',\n inputSchema: {\n id: z.string().describe('Work ID'),\n title: z.string().optional().describe('Updated title'),\n summary: z.string().optional().describe('Updated summary'),\n medium: MediumEnum.optional().describe('Updated medium'),\n productionId: z.string().optional().describe('Updated owning production ID'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n durationMs: z.number().int().optional().describe('Updated duration in milliseconds'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n },\n },\n async ({\n id,\n title,\n summary,\n medium,\n productionId,\n coverFileId,\n durationMs,\n tags,\n visibility,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (summary !== undefined) input.summary = summary;\n if (medium !== undefined) input.medium = medium;\n if (productionId !== undefined) input.productionId = productionId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (durationMs !== undefined) input.durationMs = durationMs;\n if (tags !== undefined) input.tags = tags;\n if (visibility !== undefined) input.visibility = visibility;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/summary/medium/productionId/coverFileId/durationMs/tags/visibility',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateWork: Record<string, unknown>;\n }>(ops.UPDATE_WORK, { id, input });\n return jsonResult(data.artUpdateWork);\n } catch (error) {\n ctx.logger.error('artistrybase works_update failed', { error: String(error) });\n return errorResult(\n `Failed to update work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_archive')),\n {\n title: 'Archive Work',\n description: 'Archive a work (soft delete). Returns whether the archive succeeded.',\n inputSchema: { id: z.string().describe('Work ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artArchiveWork: boolean }>(\n ops.ARCHIVE_WORK,\n { id },\n );\n return jsonResult({ ok: data.artArchiveWork });\n } catch (error) {\n ctx.logger.error('artistrybase works_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_publish_version')),\n {\n title: 'Publish Work Version',\n description: \"Promote a version to be the work's published current version.\",\n inputSchema: {\n workId: z.string().describe('Work ID'),\n versionId: z.string().describe('Version ID to promote as current'),\n },\n },\n async ({ workId, versionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artPublishWorkVersion: Record<string, unknown>;\n }>(ops.PUBLISH_WORK_VERSION, { workId, versionId });\n return jsonResult(data.artPublishWorkVersion);\n } catch (error) {\n ctx.logger.error('artistrybase works_publish_version failed', { error: String(error) });\n return errorResult(\n `Failed to publish work version: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Versions ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_list_versions')),\n {\n title: 'List Work Versions',\n description: \"List a work's immutable revision history (ordered version snapshots).\",\n inputSchema: { workId: z.string().describe('Work ID') },\n },\n async ({ workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListWorkVersions: Array<Record<string, unknown>>;\n }>(ops.LIST_WORK_VERSIONS, { workId });\n return jsonResult(data.artListWorkVersions);\n } catch (error) {\n ctx.logger.error('artistrybase works_list_versions failed', { error: String(error) });\n return errorResult(\n `Failed to list work versions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_add_version')),\n {\n title: 'Add Work Version',\n description:\n 'Upload a new immutable revision of a work (auto-increments the version number).',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n fileId: z\n .string()\n .optional()\n .describe('Source File ID for this revision (wspace-files-svc)'),\n label: z.string().optional().describe('Human label for the version'),\n notes: z.string().optional().describe('Revision notes / changelog'),\n checksum: z.string().optional().describe('Content checksum'),\n },\n },\n async ({ workId, fileId, label, notes, checksum }) => {\n try {\n const input: Record<string, unknown> = { workId };\n if (fileId !== undefined) input.fileId = fileId;\n if (label !== undefined) input.label = label;\n if (notes !== undefined) input.notes = notes;\n if (checksum !== undefined) input.checksum = checksum;\n\n const data = await ctx.gql.workspace.request<{\n artAddWorkVersion: Record<string, unknown>;\n }>(ops.ADD_WORK_VERSION, { input });\n return jsonResult(data.artAddWorkVersion);\n } catch (error) {\n ctx.logger.error('artistrybase works_add_version failed', { error: String(error) });\n return errorResult(\n `Failed to add work version: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Assets ───────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_list_assets')),\n {\n title: 'List Work Assets',\n description: 'List the file assets attached to a work (masters, previews, captions, etc.).',\n inputSchema: { workId: z.string().describe('Work ID') },\n },\n async ({ workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListAssets: Array<Record<string, unknown>>;\n }>(ops.LIST_ASSETS, { workId });\n return jsonResult(data.artListAssets);\n } catch (error) {\n ctx.logger.error('artistrybase works_list_assets failed', { error: String(error) });\n return errorResult(\n `Failed to list assets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_add_asset')),\n {\n title: 'Add Work Asset',\n description:\n 'Attach a file asset to a work. `fileId` references a wspace-files-svc File; `kind` defaults to SOURCE.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n fileId: z.string().min(1).describe('Backing File ID (wspace-files-svc)'),\n kind: AssetKindEnum.optional().describe('Asset kind (default SOURCE)'),\n versionId: z.string().optional().describe('Version this asset belongs to'),\n mimeType: z.string().optional().describe('MIME type'),\n width: z.number().int().optional().describe('Pixel width (image/video)'),\n height: z.number().int().optional().describe('Pixel height (image/video)'),\n durationMs: z.number().int().optional().describe('Duration in milliseconds (audio/video)'),\n },\n },\n async ({ workId, fileId, kind, versionId, mimeType, width, height, durationMs }) => {\n try {\n const input: Record<string, unknown> = { workId, fileId };\n if (kind !== undefined) input.kind = kind;\n if (versionId !== undefined) input.versionId = versionId;\n if (mimeType !== undefined) input.mimeType = mimeType;\n if (width !== undefined) input.width = width;\n if (height !== undefined) input.height = height;\n if (durationMs !== undefined) input.durationMs = durationMs;\n\n const data = await ctx.gql.workspace.request<{\n artAddAsset: Record<string, unknown>;\n }>(ops.ADD_ASSET, { input });\n return jsonResult(data.artAddAsset);\n } catch (error) {\n ctx.logger.error('artistrybase works_add_asset failed', { error: String(error) });\n return errorResult(\n `Failed to add asset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Collections ──────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_get')),\n {\n title: 'Get Collection',\n description: 'Fetch a single collection by ID, including its member works.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artCollection: Record<string, unknown> | null;\n }>(ops.GET_COLLECTION, { id });\n if (!data.artCollection) return errorResult(`Collection ${id} not found`);\n return jsonResult(data.artCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_get failed', { error: String(error) });\n return errorResult(\n `Failed to get collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_list')),\n {\n title: 'List Collections',\n description:\n 'List curated collections with optional visibility filter and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n visibility: VisibilityEnum.optional().describe('Filter by visibility'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ visibility, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListCollections: Record<string, unknown>;\n }>(ops.LIST_COLLECTIONS, { visibility, pagination });\n return jsonResult(data.artListCollections);\n } catch (error) {\n ctx.logger.error('artistrybase collections_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collections: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_create')),\n {\n title: 'Create Collection',\n description: 'Create a curated collection. `slug` must be unique within the workspace.',\n inputSchema: {\n title: z.string().min(1).describe('Collection title'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n description: z.string().optional().describe('Collection description'),\n medium: MediumEnum.optional().describe('Primary medium of the collection'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n coverFileId: z.string().optional().describe('Cover image File ID'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PRIVATE)'),\n },\n },\n async ({ title, slug, description, medium, tags, coverFileId, visibility }) => {\n try {\n const input: Record<string, unknown> = { title, slug };\n if (description !== undefined) input.description = description;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.artCreateCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_update')),\n {\n title: 'Update Collection',\n description: 'Update a collection. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Collection ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n medium: MediumEnum.optional().describe('Updated medium'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n },\n },\n async ({ id, title, description, medium, tags, coverFileId, visibility }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (description !== undefined) input.description = description;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (visibility !== undefined) input.visibility = visibility;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/description/medium/tags/coverFileId/visibility',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateCollection: Record<string, unknown>;\n }>(ops.UPDATE_COLLECTION, { id, input });\n return jsonResult(data.artUpdateCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_update failed', { error: String(error) });\n return errorResult(\n `Failed to update collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_add_work')),\n {\n title: 'Add Work to Collection',\n description: 'Add a work to a collection. Returns the updated collection.',\n inputSchema: {\n collectionId: z.string().describe('Collection ID'),\n workId: z.string().describe('Work ID to add'),\n },\n },\n async ({ collectionId, workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artAddWorkToCollection: Record<string, unknown>;\n }>(ops.ADD_WORK_TO_COLLECTION, { collectionId, workId });\n return jsonResult(data.artAddWorkToCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_add_work failed', { error: String(error) });\n return errorResult(\n `Failed to add work to collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_remove_work')),\n {\n title: 'Remove Work from Collection',\n description: 'Remove a work from a collection. Returns the updated collection.',\n inputSchema: {\n collectionId: z.string().describe('Collection ID'),\n workId: z.string().describe('Work ID to remove'),\n },\n },\n async ({ collectionId, workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artRemoveWorkFromCollection: Record<string, unknown>;\n }>(ops.REMOVE_WORK_FROM_COLLECTION, { collectionId, workId });\n return jsonResult(data.artRemoveWorkFromCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_remove_work failed', { error: String(error) });\n return errorResult(\n `Failed to remove work from collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase production tools — productions (a film, an album, a graphic\n * novel), their team members, and reference material.\n *\n * Surface (11):\n * productions_{get,list,create,update,transition}\n * productions_{list_members,add_member,remove_member}\n * productions_{list_references,add_reference,remove_reference}\n *\n * Tool names match the sdk-libs-node `artistrybase` manifest exactly: members\n * and references are sub-resources of a production, so they live under the\n * `productions_*` sub-API rather than separate groups.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { MediumEnum, ProductionStatusEnum, ProductionRoleEnum } from './shared.js';\n\nexport function registerProductionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Productions ──────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_get')),\n {\n title: 'Get Production',\n description:\n 'Fetch a single production by ID, including its team members and reference material.',\n inputSchema: { id: z.string().describe('Production ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artProduction: Record<string, unknown> | null;\n }>(ops.GET_PRODUCTION, { id });\n if (!data.artProduction) return errorResult(`Production ${id} not found`);\n return jsonResult(data.artProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_list')),\n {\n title: 'List Productions',\n description:\n 'List productions with optional status filter and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n status: ProductionStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListProductions: Record<string, unknown>;\n }>(ops.LIST_PRODUCTIONS, { status, pagination });\n return jsonResult(data.artListProductions);\n } catch (error) {\n ctx.logger.error('artistrybase productions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list productions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_create')),\n {\n title: 'Create Production',\n description: 'Create a new production. `slug` must be unique within the workspace.',\n inputSchema: {\n title: z.string().min(1).describe('Production title'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n synopsis: z.string().optional().describe('Synopsis / description'),\n medium: MediumEnum.optional().describe('Primary medium (default MIXED)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n startDate: z.string().optional().describe('Start date (ISO 8601)'),\n targetDate: z.string().optional().describe('Target completion date (ISO 8601)'),\n },\n },\n async ({ title, slug, synopsis, medium, tags, startDate, targetDate }) => {\n try {\n const input: Record<string, unknown> = { title, slug };\n if (synopsis !== undefined) input.synopsis = synopsis;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (startDate !== undefined) input.startDate = startDate;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n const data = await ctx.gql.workspace.request<{\n artCreateProduction: Record<string, unknown>;\n }>(ops.CREATE_PRODUCTION, { input });\n return jsonResult(data.artCreateProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_create failed', { error: String(error) });\n return errorResult(\n `Failed to create production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_update')),\n {\n title: 'Update Production',\n description: 'Update a production. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Production ID'),\n title: z.string().optional().describe('Updated title'),\n synopsis: z.string().optional().describe('Updated synopsis'),\n medium: MediumEnum.optional().describe('Updated medium'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n startDate: z.string().optional().describe('Updated start date (ISO 8601)'),\n targetDate: z.string().optional().describe('Updated target date (ISO 8601)'),\n },\n },\n async ({ id, title, synopsis, medium, tags, startDate, targetDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (synopsis !== undefined) input.synopsis = synopsis;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (startDate !== undefined) input.startDate = startDate;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/synopsis/medium/tags/startDate/targetDate',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateProduction: Record<string, unknown>;\n }>(ops.UPDATE_PRODUCTION, { id, input });\n return jsonResult(data.artUpdateProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_update failed', { error: String(error) });\n return errorResult(\n `Failed to update production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_transition')),\n {\n title: 'Transition Production',\n description:\n 'Advance a production through its lifecycle (validated transitions: PLANNING → IN_PRODUCTION → REVIEW → POST → RELEASED, or ON_HOLD/CANCELLED).',\n inputSchema: {\n id: z.string().describe('Production ID'),\n status: ProductionStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artTransitionProduction: Record<string, unknown>;\n }>(ops.TRANSITION_PRODUCTION, { id, status });\n return jsonResult(data.artTransitionProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Members ──────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_list_members')),\n {\n title: 'List Production Members',\n description: 'List the team members attached to a production.',\n inputSchema: { productionId: z.string().describe('Production ID') },\n },\n async ({ productionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListProductionMembers: Array<Record<string, unknown>>;\n }>(ops.LIST_PRODUCTION_MEMBERS, { productionId });\n return jsonResult(data.artListProductionMembers);\n } catch (error) {\n ctx.logger.error('artistrybase productions_list_members failed', { error: String(error) });\n return errorResult(\n `Failed to list production members: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_add_member')),\n {\n title: 'Add Production Member',\n description: 'Add a team member to a production with a role and optional title.',\n inputSchema: {\n productionId: z.string().min(1).describe('Production ID'),\n memberId: z.string().min(1).describe('User ID of the team member (wspace-auth-svc)'),\n role: ProductionRoleEnum.optional().describe('Member role (default COLLABORATOR)'),\n title: z.string().optional().describe('Credit/title on the production'),\n isLead: z.boolean().optional().describe('Whether the member is a lead (default false)'),\n },\n },\n async ({ productionId, memberId, role, title, isLead }) => {\n try {\n const input: Record<string, unknown> = { productionId, memberId };\n if (role !== undefined) input.role = role;\n if (title !== undefined) input.title = title;\n if (isLead !== undefined) input.isLead = isLead;\n\n const data = await ctx.gql.workspace.request<{\n artAddProductionMember: Record<string, unknown>;\n }>(ops.ADD_PRODUCTION_MEMBER, { input });\n return jsonResult(data.artAddProductionMember);\n } catch (error) {\n ctx.logger.error('artistrybase productions_add_member failed', { error: String(error) });\n return errorResult(\n `Failed to add production member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_remove_member')),\n {\n title: 'Remove Production Member',\n description: 'Remove a team member from a production. Returns whether removal succeeded.',\n inputSchema: { id: z.string().describe('Production member ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artRemoveProductionMember: boolean }>(\n ops.REMOVE_PRODUCTION_MEMBER,\n { id },\n );\n return jsonResult({ ok: data.artRemoveProductionMember });\n } catch (error) {\n ctx.logger.error('artistrybase productions_remove_member failed', { error: String(error) });\n return errorResult(\n `Failed to remove production member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── References ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_list_references')),\n {\n title: 'List References',\n description: 'List reference material attached to a production (mood boards, links, files).',\n inputSchema: { productionId: z.string().describe('Production ID') },\n },\n async ({ productionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListReferences: Array<Record<string, unknown>>;\n }>(ops.LIST_REFERENCES, { productionId });\n return jsonResult(data.artListReferences);\n } catch (error) {\n ctx.logger.error('artistrybase productions_list_references failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list references: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_add_reference')),\n {\n title: 'Add Reference',\n description:\n 'Attach reference material to a production. Provide a title and optionally a URL and/or a File ID.',\n inputSchema: {\n productionId: z.string().min(1).describe('Production ID'),\n title: z.string().min(1).describe('Reference title'),\n note: z.string().optional().describe('Note about the reference'),\n url: z.string().optional().describe('External URL'),\n fileId: z.string().optional().describe('Attached File ID (wspace-files-svc)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ productionId, title, note, url, fileId, tags }) => {\n try {\n const input: Record<string, unknown> = { productionId, title };\n if (note !== undefined) input.note = note;\n if (url !== undefined) input.url = url;\n if (fileId !== undefined) input.fileId = fileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n artAddReference: Record<string, unknown>;\n }>(ops.ADD_REFERENCE, { input });\n return jsonResult(data.artAddReference);\n } catch (error) {\n ctx.logger.error('artistrybase productions_add_reference failed', { error: String(error) });\n return errorResult(\n `Failed to add reference: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_remove_reference')),\n {\n title: 'Remove Reference',\n description:\n 'Remove reference material from a production. Returns whether removal succeeded.',\n inputSchema: { id: z.string().describe('Reference ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artRemoveReference: boolean }>(\n ops.REMOVE_REFERENCE,\n { id },\n );\n return jsonResult({ ok: data.artRemoveReference });\n } catch (error) {\n ctx.logger.error('artistrybase productions_remove_reference failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to remove reference: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase review tools — review rounds with in-context feedback\n * (timecode/chapter/pin anchors), explicit approvals, and the draft-to-released\n * release pipeline.\n *\n * Surface (10):\n * reviews_{get_round,list_rounds,open_round,transition_round}\n * reviews_{add_feedback,resolve_feedback}\n * reviews_record_approval\n * releases_{list,create,publish}\n *\n * Tool names match the sdk-libs-node `artistrybase` manifest exactly: rounds,\n * feedback, and approvals are grouped under the `reviews_*` sub-API; releases\n * are their own `releases_*` sub-API.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ReviewStatusEnum,\n FeedbackStatusEnum,\n AnchorTypeEnum,\n ApprovalDecisionEnum,\n ReleaseStatusEnum,\n VisibilityEnum,\n} from './shared.js';\n\nexport function registerReviewTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Review rounds ────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_get_round')),\n {\n title: 'Get Review Round',\n description:\n 'Fetch a single review round by ID, including its in-context feedback and approvals.',\n inputSchema: { id: z.string().describe('Review round ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artReviewRound: Record<string, unknown> | null;\n }>(ops.GET_REVIEW_ROUND, { id });\n if (!data.artReviewRound) return errorResult(`Review round ${id} not found`);\n return jsonResult(data.artReviewRound);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_get_round failed', { error: String(error) });\n return errorResult(\n `Failed to get review round: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_list_rounds')),\n {\n title: 'List Review Rounds',\n description: 'List the review rounds for a work, optionally filtered by status.',\n inputSchema: {\n workId: z.string().describe('Work ID'),\n status: ReviewStatusEnum.optional().describe('Filter by review status'),\n },\n },\n async ({ workId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListReviewRounds: Array<Record<string, unknown>>;\n }>(ops.LIST_REVIEW_ROUNDS, { workId, status });\n return jsonResult(data.artListReviewRounds);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_list_rounds failed', { error: String(error) });\n return errorResult(\n `Failed to list review rounds: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_open_round')),\n {\n title: 'Open Review Round',\n description:\n 'Open a new review round on a work (optionally pinned to a specific version), with an optional title and due date.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n versionId: z.string().optional().describe('Version to review (defaults to current)'),\n title: z.string().optional().describe('Round title'),\n dueDate: z.string().optional().describe('Due date (ISO 8601)'),\n },\n },\n async ({ workId, versionId, title, dueDate }) => {\n try {\n const input: Record<string, unknown> = { workId };\n if (versionId !== undefined) input.versionId = versionId;\n if (title !== undefined) input.title = title;\n if (dueDate !== undefined) input.dueDate = dueDate;\n\n const data = await ctx.gql.workspace.request<{\n artOpenReviewRound: Record<string, unknown>;\n }>(ops.OPEN_REVIEW_ROUND, { input });\n return jsonResult(data.artOpenReviewRound);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_open_round failed', { error: String(error) });\n return errorResult(\n `Failed to open review round: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_transition_round')),\n {\n title: 'Transition Review Round',\n description:\n 'Advance a review round through its lifecycle (validated transitions: OPEN → CHANGES_REQUESTED/APPROVED → CLOSED).',\n inputSchema: {\n id: z.string().describe('Review round ID'),\n status: ReviewStatusEnum.describe('Target review status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artTransitionReviewRound: Record<string, unknown>;\n }>(ops.TRANSITION_REVIEW_ROUND, { id, status });\n return jsonResult(data.artTransitionReviewRound);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_transition_round failed', { error: String(error) });\n return errorResult(\n `Failed to transition review round: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Feedback ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_add_feedback')),\n {\n title: 'Add Feedback',\n description:\n 'Add a piece of in-context feedback to a review round. Anchor it to a timecode/page/chapter/pin via `anchorType` + `anchorValue` (defaults to GENERAL).',\n inputSchema: {\n reviewRoundId: z.string().min(1).describe('Review round ID'),\n body: z.string().min(1).describe('Feedback body'),\n anchorType: AnchorTypeEnum.optional().describe('Anchor type (default GENERAL)'),\n anchorValue: z\n .string()\n .optional()\n .describe('Anchor value (e.g. timecode \"00:01:23\", page number, pin coordinates)'),\n },\n },\n async ({ reviewRoundId, body, anchorType, anchorValue }) => {\n try {\n const input: Record<string, unknown> = { reviewRoundId, body };\n if (anchorType !== undefined) input.anchorType = anchorType;\n if (anchorValue !== undefined) input.anchorValue = anchorValue;\n\n const data = await ctx.gql.workspace.request<{\n artAddFeedback: Record<string, unknown>;\n }>(ops.ADD_FEEDBACK, { input });\n return jsonResult(data.artAddFeedback);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_add_feedback failed', { error: String(error) });\n return errorResult(\n `Failed to add feedback: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_resolve_feedback')),\n {\n title: 'Resolve Feedback',\n description: 'Set the resolution status of a piece of feedback (RESOLVED / WONT_FIX / OPEN).',\n inputSchema: {\n id: z.string().describe('Feedback ID'),\n status: FeedbackStatusEnum.describe('New feedback status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artResolveFeedback: Record<string, unknown>;\n }>(ops.RESOLVE_FEEDBACK, { id, status });\n return jsonResult(data.artResolveFeedback);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_resolve_feedback failed', { error: String(error) });\n return errorResult(\n `Failed to resolve feedback: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Approvals ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_record_approval')),\n {\n title: 'Record Approval',\n description:\n 'Record an approval decision (APPROVED / REJECTED / PENDING) on a review round, with an optional comment.',\n inputSchema: {\n reviewRoundId: z.string().min(1).describe('Review round ID'),\n decision: ApprovalDecisionEnum.describe('Approval decision'),\n comment: z.string().optional().describe('Optional comment explaining the decision'),\n },\n },\n async ({ reviewRoundId, decision, comment }) => {\n try {\n const input: Record<string, unknown> = { reviewRoundId, decision };\n if (comment !== undefined) input.comment = comment;\n\n const data = await ctx.gql.workspace.request<{\n artRecordApproval: Record<string, unknown>;\n }>(ops.RECORD_APPROVAL, { input });\n return jsonResult(data.artRecordApproval);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_record_approval failed', { error: String(error) });\n return errorResult(\n `Failed to record approval: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Releases ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_list')),\n {\n title: 'List Releases',\n description: 'List the releases of a work, optionally filtered by status.',\n inputSchema: {\n workId: z.string().describe('Work ID'),\n status: ReleaseStatusEnum.optional().describe('Filter by release status'),\n },\n },\n async ({ workId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListReleases: Array<Record<string, unknown>>;\n }>(ops.LIST_RELEASES, { workId, status });\n return jsonResult(data.artListReleases);\n } catch (error) {\n ctx.logger.error('artistrybase releases_list failed', { error: String(error) });\n return errorResult(\n `Failed to list releases: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_create')),\n {\n title: 'Create Release',\n description:\n 'Create a release for a work (optionally pinned to a version), with an optional channel, visibility, notes, and a scheduled time.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n versionId: z.string().optional().describe('Version to release (defaults to current)'),\n channel: z.string().optional().describe('Release channel (e.g. \"store\", \"preview\")'),\n notes: z.string().optional().describe('Release notes'),\n scheduledFor: z.string().optional().describe('Scheduled release time (ISO 8601)'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PUBLIC)'),\n },\n },\n async ({ workId, versionId, channel, notes, scheduledFor, visibility }) => {\n try {\n const input: Record<string, unknown> = { workId };\n if (versionId !== undefined) input.versionId = versionId;\n if (channel !== undefined) input.channel = channel;\n if (notes !== undefined) input.notes = notes;\n if (scheduledFor !== undefined) input.scheduledFor = scheduledFor;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreateRelease: Record<string, unknown>;\n }>(ops.CREATE_RELEASE, { input });\n return jsonResult(data.artCreateRelease);\n } catch (error) {\n ctx.logger.error('artistrybase releases_create failed', { error: String(error) });\n return errorResult(\n `Failed to create release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_publish')),\n {\n title: 'Publish Release',\n description: 'Publish a scheduled/draft release now.',\n inputSchema: { id: z.string().describe('Release ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artPublishRelease: Record<string, unknown>;\n }>(ops.PUBLISH_RELEASE, { id });\n return jsonResult(data.artPublishRelease);\n } catch (error) {\n ctx.logger.error('artistrybase releases_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase portfolio tools — public portfolios that span every medium,\n * follows, and explicit license terms on works.\n *\n * Surface (12):\n * portfolios_{get,list,create,update,archive,follow,unfollow}\n * licenses_{list,create,update,activate}\n *\n * `portfolios_follow` / `portfolios_unfollow` are self-scoped on the backend\n * (the follower is the calling actor — no followerId arg).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { VisibilityEnum, LicenseModelEnum, JsonObject } from './shared.js';\n\nexport function registerPortfolioTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Portfolios ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_get')),\n {\n title: 'Get Portfolio',\n description: 'Fetch a single public portfolio by ID.',\n inputSchema: { id: z.string().describe('Portfolio ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artPortfolio: Record<string, unknown> | null;\n }>(ops.GET_PORTFOLIO, { id });\n if (!data.artPortfolio) return errorResult(`Portfolio ${id} not found`);\n return jsonResult(data.artPortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_get failed', { error: String(error) });\n return errorResult(\n `Failed to get portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_list')),\n {\n title: 'List Portfolios',\n description:\n 'List public portfolios with optional visibility filter and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n visibility: VisibilityEnum.optional().describe('Filter by visibility'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ visibility, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListPortfolios: Record<string, unknown>;\n }>(ops.LIST_PORTFOLIOS, { visibility, pagination });\n return jsonResult(data.artListPortfolios);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_list failed', { error: String(error) });\n return errorResult(\n `Failed to list portfolios: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_create')),\n {\n title: 'Create Portfolio',\n description:\n 'Create a public portfolio. `handle` must be unique within the workspace; starts PUBLIC unless overridden.',\n inputSchema: {\n handle: z.string().min(1).describe('Unique handle (e.g. \"@anbu\")'),\n displayName: z.string().min(1).describe('Display name'),\n bio: z.string().optional().describe('Short bio'),\n avatarFileId: z.string().optional().describe('Avatar image File ID'),\n bannerFileId: z.string().optional().describe('Banner image File ID'),\n featuredWorkIds: z.array(z.string()).optional().describe('Featured work IDs'),\n links: JsonObject.optional().describe('Social/external links JSON'),\n ownerId: z.string().optional().describe('Owner User ID (defaults to the calling actor)'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PUBLIC)'),\n },\n },\n async ({\n handle,\n displayName,\n bio,\n avatarFileId,\n bannerFileId,\n featuredWorkIds,\n links,\n ownerId,\n visibility,\n }) => {\n try {\n const input: Record<string, unknown> = { handle, displayName };\n if (bio !== undefined) input.bio = bio;\n if (avatarFileId !== undefined) input.avatarFileId = avatarFileId;\n if (bannerFileId !== undefined) input.bannerFileId = bannerFileId;\n if (featuredWorkIds !== undefined) input.featuredWorkIds = featuredWorkIds;\n if (links !== undefined) input.links = links;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreatePortfolio: Record<string, unknown>;\n }>(ops.CREATE_PORTFOLIO, { input });\n return jsonResult(data.artCreatePortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_create failed', { error: String(error) });\n return errorResult(\n `Failed to create portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_update')),\n {\n title: 'Update Portfolio',\n description: 'Update a portfolio. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Portfolio ID'),\n displayName: z.string().optional().describe('Updated display name'),\n bio: z.string().optional().describe('Updated bio'),\n avatarFileId: z.string().optional().describe('Updated avatar File ID'),\n bannerFileId: z.string().optional().describe('Updated banner File ID'),\n featuredWorkIds: z.array(z.string()).optional().describe('Updated featured work IDs'),\n links: JsonObject.optional().describe('Updated links JSON'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n },\n },\n async ({\n id,\n displayName,\n bio,\n avatarFileId,\n bannerFileId,\n featuredWorkIds,\n links,\n visibility,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (displayName !== undefined) input.displayName = displayName;\n if (bio !== undefined) input.bio = bio;\n if (avatarFileId !== undefined) input.avatarFileId = avatarFileId;\n if (bannerFileId !== undefined) input.bannerFileId = bannerFileId;\n if (featuredWorkIds !== undefined) input.featuredWorkIds = featuredWorkIds;\n if (links !== undefined) input.links = links;\n if (visibility !== undefined) input.visibility = visibility;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of displayName/bio/avatarFileId/bannerFileId/featuredWorkIds/links/visibility',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdatePortfolio: Record<string, unknown>;\n }>(ops.UPDATE_PORTFOLIO, { id, input });\n return jsonResult(data.artUpdatePortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_update failed', { error: String(error) });\n return errorResult(\n `Failed to update portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_archive')),\n {\n title: 'Archive Portfolio',\n description: 'Archive a portfolio (soft delete). Returns whether the archive succeeded.',\n inputSchema: { id: z.string().describe('Portfolio ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artArchivePortfolio: boolean }>(\n ops.ARCHIVE_PORTFOLIO,\n { id },\n );\n return jsonResult({ ok: data.artArchivePortfolio });\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_follow')),\n {\n title: 'Follow Portfolio',\n description:\n 'Follow a portfolio as the calling actor (self-scoped). `notify` toggles new-work notifications (default true).',\n inputSchema: {\n portfolioId: z.string().describe('Portfolio ID to follow'),\n notify: z.boolean().optional().describe('Receive notifications (default true)'),\n },\n },\n async ({ portfolioId, notify }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artFollowPortfolio: Record<string, unknown>;\n }>(ops.FOLLOW_PORTFOLIO, { portfolioId, notify });\n return jsonResult(data.artFollowPortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_follow failed', { error: String(error) });\n return errorResult(\n `Failed to follow portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_unfollow')),\n {\n title: 'Unfollow Portfolio',\n description:\n 'Unfollow a portfolio as the calling actor (self-scoped). Returns whether the unfollow succeeded.',\n inputSchema: { portfolioId: z.string().describe('Portfolio ID to unfollow') },\n },\n async ({ portfolioId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artUnfollowPortfolio: boolean }>(\n ops.UNFOLLOW_PORTFOLIO,\n { portfolioId },\n );\n return jsonResult({ ok: data.artUnfollowPortfolio });\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_unfollow failed', { error: String(error) });\n return errorResult(\n `Failed to unfollow portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Licenses ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_list')),\n {\n title: 'List Licenses',\n description: 'List the license terms defined on a work.',\n inputSchema: { workId: z.string().describe('Work ID') },\n },\n async ({ workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListLicenses: Array<Record<string, unknown>>;\n }>(ops.LIST_LICENSES, { workId });\n return jsonResult(data.artListLicenses);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_list failed', { error: String(error) });\n return errorResult(\n `Failed to list licenses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_create')),\n {\n title: 'Create License',\n description:\n 'Create a license on a work. `model` defaults to FREE; set `priceAmount`/`currency` for PURCHASE/LICENSE/MEMBERSHIP models.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID the license applies to'),\n name: z.string().min(1).describe('License name'),\n model: LicenseModelEnum.optional().describe('Commercial model (default FREE)'),\n priceAmount: z.number().optional().describe('Price amount'),\n currency: z.string().optional().describe('ISO currency code (e.g. \"USD\")'),\n spdx: z.string().optional().describe('SPDX identifier (e.g. \"CC-BY-4.0\")'),\n terms: z.string().optional().describe('Full license terms text'),\n attribution: z.string().optional().describe('Required attribution string'),\n },\n },\n async ({ workId, name, model, priceAmount, currency, spdx, terms, attribution }) => {\n try {\n const input: Record<string, unknown> = { workId, name };\n if (model !== undefined) input.model = model;\n if (priceAmount !== undefined) input.priceAmount = priceAmount;\n if (currency !== undefined) input.currency = currency;\n if (spdx !== undefined) input.spdx = spdx;\n if (terms !== undefined) input.terms = terms;\n if (attribution !== undefined) input.attribution = attribution;\n\n const data = await ctx.gql.workspace.request<{\n artCreateLicense: Record<string, unknown>;\n }>(ops.CREATE_LICENSE, { input });\n return jsonResult(data.artCreateLicense);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_create failed', { error: String(error) });\n return errorResult(\n `Failed to create license: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_update')),\n {\n title: 'Update License',\n description: 'Update a license. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('License ID'),\n name: z.string().optional().describe('Updated name'),\n model: LicenseModelEnum.optional().describe('Updated commercial model'),\n priceAmount: z.number().optional().describe('Updated price amount'),\n currency: z.string().optional().describe('Updated currency code'),\n spdx: z.string().optional().describe('Updated SPDX identifier'),\n terms: z.string().optional().describe('Updated terms text'),\n attribution: z.string().optional().describe('Updated attribution string'),\n },\n },\n async ({ id, name, model, priceAmount, currency, spdx, terms, attribution }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (model !== undefined) input.model = model;\n if (priceAmount !== undefined) input.priceAmount = priceAmount;\n if (currency !== undefined) input.currency = currency;\n if (spdx !== undefined) input.spdx = spdx;\n if (terms !== undefined) input.terms = terms;\n if (attribution !== undefined) input.attribution = attribution;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/model/priceAmount/currency/spdx/terms/attribution',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateLicense: Record<string, unknown>;\n }>(ops.UPDATE_LICENSE, { id, input });\n return jsonResult(data.artUpdateLicense);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_update failed', { error: String(error) });\n return errorResult(\n `Failed to update license: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_activate')),\n {\n title: 'Activate License',\n description: 'Activate a draft license so it becomes purchasable/effective.',\n inputSchema: { id: z.string().describe('License ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artActivateLicense: Record<string, unknown>;\n }>(ops.ACTIVATE_LICENSE, { id });\n return jsonResult(data.artActivateLicense);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate license: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase health tool.\n *\n * Surface (1): health — maps to the @public `artHealth` query (no auth\n * required), the liveness/identity probe for the Artistrybase subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Artistrybase Health Check',\n description:\n 'Public health probe for the Artistrybase subgraph (artHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ artHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.artHealth });\n } catch (error) {\n ctx.logger.error('artistrybase health failed', { error: String(error) });\n return errorResult(\n `Artistrybase health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_WORKS, LIST_PRODUCTIONS, LIST_PORTFOLIOS } from './operations.js';\n\n/**\n * Read-only Artistrybase MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerArtistrybaseResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const worksUri = track(mcpResourceUri(ctx.productName, 'works'));\n const productionsUri = track(mcpResourceUri(ctx.productName, 'productions'));\n const portfoliosUri = track(mcpResourceUri(ctx.productName, 'portfolios'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'artistrybase-schema',\n schemaUri,\n {\n title: 'Artistrybase Domain Schema',\n description:\n 'Overview of the Artistrybase creative-platform domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Artistrybase Domain (Overview)\n\nMulti-medium creative platform (audio, video, stories, art) — the federated\nsystem of record for creative works, versions, collections, productions, the\nreview/release pipeline, public portfolios, follows, and licensing.\n\n## Domains & entities\n- library: ArtWork (any medium), ArtWorkVersion (immutable history), ArtAsset (file assets), ArtCollection (curated)\n- production: ArtProduction (a film/album/graphic novel), ArtProductionMember (team), ArtReference (mood boards/links)\n- review: ArtReviewRound, ArtFeedback (timecode/chapter/pin anchors), ArtApproval, ArtRelease (draft→released pipeline)\n- portfolio: ArtPortfolio (public, spans every medium), ArtFollow, ArtLicense (explicit terms on works)\n\nFile blobs are never stored here — works/versions/assets reference a wspace-files-svc File by id via federation.\n\n## Enums\n- ArtMedium: ART, AUDIO, MIXED, STORY, VIDEO\n- ArtVisibility: PRIVATE, PUBLIC, UNLISTED\n- ArtWorkStatus: APPROVED, ARCHIVED, DRAFT, IN_REVIEW, RELEASED\n- ArtAssetKind: ATTACHMENT, CAPTION, COVER, MASTER, PREVIEW, SOURCE\n- ArtProductionStatus: CANCELLED, IN_PRODUCTION, ON_HOLD, PLANNING, POST, RELEASED, REVIEW\n- ArtProductionRole: COLLABORATOR, CREATOR, EDITOR, OWNER, PRODUCER, REVIEWER, VIEWER\n- ArtReviewStatus: APPROVED, CHANGES_REQUESTED, CLOSED, OPEN\n- ArtFeedbackStatus: OPEN, RESOLVED, WONT_FIX\n- ArtAnchorType: CHAPTER, GENERAL, PAGE, PIN, TIMECODE\n- ArtApprovalDecision: APPROVED, PENDING, REJECTED\n- ArtReleaseStatus: FAILED, PUBLISHED, SCHEDULED, UNPUBLISHED\n- ArtLicenseModel: FREE, LICENSE, MEMBERSHIP, PURCHASE\n\n## Tool groups\nlibrary (works/versions/assets/collections), production (productions/members/references),\nreview (review_rounds/feedback/approvals/releases), portfolio (portfolios/follows/licenses), health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://works — recent works\n server.registerResource(\n 'artistrybase-works',\n worksUri,\n {\n title: 'Artistrybase Works',\n description: 'The first 50 creative works in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${worksUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ artListWorks: unknown }>(LIST_WORKS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: worksUri,\n text: JSON.stringify(data.artListWorks, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: worksUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://productions — production directory\n server.registerResource(\n 'artistrybase-productions',\n productionsUri,\n {\n title: 'Artistrybase Productions',\n description: 'The first 50 productions in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${productionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ artListProductions: unknown }>(\n LIST_PRODUCTIONS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: productionsUri,\n text: JSON.stringify(data.artListProductions, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: productionsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://portfolios — public portfolio directory\n server.registerResource(\n 'artistrybase-portfolios',\n portfoliosUri,\n {\n title: 'Artistrybase Portfolios',\n description: 'The first 50 public portfolios in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${portfoliosUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ artListPortfolios: unknown }>(\n LIST_PORTFOLIOS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: portfoliosUri,\n text: JSON.stringify(data.artListPortfolios, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: portfoliosUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Artistrybase MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerArtistrybasePrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const publishingName = track(mcpPromptName(p, 'work-publishing'));\n const productionName = track(mcpPromptName(p, 'production-ops'));\n\n // <product>-work-publishing — take a work from draft to released\n server.registerPrompt(\n publishingName,\n {\n title: 'Work Publishing',\n description:\n 'Guide for taking a creative work from draft to released: create the work, upload a version, run a review round, record approval, then create and publish a release.',\n argsSchema: {\n title: z.string().optional().describe('Work title'),\n medium: z.string().optional().describe('Creative medium (ART/AUDIO/STORY/VIDEO/MIXED)'),\n },\n },\n ({ title, medium }) => {\n ctx.logger.debug(`Prompt ${publishingName} called`, { title, medium });\n const titleNote = title\n ? `Use the work title \"${title}\".`\n : 'Ask the user for the work title.';\n const mediumNote = medium ? `Use medium ${medium}.` : 'Help the user pick an ArtMedium.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me take an Artistrybase work from draft to released.\n\n1. **Create Work**: Use ${p}_works_create. ${titleNote} ${mediumNote} Optionally attach a coverFileId and tags.\n2. **Upload a Version**: Use ${p}_versions_add with the workId and a source fileId (from wspace-files-svc) to create an immutable revision.\n3. **Attach Assets**: Use ${p}_assets_add for masters/previews/captions as needed (kind=MASTER/PREVIEW/CAPTION).\n4. **Open Review**: Use ${p}_review_rounds_open for the work (optionally pin a versionId, set a dueDate).\n5. **Collect Feedback**: Use ${p}_feedback_add (anchorType=TIMECODE/PAGE/CHAPTER/PIN) and resolve with ${p}_feedback_resolve.\n6. **Record Approval**: Use ${p}_approvals_record (decision=APPROVED) on the review round, then ${p}_review_rounds_transition to CLOSED.\n7. **Publish Version**: Use ${p}_works_publish_version to promote the approved version as current.\n8. **Release**: Use ${p}_releases_create (set channel/visibility), then ${p}_releases_publish.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-production-ops — run a production\n server.registerPrompt(\n productionName,\n {\n title: 'Production Operations',\n description:\n 'Workflow for running a production: assemble the team, gather references, track works through the pipeline, and advance the production lifecycle.',\n argsSchema: {\n productionId: z.string().optional().describe('Production ID to operate'),\n },\n },\n ({ productionId }) => {\n ctx.logger.debug(`Prompt ${productionName} called`, { productionId });\n const productionNote = productionId\n ? `Operate production \"${productionId}\".`\n : `First list productions with ${p}_productions_list and pick one (or create one with ${p}_productions_create).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run Artistrybase production operations. ${productionNote}\n\n1. **Team**: Use ${p}_members_list to see the team; add collaborators with ${p}_members_add (role=EDITOR/PRODUCER/REVIEWER/...).\n2. **References**: Use ${p}_references_list and ${p}_references_add to gather mood boards, links, and reference files.\n3. **Works**: Use ${p}_works_list filtered by this productionId to track works; create new ones with ${p}_works_create (productionId set).\n4. **Review**: For works in IN_REVIEW, use ${p}_review_rounds_list and ${p}_review_rounds_get to triage open feedback.\n5. **Advance**: Use ${p}_productions_transition to move the production through PLANNING → IN_PRODUCTION → REVIEW → POST → RELEASED.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Artistrybase module — domain module for the future-products ecosystem program.\n *\n * Covers every @key entity of wspace-artistrybase-svc grouped into per-domain\n * sub-APIs that mirror the backend's four domains: library\n * (works/versions/assets/collections), production\n * (productions/members/references), review\n * (review-rounds/feedback/approvals/releases), and portfolio\n * (portfolios/follows/licenses), plus a public health probe. Mirrors the\n * kadaikodi/crewfoundry modules' structure (tools/<group>.ts + resources.ts +\n * prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/artistrybase/wspace-artistrybase-svc/\n * (Hive service name `artistrybase`). All operations run against the WORKSPACE\n * gateway; the @public artHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerLibraryTools } from './tools/library.js';\nimport { registerProductionTools } from './tools/production.js';\nimport { registerReviewTools } from './tools/review.js';\nimport { registerPortfolioTools } from './tools/portfolio.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerArtistrybaseResources } from './resources.js';\nimport { registerArtistrybasePrompts } from './prompts.js';\n\nconst artistrybaseModule: McpModule = {\n id: 'artistrybase',\n version: '0.0.1',\n displayName: 'Artistrybase',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerLibraryTools(server, ctx, trackTool);\n registerProductionTools(server, ctx, trackTool);\n registerReviewTools(server, ctx, trackTool);\n registerPortfolioTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerArtistrybaseResources(server, ctx, trackResource);\n registerArtistrybasePrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default artistrybaseModule;\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/artistrybase/operations.ts","../../../src/modules/artistrybase/tools/shared.ts","../../../src/modules/artistrybase/tools/library.ts","../../../src/modules/artistrybase/tools/production.ts","../../../src/modules/artistrybase/tools/review.ts","../../../src/modules/artistrybase/tools/portfolio.ts","../../../src/modules/artistrybase/tools/health.ts","../../../src/modules/artistrybase/resources.ts","../../../src/modules/artistrybase/prompts.ts","../../../src/modules/artistrybase/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the Artistrybase MCP module.\n *\n * Artistrybase is the multi-medium creative platform (audio, video, stories,\n * art) — the federated system of record for creative works, their immutable\n * versions and file assets, collections, productions and teams, the\n * review/feedback/approval + release pipeline, public portfolios, follows, and\n * licensing. Backend subgraph:\n * ~/products/artistrybase/wspace-artistrybase-svc/ (Hive service name\n * `artistrybase`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — Artistrybase inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is prefixed `art*` and every type/enum/input\n * is prefixed `Art*` (the subgraph's GraphQL naming contract); operations call\n * the fields by their REAL names. Uses template-string interpolation (not gql\n * tagged fragments) to match the canonical vibecontrols/kadaikodi modules.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const WORK_FIELDS = `\n id title summary medium status visibility productionId creatorId\n coverFileId currentVersionId durationMs tags publishedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const WORK_VERSION_FIELDS = `\n id workId versionNo label notes fileId checksum sizeBytes isPublished\n workspaceId createdAt updatedAt\n`;\n\nexport const ASSET_FIELDS = `\n id workId versionId kind fileId mimeType sizeBytes width height durationMs\n workspaceId createdAt updatedAt\n`;\n\nexport const COLLECTION_FIELDS = `\n id title slug description medium visibility tags coverFileId\n workspaceId createdAt updatedAt\n`;\n\nexport const PRODUCTION_FIELDS = `\n id title slug synopsis medium status ownerId tags startDate targetDate\n releasedAt workspaceId createdAt updatedAt\n`;\n\nexport const PRODUCTION_MEMBER_FIELDS = `\n id productionId memberId role title isLead workspaceId createdAt updatedAt\n`;\n\nexport const REFERENCE_FIELDS = `\n id productionId title note url fileId tags workspaceId createdAt updatedAt\n`;\n\nexport const REVIEW_ROUND_FIELDS = `\n id workId versionId round status title dueDate openedById closedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const FEEDBACK_FIELDS = `\n id reviewRoundId authorId body anchorType anchorValue status\n resolvedAt resolvedById workspaceId createdAt updatedAt\n`;\n\nexport const APPROVAL_FIELDS = `\n id reviewRoundId approverId decision comment decidedAt\n workspaceId createdAt updatedAt\n`;\n\nexport const RELEASE_FIELDS = `\n id workId versionId channel status visibility notes scheduledFor\n publishedAt workspaceId createdAt updatedAt\n`;\n\nexport const PORTFOLIO_FIELDS = `\n id handle displayName bio avatarFileId bannerFileId links featuredWorkIds\n followerCount ownerId visibility workspaceId createdAt updatedAt\n`;\n\nexport const FOLLOW_FIELDS = `\n id portfolioId followerId notify workspaceId createdAt\n`;\n\nexport const LICENSE_FIELDS = `\n id workId name model status priceAmount currency spdx terms attribution\n workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Library — works\n// ---------------------------------------------------------------------------\n\nexport const GET_WORK = `\n query ArtistrybaseGetWork($id: ID!) {\n artWork(id: $id) {\n ${WORK_FIELDS}\n assets { ${ASSET_FIELDS} }\n versions { ${WORK_VERSION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_WORKS = `\n query ArtistrybaseListWorks(\n $medium: ArtMedium\n $status: ArtWorkStatus\n $productionId: ID\n $pagination: PaginationInput\n ) {\n artListWorks(\n medium: $medium\n status: $status\n productionId: $productionId\n pagination: $pagination\n ) {\n items { ${WORK_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_WORK = `\n mutation ArtistrybaseCreateWork($input: ArtCreateWorkInput!) {\n artCreateWork(input: $input) {\n ${WORK_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_WORK = `\n mutation ArtistrybaseUpdateWork($id: ID!, $input: ArtUpdateWorkInput!) {\n artUpdateWork(id: $id, input: $input) {\n ${WORK_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_WORK = `\n mutation ArtistrybaseArchiveWork($id: ID!) {\n artArchiveWork(id: $id)\n }\n`;\n\nexport const PUBLISH_WORK_VERSION = `\n mutation ArtistrybasePublishWorkVersion($workId: ID!, $versionId: ID!) {\n artPublishWorkVersion(workId: $workId, versionId: $versionId) {\n ${WORK_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Library — versions + assets\n// ---------------------------------------------------------------------------\n\nexport const LIST_WORK_VERSIONS = `\n query ArtistrybaseListWorkVersions($workId: ID!) {\n artListWorkVersions(workId: $workId) {\n ${WORK_VERSION_FIELDS}\n }\n }\n`;\n\nexport const ADD_WORK_VERSION = `\n mutation ArtistrybaseAddWorkVersion($input: ArtCreateWorkVersionInput!) {\n artAddWorkVersion(input: $input) {\n ${WORK_VERSION_FIELDS}\n }\n }\n`;\n\nexport const LIST_ASSETS = `\n query ArtistrybaseListAssets($workId: ID!) {\n artListAssets(workId: $workId) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\nexport const ADD_ASSET = `\n mutation ArtistrybaseAddAsset($input: ArtCreateAssetInput!) {\n artAddAsset(input: $input) {\n ${ASSET_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Library — collections\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLECTION = `\n query ArtistrybaseGetCollection($id: ID!) {\n artCollection(id: $id) {\n ${COLLECTION_FIELDS}\n works { ${WORK_FIELDS} }\n }\n }\n`;\n\nexport const LIST_COLLECTIONS = `\n query ArtistrybaseListCollections(\n $visibility: ArtVisibility\n $pagination: PaginationInput\n ) {\n artListCollections(visibility: $visibility, pagination: $pagination) {\n items { ${COLLECTION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation ArtistrybaseCreateCollection($input: ArtCreateCollectionInput!) {\n artCreateCollection(input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_COLLECTION = `\n mutation ArtistrybaseUpdateCollection($id: ID!, $input: ArtUpdateCollectionInput!) {\n artUpdateCollection(id: $id, input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\nexport const ADD_WORK_TO_COLLECTION = `\n mutation ArtistrybaseAddWorkToCollection($collectionId: ID!, $workId: ID!) {\n artAddWorkToCollection(collectionId: $collectionId, workId: $workId) {\n ${COLLECTION_FIELDS}\n works { id title medium status }\n }\n }\n`;\n\nexport const REMOVE_WORK_FROM_COLLECTION = `\n mutation ArtistrybaseRemoveWorkFromCollection($collectionId: ID!, $workId: ID!) {\n artRemoveWorkFromCollection(collectionId: $collectionId, workId: $workId) {\n ${COLLECTION_FIELDS}\n works { id title medium status }\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Production — productions\n// ---------------------------------------------------------------------------\n\nexport const GET_PRODUCTION = `\n query ArtistrybaseGetProduction($id: ID!) {\n artProduction(id: $id) {\n ${PRODUCTION_FIELDS}\n members { ${PRODUCTION_MEMBER_FIELDS} }\n references { ${REFERENCE_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PRODUCTIONS = `\n query ArtistrybaseListProductions(\n $status: ArtProductionStatus\n $pagination: PaginationInput\n ) {\n artListProductions(status: $status, pagination: $pagination) {\n items { ${PRODUCTION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PRODUCTION = `\n mutation ArtistrybaseCreateProduction($input: ArtCreateProductionInput!) {\n artCreateProduction(input: $input) {\n ${PRODUCTION_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PRODUCTION = `\n mutation ArtistrybaseUpdateProduction($id: ID!, $input: ArtUpdateProductionInput!) {\n artUpdateProduction(id: $id, input: $input) {\n ${PRODUCTION_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_PRODUCTION = `\n mutation ArtistrybaseTransitionProduction($id: ID!, $status: ArtProductionStatus!) {\n artTransitionProduction(id: $id, status: $status) {\n ${PRODUCTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Production — members + references\n// ---------------------------------------------------------------------------\n\nexport const LIST_PRODUCTION_MEMBERS = `\n query ArtistrybaseListProductionMembers($productionId: ID!) {\n artListProductionMembers(productionId: $productionId) {\n ${PRODUCTION_MEMBER_FIELDS}\n }\n }\n`;\n\nexport const ADD_PRODUCTION_MEMBER = `\n mutation ArtistrybaseAddProductionMember($input: ArtAddProductionMemberInput!) {\n artAddProductionMember(input: $input) {\n ${PRODUCTION_MEMBER_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_PRODUCTION_MEMBER = `\n mutation ArtistrybaseRemoveProductionMember($id: ID!) {\n artRemoveProductionMember(id: $id)\n }\n`;\n\nexport const LIST_REFERENCES = `\n query ArtistrybaseListReferences($productionId: ID!) {\n artListReferences(productionId: $productionId) {\n ${REFERENCE_FIELDS}\n }\n }\n`;\n\nexport const ADD_REFERENCE = `\n mutation ArtistrybaseAddReference($input: ArtCreateReferenceInput!) {\n artAddReference(input: $input) {\n ${REFERENCE_FIELDS}\n }\n }\n`;\n\nexport const REMOVE_REFERENCE = `\n mutation ArtistrybaseRemoveReference($id: ID!) {\n artRemoveReference(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Review — review rounds, feedback, approvals\n// ---------------------------------------------------------------------------\n\nexport const GET_REVIEW_ROUND = `\n query ArtistrybaseGetReviewRound($id: ID!) {\n artReviewRound(id: $id) {\n ${REVIEW_ROUND_FIELDS}\n feedback { ${FEEDBACK_FIELDS} }\n approvals { ${APPROVAL_FIELDS} }\n }\n }\n`;\n\nexport const LIST_REVIEW_ROUNDS = `\n query ArtistrybaseListReviewRounds($workId: ID!, $status: ArtReviewStatus) {\n artListReviewRounds(workId: $workId, status: $status) {\n ${REVIEW_ROUND_FIELDS}\n }\n }\n`;\n\nexport const OPEN_REVIEW_ROUND = `\n mutation ArtistrybaseOpenReviewRound($input: ArtOpenReviewRoundInput!) {\n artOpenReviewRound(input: $input) {\n ${REVIEW_ROUND_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_REVIEW_ROUND = `\n mutation ArtistrybaseTransitionReviewRound($id: ID!, $status: ArtReviewStatus!) {\n artTransitionReviewRound(id: $id, status: $status) {\n ${REVIEW_ROUND_FIELDS}\n }\n }\n`;\n\nexport const ADD_FEEDBACK = `\n mutation ArtistrybaseAddFeedback($input: ArtAddFeedbackInput!) {\n artAddFeedback(input: $input) {\n ${FEEDBACK_FIELDS}\n }\n }\n`;\n\nexport const RESOLVE_FEEDBACK = `\n mutation ArtistrybaseResolveFeedback($id: ID!, $status: ArtFeedbackStatus!) {\n artResolveFeedback(id: $id, status: $status) {\n ${FEEDBACK_FIELDS}\n }\n }\n`;\n\nexport const RECORD_APPROVAL = `\n mutation ArtistrybaseRecordApproval($input: ArtRecordApprovalInput!) {\n artRecordApproval(input: $input) {\n ${APPROVAL_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Review — releases\n// ---------------------------------------------------------------------------\n\nexport const LIST_RELEASES = `\n query ArtistrybaseListReleases($workId: ID!, $status: ArtReleaseStatus) {\n artListReleases(workId: $workId, status: $status) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\nexport const CREATE_RELEASE = `\n mutation ArtistrybaseCreateRelease($input: ArtCreateReleaseInput!) {\n artCreateRelease(input: $input) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_RELEASE = `\n mutation ArtistrybasePublishRelease($id: ID!) {\n artPublishRelease(id: $id) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Portfolio — portfolios + follows\n// ---------------------------------------------------------------------------\n\nexport const GET_PORTFOLIO = `\n query ArtistrybaseGetPortfolio($id: ID!) {\n artPortfolio(id: $id) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const LIST_PORTFOLIOS = `\n query ArtistrybaseListPortfolios(\n $visibility: ArtVisibility\n $pagination: PaginationInput\n ) {\n artListPortfolios(visibility: $visibility, pagination: $pagination) {\n items { ${PORTFOLIO_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PORTFOLIO = `\n mutation ArtistrybaseCreatePortfolio($input: ArtCreatePortfolioInput!) {\n artCreatePortfolio(input: $input) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PORTFOLIO = `\n mutation ArtistrybaseUpdatePortfolio($id: ID!, $input: ArtUpdatePortfolioInput!) {\n artUpdatePortfolio(id: $id, input: $input) {\n ${PORTFOLIO_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PORTFOLIO = `\n mutation ArtistrybaseArchivePortfolio($id: ID!) {\n artArchivePortfolio(id: $id)\n }\n`;\n\nexport const FOLLOW_PORTFOLIO = `\n mutation ArtistrybaseFollowPortfolio($portfolioId: ID!, $notify: Boolean) {\n artFollowPortfolio(portfolioId: $portfolioId, notify: $notify) {\n ${FOLLOW_FIELDS}\n }\n }\n`;\n\nexport const UNFOLLOW_PORTFOLIO = `\n mutation ArtistrybaseUnfollowPortfolio($portfolioId: ID!) {\n artUnfollowPortfolio(portfolioId: $portfolioId)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Portfolio — licenses\n// ---------------------------------------------------------------------------\n\nexport const LIST_LICENSES = `\n query ArtistrybaseListLicenses($workId: ID!) {\n artListLicenses(workId: $workId) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\nexport const CREATE_LICENSE = `\n mutation ArtistrybaseCreateLicense($input: ArtCreateLicenseInput!) {\n artCreateLicense(input: $input) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LICENSE = `\n mutation ArtistrybaseUpdateLicense($id: ID!, $input: ArtUpdateLicenseInput!) {\n artUpdateLicense(id: $id, input: $input) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\nexport const ACTIVATE_LICENSE = `\n mutation ArtistrybaseActivateLicense($id: ID!) {\n artActivateLicense(id: $id) {\n ${LICENSE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query ArtistrybaseHealth {\n artHealth\n }\n`;\n","/**\n * Shared zod schemas for the Artistrybase tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. The `links` portfolio field is a\n * `JSON` scalar input, modelled as a permissive object record — the backend\n * accepts arbitrary JSON, but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const MediumEnum = z\n .enum(['ART', 'AUDIO', 'MIXED', 'STORY', 'VIDEO'])\n .describe('Creative medium of a work, collection, or production');\n\nexport const VisibilityEnum = z\n .enum(['PRIVATE', 'PUBLIC', 'UNLISTED'])\n .describe('Visibility of a work, collection, portfolio, or release');\n\nexport const WorkStatusEnum = z\n .enum(['APPROVED', 'ARCHIVED', 'DRAFT', 'IN_REVIEW', 'RELEASED'])\n .describe('Lifecycle status of a work');\n\nexport const AssetKindEnum = z\n .enum(['ATTACHMENT', 'CAPTION', 'COVER', 'MASTER', 'PREVIEW', 'SOURCE'])\n .describe('Kind of file asset attached to a work');\n\nexport const ProductionStatusEnum = z\n .enum(['CANCELLED', 'IN_PRODUCTION', 'ON_HOLD', 'PLANNING', 'POST', 'RELEASED', 'REVIEW'])\n .describe('Lifecycle status of a production');\n\nexport const ProductionRoleEnum = z\n .enum(['COLLABORATOR', 'CREATOR', 'EDITOR', 'OWNER', 'PRODUCER', 'REVIEWER', 'VIEWER'])\n .describe('Role of a member on a production team');\n\nexport const ReviewStatusEnum = z\n .enum(['APPROVED', 'CHANGES_REQUESTED', 'CLOSED', 'OPEN'])\n .describe('Lifecycle status of a review round');\n\nexport const FeedbackStatusEnum = z\n .enum(['OPEN', 'RESOLVED', 'WONT_FIX'])\n .describe('Resolution status of a piece of feedback');\n\nexport const AnchorTypeEnum = z\n .enum(['CHAPTER', 'GENERAL', 'PAGE', 'PIN', 'TIMECODE'])\n .describe('Where in-context feedback is anchored');\n\nexport const ApprovalDecisionEnum = z\n .enum(['APPROVED', 'PENDING', 'REJECTED'])\n .describe('Decision recorded on a review round by an approver');\n\nexport const ReleaseStatusEnum = z\n .enum(['FAILED', 'PUBLISHED', 'SCHEDULED', 'UNPUBLISHED'])\n .describe('Lifecycle status of a release');\n\nexport const LicenseModelEnum = z\n .enum(['FREE', 'LICENSE', 'MEMBERSHIP', 'PURCHASE'])\n .describe('Commercial model of a license');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs (e.g. portfolio links). */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Artistrybase library tools — works, immutable versions, file assets, and\n * curated collections.\n *\n * Surface (16):\n * works_{get,list,create,update,archive,publish_version}\n * works_{list_versions,add_version,list_assets,add_asset}\n * collections_{get,list,create,update,add_work,remove_work}\n *\n * Tool names match the sdk-libs-node `artistrybase` manifest exactly: versions\n * and assets are sub-resources of a work, so they live under the `works_*`\n * sub-API (works_list_versions, works_add_version, works_list_assets,\n * works_add_asset) rather than a separate group.\n *\n * All root fields are called by their REAL `art*` names (the subgraph's GraphQL\n * naming contract). Works/versions/assets reference a wspace-files-svc `File`\n * by id — blobs never live here.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { MediumEnum, VisibilityEnum, WorkStatusEnum, AssetKindEnum } from './shared.js';\n\nexport function registerLibraryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Works ────────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_get')),\n {\n title: 'Get Work',\n description:\n 'Fetch a single creative work by ID, including its file assets and immutable version history.',\n inputSchema: { id: z.string().describe('Work ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artWork: Record<string, unknown> | null;\n }>(ops.GET_WORK, { id });\n if (!data.artWork) return errorResult(`Work ${id} not found`);\n return jsonResult(data.artWork);\n } catch (error) {\n ctx.logger.error('artistrybase works_get failed', { error: String(error) });\n return errorResult(\n `Failed to get work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_list')),\n {\n title: 'List Works',\n description:\n 'List creative works in the bound workspace with optional medium/status/production filters and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n medium: MediumEnum.optional().describe('Filter by medium'),\n status: WorkStatusEnum.optional().describe('Filter by lifecycle status'),\n productionId: z.string().optional().describe('Filter to works of a production'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ medium, status, productionId, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {\n limit: limit ?? 50,\n offset: offset ?? 0,\n };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListWorks: Record<string, unknown>;\n }>(ops.LIST_WORKS, { medium, status, productionId, pagination });\n return jsonResult(data.artListWorks);\n } catch (error) {\n ctx.logger.error('artistrybase works_list failed', { error: String(error) });\n return errorResult(\n `Failed to list works: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_create')),\n {\n title: 'Create Work',\n description:\n 'Create a new creative work (any medium). Title is required; the work starts in DRAFT/PRIVATE unless overridden.',\n inputSchema: {\n title: z.string().min(1).describe('Work title'),\n medium: MediumEnum.optional().describe('Creative medium (default MIXED)'),\n summary: z.string().optional().describe('Short summary/description'),\n productionId: z.string().optional().describe('Owning production ID (optional)'),\n coverFileId: z.string().optional().describe('Cover image File ID (wspace-files-svc)'),\n durationMs: z.number().int().optional().describe('Duration in milliseconds (audio/video)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PRIVATE)'),\n },\n },\n async ({ title, medium, summary, productionId, coverFileId, durationMs, tags, visibility }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (medium !== undefined) input.medium = medium;\n if (summary !== undefined) input.summary = summary;\n if (productionId !== undefined) input.productionId = productionId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (durationMs !== undefined) input.durationMs = durationMs;\n if (tags !== undefined) input.tags = tags;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreateWork: Record<string, unknown>;\n }>(ops.CREATE_WORK, { input });\n return jsonResult(data.artCreateWork);\n } catch (error) {\n ctx.logger.error('artistrybase works_create failed', { error: String(error) });\n return errorResult(\n `Failed to create work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_update')),\n {\n title: 'Update Work',\n description:\n 'Update a work. At least one mutable field must be provided. Use `visibility` to publish/unlist a work.',\n inputSchema: {\n id: z.string().describe('Work ID'),\n title: z.string().optional().describe('Updated title'),\n summary: z.string().optional().describe('Updated summary'),\n medium: MediumEnum.optional().describe('Updated medium'),\n productionId: z.string().optional().describe('Updated owning production ID'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n durationMs: z.number().int().optional().describe('Updated duration in milliseconds'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n },\n },\n async ({\n id,\n title,\n summary,\n medium,\n productionId,\n coverFileId,\n durationMs,\n tags,\n visibility,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (summary !== undefined) input.summary = summary;\n if (medium !== undefined) input.medium = medium;\n if (productionId !== undefined) input.productionId = productionId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (durationMs !== undefined) input.durationMs = durationMs;\n if (tags !== undefined) input.tags = tags;\n if (visibility !== undefined) input.visibility = visibility;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/summary/medium/productionId/coverFileId/durationMs/tags/visibility',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateWork: Record<string, unknown>;\n }>(ops.UPDATE_WORK, { id, input });\n return jsonResult(data.artUpdateWork);\n } catch (error) {\n ctx.logger.error('artistrybase works_update failed', { error: String(error) });\n return errorResult(\n `Failed to update work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_archive')),\n {\n title: 'Archive Work',\n description: 'Archive a work (soft delete). Returns whether the archive succeeded.',\n inputSchema: { id: z.string().describe('Work ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artArchiveWork: boolean }>(\n ops.ARCHIVE_WORK,\n { id },\n );\n return jsonResult({ ok: data.artArchiveWork });\n } catch (error) {\n ctx.logger.error('artistrybase works_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive work: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_publish_version')),\n {\n title: 'Publish Work Version',\n description: \"Promote a version to be the work's published current version.\",\n inputSchema: {\n workId: z.string().describe('Work ID'),\n versionId: z.string().describe('Version ID to promote as current'),\n },\n },\n async ({ workId, versionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artPublishWorkVersion: Record<string, unknown>;\n }>(ops.PUBLISH_WORK_VERSION, { workId, versionId });\n return jsonResult(data.artPublishWorkVersion);\n } catch (error) {\n ctx.logger.error('artistrybase works_publish_version failed', { error: String(error) });\n return errorResult(\n `Failed to publish work version: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Versions ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_list_versions')),\n {\n title: 'List Work Versions',\n description: \"List a work's immutable revision history (ordered version snapshots).\",\n inputSchema: { workId: z.string().describe('Work ID') },\n },\n async ({ workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListWorkVersions: Array<Record<string, unknown>>;\n }>(ops.LIST_WORK_VERSIONS, { workId });\n return jsonResult(data.artListWorkVersions);\n } catch (error) {\n ctx.logger.error('artistrybase works_list_versions failed', { error: String(error) });\n return errorResult(\n `Failed to list work versions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_add_version')),\n {\n title: 'Add Work Version',\n description:\n 'Upload a new immutable revision of a work (auto-increments the version number).',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n fileId: z\n .string()\n .optional()\n .describe('Source File ID for this revision (wspace-files-svc)'),\n label: z.string().optional().describe('Human label for the version'),\n notes: z.string().optional().describe('Revision notes / changelog'),\n checksum: z.string().optional().describe('Content checksum'),\n },\n },\n async ({ workId, fileId, label, notes, checksum }) => {\n try {\n const input: Record<string, unknown> = { workId };\n if (fileId !== undefined) input.fileId = fileId;\n if (label !== undefined) input.label = label;\n if (notes !== undefined) input.notes = notes;\n if (checksum !== undefined) input.checksum = checksum;\n\n const data = await ctx.gql.workspace.request<{\n artAddWorkVersion: Record<string, unknown>;\n }>(ops.ADD_WORK_VERSION, { input });\n return jsonResult(data.artAddWorkVersion);\n } catch (error) {\n ctx.logger.error('artistrybase works_add_version failed', { error: String(error) });\n return errorResult(\n `Failed to add work version: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Assets ───────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_list_assets')),\n {\n title: 'List Work Assets',\n description: 'List the file assets attached to a work (masters, previews, captions, etc.).',\n inputSchema: { workId: z.string().describe('Work ID') },\n },\n async ({ workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListAssets: Array<Record<string, unknown>>;\n }>(ops.LIST_ASSETS, { workId });\n return jsonResult(data.artListAssets);\n } catch (error) {\n ctx.logger.error('artistrybase works_list_assets failed', { error: String(error) });\n return errorResult(\n `Failed to list assets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'works_add_asset')),\n {\n title: 'Add Work Asset',\n description:\n 'Attach a file asset to a work. `fileId` references a wspace-files-svc File; `kind` defaults to SOURCE.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n fileId: z.string().min(1).describe('Backing File ID (wspace-files-svc)'),\n kind: AssetKindEnum.optional().describe('Asset kind (default SOURCE)'),\n versionId: z.string().optional().describe('Version this asset belongs to'),\n mimeType: z.string().optional().describe('MIME type'),\n width: z.number().int().optional().describe('Pixel width (image/video)'),\n height: z.number().int().optional().describe('Pixel height (image/video)'),\n durationMs: z.number().int().optional().describe('Duration in milliseconds (audio/video)'),\n },\n },\n async ({ workId, fileId, kind, versionId, mimeType, width, height, durationMs }) => {\n try {\n const input: Record<string, unknown> = { workId, fileId };\n if (kind !== undefined) input.kind = kind;\n if (versionId !== undefined) input.versionId = versionId;\n if (mimeType !== undefined) input.mimeType = mimeType;\n if (width !== undefined) input.width = width;\n if (height !== undefined) input.height = height;\n if (durationMs !== undefined) input.durationMs = durationMs;\n\n const data = await ctx.gql.workspace.request<{\n artAddAsset: Record<string, unknown>;\n }>(ops.ADD_ASSET, { input });\n return jsonResult(data.artAddAsset);\n } catch (error) {\n ctx.logger.error('artistrybase works_add_asset failed', { error: String(error) });\n return errorResult(\n `Failed to add asset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Collections ──────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_get')),\n {\n title: 'Get Collection',\n description: 'Fetch a single collection by ID, including its member works.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artCollection: Record<string, unknown> | null;\n }>(ops.GET_COLLECTION, { id });\n if (!data.artCollection) return errorResult(`Collection ${id} not found`);\n return jsonResult(data.artCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_get failed', { error: String(error) });\n return errorResult(\n `Failed to get collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_list')),\n {\n title: 'List Collections',\n description:\n 'List curated collections with optional visibility filter and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n visibility: VisibilityEnum.optional().describe('Filter by visibility'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ visibility, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListCollections: Record<string, unknown>;\n }>(ops.LIST_COLLECTIONS, { visibility, pagination });\n return jsonResult(data.artListCollections);\n } catch (error) {\n ctx.logger.error('artistrybase collections_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collections: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_create')),\n {\n title: 'Create Collection',\n description: 'Create a curated collection. `slug` must be unique within the workspace.',\n inputSchema: {\n title: z.string().min(1).describe('Collection title'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n description: z.string().optional().describe('Collection description'),\n medium: MediumEnum.optional().describe('Primary medium of the collection'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n coverFileId: z.string().optional().describe('Cover image File ID'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PRIVATE)'),\n },\n },\n async ({ title, slug, description, medium, tags, coverFileId, visibility }) => {\n try {\n const input: Record<string, unknown> = { title, slug };\n if (description !== undefined) input.description = description;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.artCreateCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_update')),\n {\n title: 'Update Collection',\n description: 'Update a collection. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Collection ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n medium: MediumEnum.optional().describe('Updated medium'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n },\n },\n async ({ id, title, description, medium, tags, coverFileId, visibility }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (description !== undefined) input.description = description;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (visibility !== undefined) input.visibility = visibility;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/description/medium/tags/coverFileId/visibility',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateCollection: Record<string, unknown>;\n }>(ops.UPDATE_COLLECTION, { id, input });\n return jsonResult(data.artUpdateCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_update failed', { error: String(error) });\n return errorResult(\n `Failed to update collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_add_work')),\n {\n title: 'Add Work to Collection',\n description: 'Add a work to a collection. Returns the updated collection.',\n inputSchema: {\n collectionId: z.string().describe('Collection ID'),\n workId: z.string().describe('Work ID to add'),\n },\n },\n async ({ collectionId, workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artAddWorkToCollection: Record<string, unknown>;\n }>(ops.ADD_WORK_TO_COLLECTION, { collectionId, workId });\n return jsonResult(data.artAddWorkToCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_add_work failed', { error: String(error) });\n return errorResult(\n `Failed to add work to collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_remove_work')),\n {\n title: 'Remove Work from Collection',\n description: 'Remove a work from a collection. Returns the updated collection.',\n inputSchema: {\n collectionId: z.string().describe('Collection ID'),\n workId: z.string().describe('Work ID to remove'),\n },\n },\n async ({ collectionId, workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artRemoveWorkFromCollection: Record<string, unknown>;\n }>(ops.REMOVE_WORK_FROM_COLLECTION, { collectionId, workId });\n return jsonResult(data.artRemoveWorkFromCollection);\n } catch (error) {\n ctx.logger.error('artistrybase collections_remove_work failed', { error: String(error) });\n return errorResult(\n `Failed to remove work from collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase production tools — productions (a film, an album, a graphic\n * novel), their team members, and reference material.\n *\n * Surface (11):\n * productions_{get,list,create,update,transition}\n * productions_{list_members,add_member,remove_member}\n * productions_{list_references,add_reference,remove_reference}\n *\n * Tool names match the sdk-libs-node `artistrybase` manifest exactly: members\n * and references are sub-resources of a production, so they live under the\n * `productions_*` sub-API rather than separate groups.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { MediumEnum, ProductionStatusEnum, ProductionRoleEnum } from './shared.js';\n\nexport function registerProductionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Productions ──────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_get')),\n {\n title: 'Get Production',\n description:\n 'Fetch a single production by ID, including its team members and reference material.',\n inputSchema: { id: z.string().describe('Production ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artProduction: Record<string, unknown> | null;\n }>(ops.GET_PRODUCTION, { id });\n if (!data.artProduction) return errorResult(`Production ${id} not found`);\n return jsonResult(data.artProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_list')),\n {\n title: 'List Productions',\n description:\n 'List productions with optional status filter and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n status: ProductionStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListProductions: Record<string, unknown>;\n }>(ops.LIST_PRODUCTIONS, { status, pagination });\n return jsonResult(data.artListProductions);\n } catch (error) {\n ctx.logger.error('artistrybase productions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list productions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_create')),\n {\n title: 'Create Production',\n description: 'Create a new production. `slug` must be unique within the workspace.',\n inputSchema: {\n title: z.string().min(1).describe('Production title'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n synopsis: z.string().optional().describe('Synopsis / description'),\n medium: MediumEnum.optional().describe('Primary medium (default MIXED)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n startDate: z.string().optional().describe('Start date (ISO 8601)'),\n targetDate: z.string().optional().describe('Target completion date (ISO 8601)'),\n },\n },\n async ({ title, slug, synopsis, medium, tags, startDate, targetDate }) => {\n try {\n const input: Record<string, unknown> = { title, slug };\n if (synopsis !== undefined) input.synopsis = synopsis;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (startDate !== undefined) input.startDate = startDate;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n const data = await ctx.gql.workspace.request<{\n artCreateProduction: Record<string, unknown>;\n }>(ops.CREATE_PRODUCTION, { input });\n return jsonResult(data.artCreateProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_create failed', { error: String(error) });\n return errorResult(\n `Failed to create production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_update')),\n {\n title: 'Update Production',\n description: 'Update a production. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Production ID'),\n title: z.string().optional().describe('Updated title'),\n synopsis: z.string().optional().describe('Updated synopsis'),\n medium: MediumEnum.optional().describe('Updated medium'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n startDate: z.string().optional().describe('Updated start date (ISO 8601)'),\n targetDate: z.string().optional().describe('Updated target date (ISO 8601)'),\n },\n },\n async ({ id, title, synopsis, medium, tags, startDate, targetDate }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (synopsis !== undefined) input.synopsis = synopsis;\n if (medium !== undefined) input.medium = medium;\n if (tags !== undefined) input.tags = tags;\n if (startDate !== undefined) input.startDate = startDate;\n if (targetDate !== undefined) input.targetDate = targetDate;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/synopsis/medium/tags/startDate/targetDate',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateProduction: Record<string, unknown>;\n }>(ops.UPDATE_PRODUCTION, { id, input });\n return jsonResult(data.artUpdateProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_update failed', { error: String(error) });\n return errorResult(\n `Failed to update production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_transition')),\n {\n title: 'Transition Production',\n description:\n 'Advance a production through its lifecycle (validated transitions: PLANNING → IN_PRODUCTION → REVIEW → POST → RELEASED, or ON_HOLD/CANCELLED).',\n inputSchema: {\n id: z.string().describe('Production ID'),\n status: ProductionStatusEnum.describe('Target lifecycle status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artTransitionProduction: Record<string, unknown>;\n }>(ops.TRANSITION_PRODUCTION, { id, status });\n return jsonResult(data.artTransitionProduction);\n } catch (error) {\n ctx.logger.error('artistrybase productions_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition production: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Members ──────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_list_members')),\n {\n title: 'List Production Members',\n description: 'List the team members attached to a production.',\n inputSchema: { productionId: z.string().describe('Production ID') },\n },\n async ({ productionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListProductionMembers: Array<Record<string, unknown>>;\n }>(ops.LIST_PRODUCTION_MEMBERS, { productionId });\n return jsonResult(data.artListProductionMembers);\n } catch (error) {\n ctx.logger.error('artistrybase productions_list_members failed', { error: String(error) });\n return errorResult(\n `Failed to list production members: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_add_member')),\n {\n title: 'Add Production Member',\n description: 'Add a team member to a production with a role and optional title.',\n inputSchema: {\n productionId: z.string().min(1).describe('Production ID'),\n memberId: z.string().min(1).describe('User ID of the team member (wspace-auth-svc)'),\n role: ProductionRoleEnum.optional().describe('Member role (default COLLABORATOR)'),\n title: z.string().optional().describe('Credit/title on the production'),\n isLead: z.boolean().optional().describe('Whether the member is a lead (default false)'),\n },\n },\n async ({ productionId, memberId, role, title, isLead }) => {\n try {\n const input: Record<string, unknown> = { productionId, memberId };\n if (role !== undefined) input.role = role;\n if (title !== undefined) input.title = title;\n if (isLead !== undefined) input.isLead = isLead;\n\n const data = await ctx.gql.workspace.request<{\n artAddProductionMember: Record<string, unknown>;\n }>(ops.ADD_PRODUCTION_MEMBER, { input });\n return jsonResult(data.artAddProductionMember);\n } catch (error) {\n ctx.logger.error('artistrybase productions_add_member failed', { error: String(error) });\n return errorResult(\n `Failed to add production member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_remove_member')),\n {\n title: 'Remove Production Member',\n description: 'Remove a team member from a production. Returns whether removal succeeded.',\n inputSchema: { id: z.string().describe('Production member ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artRemoveProductionMember: boolean }>(\n ops.REMOVE_PRODUCTION_MEMBER,\n { id },\n );\n return jsonResult({ ok: data.artRemoveProductionMember });\n } catch (error) {\n ctx.logger.error('artistrybase productions_remove_member failed', { error: String(error) });\n return errorResult(\n `Failed to remove production member: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── References ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_list_references')),\n {\n title: 'List References',\n description: 'List reference material attached to a production (mood boards, links, files).',\n inputSchema: { productionId: z.string().describe('Production ID') },\n },\n async ({ productionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListReferences: Array<Record<string, unknown>>;\n }>(ops.LIST_REFERENCES, { productionId });\n return jsonResult(data.artListReferences);\n } catch (error) {\n ctx.logger.error('artistrybase productions_list_references failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list references: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_add_reference')),\n {\n title: 'Add Reference',\n description:\n 'Attach reference material to a production. Provide a title and optionally a URL and/or a File ID.',\n inputSchema: {\n productionId: z.string().min(1).describe('Production ID'),\n title: z.string().min(1).describe('Reference title'),\n note: z.string().optional().describe('Note about the reference'),\n url: z.string().optional().describe('External URL'),\n fileId: z.string().optional().describe('Attached File ID (wspace-files-svc)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ productionId, title, note, url, fileId, tags }) => {\n try {\n const input: Record<string, unknown> = { productionId, title };\n if (note !== undefined) input.note = note;\n if (url !== undefined) input.url = url;\n if (fileId !== undefined) input.fileId = fileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n artAddReference: Record<string, unknown>;\n }>(ops.ADD_REFERENCE, { input });\n return jsonResult(data.artAddReference);\n } catch (error) {\n ctx.logger.error('artistrybase productions_add_reference failed', { error: String(error) });\n return errorResult(\n `Failed to add reference: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'productions_remove_reference')),\n {\n title: 'Remove Reference',\n description:\n 'Remove reference material from a production. Returns whether removal succeeded.',\n inputSchema: { id: z.string().describe('Reference ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artRemoveReference: boolean }>(\n ops.REMOVE_REFERENCE,\n { id },\n );\n return jsonResult({ ok: data.artRemoveReference });\n } catch (error) {\n ctx.logger.error('artistrybase productions_remove_reference failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to remove reference: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase review tools — review rounds with in-context feedback\n * (timecode/chapter/pin anchors), explicit approvals, and the draft-to-released\n * release pipeline.\n *\n * Surface (10):\n * reviews_{get_round,list_rounds,open_round,transition_round}\n * reviews_{add_feedback,resolve_feedback}\n * reviews_record_approval\n * releases_{list,create,publish}\n *\n * Tool names match the sdk-libs-node `artistrybase` manifest exactly: rounds,\n * feedback, and approvals are grouped under the `reviews_*` sub-API; releases\n * are their own `releases_*` sub-API.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n ReviewStatusEnum,\n FeedbackStatusEnum,\n AnchorTypeEnum,\n ApprovalDecisionEnum,\n ReleaseStatusEnum,\n VisibilityEnum,\n} from './shared.js';\n\nexport function registerReviewTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Review rounds ────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_get_round')),\n {\n title: 'Get Review Round',\n description:\n 'Fetch a single review round by ID, including its in-context feedback and approvals.',\n inputSchema: { id: z.string().describe('Review round ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artReviewRound: Record<string, unknown> | null;\n }>(ops.GET_REVIEW_ROUND, { id });\n if (!data.artReviewRound) return errorResult(`Review round ${id} not found`);\n return jsonResult(data.artReviewRound);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_get_round failed', { error: String(error) });\n return errorResult(\n `Failed to get review round: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_list_rounds')),\n {\n title: 'List Review Rounds',\n description: 'List the review rounds for a work, optionally filtered by status.',\n inputSchema: {\n workId: z.string().describe('Work ID'),\n status: ReviewStatusEnum.optional().describe('Filter by review status'),\n },\n },\n async ({ workId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListReviewRounds: Array<Record<string, unknown>>;\n }>(ops.LIST_REVIEW_ROUNDS, { workId, status });\n return jsonResult(data.artListReviewRounds);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_list_rounds failed', { error: String(error) });\n return errorResult(\n `Failed to list review rounds: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_open_round')),\n {\n title: 'Open Review Round',\n description:\n 'Open a new review round on a work (optionally pinned to a specific version), with an optional title and due date.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n versionId: z.string().optional().describe('Version to review (defaults to current)'),\n title: z.string().optional().describe('Round title'),\n dueDate: z.string().optional().describe('Due date (ISO 8601)'),\n },\n },\n async ({ workId, versionId, title, dueDate }) => {\n try {\n const input: Record<string, unknown> = { workId };\n if (versionId !== undefined) input.versionId = versionId;\n if (title !== undefined) input.title = title;\n if (dueDate !== undefined) input.dueDate = dueDate;\n\n const data = await ctx.gql.workspace.request<{\n artOpenReviewRound: Record<string, unknown>;\n }>(ops.OPEN_REVIEW_ROUND, { input });\n return jsonResult(data.artOpenReviewRound);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_open_round failed', { error: String(error) });\n return errorResult(\n `Failed to open review round: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_transition_round')),\n {\n title: 'Transition Review Round',\n description:\n 'Advance a review round through its lifecycle (validated transitions: OPEN → CHANGES_REQUESTED/APPROVED → CLOSED).',\n inputSchema: {\n id: z.string().describe('Review round ID'),\n status: ReviewStatusEnum.describe('Target review status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artTransitionReviewRound: Record<string, unknown>;\n }>(ops.TRANSITION_REVIEW_ROUND, { id, status });\n return jsonResult(data.artTransitionReviewRound);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_transition_round failed', { error: String(error) });\n return errorResult(\n `Failed to transition review round: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Feedback ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_add_feedback')),\n {\n title: 'Add Feedback',\n description:\n 'Add a piece of in-context feedback to a review round. Anchor it to a timecode/page/chapter/pin via `anchorType` + `anchorValue` (defaults to GENERAL).',\n inputSchema: {\n reviewRoundId: z.string().min(1).describe('Review round ID'),\n body: z.string().min(1).describe('Feedback body'),\n anchorType: AnchorTypeEnum.optional().describe('Anchor type (default GENERAL)'),\n anchorValue: z\n .string()\n .optional()\n .describe('Anchor value (e.g. timecode \"00:01:23\", page number, pin coordinates)'),\n },\n },\n async ({ reviewRoundId, body, anchorType, anchorValue }) => {\n try {\n const input: Record<string, unknown> = { reviewRoundId, body };\n if (anchorType !== undefined) input.anchorType = anchorType;\n if (anchorValue !== undefined) input.anchorValue = anchorValue;\n\n const data = await ctx.gql.workspace.request<{\n artAddFeedback: Record<string, unknown>;\n }>(ops.ADD_FEEDBACK, { input });\n return jsonResult(data.artAddFeedback);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_add_feedback failed', { error: String(error) });\n return errorResult(\n `Failed to add feedback: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_resolve_feedback')),\n {\n title: 'Resolve Feedback',\n description: 'Set the resolution status of a piece of feedback (RESOLVED / WONT_FIX / OPEN).',\n inputSchema: {\n id: z.string().describe('Feedback ID'),\n status: FeedbackStatusEnum.describe('New feedback status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artResolveFeedback: Record<string, unknown>;\n }>(ops.RESOLVE_FEEDBACK, { id, status });\n return jsonResult(data.artResolveFeedback);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_resolve_feedback failed', { error: String(error) });\n return errorResult(\n `Failed to resolve feedback: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Approvals ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'reviews_record_approval')),\n {\n title: 'Record Approval',\n description:\n 'Record an approval decision (APPROVED / REJECTED / PENDING) on a review round, with an optional comment.',\n inputSchema: {\n reviewRoundId: z.string().min(1).describe('Review round ID'),\n decision: ApprovalDecisionEnum.describe('Approval decision'),\n comment: z.string().optional().describe('Optional comment explaining the decision'),\n },\n },\n async ({ reviewRoundId, decision, comment }) => {\n try {\n const input: Record<string, unknown> = { reviewRoundId, decision };\n if (comment !== undefined) input.comment = comment;\n\n const data = await ctx.gql.workspace.request<{\n artRecordApproval: Record<string, unknown>;\n }>(ops.RECORD_APPROVAL, { input });\n return jsonResult(data.artRecordApproval);\n } catch (error) {\n ctx.logger.error('artistrybase reviews_record_approval failed', { error: String(error) });\n return errorResult(\n `Failed to record approval: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Releases ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_list')),\n {\n title: 'List Releases',\n description: 'List the releases of a work, optionally filtered by status.',\n inputSchema: {\n workId: z.string().describe('Work ID'),\n status: ReleaseStatusEnum.optional().describe('Filter by release status'),\n },\n },\n async ({ workId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListReleases: Array<Record<string, unknown>>;\n }>(ops.LIST_RELEASES, { workId, status });\n return jsonResult(data.artListReleases);\n } catch (error) {\n ctx.logger.error('artistrybase releases_list failed', { error: String(error) });\n return errorResult(\n `Failed to list releases: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_create')),\n {\n title: 'Create Release',\n description:\n 'Create a release for a work (optionally pinned to a version), with an optional channel, visibility, notes, and a scheduled time.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID'),\n versionId: z.string().optional().describe('Version to release (defaults to current)'),\n channel: z.string().optional().describe('Release channel (e.g. \"store\", \"preview\")'),\n notes: z.string().optional().describe('Release notes'),\n scheduledFor: z.string().optional().describe('Scheduled release time (ISO 8601)'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PUBLIC)'),\n },\n },\n async ({ workId, versionId, channel, notes, scheduledFor, visibility }) => {\n try {\n const input: Record<string, unknown> = { workId };\n if (versionId !== undefined) input.versionId = versionId;\n if (channel !== undefined) input.channel = channel;\n if (notes !== undefined) input.notes = notes;\n if (scheduledFor !== undefined) input.scheduledFor = scheduledFor;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreateRelease: Record<string, unknown>;\n }>(ops.CREATE_RELEASE, { input });\n return jsonResult(data.artCreateRelease);\n } catch (error) {\n ctx.logger.error('artistrybase releases_create failed', { error: String(error) });\n return errorResult(\n `Failed to create release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_publish')),\n {\n title: 'Publish Release',\n description: 'Publish a scheduled/draft release now.',\n inputSchema: { id: z.string().describe('Release ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artPublishRelease: Record<string, unknown>;\n }>(ops.PUBLISH_RELEASE, { id });\n return jsonResult(data.artPublishRelease);\n } catch (error) {\n ctx.logger.error('artistrybase releases_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase portfolio tools — public portfolios that span every medium,\n * follows, and explicit license terms on works.\n *\n * Surface (12):\n * portfolios_{get,list,create,update,archive,follow,unfollow}\n * licenses_{list,create,update,activate}\n *\n * `portfolios_follow` / `portfolios_unfollow` are self-scoped on the backend\n * (the follower is the calling actor — no followerId arg).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { VisibilityEnum, LicenseModelEnum, JsonObject } from './shared.js';\n\nexport function registerPortfolioTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Portfolios ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_get')),\n {\n title: 'Get Portfolio',\n description: 'Fetch a single public portfolio by ID.',\n inputSchema: { id: z.string().describe('Portfolio ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artPortfolio: Record<string, unknown> | null;\n }>(ops.GET_PORTFOLIO, { id });\n if (!data.artPortfolio) return errorResult(`Portfolio ${id} not found`);\n return jsonResult(data.artPortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_get failed', { error: String(error) });\n return errorResult(\n `Failed to get portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_list')),\n {\n title: 'List Portfolios',\n description:\n 'List public portfolios with optional visibility filter and cursor/offset pagination. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n visibility: VisibilityEnum.optional().describe('Filter by visibility'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ visibility, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = { limit: limit ?? 50, offset: offset ?? 0 };\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n artListPortfolios: Record<string, unknown>;\n }>(ops.LIST_PORTFOLIOS, { visibility, pagination });\n return jsonResult(data.artListPortfolios);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_list failed', { error: String(error) });\n return errorResult(\n `Failed to list portfolios: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_create')),\n {\n title: 'Create Portfolio',\n description:\n 'Create a public portfolio. `handle` must be unique within the workspace; starts PUBLIC unless overridden.',\n inputSchema: {\n handle: z.string().min(1).describe('Unique handle (e.g. \"@anbu\")'),\n displayName: z.string().min(1).describe('Display name'),\n bio: z.string().optional().describe('Short bio'),\n avatarFileId: z.string().optional().describe('Avatar image File ID'),\n bannerFileId: z.string().optional().describe('Banner image File ID'),\n featuredWorkIds: z.array(z.string()).optional().describe('Featured work IDs'),\n links: JsonObject.optional().describe('Social/external links JSON'),\n ownerId: z.string().optional().describe('Owner User ID (defaults to the calling actor)'),\n visibility: VisibilityEnum.optional().describe('Visibility (default PUBLIC)'),\n },\n },\n async ({\n handle,\n displayName,\n bio,\n avatarFileId,\n bannerFileId,\n featuredWorkIds,\n links,\n ownerId,\n visibility,\n }) => {\n try {\n const input: Record<string, unknown> = { handle, displayName };\n if (bio !== undefined) input.bio = bio;\n if (avatarFileId !== undefined) input.avatarFileId = avatarFileId;\n if (bannerFileId !== undefined) input.bannerFileId = bannerFileId;\n if (featuredWorkIds !== undefined) input.featuredWorkIds = featuredWorkIds;\n if (links !== undefined) input.links = links;\n if (ownerId !== undefined) input.ownerId = ownerId;\n if (visibility !== undefined) input.visibility = visibility;\n\n const data = await ctx.gql.workspace.request<{\n artCreatePortfolio: Record<string, unknown>;\n }>(ops.CREATE_PORTFOLIO, { input });\n return jsonResult(data.artCreatePortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_create failed', { error: String(error) });\n return errorResult(\n `Failed to create portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_update')),\n {\n title: 'Update Portfolio',\n description: 'Update a portfolio. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Portfolio ID'),\n displayName: z.string().optional().describe('Updated display name'),\n bio: z.string().optional().describe('Updated bio'),\n avatarFileId: z.string().optional().describe('Updated avatar File ID'),\n bannerFileId: z.string().optional().describe('Updated banner File ID'),\n featuredWorkIds: z.array(z.string()).optional().describe('Updated featured work IDs'),\n links: JsonObject.optional().describe('Updated links JSON'),\n visibility: VisibilityEnum.optional().describe('Updated visibility'),\n },\n },\n async ({\n id,\n displayName,\n bio,\n avatarFileId,\n bannerFileId,\n featuredWorkIds,\n links,\n visibility,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (displayName !== undefined) input.displayName = displayName;\n if (bio !== undefined) input.bio = bio;\n if (avatarFileId !== undefined) input.avatarFileId = avatarFileId;\n if (bannerFileId !== undefined) input.bannerFileId = bannerFileId;\n if (featuredWorkIds !== undefined) input.featuredWorkIds = featuredWorkIds;\n if (links !== undefined) input.links = links;\n if (visibility !== undefined) input.visibility = visibility;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of displayName/bio/avatarFileId/bannerFileId/featuredWorkIds/links/visibility',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdatePortfolio: Record<string, unknown>;\n }>(ops.UPDATE_PORTFOLIO, { id, input });\n return jsonResult(data.artUpdatePortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_update failed', { error: String(error) });\n return errorResult(\n `Failed to update portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_archive')),\n {\n title: 'Archive Portfolio',\n description: 'Archive a portfolio (soft delete). Returns whether the archive succeeded.',\n inputSchema: { id: z.string().describe('Portfolio ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artArchivePortfolio: boolean }>(\n ops.ARCHIVE_PORTFOLIO,\n { id },\n );\n return jsonResult({ ok: data.artArchivePortfolio });\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_follow')),\n {\n title: 'Follow Portfolio',\n description:\n 'Follow a portfolio as the calling actor (self-scoped). `notify` toggles new-work notifications (default true).',\n inputSchema: {\n portfolioId: z.string().describe('Portfolio ID to follow'),\n notify: z.boolean().optional().describe('Receive notifications (default true)'),\n },\n },\n async ({ portfolioId, notify }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artFollowPortfolio: Record<string, unknown>;\n }>(ops.FOLLOW_PORTFOLIO, { portfolioId, notify });\n return jsonResult(data.artFollowPortfolio);\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_follow failed', { error: String(error) });\n return errorResult(\n `Failed to follow portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'portfolios_unfollow')),\n {\n title: 'Unfollow Portfolio',\n description:\n 'Unfollow a portfolio as the calling actor (self-scoped). Returns whether the unfollow succeeded.',\n inputSchema: { portfolioId: z.string().describe('Portfolio ID to unfollow') },\n },\n async ({ portfolioId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ artUnfollowPortfolio: boolean }>(\n ops.UNFOLLOW_PORTFOLIO,\n { portfolioId },\n );\n return jsonResult({ ok: data.artUnfollowPortfolio });\n } catch (error) {\n ctx.logger.error('artistrybase portfolios_unfollow failed', { error: String(error) });\n return errorResult(\n `Failed to unfollow portfolio: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Licenses ─────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_list')),\n {\n title: 'List Licenses',\n description: 'List the license terms defined on a work.',\n inputSchema: { workId: z.string().describe('Work ID') },\n },\n async ({ workId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artListLicenses: Array<Record<string, unknown>>;\n }>(ops.LIST_LICENSES, { workId });\n return jsonResult(data.artListLicenses);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_list failed', { error: String(error) });\n return errorResult(\n `Failed to list licenses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_create')),\n {\n title: 'Create License',\n description:\n 'Create a license on a work. `model` defaults to FREE; set `priceAmount`/`currency` for PURCHASE/LICENSE/MEMBERSHIP models.',\n inputSchema: {\n workId: z.string().min(1).describe('Work ID the license applies to'),\n name: z.string().min(1).describe('License name'),\n model: LicenseModelEnum.optional().describe('Commercial model (default FREE)'),\n priceAmount: z.number().optional().describe('Price amount'),\n currency: z.string().optional().describe('ISO currency code (e.g. \"USD\")'),\n spdx: z.string().optional().describe('SPDX identifier (e.g. \"CC-BY-4.0\")'),\n terms: z.string().optional().describe('Full license terms text'),\n attribution: z.string().optional().describe('Required attribution string'),\n },\n },\n async ({ workId, name, model, priceAmount, currency, spdx, terms, attribution }) => {\n try {\n const input: Record<string, unknown> = { workId, name };\n if (model !== undefined) input.model = model;\n if (priceAmount !== undefined) input.priceAmount = priceAmount;\n if (currency !== undefined) input.currency = currency;\n if (spdx !== undefined) input.spdx = spdx;\n if (terms !== undefined) input.terms = terms;\n if (attribution !== undefined) input.attribution = attribution;\n\n const data = await ctx.gql.workspace.request<{\n artCreateLicense: Record<string, unknown>;\n }>(ops.CREATE_LICENSE, { input });\n return jsonResult(data.artCreateLicense);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_create failed', { error: String(error) });\n return errorResult(\n `Failed to create license: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_update')),\n {\n title: 'Update License',\n description: 'Update a license. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('License ID'),\n name: z.string().optional().describe('Updated name'),\n model: LicenseModelEnum.optional().describe('Updated commercial model'),\n priceAmount: z.number().optional().describe('Updated price amount'),\n currency: z.string().optional().describe('Updated currency code'),\n spdx: z.string().optional().describe('Updated SPDX identifier'),\n terms: z.string().optional().describe('Updated terms text'),\n attribution: z.string().optional().describe('Updated attribution string'),\n },\n },\n async ({ id, name, model, priceAmount, currency, spdx, terms, attribution }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (model !== undefined) input.model = model;\n if (priceAmount !== undefined) input.priceAmount = priceAmount;\n if (currency !== undefined) input.currency = currency;\n if (spdx !== undefined) input.spdx = spdx;\n if (terms !== undefined) input.terms = terms;\n if (attribution !== undefined) input.attribution = attribution;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/model/priceAmount/currency/spdx/terms/attribution',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n artUpdateLicense: Record<string, unknown>;\n }>(ops.UPDATE_LICENSE, { id, input });\n return jsonResult(data.artUpdateLicense);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_update failed', { error: String(error) });\n return errorResult(\n `Failed to update license: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'licenses_activate')),\n {\n title: 'Activate License',\n description: 'Activate a draft license so it becomes purchasable/effective.',\n inputSchema: { id: z.string().describe('License ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n artActivateLicense: Record<string, unknown>;\n }>(ops.ACTIVATE_LICENSE, { id });\n return jsonResult(data.artActivateLicense);\n } catch (error) {\n ctx.logger.error('artistrybase licenses_activate failed', { error: String(error) });\n return errorResult(\n `Failed to activate license: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Artistrybase health tool.\n *\n * Surface (1): health — maps to the @public `artHealth` query (no auth\n * required), the liveness/identity probe for the Artistrybase subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Artistrybase Health Check',\n description:\n 'Public health probe for the Artistrybase subgraph (artHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ artHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.artHealth });\n } catch (error) {\n ctx.logger.error('artistrybase health failed', { error: String(error) });\n return errorResult(\n `Artistrybase health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_WORKS, LIST_PRODUCTIONS, LIST_PORTFOLIOS } from './operations.js';\n\n/**\n * Read-only Artistrybase MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerArtistrybaseResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const worksUri = track(mcpResourceUri(ctx.productName, 'works'));\n const productionsUri = track(mcpResourceUri(ctx.productName, 'productions'));\n const portfoliosUri = track(mcpResourceUri(ctx.productName, 'portfolios'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'artistrybase-schema',\n schemaUri,\n {\n title: 'Artistrybase Domain Schema',\n description:\n 'Overview of the Artistrybase creative-platform domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Artistrybase Domain (Overview)\n\nMulti-medium creative platform (audio, video, stories, art) — the federated\nsystem of record for creative works, versions, collections, productions, the\nreview/release pipeline, public portfolios, follows, and licensing.\n\n## Domains & entities\n- library: ArtWork (any medium), ArtWorkVersion (immutable history), ArtAsset (file assets), ArtCollection (curated)\n- production: ArtProduction (a film/album/graphic novel), ArtProductionMember (team), ArtReference (mood boards/links)\n- review: ArtReviewRound, ArtFeedback (timecode/chapter/pin anchors), ArtApproval, ArtRelease (draft→released pipeline)\n- portfolio: ArtPortfolio (public, spans every medium), ArtFollow, ArtLicense (explicit terms on works)\n\nFile blobs are never stored here — works/versions/assets reference a wspace-files-svc File by id via federation.\n\n## Enums\n- ArtMedium: ART, AUDIO, MIXED, STORY, VIDEO\n- ArtVisibility: PRIVATE, PUBLIC, UNLISTED\n- ArtWorkStatus: APPROVED, ARCHIVED, DRAFT, IN_REVIEW, RELEASED\n- ArtAssetKind: ATTACHMENT, CAPTION, COVER, MASTER, PREVIEW, SOURCE\n- ArtProductionStatus: CANCELLED, IN_PRODUCTION, ON_HOLD, PLANNING, POST, RELEASED, REVIEW\n- ArtProductionRole: COLLABORATOR, CREATOR, EDITOR, OWNER, PRODUCER, REVIEWER, VIEWER\n- ArtReviewStatus: APPROVED, CHANGES_REQUESTED, CLOSED, OPEN\n- ArtFeedbackStatus: OPEN, RESOLVED, WONT_FIX\n- ArtAnchorType: CHAPTER, GENERAL, PAGE, PIN, TIMECODE\n- ArtApprovalDecision: APPROVED, PENDING, REJECTED\n- ArtReleaseStatus: FAILED, PUBLISHED, SCHEDULED, UNPUBLISHED\n- ArtLicenseModel: FREE, LICENSE, MEMBERSHIP, PURCHASE\n\n## Tool groups\nlibrary (works/versions/assets/collections), production (productions/members/references),\nreview (review_rounds/feedback/approvals/releases), portfolio (portfolios/follows/licenses), health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://works — recent works\n server.registerResource(\n 'artistrybase-works',\n worksUri,\n {\n title: 'Artistrybase Works',\n description: 'The first 50 creative works in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${worksUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ artListWorks: unknown }>(LIST_WORKS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: worksUri,\n text: JSON.stringify(data.artListWorks, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: worksUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://productions — production directory\n server.registerResource(\n 'artistrybase-productions',\n productionsUri,\n {\n title: 'Artistrybase Productions',\n description: 'The first 50 productions in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${productionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ artListProductions: unknown }>(\n LIST_PRODUCTIONS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: productionsUri,\n text: JSON.stringify(data.artListProductions, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: productionsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://portfolios — public portfolio directory\n server.registerResource(\n 'artistrybase-portfolios',\n portfoliosUri,\n {\n title: 'Artistrybase Portfolios',\n description: 'The first 50 public portfolios in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${portfoliosUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ artListPortfolios: unknown }>(\n LIST_PORTFOLIOS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: portfoliosUri,\n text: JSON.stringify(data.artListPortfolios, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: portfoliosUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Artistrybase MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n *\n * BOFF-6603: recipe tool references are validated against the registered tool\n * manifest in tests/unit/artistrybase.test.ts so a rename cannot drift again.\n */\nexport function registerArtistrybasePrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const publishingName = track(mcpPromptName(p, 'work-publishing'));\n const productionName = track(mcpPromptName(p, 'production-ops'));\n\n // <product>-work-publishing — take a work from draft to released\n server.registerPrompt(\n publishingName,\n {\n title: 'Work Publishing',\n description:\n 'Guide for taking a creative work from draft to released: create the work, upload a version, run a review round, record approval, then create and publish a release.',\n argsSchema: {\n title: z.string().optional().describe('Work title'),\n medium: z.string().optional().describe('Creative medium (ART/AUDIO/STORY/VIDEO/MIXED)'),\n },\n },\n ({ title, medium }) => {\n ctx.logger.debug(`Prompt ${publishingName} called`, { title, medium });\n const titleNote = title\n ? `Use the work title \"${title}\".`\n : 'Ask the user for the work title.';\n const mediumNote = medium ? `Use medium ${medium}.` : 'Help the user pick an ArtMedium.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me take an Artistrybase work from draft to released.\n\n1. **Create Work**: Use ${p}_works_create. ${titleNote} ${mediumNote} Optionally attach a coverFileId and tags.\n2. **Upload a Version**: Use ${p}_works_add_version with the workId and a source fileId (from wspace-files-svc) to create an immutable revision.\n3. **Attach Assets**: Use ${p}_works_add_asset for masters/previews/captions as needed (kind=MASTER/PREVIEW/CAPTION).\n4. **Open Review**: Use ${p}_reviews_open_round for the work (optionally pin a versionId, set a dueDate).\n5. **Collect Feedback**: Use ${p}_reviews_add_feedback (anchorType=TIMECODE/PAGE/CHAPTER/PIN) and resolve with ${p}_reviews_resolve_feedback.\n6. **Record Approval**: Use ${p}_reviews_record_approval (decision=APPROVED) on the review round, then ${p}_reviews_transition_round to CLOSED.\n7. **Publish Version**: Use ${p}_works_publish_version to promote the approved version as current.\n8. **Release**: Use ${p}_releases_create (set channel/visibility), then ${p}_releases_publish.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-production-ops — run a production\n server.registerPrompt(\n productionName,\n {\n title: 'Production Operations',\n description:\n 'Workflow for running a production: assemble the team, gather references, track works through the pipeline, and advance the production lifecycle.',\n argsSchema: {\n productionId: z.string().optional().describe('Production ID to operate'),\n },\n },\n ({ productionId }) => {\n ctx.logger.debug(`Prompt ${productionName} called`, { productionId });\n const productionNote = productionId\n ? `Operate production \"${productionId}\".`\n : `First list productions with ${p}_productions_list and pick one (or create one with ${p}_productions_create).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run Artistrybase production operations. ${productionNote}\n\n1. **Team**: Use ${p}_productions_list_members to see the team; add collaborators with ${p}_productions_add_member (role=EDITOR/PRODUCER/REVIEWER/...).\n2. **References**: Use ${p}_productions_list_references and ${p}_productions_add_reference to gather mood boards, links, and reference files.\n3. **Works**: Use ${p}_works_list filtered by this productionId to track works; create new ones with ${p}_works_create (productionId set).\n4. **Review**: For works in IN_REVIEW, use ${p}_reviews_list_rounds and ${p}_reviews_get_round to triage open feedback.\n5. **Advance**: Use ${p}_productions_transition to move the production through PLANNING → IN_PRODUCTION → REVIEW → POST → RELEASED.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Artistrybase module — domain module for the future-products ecosystem program.\n *\n * Covers every @key entity of wspace-artistrybase-svc grouped into per-domain\n * sub-APIs that mirror the backend's four domains: library\n * (works/versions/assets/collections), production\n * (productions/members/references), review\n * (review-rounds/feedback/approvals/releases), and portfolio\n * (portfolios/follows/licenses), plus a public health probe. Mirrors the\n * kadaikodi/crewfoundry modules' structure (tools/<group>.ts + resources.ts +\n * prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/artistrybase/wspace-artistrybase-svc/\n * (Hive service name `artistrybase`). All operations run against the WORKSPACE\n * gateway; the @public artHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerLibraryTools } from './tools/library.js';\nimport { registerProductionTools } from './tools/production.js';\nimport { registerReviewTools } from './tools/review.js';\nimport { registerPortfolioTools } from './tools/portfolio.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerArtistrybaseResources } from './resources.js';\nimport { registerArtistrybasePrompts } from './prompts.js';\n\nconst artistrybaseModule: McpModule = {\n id: 'artistrybase',\n version: '0.0.1',\n displayName: 'Artistrybase',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerLibraryTools(server, ctx, trackTool);\n registerProductionTools(server, ctx, trackTool);\n registerReviewTools(server, ctx, trackTool);\n registerPortfolioTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerArtistrybaseResources(server, ctx, trackResource);\n registerArtistrybasePrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default artistrybaseModule;\n"]}
|