@burdenoff/mcp-libs 2026.825.2 → 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.
Files changed (135) hide show
  1. package/dist/{chunk-YOSQUY3M.js → chunk-BSNL65PZ.js} +2 -2
  2. package/dist/{chunk-YOSQUY3M.js.map → chunk-BSNL65PZ.js.map} +1 -1
  3. package/dist/{chunk-RHWHUY5Y.js → chunk-QQYJVKJE.js} +3 -3
  4. package/dist/{chunk-RHWHUY5Y.js.map → chunk-QQYJVKJE.js.map} +1 -1
  5. package/dist/core/index.cjs.map +1 -1
  6. package/dist/core/index.d.cts +1 -1
  7. package/dist/core/index.d.ts +1 -1
  8. package/dist/core/index.js +1 -1
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.cts +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/modules/adaptercloud/index.cjs.map +1 -1
  14. package/dist/modules/adaptercloud/index.js +1 -1
  15. package/dist/modules/artistrybase/index.cjs +8 -8
  16. package/dist/modules/artistrybase/index.cjs.map +1 -1
  17. package/dist/modules/artistrybase/index.js +9 -9
  18. package/dist/modules/artistrybase/index.js.map +1 -1
  19. package/dist/modules/assethandler/index.cjs.map +1 -1
  20. package/dist/modules/assethandler/index.js +1 -1
  21. package/dist/modules/atheletebridge/index.cjs.map +1 -1
  22. package/dist/modules/atheletebridge/index.js +1 -1
  23. package/dist/modules/auth/index.cjs.map +1 -1
  24. package/dist/modules/auth/index.js +3 -3
  25. package/dist/modules/billing/index.cjs.map +1 -1
  26. package/dist/modules/billing/index.js +1 -1
  27. package/dist/modules/brainyrich/index.cjs +13 -3
  28. package/dist/modules/brainyrich/index.cjs.map +1 -1
  29. package/dist/modules/brainyrich/index.js +14 -4
  30. package/dist/modules/brainyrich/index.js.map +1 -1
  31. package/dist/modules/buildmyiq/index.cjs.map +1 -1
  32. package/dist/modules/buildmyiq/index.js +1 -1
  33. package/dist/modules/channels/index.cjs.map +1 -1
  34. package/dist/modules/channels/index.js +1 -1
  35. package/dist/modules/collabkin/index.cjs.map +1 -1
  36. package/dist/modules/collabkin/index.js +1 -1
  37. package/dist/modules/comradecircle/index.cjs.map +1 -1
  38. package/dist/modules/comradecircle/index.js +1 -1
  39. package/dist/modules/conversations/index.cjs.map +1 -1
  40. package/dist/modules/conversations/index.js +1 -1
  41. package/dist/modules/coolandlovely/index.cjs.map +1 -1
  42. package/dist/modules/coolandlovely/index.js +1 -1
  43. package/dist/modules/cosmicintersection/index.cjs.map +1 -1
  44. package/dist/modules/cosmicintersection/index.js +1 -1
  45. package/dist/modules/crewfoundry/index.cjs.map +1 -1
  46. package/dist/modules/crewfoundry/index.js +1 -1
  47. package/dist/modules/devportal/index.cjs.map +1 -1
  48. package/dist/modules/devportal/index.js +1 -1
  49. package/dist/modules/ecoimpacthub/index.cjs +12 -6
  50. package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
  51. package/dist/modules/ecoimpacthub/index.js +13 -7
  52. package/dist/modules/ecoimpacthub/index.js.map +1 -1
  53. package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
  54. package/dist/modules/eventfullymanaged/index.js +1 -1
  55. package/dist/modules/export/index.cjs.map +1 -1
  56. package/dist/modules/export/index.js +1 -1
  57. package/dist/modules/files/index.cjs.map +1 -1
  58. package/dist/modules/files/index.js +1 -1
  59. package/dist/modules/ggnomad/index.cjs.map +1 -1
  60. package/dist/modules/ggnomad/index.js +1 -1
  61. package/dist/modules/govcitizenhub/index.cjs.map +1 -1
  62. package/dist/modules/govcitizenhub/index.js +1 -1
  63. package/dist/modules/groups/index.cjs.map +1 -1
  64. package/dist/modules/groups/index.js +1 -1
  65. package/dist/modules/headshotmarketing/index.cjs.map +1 -1
  66. package/dist/modules/headshotmarketing/index.js +1 -1
  67. package/dist/modules/health/index.cjs.map +1 -1
  68. package/dist/modules/health/index.js +1 -1
  69. package/dist/modules/hookmovies/index.cjs.map +1 -1
  70. package/dist/modules/hookmovies/index.js +1 -1
  71. package/dist/modules/housingvista/index.cjs.map +1 -1
  72. package/dist/modules/housingvista/index.js +1 -1
  73. package/dist/modules/integrations/index.cjs.map +1 -1
  74. package/dist/modules/integrations/index.js +1 -1
  75. package/dist/modules/intelwatchtower/index.cjs.map +1 -1
  76. package/dist/modules/intelwatchtower/index.js +1 -1
  77. package/dist/modules/kadaikodi/index.cjs.map +1 -1
  78. package/dist/modules/kadaikodi/index.js +1 -1
  79. package/dist/modules/labsofscience/index.cjs.map +1 -1
  80. package/dist/modules/labsofscience/index.js +1 -1
  81. package/dist/modules/manufacturedops/index.cjs.map +1 -1
  82. package/dist/modules/manufacturedops/index.js +1 -1
  83. package/dist/modules/movethewheels/index.cjs.map +1 -1
  84. package/dist/modules/movethewheels/index.js +1 -1
  85. package/dist/modules/mybodyshield/index.cjs.map +1 -1
  86. package/dist/modules/mybodyshield/index.js +1 -1
  87. package/dist/modules/notifications/index.cjs.map +1 -1
  88. package/dist/modules/notifications/index.js +1 -1
  89. package/dist/modules/organizations/index.cjs.map +1 -1
  90. package/dist/modules/organizations/index.js +1 -1
  91. package/dist/modules/planmagnet/index.cjs.map +1 -1
  92. package/dist/modules/planmagnet/index.js +1 -1
  93. package/dist/modules/products/index.cjs.map +1 -1
  94. package/dist/modules/products/index.js +1 -1
  95. package/dist/modules/proserviceworld/index.cjs.map +1 -1
  96. package/dist/modules/proserviceworld/index.js +1 -1
  97. package/dist/modules/rbac/index.cjs.map +1 -1
  98. package/dist/modules/rbac/index.js +1 -1
  99. package/dist/modules/sandbox/index.cjs.map +1 -1
  100. package/dist/modules/sandbox/index.js +1 -1
  101. package/dist/modules/scheduler/index.cjs.map +1 -1
  102. package/dist/modules/scheduler/index.js +1 -1
  103. package/dist/modules/security/index.cjs.map +1 -1
  104. package/dist/modules/security/index.js +1 -1
  105. package/dist/modules/semanticfed/index.cjs.map +1 -1
  106. package/dist/modules/semanticfed/index.js +1 -1
  107. package/dist/modules/store/index.cjs.map +1 -1
  108. package/dist/modules/store/index.js +1 -1
  109. package/dist/modules/subscriberbot/index.cjs.map +1 -1
  110. package/dist/modules/subscriberbot/index.js +1 -1
  111. package/dist/modules/support/index.cjs.map +1 -1
  112. package/dist/modules/support/index.js +1 -1
  113. package/dist/modules/tags/index.cjs.map +1 -1
  114. package/dist/modules/tags/index.js +1 -1
  115. package/dist/modules/technospam/index.cjs.map +1 -1
  116. package/dist/modules/technospam/index.js +1 -1
  117. package/dist/modules/theculturepost/index.cjs +16 -4
  118. package/dist/modules/theculturepost/index.cjs.map +1 -1
  119. package/dist/modules/theculturepost/index.js +17 -5
  120. package/dist/modules/theculturepost/index.js.map +1 -1
  121. package/dist/modules/theglobalfuel/index.cjs.map +1 -1
  122. package/dist/modules/theglobalfuel/index.js +1 -1
  123. package/dist/modules/timecampus/index.cjs +18 -9
  124. package/dist/modules/timecampus/index.cjs.map +1 -1
  125. package/dist/modules/timecampus/index.js +19 -10
  126. package/dist/modules/timecampus/index.js.map +1 -1
  127. package/dist/modules/tours/index.cjs.map +1 -1
  128. package/dist/modules/tours/index.js +1 -1
  129. package/dist/modules/vibecontrols/index.cjs.map +1 -1
  130. package/dist/modules/vibecontrols/index.js +2 -2
  131. package/dist/modules/workspaces/index.cjs.map +1 -1
  132. package/dist/modules/workspaces/index.js +1 -1
  133. package/dist/{tool-name-Bvb36qmq.d.cts → tool-name-DYWaobFF.d.cts} +1 -1
  134. package/dist/{tool-name-BaPNMZdj.d.ts → tool-name-nso0HFYX.d.ts} +1 -1
  135. package/package.json +30 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/modules/theculturepost/operations.ts","../../../src/modules/theculturepost/tools/shared.ts","../../../src/modules/theculturepost/tools/stories.ts","../../../src/modules/theculturepost/tools/topics.ts","../../../src/modules/theculturepost/tools/citations.ts","../../../src/modules/theculturepost/tools/archive.ts","../../../src/modules/theculturepost/tools/collections.ts","../../../src/modules/theculturepost/tools/oralhistories.ts","../../../src/modules/theculturepost/tools/discussions.ts","../../../src/modules/theculturepost/tools/replies.ts","../../../src/modules/theculturepost/tools/system.ts","../../../src/modules/theculturepost/resources.ts","../../../src/modules/theculturepost/prompts.ts","../../../src/modules/theculturepost/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the TheCulturePost MCP module.\n *\n * TheCulturePost is the culture / religion / values / history platform —\n * the federated system of record for well-sourced stories, topic timelines,\n * citable archives + oral histories, and respectful community discussion\n * (future-products ecosystem). Backend subgraph:\n * ~/products/theculturepost/wspace-theculturepost-svc/ (Hive service name\n * `theculturepost`).\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 — TheCulturePost inputs do NOT carry a workspaceId.\n *\n * Root fields are consistently prefixed `tcp*` and every product-owned type is\n * prefixed `Tcp*` (the subgraph's collision-avoidance contract). Each operation\n * below is called by its REAL server-side name.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (mirror the backend object types)\n// ---------------------------------------------------------------------------\n\nexport const STORY_FIELDS = `\n id slug title summary body format status readingMins languages tags\n topicId authorId editorId publishedAt workspaceId createdAt updatedAt\n cover { id }\n`;\n\nexport const TOPIC_FIELDS = `\n id slug name description category tradition isFeatured\n workspaceId createdAt updatedAt\n`;\n\nexport const CITATION_FIELDS = `\n id storyId title author publisher publishedOn url excerpt provenance\n sourceType verification workspaceId createdAt updatedAt\n sourceFile { id }\n`;\n\nexport const ARCHIVE_ITEM_FIELDS = `\n id title description kind accessLevel collectionId languages tags origin\n provenance datedAt workspaceId createdAt updatedAt\n file { id }\n`;\n\nexport const COLLECTION_FIELDS = `\n id slug name description tradition itemCount\n workspaceId createdAt updatedAt\n cover { id }\n`;\n\nexport const ORAL_HISTORY_FIELDS = `\n id title narratorName language summary transcript durationSecs recordedAt\n collectionId accessLevel workspaceId createdAt updatedAt\n recording { id }\n`;\n\nexport const DISCUSSION_FIELDS = `\n id title prompt storyId isInterfaith isLocked status replyCount tags\n openedById workspaceId createdAt updatedAt\n`;\n\nexport const REPLY_FIELDS = `\n id discussionId body perspective status authorId\n workspaceId createdAt updatedAt\n`;\n\nexport const PAGE_INFO = `\n pageInfo { cursor hasMore }\n`;\n\n// ---------------------------------------------------------------------------\n// Stories (editorial)\n// ---------------------------------------------------------------------------\n\nexport const GET_STORY = `\n query TheculturepostGetStory($id: ID!) {\n tcpStory(id: $id) {\n ${STORY_FIELDS}\n topic { id name slug category }\n citations { id title sourceType verification url }\n }\n }\n`;\n\nexport const LIST_STORIES = `\n query TheculturepostListStories(\n $pagination: PaginationInput\n $status: TcpStoryStatus\n $topicId: ID\n ) {\n tcpListStories(pagination: $pagination, status: $status, topicId: $topicId) {\n items { ${STORY_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_STORY = `\n mutation TheculturepostCreateStory($input: TcpCreateStoryInput!) {\n tcpCreateStory(input: $input) { ${STORY_FIELDS} }\n }\n`;\n\nexport const UPDATE_STORY = `\n mutation TheculturepostUpdateStory($id: ID!, $input: TcpUpdateStoryInput!) {\n tcpUpdateStory(id: $id, input: $input) { ${STORY_FIELDS} }\n }\n`;\n\nexport const TRANSITION_STORY = `\n mutation TheculturepostTransitionStory($id: ID!, $status: TcpStoryStatus!) {\n tcpTransitionStory(id: $id, status: $status) { ${STORY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Topics (editorial)\n// ---------------------------------------------------------------------------\n\nexport const GET_TOPIC = `\n query TheculturepostGetTopic($id: ID!) {\n tcpTopic(id: $id) {\n ${TOPIC_FIELDS}\n stories { id title slug status }\n }\n }\n`;\n\nexport const LIST_TOPICS = `\n query TheculturepostListTopics(\n $category: TcpTopicCategory\n $pagination: PaginationInput\n ) {\n tcpListTopics(category: $category, pagination: $pagination) {\n items { ${TOPIC_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_TOPIC = `\n mutation TheculturepostCreateTopic($input: TcpCreateTopicInput!) {\n tcpCreateTopic(input: $input) { ${TOPIC_FIELDS} }\n }\n`;\n\nexport const UPDATE_TOPIC = `\n mutation TheculturepostUpdateTopic($id: ID!, $input: TcpUpdateTopicInput!) {\n tcpUpdateTopic(id: $id, input: $input) { ${TOPIC_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_TOPIC = `\n mutation TheculturepostArchiveTopic($id: ID!) {\n tcpArchiveTopic(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Citations (editorial)\n// ---------------------------------------------------------------------------\n\nexport const LIST_CITATIONS = `\n query TheculturepostListCitations($storyId: ID!) {\n tcpListCitations(storyId: $storyId) { ${CITATION_FIELDS} }\n }\n`;\n\nexport const ADD_CITATION = `\n mutation TheculturepostAddCitation($input: TcpCreateCitationInput!) {\n tcpAddCitation(input: $input) { ${CITATION_FIELDS} }\n }\n`;\n\nexport const VERIFY_CITATION = `\n mutation TheculturepostVerifyCitation(\n $id: ID!\n $verification: TcpVerificationStatus!\n ) {\n tcpVerifyCitation(id: $id, verification: $verification) { ${CITATION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Archive items (archive)\n// ---------------------------------------------------------------------------\n\nexport const GET_ARCHIVE_ITEM = `\n query TheculturepostGetArchiveItem($id: ID!) {\n tcpArchiveItem(id: $id) {\n ${ARCHIVE_ITEM_FIELDS}\n collection { id name slug }\n }\n }\n`;\n\nexport const LIST_ARCHIVE_ITEMS = `\n query TheculturepostListArchiveItems(\n $accessLevel: TcpAccessLevel\n $collectionId: ID\n $kind: TcpArchiveItemKind\n $pagination: PaginationInput\n ) {\n tcpListArchiveItems(\n accessLevel: $accessLevel\n collectionId: $collectionId\n kind: $kind\n pagination: $pagination\n ) {\n items { ${ARCHIVE_ITEM_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_ARCHIVE_ITEM = `\n mutation TheculturepostCreateArchiveItem($input: TcpCreateArchiveItemInput!) {\n tcpCreateArchiveItem(input: $input) { ${ARCHIVE_ITEM_FIELDS} }\n }\n`;\n\nexport const UPDATE_ARCHIVE_ITEM = `\n mutation TheculturepostUpdateArchiveItem(\n $id: ID!\n $input: TcpUpdateArchiveItemInput!\n ) {\n tcpUpdateArchiveItem(id: $id, input: $input) { ${ARCHIVE_ITEM_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_ARCHIVE_ITEM = `\n mutation TheculturepostArchiveArchiveItem($id: ID!) {\n tcpArchiveArchiveItem(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collections (archive)\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLECTION = `\n query TheculturepostGetCollection($id: ID!) {\n tcpCollection(id: $id) {\n ${COLLECTION_FIELDS}\n items { id title kind accessLevel }\n oralHistories { id title narratorName }\n }\n }\n`;\n\nexport const LIST_COLLECTIONS = `\n query TheculturepostListCollections($pagination: PaginationInput) {\n tcpListCollections(pagination: $pagination) { ${COLLECTION_FIELDS} }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation TheculturepostCreateCollection($input: TcpCreateCollectionInput!) {\n tcpCreateCollection(input: $input) { ${COLLECTION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Oral histories (archive)\n// ---------------------------------------------------------------------------\n\nexport const LIST_ORAL_HISTORIES = `\n query TheculturepostListOralHistories($collectionId: ID) {\n tcpListOralHistories(collectionId: $collectionId) { ${ORAL_HISTORY_FIELDS} }\n }\n`;\n\nexport const RECORD_ORAL_HISTORY = `\n mutation TheculturepostRecordOralHistory($input: TcpCreateOralHistoryInput!) {\n tcpRecordOralHistory(input: $input) { ${ORAL_HISTORY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Discussions (community)\n// ---------------------------------------------------------------------------\n\nexport const GET_DISCUSSION = `\n query TheculturepostGetDiscussion($id: ID!) {\n tcpDiscussion(id: $id) {\n ${DISCUSSION_FIELDS}\n replies { id body perspective status authorId }\n }\n }\n`;\n\nexport const LIST_DISCUSSIONS = `\n query TheculturepostListDiscussions(\n $pagination: PaginationInput\n $status: TcpModerationStatus\n $storyId: ID\n ) {\n tcpListDiscussions(pagination: $pagination, status: $status, storyId: $storyId) {\n items { ${DISCUSSION_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const OPEN_DISCUSSION = `\n mutation TheculturepostOpenDiscussion($input: TcpCreateDiscussionInput!) {\n tcpOpenDiscussion(input: $input) { ${DISCUSSION_FIELDS} }\n }\n`;\n\nexport const LOCK_DISCUSSION = `\n mutation TheculturepostLockDiscussion($id: ID!) {\n tcpLockDiscussion(id: $id) { ${DISCUSSION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Replies (community)\n// ---------------------------------------------------------------------------\n\nexport const LIST_REPLIES = `\n query TheculturepostListReplies($discussionId: ID!, $status: TcpModerationStatus) {\n tcpListReplies(discussionId: $discussionId, status: $status) { ${REPLY_FIELDS} }\n }\n`;\n\nexport const POST_REPLY = `\n mutation TheculturepostPostReply($input: TcpCreateReplyInput!) {\n tcpPostReply(input: $input) { ${REPLY_FIELDS} }\n }\n`;\n\nexport const MODERATE_REPLY = `\n mutation TheculturepostModerateReply($id: ID!, $status: TcpModerationStatus!) {\n tcpModerateReply(id: $id, status: $status) { ${REPLY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query TheculturepostHealth {\n tcpHealth\n }\n`;\n","/**\n * Shared zod schemas + helpers for the TheCulturePost 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 cursor/limit/offset\n * pagination shape (PaginationInput) is assembled by `buildPagination` so each\n * list tool stays terse.\n */\n\nimport { z } from 'zod';\n\nexport const AccessLevelEnum = z\n .enum(['COMMUNITY', 'EMBARGOED', 'PUBLIC', 'RESTRICTED'])\n .describe('Visibility/access level of an archive item or oral history');\n\nexport const ArchiveItemKindEnum = z\n .enum(['AUDIO', 'DOCUMENT', 'MANUSCRIPT', 'MAP', 'OBJECT', 'PHOTOGRAPH', 'VIDEO'])\n .describe('Kind of cultural artifact in the archive');\n\nexport const ModerationStatusEnum = z\n .enum(['APPROVED', 'FLAGGED', 'PENDING', 'REMOVED'])\n .describe('Moderation status of a discussion or reply');\n\nexport const SourceTypeEnum = z\n .enum([\n 'ACADEMIC',\n 'ARCHIVAL_RECORD',\n 'ARTIFACT',\n 'BOOK',\n 'INTERVIEW',\n 'PERIODICAL',\n 'PRIMARY_DOCUMENT',\n 'WEB',\n ])\n .describe('Type of cited source backing a story claim');\n\nexport const StoryFormatEnum = z\n .enum(['ARTICLE', 'ESSAY', 'EXPLAINER', 'ORAL_HISTORY', 'PHOTO_STORY', 'TIMELINE'])\n .describe('Editorial format of a story');\n\nexport const StoryStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'IDEA', 'IN_REVIEW', 'PUBLISHED'])\n .describe('Editorial lifecycle status of a story');\n\nexport const TopicCategoryEnum = z\n .enum([\n 'CULTURE_AND_IDENTITY',\n 'FESTIVALS_AND_RITUALS',\n 'HERITAGE_AND_ARCHIVES',\n 'HISTORY',\n 'MIGRATION_AND_DIASPORA',\n 'ORAL_HISTORIES',\n 'PHILOSOPHY_AND_THOUGHT',\n 'RELIGION_AND_FAITH',\n 'VALUES_AND_ETHICS',\n ])\n .describe('Thematic category of a topic');\n\nexport const VerificationStatusEnum = z\n .enum(['CORROBORATED', 'DISPUTED', 'RETRACTED', 'UNVERIFIED'])\n .describe('Verification status of a citation');\n\n/** Reusable optional pagination inputs (PaginationInput: { cursor, limit, offset }). */\nexport const paginationShape = {\n cursor: z.string().optional().describe('Opaque cursor for keyset pagination'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n} as const;\n\n/**\n * Build a `PaginationInput` object from the optional cursor/limit/offset tool\n * args, or `undefined` when none were supplied (so the backend default applies).\n */\nexport function buildPagination(args: {\n cursor?: string;\n limit?: number;\n offset?: number;\n}): Record<string, unknown> | undefined {\n const pagination: Record<string, unknown> = {};\n if (args.cursor !== undefined) pagination.cursor = args.cursor;\n if (args.limit !== undefined) pagination.limit = args.limit;\n if (args.offset !== undefined) pagination.offset = args.offset;\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n","/**\n * TheCulturePost story tools — the editorial heart of the platform.\n *\n * Surface (5): stories_{get,list,create,update,transition}. Backend root fields\n * (tcpStory / tcpListStories / tcpCreateStory / tcpUpdateStory /\n * tcpTransitionStory) are all called by their REAL names in operations.ts.\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 { StoryFormatEnum, StoryStatusEnum, paginationShape, buildPagination } from './shared.js';\n\nexport function registerStoryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_get')),\n {\n title: 'Get Story',\n description: 'Fetch a single TheCulturePost story by ID, including its topic and citations.',\n inputSchema: { id: z.string().describe('Story ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpStory: Record<string, unknown> | null;\n }>(ops.GET_STORY, { id });\n if (!data.tcpStory) return errorResult(`Story ${id} not found`);\n return jsonResult(data.tcpStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_get failed', { error: String(error) });\n return errorResult(\n `Failed to get story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_list')),\n {\n title: 'List Stories',\n description:\n 'List stories in the bound workspace, optionally filtered by editorial status and/or topic. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n status: StoryStatusEnum.optional().describe('Filter by editorial status'),\n topicId: z.string().optional().describe('Filter by topic ID'),\n ...paginationShape,\n },\n },\n async ({ status, topicId, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListStories: Record<string, unknown>;\n }>(ops.LIST_STORIES, {\n status,\n topicId,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListStories);\n } catch (error) {\n ctx.logger.error('theculturepost stories_list failed', { error: String(error) });\n return errorResult(\n `Failed to list stories: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_create')),\n {\n title: 'Create Story',\n description:\n 'Draft a new story. `slug` must be unique within the workspace. Stories start in DRAFT (or IDEA) and advance via stories_transition.',\n inputSchema: {\n title: z.string().min(1).describe('Story headline'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n topicId: z.string().optional().describe('Owning topic ID'),\n summary: z.string().optional().describe('Short standfirst / dek'),\n body: z.string().optional().describe('Story body (markdown/rich text)'),\n format: StoryFormatEnum.optional().describe('Editorial format (default ARTICLE)'),\n languages: z.array(z.string()).optional().describe('ISO language codes the story is in'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n readingMins: z.number().int().optional().describe('Estimated reading time in minutes'),\n authorId: z.string().optional().describe('Author user ID'),\n editorId: z.string().optional().describe('Editor user ID'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the hero image'),\n },\n },\n async ({\n title,\n slug,\n topicId,\n summary,\n body,\n format,\n languages,\n tags,\n readingMins,\n authorId,\n editorId,\n coverFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { title, slug };\n if (topicId !== undefined) input.topicId = topicId;\n if (summary !== undefined) input.summary = summary;\n if (body !== undefined) input.body = body;\n if (format !== undefined) input.format = format;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (readingMins !== undefined) input.readingMins = readingMins;\n if (authorId !== undefined) input.authorId = authorId;\n if (editorId !== undefined) input.editorId = editorId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateStory: Record<string, unknown>;\n }>(ops.CREATE_STORY, { input });\n return jsonResult(data.tcpCreateStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_create failed', { error: String(error) });\n return errorResult(\n `Failed to create story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_update')),\n {\n title: 'Update Story',\n description:\n 'Update a story’s editorial fields. At least one mutable field must be provided. Use stories_transition to change `status`.',\n inputSchema: {\n id: z.string().describe('Story ID'),\n title: z.string().optional().describe('Updated headline'),\n summary: z.string().optional().describe('Updated standfirst / dek'),\n body: z.string().optional().describe('Updated body'),\n format: StoryFormatEnum.optional().describe('Updated editorial format'),\n languages: z.array(z.string()).optional().describe('Updated language codes'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n readingMins: z.number().int().optional().describe('Updated reading time'),\n topicId: z.string().optional().describe('Reassign to a topic'),\n authorId: z.string().optional().describe('Updated author user ID'),\n editorId: z.string().optional().describe('Updated editor user ID'),\n coverFileId: z.string().optional().describe('Updated hero-image File ID'),\n },\n },\n async ({\n id,\n title,\n summary,\n body,\n format,\n languages,\n tags,\n readingMins,\n topicId,\n authorId,\n editorId,\n coverFileId,\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 (body !== undefined) input.body = body;\n if (format !== undefined) input.format = format;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (readingMins !== undefined) input.readingMins = readingMins;\n if (topicId !== undefined) input.topicId = topicId;\n if (authorId !== undefined) input.authorId = authorId;\n if (editorId !== undefined) input.editorId = editorId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/summary/body/format/languages/tags/readingMins/topicId/authorId/editorId/coverFileId',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n tcpUpdateStory: Record<string, unknown>;\n }>(ops.UPDATE_STORY, { id, input });\n return jsonResult(data.tcpUpdateStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_update failed', { error: String(error) });\n return errorResult(\n `Failed to update story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_transition')),\n {\n title: 'Transition Story',\n description:\n 'Advance a story through its editorial lifecycle (validated transitions): IDEA → DRAFT → IN_REVIEW → PUBLISHED → ARCHIVED.',\n inputSchema: {\n id: z.string().describe('Story ID'),\n status: StoryStatusEnum.describe('Target editorial status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpTransitionStory: Record<string, unknown>;\n }>(ops.TRANSITION_STORY, { id, status });\n return jsonResult(data.tcpTransitionStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost topic tools — thematic hubs that group stories.\n *\n * Surface (5): topics_{get,list,create,update,archive}. `topics_archive` maps to\n * the soft-delete mutation tcpArchiveTopic (returns Boolean).\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 { TopicCategoryEnum, paginationShape, buildPagination } from './shared.js';\n\nexport function registerTopicTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_get')),\n {\n title: 'Get Topic',\n description: 'Fetch a single topic by ID, including its stories.',\n inputSchema: { id: z.string().describe('Topic ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpTopic: Record<string, unknown> | null;\n }>(ops.GET_TOPIC, { id });\n if (!data.tcpTopic) return errorResult(`Topic ${id} not found`);\n return jsonResult(data.tcpTopic);\n } catch (error) {\n ctx.logger.error('theculturepost topics_get failed', { error: String(error) });\n return errorResult(\n `Failed to get topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_list')),\n {\n title: 'List Topics',\n description:\n 'List topics in the bound workspace, optionally filtered by category. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n category: TopicCategoryEnum.optional().describe('Filter by thematic category'),\n ...paginationShape,\n },\n },\n async ({ category, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListTopics: Record<string, unknown>;\n }>(ops.LIST_TOPICS, {\n category,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListTopics);\n } catch (error) {\n ctx.logger.error('theculturepost topics_list failed', { error: String(error) });\n return errorResult(\n `Failed to list topics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_create')),\n {\n title: 'Create Topic',\n description:\n 'Create a new topic. `slug` must be unique within the workspace. Default category is CULTURE_AND_IDENTITY.',\n inputSchema: {\n name: z.string().min(1).describe('Topic display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n category: TopicCategoryEnum.optional().describe(\n 'Thematic category (default CULTURE_AND_IDENTITY)',\n ),\n description: z.string().optional().describe('Topic description'),\n tradition: z.string().optional().describe('Associated cultural/religious tradition'),\n isFeatured: z.boolean().optional().describe('Pin to the featured rail (default false)'),\n },\n },\n async ({ name, slug, category, description, tradition, isFeatured }) => {\n try {\n const input: Record<string, unknown> = { name, slug };\n if (category !== undefined) input.category = category;\n if (description !== undefined) input.description = description;\n if (tradition !== undefined) input.tradition = tradition;\n if (isFeatured !== undefined) input.isFeatured = isFeatured;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateTopic: Record<string, unknown>;\n }>(ops.CREATE_TOPIC, { input });\n return jsonResult(data.tcpCreateTopic);\n } catch (error) {\n ctx.logger.error('theculturepost topics_create failed', { error: String(error) });\n return errorResult(\n `Failed to create topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_update')),\n {\n title: 'Update Topic',\n description:\n 'Update a topic. At least one mutable field must be provided. (Slug is immutable.)',\n inputSchema: {\n id: z.string().describe('Topic ID'),\n name: z.string().optional().describe('Updated display name'),\n description: z.string().optional().describe('Updated description'),\n category: TopicCategoryEnum.optional().describe('Updated thematic category'),\n tradition: z.string().optional().describe('Updated associated tradition'),\n isFeatured: z.boolean().optional().describe('Updated featured flag'),\n },\n },\n async ({ id, name, description, category, tradition, isFeatured }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (tradition !== undefined) input.tradition = tradition;\n if (isFeatured !== undefined) input.isFeatured = isFeatured;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/description/category/tradition/isFeatured',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n tcpUpdateTopic: Record<string, unknown>;\n }>(ops.UPDATE_TOPIC, { id, input });\n return jsonResult(data.tcpUpdateTopic);\n } catch (error) {\n ctx.logger.error('theculturepost topics_update failed', { error: String(error) });\n return errorResult(\n `Failed to update topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_archive')),\n {\n title: 'Archive Topic',\n description: 'Archive (soft-delete) a topic. Returns true on success.',\n inputSchema: { id: z.string().describe('Topic ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ tcpArchiveTopic: boolean }>(\n ops.ARCHIVE_TOPIC,\n { id },\n );\n return jsonResult({ archived: data.tcpArchiveTopic, id });\n } catch (error) {\n ctx.logger.error('theculturepost topics_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost citation tools — the well-sourced backbone of every story.\n *\n * Surface (3): citations_{list,add,verify}. `citations_add` maps to\n * tcpAddCitation; `citations_verify` maps to tcpVerifyCitation (sets the\n * editorial verification status).\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 { SourceTypeEnum, VerificationStatusEnum } from './shared.js';\n\nexport function registerCitationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'citations_list')),\n {\n title: 'List Citations',\n description: 'List the citations backing a given story.',\n inputSchema: { storyId: z.string().describe('Story ID') },\n },\n async ({ storyId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListCitations: Array<Record<string, unknown>>;\n }>(ops.LIST_CITATIONS, { storyId });\n return jsonResult(data.tcpListCitations);\n } catch (error) {\n ctx.logger.error('theculturepost citations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list citations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'citations_add')),\n {\n title: 'Add Citation',\n description:\n 'Attach a citation to a story. New citations default to UNVERIFIED; use citations_verify to corroborate.',\n inputSchema: {\n storyId: z.string().min(1).describe('Story the citation supports'),\n title: z.string().min(1).describe('Title of the cited work'),\n sourceType: SourceTypeEnum.optional().describe('Type of source (default WEB)'),\n author: z.string().optional().describe('Author of the cited work'),\n publisher: z.string().optional().describe('Publisher / outlet'),\n publishedOn: z.string().optional().describe('Publication date (ISO 8601)'),\n url: z.string().optional().describe('Canonical URL of the source'),\n excerpt: z.string().optional().describe('Quoted excerpt supporting the claim'),\n provenance: z.string().optional().describe('Provenance / chain-of-custody note'),\n sourceFileId: z.string().optional().describe('wspace-files-svc File ID for a scan'),\n },\n },\n async ({\n storyId,\n title,\n sourceType,\n author,\n publisher,\n publishedOn,\n url,\n excerpt,\n provenance,\n sourceFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { storyId, title };\n if (sourceType !== undefined) input.sourceType = sourceType;\n if (author !== undefined) input.author = author;\n if (publisher !== undefined) input.publisher = publisher;\n if (publishedOn !== undefined) input.publishedOn = publishedOn;\n if (url !== undefined) input.url = url;\n if (excerpt !== undefined) input.excerpt = excerpt;\n if (provenance !== undefined) input.provenance = provenance;\n if (sourceFileId !== undefined) input.sourceFileId = sourceFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpAddCitation: Record<string, unknown>;\n }>(ops.ADD_CITATION, { input });\n return jsonResult(data.tcpAddCitation);\n } catch (error) {\n ctx.logger.error('theculturepost citations_add failed', { error: String(error) });\n return errorResult(\n `Failed to add citation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'citations_verify')),\n {\n title: 'Verify Citation',\n description:\n 'Set the verification status of a citation (CORROBORATED / DISPUTED / RETRACTED / UNVERIFIED).',\n inputSchema: {\n id: z.string().describe('Citation ID'),\n verification: VerificationStatusEnum.describe('New verification status'),\n },\n },\n async ({ id, verification }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpVerifyCitation: Record<string, unknown>;\n }>(ops.VERIFY_CITATION, { id, verification });\n return jsonResult(data.tcpVerifyCitation);\n } catch (error) {\n ctx.logger.error('theculturepost citations_verify failed', { error: String(error) });\n return errorResult(\n `Failed to verify citation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost archive-item tools — citable cultural artifacts.\n *\n * Surface (5): archive_{get,list,create,update,archive}. `archive_archive` maps\n * to the soft-delete mutation tcpArchiveArchiveItem (returns Boolean). Artifact\n * binaries are referenced via a wspace-files-svc File ID — never stored 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 {\n AccessLevelEnum,\n ArchiveItemKindEnum,\n paginationShape,\n buildPagination,\n} from './shared.js';\n\nexport function registerArchiveTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_get')),\n {\n title: 'Get Archive Item',\n description:\n 'Fetch a single archive item (cultural artifact) by ID, including its parent collection.',\n inputSchema: { id: z.string().describe('Archive item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpArchiveItem: Record<string, unknown> | null;\n }>(ops.GET_ARCHIVE_ITEM, { id });\n if (!data.tcpArchiveItem) return errorResult(`Archive item ${id} not found`);\n return jsonResult(data.tcpArchiveItem);\n } catch (error) {\n ctx.logger.error('theculturepost archive_get failed', { error: String(error) });\n return errorResult(\n `Failed to get archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_list')),\n {\n title: 'List Archive Items',\n description:\n 'List archive items, optionally filtered by access level, collection, and/or kind. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n accessLevel: AccessLevelEnum.optional().describe('Filter by access level'),\n collectionId: z.string().optional().describe('Filter by parent collection ID'),\n kind: ArchiveItemKindEnum.optional().describe('Filter by artifact kind'),\n ...paginationShape,\n },\n },\n async ({ accessLevel, collectionId, kind, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListArchiveItems: Record<string, unknown>;\n }>(ops.LIST_ARCHIVE_ITEMS, {\n accessLevel,\n collectionId,\n kind,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListArchiveItems);\n } catch (error) {\n ctx.logger.error('theculturepost archive_list failed', { error: String(error) });\n return errorResult(\n `Failed to list archive items: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_create')),\n {\n title: 'Create Archive Item',\n description:\n 'Add a cultural artifact to the archive. Default kind is DOCUMENT and default access level is PUBLIC. Reference the binary via `fileId` (wspace-files-svc).',\n inputSchema: {\n title: z.string().min(1).describe('Artifact title'),\n kind: ArchiveItemKindEnum.optional().describe('Artifact kind (default DOCUMENT)'),\n accessLevel: AccessLevelEnum.optional().describe('Access level (default PUBLIC)'),\n description: z.string().optional().describe('Artifact description'),\n collectionId: z.string().optional().describe('Parent collection ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the binary'),\n languages: z.array(z.string()).optional().describe('Languages present in the artifact'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n origin: z.string().optional().describe('Geographic / cultural origin'),\n provenance: z.string().optional().describe('Provenance / chain-of-custody note'),\n datedAt: z.string().optional().describe('Date the artifact is from (ISO 8601)'),\n },\n },\n async ({\n title,\n kind,\n accessLevel,\n description,\n collectionId,\n fileId,\n languages,\n tags,\n origin,\n provenance,\n datedAt,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (kind !== undefined) input.kind = kind;\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (fileId !== undefined) input.fileId = fileId;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (origin !== undefined) input.origin = origin;\n if (provenance !== undefined) input.provenance = provenance;\n if (datedAt !== undefined) input.datedAt = datedAt;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateArchiveItem: Record<string, unknown>;\n }>(ops.CREATE_ARCHIVE_ITEM, { input });\n return jsonResult(data.tcpCreateArchiveItem);\n } catch (error) {\n ctx.logger.error('theculturepost archive_create failed', { error: String(error) });\n return errorResult(\n `Failed to create archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_update')),\n {\n title: 'Update Archive Item',\n description: 'Update an archive item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Archive item ID'),\n title: z.string().optional().describe('Updated title'),\n kind: ArchiveItemKindEnum.optional().describe('Updated artifact kind'),\n accessLevel: AccessLevelEnum.optional().describe('Updated access level'),\n description: z.string().optional().describe('Updated description'),\n collectionId: z.string().optional().describe('Reassign to a collection'),\n fileId: z.string().optional().describe('Updated binary File ID'),\n languages: z.array(z.string()).optional().describe('Updated languages'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n origin: z.string().optional().describe('Updated origin'),\n provenance: z.string().optional().describe('Updated provenance'),\n datedAt: z.string().optional().describe('Updated artifact date (ISO 8601)'),\n },\n },\n async ({\n id,\n title,\n kind,\n accessLevel,\n description,\n collectionId,\n fileId,\n languages,\n tags,\n origin,\n provenance,\n datedAt,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (kind !== undefined) input.kind = kind;\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (fileId !== undefined) input.fileId = fileId;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (origin !== undefined) input.origin = origin;\n if (provenance !== undefined) input.provenance = provenance;\n if (datedAt !== undefined) input.datedAt = datedAt;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/kind/accessLevel/description/collectionId/fileId/languages/tags/origin/provenance/datedAt',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n tcpUpdateArchiveItem: Record<string, unknown>;\n }>(ops.UPDATE_ARCHIVE_ITEM, { id, input });\n return jsonResult(data.tcpUpdateArchiveItem);\n } catch (error) {\n ctx.logger.error('theculturepost archive_update failed', { error: String(error) });\n return errorResult(\n `Failed to update archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_archive')),\n {\n title: 'Archive Archive Item',\n description: 'Archive (soft-delete) an archive item. Returns true on success.',\n inputSchema: { id: z.string().describe('Archive item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ tcpArchiveArchiveItem: boolean }>(\n ops.ARCHIVE_ARCHIVE_ITEM,\n { id },\n );\n return jsonResult({ archived: data.tcpArchiveArchiveItem, id });\n } catch (error) {\n ctx.logger.error('theculturepost archive_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost collection tools — curated groupings of archive items + oral\n * histories.\n *\n * Surface (3): collections_{get,list,create}. `tcpListCollections` returns a\n * plain list (not a connection); `tcpCollection` returns the items + oral\n * histories it 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 { paginationShape, buildPagination } from './shared.js';\n\nexport function registerCollectionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_get')),\n {\n title: 'Get Collection',\n description:\n 'Fetch a single collection by ID, including its archive items and oral histories.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpCollection: Record<string, unknown> | null;\n }>(ops.GET_COLLECTION, { id });\n if (!data.tcpCollection) return errorResult(`Collection ${id} not found`);\n return jsonResult(data.tcpCollection);\n } catch (error) {\n ctx.logger.error('theculturepost 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: 'List the curated collections in the bound workspace.',\n inputSchema: { ...paginationShape },\n },\n async ({ cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListCollections: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLECTIONS, {\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListCollections);\n } catch (error) {\n ctx.logger.error('theculturepost 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 name: z.string().min(1).describe('Collection display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n description: z.string().optional().describe('Collection description'),\n tradition: z.string().optional().describe('Associated cultural/religious tradition'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover image'),\n },\n },\n async ({ name, slug, description, tradition, coverFileId }) => {\n try {\n const input: Record<string, unknown> = { name, slug };\n if (description !== undefined) input.description = description;\n if (tradition !== undefined) input.tradition = tradition;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.tcpCreateCollection);\n } catch (error) {\n ctx.logger.error('theculturepost 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","/**\n * TheCulturePost oral-history tools — recorded first-person cultural testimony.\n *\n * Surface (2): oralhistories_{list,record}. `oralhistories_record` maps to\n * tcpRecordOralHistory. Recordings are referenced via a wspace-files-svc File\n * ID (audio/video) — never stored 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 { AccessLevelEnum } from './shared.js';\n\nexport function registerOralHistoryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'oralhistories_list')),\n {\n title: 'List Oral Histories',\n description: 'List recorded oral histories, optionally scoped to a single collection.',\n inputSchema: {\n collectionId: z.string().optional().describe('Filter by parent collection ID'),\n },\n },\n async ({ collectionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListOralHistories: Array<Record<string, unknown>>;\n }>(ops.LIST_ORAL_HISTORIES, { collectionId });\n return jsonResult(data.tcpListOralHistories);\n } catch (error) {\n ctx.logger.error('theculturepost oralhistories_list failed', { error: String(error) });\n return errorResult(\n `Failed to list oral histories: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'oralhistories_record')),\n {\n title: 'Record Oral History',\n description:\n 'Register a recorded oral history. Default access level is COMMUNITY. Reference the recording via `recordingFileId` (wspace-files-svc, audio/video).',\n inputSchema: {\n title: z.string().min(1).describe('Oral-history title'),\n accessLevel: AccessLevelEnum.optional().describe('Access level (default COMMUNITY)'),\n collectionId: z.string().optional().describe('Parent collection ID'),\n narratorName: z.string().optional().describe('Name of the narrator/storyteller'),\n language: z.string().optional().describe('Language of the recording'),\n summary: z.string().optional().describe('Short summary'),\n transcript: z.string().optional().describe('Full transcript text'),\n durationSecs: z.number().int().optional().describe('Recording duration in seconds'),\n recordedAt: z.string().optional().describe('Date recorded (ISO 8601)'),\n recordingFileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID for the recording'),\n },\n },\n async ({\n title,\n accessLevel,\n collectionId,\n narratorName,\n language,\n summary,\n transcript,\n durationSecs,\n recordedAt,\n recordingFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (narratorName !== undefined) input.narratorName = narratorName;\n if (language !== undefined) input.language = language;\n if (summary !== undefined) input.summary = summary;\n if (transcript !== undefined) input.transcript = transcript;\n if (durationSecs !== undefined) input.durationSecs = durationSecs;\n if (recordedAt !== undefined) input.recordedAt = recordedAt;\n if (recordingFileId !== undefined) input.recordingFileId = recordingFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpRecordOralHistory: Record<string, unknown>;\n }>(ops.RECORD_ORAL_HISTORY, { input });\n return jsonResult(data.tcpRecordOralHistory);\n } catch (error) {\n ctx.logger.error('theculturepost oralhistories_record failed', { error: String(error) });\n return errorResult(\n `Failed to record oral history: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost discussion tools — respectful-by-design community threads.\n *\n * Surface (4): discussions_{get,list,open,lock}. `discussions_open` maps to\n * tcpOpenDiscussion; `discussions_lock` maps to tcpLockDiscussion (freeze a\n * thread). Discussions may be tied to a story and flagged interfaith.\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 { ModerationStatusEnum, paginationShape, buildPagination } from './shared.js';\n\nexport function registerDiscussionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_get')),\n {\n title: 'Get Discussion',\n description: 'Fetch a single discussion by ID, including its replies.',\n inputSchema: { id: z.string().describe('Discussion ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpDiscussion: Record<string, unknown> | null;\n }>(ops.GET_DISCUSSION, { id });\n if (!data.tcpDiscussion) return errorResult(`Discussion ${id} not found`);\n return jsonResult(data.tcpDiscussion);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get discussion: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_list')),\n {\n title: 'List Discussions',\n description:\n 'List discussions, optionally filtered by moderation status and/or related story. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n status: ModerationStatusEnum.optional().describe('Filter by moderation status'),\n storyId: z.string().optional().describe('Filter by related story ID'),\n ...paginationShape,\n },\n },\n async ({ status, storyId, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListDiscussions: Record<string, unknown>;\n }>(ops.LIST_DISCUSSIONS, {\n status,\n storyId,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListDiscussions);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list discussions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_open')),\n {\n title: 'Open Discussion',\n description:\n 'Open a new community discussion, optionally tied to a story and flagged interfaith.',\n inputSchema: {\n title: z.string().min(1).describe('Discussion title'),\n prompt: z.string().optional().describe('Opening prompt / framing question'),\n storyId: z.string().optional().describe('Related story ID'),\n isInterfaith: z\n .boolean()\n .optional()\n .describe('Flag as an interfaith dialogue (default false)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ title, prompt, storyId, isInterfaith, tags }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (prompt !== undefined) input.prompt = prompt;\n if (storyId !== undefined) input.storyId = storyId;\n if (isInterfaith !== undefined) input.isInterfaith = isInterfaith;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n tcpOpenDiscussion: Record<string, unknown>;\n }>(ops.OPEN_DISCUSSION, { input });\n return jsonResult(data.tcpOpenDiscussion);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_open failed', { error: String(error) });\n return errorResult(\n `Failed to open discussion: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_lock')),\n {\n title: 'Lock Discussion',\n description: 'Lock a discussion thread to prevent further replies.',\n inputSchema: { id: z.string().describe('Discussion ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpLockDiscussion: Record<string, unknown>;\n }>(ops.LOCK_DISCUSSION, { id });\n return jsonResult(data.tcpLockDiscussion);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_lock failed', { error: String(error) });\n return errorResult(\n `Failed to lock discussion: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost reply tools — moderated contributions to a discussion.\n *\n * Surface (3): replies_{list,post,moderate}. `replies_post` maps to\n * tcpPostReply; `replies_moderate` maps to tcpModerateReply (approve / flag /\n * remove — respectful-by-design controls).\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 { ModerationStatusEnum } from './shared.js';\n\nexport function registerReplyTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'replies_list')),\n {\n title: 'List Replies',\n description: 'List the replies on a discussion, optionally filtered by moderation status.',\n inputSchema: {\n discussionId: z.string().describe('Discussion ID'),\n status: ModerationStatusEnum.optional().describe('Filter by moderation status'),\n },\n },\n async ({ discussionId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListReplies: Array<Record<string, unknown>>;\n }>(ops.LIST_REPLIES, { discussionId, status });\n return jsonResult(data.tcpListReplies);\n } catch (error) {\n ctx.logger.error('theculturepost replies_list failed', { error: String(error) });\n return errorResult(\n `Failed to list replies: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'replies_post')),\n {\n title: 'Post Reply',\n description:\n 'Post a reply to a discussion. Optionally label the contributor’s `perspective` (e.g. a tradition or viewpoint).',\n inputSchema: {\n discussionId: z.string().min(1).describe('Discussion being replied to'),\n body: z.string().min(1).describe('Reply body text'),\n perspective: z.string().optional().describe('Optional viewpoint/tradition label'),\n },\n },\n async ({ discussionId, body, perspective }) => {\n try {\n const input: Record<string, unknown> = { discussionId, body };\n if (perspective !== undefined) input.perspective = perspective;\n\n const data = await ctx.gql.workspace.request<{\n tcpPostReply: Record<string, unknown>;\n }>(ops.POST_REPLY, { input });\n return jsonResult(data.tcpPostReply);\n } catch (error) {\n ctx.logger.error('theculturepost replies_post failed', { error: String(error) });\n return errorResult(\n `Failed to post reply: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'replies_moderate')),\n {\n title: 'Moderate Reply',\n description: 'Moderate a reply — set its status to APPROVED, FLAGGED, PENDING, or REMOVED.',\n inputSchema: {\n id: z.string().describe('Reply ID'),\n status: ModerationStatusEnum.describe('New moderation status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpModerateReply: Record<string, unknown>;\n }>(ops.MODERATE_REPLY, { id, status });\n return jsonResult(data.tcpModerateReply);\n } catch (error) {\n ctx.logger.error('theculturepost replies_moderate failed', { error: String(error) });\n return errorResult(\n `Failed to moderate reply: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost system tools.\n *\n * Surface (1): health. Maps to the @public tcpHealth query (no auth required) —\n * a liveness/identity probe for the TheCulturePost 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 registerSystemTools(\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: 'TheCulturePost Health Check',\n description:\n 'Public health probe for the TheCulturePost subgraph (tcpHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ tcpHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.tcpHealth });\n } catch (error) {\n ctx.logger.error('theculturepost health failed', { error: String(error) });\n return errorResult(\n `TheCulturePost 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_STORIES, LIST_TOPICS, LIST_COLLECTIONS } from './operations.js';\n\n/**\n * Read-only TheCulturePost 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 registerTheculturepostResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const storiesUri = track(mcpResourceUri(ctx.productName, 'stories'));\n const topicsUri = track(mcpResourceUri(ctx.productName, 'topics'));\n const collectionsUri = track(mcpResourceUri(ctx.productName, 'collections'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'theculturepost-schema',\n schemaUri,\n {\n title: 'TheCulturePost Domain Schema',\n description:\n 'Overview of the TheCulturePost 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 = `# TheCulturePost Domain (Overview)\n\nCulture / religion / values / history platform — well-sourced stories, topic\ntimelines, citable archives + oral histories, respectful community discussion.\n\n## Entities\n- TcpStory — an editorial story (has citations, belongs to a topic)\n- TcpTopic — a thematic hub grouping stories\n- TcpCitation — a cited source backing a story claim\n- TcpArchiveItem — a cultural artifact (binary referenced via wspace-files-svc File)\n- TcpCollection — a curated grouping of archive items + oral histories\n- TcpOralHistory — recorded first-person testimony (recording via File)\n- TcpDiscussion — a respectful community thread (optionally tied to a story)\n- TcpReply — a moderated contribution to a discussion\n\n## Enums\n- TcpStoryStatus: IDEA, DRAFT, IN_REVIEW, PUBLISHED, ARCHIVED\n- TcpStoryFormat: ARTICLE, ESSAY, EXPLAINER, ORAL_HISTORY, PHOTO_STORY, TIMELINE\n- TcpTopicCategory: CULTURE_AND_IDENTITY, FESTIVALS_AND_RITUALS, HERITAGE_AND_ARCHIVES, HISTORY, MIGRATION_AND_DIASPORA, ORAL_HISTORIES, PHILOSOPHY_AND_THOUGHT, RELIGION_AND_FAITH, VALUES_AND_ETHICS\n- TcpSourceType: ACADEMIC, ARCHIVAL_RECORD, ARTIFACT, BOOK, INTERVIEW, PERIODICAL, PRIMARY_DOCUMENT, WEB\n- TcpVerificationStatus: UNVERIFIED, CORROBORATED, DISPUTED, RETRACTED\n- TcpArchiveItemKind: AUDIO, DOCUMENT, MANUSCRIPT, MAP, OBJECT, PHOTOGRAPH, VIDEO\n- TcpAccessLevel: PUBLIC, COMMUNITY, RESTRICTED, EMBARGOED\n- TcpModerationStatus: PENDING, APPROVED, FLAGGED, REMOVED\n\n## Tool groups\nstories, topics, citations, archive, collections, oralhistories, discussions, replies, 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>://stories — recent stories\n server.registerResource(\n 'theculturepost-stories',\n storiesUri,\n {\n title: 'TheCulturePost Stories',\n description: 'The first page of stories in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${storiesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tcpListStories: unknown }>(LIST_STORIES, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: storiesUri,\n text: JSON.stringify(data.tcpListStories, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: storiesUri,\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>://topics — topic directory\n server.registerResource(\n 'theculturepost-topics',\n topicsUri,\n {\n title: 'TheCulturePost Topic Directory',\n description: 'The first page of topics in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${topicsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tcpListTopics: unknown }>(LIST_TOPICS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: topicsUri,\n text: JSON.stringify(data.tcpListTopics, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: topicsUri,\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>://collections — curated collections directory\n server.registerResource(\n 'theculturepost-collections',\n collectionsUri,\n {\n title: 'TheCulturePost Collection Directory',\n description: 'The curated collections in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${collectionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tcpListCollections: unknown }>(\n LIST_COLLECTIONS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: collectionsUri,\n text: JSON.stringify(data.tcpListCollections, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: collectionsUri,\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 * TheCulturePost MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerTheculturepostPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const publishingName = track(mcpPromptName(p, 'story-publishing'));\n const archiveName = track(mcpPromptName(p, 'archive-curation'));\n\n // <product>-story-publishing — editorial workflow end to end\n server.registerPrompt(\n publishingName,\n {\n title: 'Story Publishing',\n description:\n 'Guide for taking a TheCulturePost story from idea to publication: pick/create a topic, draft the story, attach + verify citations, then transition through the editorial lifecycle.',\n argsSchema: {\n title: z.string().optional().describe('Story headline'),\n topicId: z.string().optional().describe('Owning topic ID, if known'),\n },\n },\n ({ title, topicId }) => {\n ctx.logger.debug(`Prompt ${publishingName} called`, { title, topicId });\n const titleNote = title\n ? `Use the headline \"${title}\".`\n : 'Ask the user for the story headline.';\n const topicNote = topicId\n ? `File the story under topic ${topicId}.`\n : `First find or create a topic with ${p}_topics_list / ${p}_topics_create.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me publish a well-sourced TheCulturePost story. ${titleNote}\n\n1. **Topic**: ${topicNote}\n2. **Draft**: Use ${p}_stories_create. Provide a unique slug, a summary, a format (ARTICLE/ESSAY/EXPLAINER/PHOTO_STORY/TIMELINE/ORAL_HISTORY), and the body. It starts in DRAFT.\n3. **Cite**: For every factual claim, attach a source with ${p}_citations_add (set a sourceType and url/excerpt). Sourcing is non-negotiable here.\n4. **Verify**: Use ${p}_citations_verify to mark each citation CORROBORATED (or DISPUTED/RETRACTED). Review with ${p}_citations_list.\n5. **Review → Publish**: Use ${p}_stories_transition to move DRAFT → IN_REVIEW, then → PUBLISHED once citations check out.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-archive-curation — build a collection + invite discussion\n server.registerPrompt(\n archiveName,\n {\n title: 'Archive Curation',\n description:\n 'Workflow for curating a cultural archive: create a collection, add archive items and oral histories, then open a respectful community discussion.',\n argsSchema: {\n collectionId: z.string().optional().describe('Collection ID to curate, if it exists'),\n },\n },\n ({ collectionId }) => {\n ctx.logger.debug(`Prompt ${archiveName} called`, { collectionId });\n const collectionNote = collectionId\n ? `Curate collection \"${collectionId}\".`\n : `First create a collection with ${p}_collections_create (unique slug).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me curate a TheCulturePost archive collection. ${collectionNote}\n\n1. **Collection**: Use ${p}_collections_create (or ${p}_collections_get to inspect an existing one).\n2. **Archive Items**: Use ${p}_archive_create for each artifact — set a kind (PHOTOGRAPH/MANUSCRIPT/MAP/OBJECT/AUDIO/VIDEO/DOCUMENT), an accessLevel, provenance/origin, and reference the binary via fileId. List with ${p}_archive_list filtered by collectionId.\n3. **Oral Histories**: Use ${p}_oralhistories_record for recorded testimony (narratorName, language, transcript, recordingFileId). Review with ${p}_oralhistories_list.\n4. **Discussion**: Use ${p}_discussions_open to invite respectful community dialogue around the collection or a related story; moderate replies with ${p}_replies_moderate.\n\nSummarize what was added after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * TheCulturePost module — domain module for the future-products ecosystem program.\n *\n * Covers all 8 @key entities of wspace-theculturepost-svc grouped into\n * per-entity sub-APIs: stories, topics, citations, archive (items),\n * collections, oralhistories, discussions, replies — plus a public health\n * probe. Mirrors the rich kadaikodi module's structure (tools/<entity>.ts +\n * resources.ts + prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/theculturepost/wspace-theculturepost-svc/\n * (Hive service name `theculturepost`). All operations run against the WORKSPACE\n * gateway; the @public tcpHealth 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 { registerStoryTools } from './tools/stories.js';\nimport { registerTopicTools } from './tools/topics.js';\nimport { registerCitationTools } from './tools/citations.js';\nimport { registerArchiveTools } from './tools/archive.js';\nimport { registerCollectionTools } from './tools/collections.js';\nimport { registerOralHistoryTools } from './tools/oralhistories.js';\nimport { registerDiscussionTools } from './tools/discussions.js';\nimport { registerReplyTools } from './tools/replies.js';\nimport { registerSystemTools } from './tools/system.js';\nimport { registerTheculturepostResources } from './resources.js';\nimport { registerTheculturepostPrompts } from './prompts.js';\n\nconst theculturepostModule: McpModule = {\n id: 'theculturepost',\n version: '0.0.1',\n displayName: 'TheCulturePost',\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 registerStoryTools(server, ctx, trackTool);\n registerTopicTools(server, ctx, trackTool);\n registerCitationTools(server, ctx, trackTool);\n registerArchiveTools(server, ctx, trackTool);\n registerCollectionTools(server, ctx, trackTool);\n registerOralHistoryTools(server, ctx, trackTool);\n registerDiscussionTools(server, ctx, trackTool);\n registerReplyTools(server, ctx, trackTool);\n registerSystemTools(server, ctx, trackTool);\n\n registerTheculturepostResources(server, ctx, trackResource);\n registerTheculturepostPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default theculturepostModule;\n"]}
1
+ {"version":3,"sources":["../../../src/modules/theculturepost/operations.ts","../../../src/modules/theculturepost/tools/shared.ts","../../../src/modules/theculturepost/tools/stories.ts","../../../src/modules/theculturepost/tools/topics.ts","../../../src/modules/theculturepost/tools/citations.ts","../../../src/modules/theculturepost/tools/archive.ts","../../../src/modules/theculturepost/tools/collections.ts","../../../src/modules/theculturepost/tools/oralhistories.ts","../../../src/modules/theculturepost/tools/discussions.ts","../../../src/modules/theculturepost/tools/replies.ts","../../../src/modules/theculturepost/tools/system.ts","../../../src/modules/theculturepost/resources.ts","../../../src/modules/theculturepost/prompts.ts","../../../src/modules/theculturepost/index.ts"],"names":["z"],"mappings":";;;;AA0BO,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA,CAAA;AAMrB,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA,CAAA;AAKrB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA,CAAA;AAMxB,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM5B,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM1B,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM5B,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA,CAAA;AAK1B,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA,CAAA;AAKrB,IAAM,SAAA,GAAY;AAAA;AAAA,CAAA;AAQlB,IAAM,SAAA,GAAY;AAAA;AAAA;AAAA,MAAA,EAGjB,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAOb,IAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOZ,YAAY,CAAA;AAAA,MAAA,EACpB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,YAAA,GAAe;AAAA;AAAA,oCAAA,EAEU,YAAY,CAAA;AAAA;AAAA,CAAA;AAI3C,IAAM,YAAA,GAAe;AAAA;AAAA,6CAAA,EAEmB,YAAY,CAAA;AAAA;AAAA,CAAA;AAIpD,IAAM,gBAAA,GAAmB;AAAA;AAAA,mDAAA,EAEqB,YAAY,CAAA;AAAA;AAAA,CAAA;AAQ1D,IAAM,SAAA,GAAY;AAAA;AAAA;AAAA,MAAA,EAGjB,YAAY;AAAA;AAAA;AAAA;AAAA,CAAA;AAMb,IAAM,WAAA,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAMX,YAAY,CAAA;AAAA,MAAA,EACpB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,YAAA,GAAe;AAAA;AAAA,oCAAA,EAEU,YAAY,CAAA;AAAA;AAAA,CAAA;AAI3C,IAAM,YAAA,GAAe;AAAA;AAAA,6CAAA,EAEmB,YAAY,CAAA;AAAA;AAAA,CAAA;AAIpD,IAAM,aAAA,GAAgB;AAAA;AAAA;AAAA;AAAA,CAAA;AAUtB,IAAM,cAAA,GAAiB;AAAA;AAAA,0CAAA,EAEc,eAAe,CAAA;AAAA;AAAA,CAAA;AAIpD,IAAM,YAAA,GAAe;AAAA;AAAA,oCAAA,EAEU,eAAe,CAAA;AAAA;AAAA,CAAA;AAI9C,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,8DAAA,EAKiC,eAAe,CAAA;AAAA;AAAA,CAAA;AAQxE,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA,MAAA,EAGxB,mBAAmB;AAAA;AAAA;AAAA;AAAA,CAAA;AAMpB,IAAM,kBAAA,GAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAalB,mBAAmB,CAAA;AAAA,MAAA,EAC3B,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,mBAAA,GAAsB;AAAA;AAAA,0CAAA,EAES,mBAAmB,CAAA;AAAA;AAAA,CAAA;AAIxD,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,mDAAA,EAKkB,mBAAmB,CAAA;AAAA;AAAA,CAAA;AAIjE,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA,CAAA;AAU7B,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA,MAAA,EAGtB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAOlB,IAAM,gBAAA,GAAmB;AAAA;AAAA,kDAAA,EAEoB,iBAAiB,CAAA;AAAA;AAAA,CAAA;AAI9D,IAAM,iBAAA,GAAoB;AAAA;AAAA,yCAAA,EAEU,iBAAiB,CAAA;AAAA;AAAA,CAAA;AAQrD,IAAM,mBAAA,GAAsB;AAAA;AAAA,wDAAA,EAEuB,mBAAmB,CAAA;AAAA;AAAA,CAAA;AAItE,IAAM,mBAAA,GAAsB;AAAA;AAAA,0CAAA,EAES,mBAAmB,CAAA;AAAA;AAAA,CAAA;AAQxD,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA,MAAA,EAGtB,iBAAiB;AAAA;AAAA;AAAA;AAAA,CAAA;AAMlB,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAA,EAOhB,iBAAiB,CAAA;AAAA,MAAA,EACzB,SAAS;AAAA;AAAA;AAAA,CAAA;AAKV,IAAM,eAAA,GAAkB;AAAA;AAAA,uCAAA,EAEU,iBAAiB,CAAA;AAAA;AAAA,CAAA;AAInD,IAAM,eAAA,GAAkB;AAAA;AAAA,iCAAA,EAEI,iBAAiB,CAAA;AAAA;AAAA,CAAA;AAQ7C,IAAM,YAAA,GAAe;AAAA;AAAA,mEAAA,EAEyC,YAAY,CAAA;AAAA;AAAA,CAAA;AAI1E,IAAM,UAAA,GAAa;AAAA;AAAA,kCAAA,EAEU,YAAY,CAAA;AAAA;AAAA,CAAA;AAIzC,IAAM,cAAA,GAAiB;AAAA;AAAA,iDAAA,EAEqB,YAAY,CAAA;AAAA;AAAA,CAAA;AAQxD,IAAM,MAAA,GAAS;AAAA;AAAA;AAAA;AAAA,CAAA;AChVf,IAAM,eAAA,GAAkB,CAAA,CAC5B,IAAA,CAAK,CAAC,WAAA,EAAa,WAAA,EAAa,QAAA,EAAU,YAAY,CAAC,CAAA,CACvD,QAAA,CAAS,4DAA4D,CAAA;AAEjE,IAAM,mBAAA,GAAsB,CAAA,CAChC,IAAA,CAAK,CAAC,SAAS,UAAA,EAAY,YAAA,EAAc,KAAA,EAAO,QAAA,EAAU,YAAA,EAAc,OAAO,CAAC,CAAA,CAChF,SAAS,0CAA0C,CAAA;AAE/C,IAAM,oBAAA,GAAuB,CAAA,CACjC,IAAA,CAAK,CAAC,UAAA,EAAY,SAAA,EAAW,SAAA,EAAW,SAAS,CAAC,CAAA,CAClD,QAAA,CAAS,4CAA4C,CAAA;AAEjD,IAAM,cAAA,GAAiB,EAC3B,IAAA,CAAK;AAAA,EACJ,UAAA;AAAA,EACA,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,4CAA4C,CAAA;AAEjD,IAAM,eAAA,GAAkB,CAAA,CAC5B,IAAA,CAAK,CAAC,SAAA,EAAW,OAAA,EAAS,WAAA,EAAa,cAAA,EAAgB,aAAA,EAAe,UAAU,CAAC,CAAA,CACjF,SAAS,6BAA6B,CAAA;AAElC,IAAM,eAAA,GAAkB,CAAA,CAC5B,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,EAAS,MAAA,EAAQ,WAAA,EAAa,WAAW,CAAC,CAAA,CAC5D,QAAA,CAAS,uCAAuC,CAAA;AAE5C,IAAM,iBAAA,GAAoB,EAC9B,IAAA,CAAK;AAAA,EACJ,sBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,SAAA;AAAA,EACA,wBAAA;AAAA,EACA,gBAAA;AAAA,EACA,wBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAC,CAAA,CACA,SAAS,8BAA8B,CAAA;AAEnC,IAAM,sBAAA,GAAyB,CAAA,CACnC,IAAA,CAAK,CAAC,cAAA,EAAgB,UAAA,EAAY,WAAA,EAAa,YAAY,CAAC,CAAA,CAC5D,QAAA,CAAS,mCAAmC,CAAA;AAGxC,IAAM,eAAA,GAAkB;AAAA,EAC7B,QAAQ,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,EAC5E,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,EACpE,MAAA,EAAQ,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B;AAC9E,CAAA;AAMO,SAAS,gBAAgB,IAAA,EAIQ;AACtC,EAAA,MAAM,aAAsC,EAAC;AAC7C,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,MAAA,EAAW,UAAA,CAAW,SAAS,IAAA,CAAK,MAAA;AACxD,EAAA,IAAI,IAAA,CAAK,KAAA,KAAU,MAAA,EAAW,UAAA,CAAW,QAAQ,IAAA,CAAK,KAAA;AACtD,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,MAAA,EAAW,UAAA,CAAW,SAAS,IAAA,CAAK,MAAA;AACxD,EAAA,OAAO,OAAO,IAAA,CAAK,UAAU,CAAA,CAAE,MAAA,GAAS,IAAI,UAAA,GAAa,MAAA;AAC3D;;;ACrEO,SAAS,kBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,aAAa,CAAC,CAAA;AAAA,IACjD;AAAA,MACE,KAAA,EAAO,WAAA;AAAA,MACP,WAAA,EAAa,+EAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,UAAU,CAAA;AAAE,KACrD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,SAAA,EAAW,EAAE,EAAA,EAAI,CAAA;AACxB,QAAA,IAAI,CAAC,IAAA,CAAK,QAAA,SAAiB,WAAA,CAAY,CAAA,MAAA,EAAS,EAAE,CAAA,UAAA,CAAY,CAAA;AAC9D,QAAA,OAAO,UAAA,CAAW,KAAK,QAAQ,CAAA;AAAA,MACjC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,wBAAwB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAChF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,wIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,MAAA,EAAQ,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACxE,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAC5D,GAAG;AAAA;AACL,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,SAAS,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AACpD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,YAAA,EAAc;AAAA,UACnB,MAAA;AAAA,UACA,OAAA;AAAA,UACA,YAAY,eAAA,CAAgB,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAQ;AAAA,SACtD,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,qIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,gBAAgB,CAAA;AAAA,QAClD,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,uCAAuC,CAAA;AAAA,QACxE,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iBAAiB,CAAA;AAAA,QACzD,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QAChE,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,QACtE,MAAA,EAAQ,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,QAChF,SAAA,EAAWA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oCAAoC,CAAA;AAAA,QACvF,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gBAAgB,CAAA;AAAA,QAC9D,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mCAAmC,CAAA;AAAA,QACrF,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,QACzD,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,QACzD,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6CAA6C;AAAA;AAC3F,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAO,IAAA,EAAK;AACrD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AAEnD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA;AAC9B,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,iIAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,UAAU,CAAA;AAAA,QAClC,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,QACxD,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QAClE,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,cAAc,CAAA;AAAA,QACnD,MAAA,EAAQ,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACtE,SAAA,EAAWA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,QAC3E,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc,CAAA;AAAA,QAC5D,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,QACxE,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QAC7D,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QACjE,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QACjE,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B;AAAA;AAC1E,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AAEnD,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,WAAA;AAAA,YACL;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,YAAA,EAAc,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AAClC,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,oBAAoB,CAAC,CAAA;AAAA,IACxD;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,+IAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,UAAU,CAAA;AAAA,QAClC,MAAA,EAAQ,eAAA,CAAgB,QAAA,CAAS,yBAAyB;AAAA;AAC5D,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,gBAAA,EAAkB,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAA;AACvC,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,0CAAA,EAA4C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACrF,QAAA,OAAO,WAAA;AAAA,UACL,+BAA+B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACtNO,SAAS,kBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,YAAY,CAAC,CAAA;AAAA,IAChD;AAAA,MACE,KAAA,EAAO,WAAA;AAAA,MACP,WAAA,EAAa,oDAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,UAAU,CAAA;AAAE,KACrD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,SAAA,EAAW,EAAE,EAAA,EAAI,CAAA;AACxB,QAAA,IAAI,CAAC,IAAA,CAAK,QAAA,SAAiB,WAAA,CAAY,CAAA,MAAA,EAAS,EAAE,CAAA,UAAA,CAAY,CAAA;AAC9D,QAAA,OAAO,UAAA,CAAW,KAAK,QAAQ,CAAA;AAAA,MACjC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,wBAAwB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAChF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,aAAa,CAAC,CAAA;AAAA,IACjD;AAAA,MACE,KAAA,EAAO,aAAA;AAAA,MACP,WAAA,EACE,kHAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,QAAA,EAAU,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QAC7E,GAAG;AAAA;AACL,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AAC7C,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,WAAA,EAAa;AAAA,UAClB,QAAA;AAAA,UACA,YAAY,eAAA,CAAgB,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAQ;AAAA,SACtD,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,2GAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAAA,QACrD,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,uCAAuC,CAAA;AAAA,QACxE,QAAA,EAAU,iBAAA,CAAkB,QAAA,EAAS,CAAE,QAAA;AAAA,UACrC;AAAA,SACF;AAAA,QACA,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,QAC/D,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,QACnF,YAAYA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,0CAA0C;AAAA;AACxF,KACF;AAAA,IACA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,UAAU,WAAA,EAAa,SAAA,EAAW,YAAW,KAAM;AACtE,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAM,IAAA,EAAK;AACpD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AAEjD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA;AAC9B,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,mFAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,UAAU,CAAA;AAAA,QAClC,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAC3D,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,QAAA,EAAU,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,QAC3E,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACxE,YAAYA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,uBAAuB;AAAA;AACrE,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,IAAA,EAAM,aAAa,QAAA,EAAU,SAAA,EAAW,YAAW,KAAM;AACpE,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AAEjD,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,WAAA;AAAA,YACL;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,YAAA,EAAc,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AAClC,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,eAAA;AAAA,MACP,WAAA,EAAa,yDAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,UAAU,CAAA,EAAE;AAAA;AAAA;AAAA,MAGnD,WAAA,EAAa,EAAE,eAAA,EAAiB,IAAA;AAAK,KACvC;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,aAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,OAAO,WAAW,EAAE,QAAA,EAAU,IAAA,CAAK,eAAA,EAAiB,IAAI,CAAA;AAAA,MAC1D,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,4BAA4B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;AClKO,SAAS,qBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EAAa,2CAAA;AAAA,MACb,WAAA,EAAa,EAAE,OAAA,EAASA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,UAAU,CAAA;AAAE,KAC1D;AAAA,IACA,OAAO,EAAE,OAAA,EAAQ,KAAM;AACrB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,cAAA,EAAgB,EAAE,OAAA,EAAS,CAAA;AAClC,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IACnD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EACE,yGAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,OAAA,EAASA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACjE,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAAA,QAC3D,UAAA,EAAY,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QAC7E,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACjE,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAC9D,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACzE,KAAKA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACjE,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC,CAAA;AAAA,QAC7E,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,QAC/E,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qCAAqC;AAAA;AACpF,KACF;AAAA,IACA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,GAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,OAAA,EAAS,KAAA,EAAM;AACxD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,GAAA,KAAQ,KAAA,CAAA,EAAW,KAAA,CAAM,GAAA,GAAM,GAAA;AACnC,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AAErD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,YAAA,EAAc,EAAE,KAAA,EAAO,CAAA;AAC9B,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,qCAAA,EAAuC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAChF,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EACE,+FAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,aAAa,CAAA;AAAA,QACrC,YAAA,EAAc,sBAAA,CAAuB,QAAA,CAAS,yBAAyB;AAAA;AACzE,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,YAAA,EAAa,KAAM;AAC9B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,eAAA,EAAiB,EAAE,EAAA,EAAI,YAAA,EAAc,CAAA;AAC5C,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACtGO,SAAS,oBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,aAAa,CAAC,CAAA;AAAA,IACjD;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,yFAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,iBAAiB,CAAA;AAAE,KAC5D;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,gBAAA,EAAkB,EAAE,EAAA,EAAI,CAAA;AAC/B,QAAA,IAAI,CAAC,IAAA,CAAK,cAAA,SAAuB,WAAA,CAAY,CAAA,aAAA,EAAgB,EAAE,CAAA,UAAA,CAAY,CAAA;AAC3E,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,+BAA+B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,oBAAA;AAAA,MACP,WAAA,EACE,+HAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,WAAA,EAAa,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QACzE,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC,CAAA;AAAA,QAC7E,IAAA,EAAM,mBAAA,CAAoB,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,QACvE,GAAG;AAAA;AACL,KACF;AAAA,IACA,OAAO,EAAE,WAAA,EAAa,YAAA,EAAc,MAAM,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AACpE,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,kBAAA,EAAoB;AAAA,UACzB,WAAA;AAAA,UACA,YAAA;AAAA,UACA,IAAA;AAAA,UACA,YAAY,eAAA,CAAgB,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAQ;AAAA,SACtD,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,mBAAmB,CAAA;AAAA,MAC5C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,iCAAiC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACzF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EACE,4JAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,gBAAgB,CAAA;AAAA,QAClD,IAAA,EAAM,mBAAA,CAAoB,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QAChF,WAAA,EAAa,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA,QAChF,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QAClE,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QACnE,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,QAChF,SAAA,EAAWA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mCAAmC,CAAA;AAAA,QACtF,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gBAAgB,CAAA;AAAA,QAC9D,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,QACrE,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC,CAAA;AAAA,QAC/E,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC;AAAA;AAChF,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAE3C,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,mBAAA,EAAqB,EAAE,KAAA,EAAO,CAAA;AACrC,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,kCAAkC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC1F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,gBAAgB,CAAC,CAAA;AAAA,IACpD;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EAAa,sEAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,iBAAiB,CAAA;AAAA,QACzC,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA,QACrD,IAAA,EAAM,mBAAA,CAAoB,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,QACrE,WAAA,EAAa,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QACvE,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACvE,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QAC/D,SAAA,EAAWA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mBAAmB,CAAA;AAAA,QACtE,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc,CAAA;AAAA,QAC5D,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,QACvD,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAC/D,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC;AAAA;AAC5E,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,KAAA,KAAU,KAAA,CAAA,EAAW,KAAA,CAAM,KAAA,GAAQ,KAAA;AACvC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAE3C,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,WAAA;AAAA,YACL;AAAA,WACF;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,mBAAA,EAAqB,EAAE,EAAA,EAAI,KAAA,EAAO,CAAA;AACzC,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,sCAAA,EAAwC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACjF,QAAA,OAAO,WAAA;AAAA,UACL,kCAAkC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC1F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EAAa,iEAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,iBAAiB,CAAA,EAAE;AAAA;AAAA;AAAA,MAG1D,WAAA,EAAa,EAAE,eAAA,EAAiB,IAAA;AAAK,KACvC;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,oBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,OAAO,WAAW,EAAE,QAAA,EAAU,IAAA,CAAK,qBAAA,EAAuB,IAAI,CAAA;AAAA,MAChE,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,mCAAmC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC3F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACzNO,SAAS,uBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EACE,kFAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,eAAe,CAAA;AAAE,KAC1D;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,cAAA,EAAgB,EAAE,EAAA,EAAI,CAAA;AAC7B,QAAA,IAAI,CAAC,IAAA,CAAK,aAAA,SAAsB,WAAA,CAAY,CAAA,WAAA,EAAc,EAAE,CAAA,UAAA,CAAY,CAAA;AACxE,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EAAa,sDAAA;AAAA,MACb,WAAA,EAAa,EAAE,GAAG,eAAA;AAAgB,KACpC;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AACnC,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,gBAAA,EAAkB;AAAA,UACvB,YAAY,eAAA,CAAgB,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAQ;AAAA,SACtD,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,+BAA+B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,oBAAoB,CAAC,CAAA;AAAA,IACxD;AAAA,MACE,KAAA,EAAO,mBAAA;AAAA,MACP,WAAA,EAAa,0EAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAAA,QAC1D,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,uCAAuC,CAAA;AAAA,QACxE,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QACpE,WAAWA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,QACnF,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8CAA8C;AAAA;AAC5F,KACF;AAAA,IACA,OAAO,EAAE,IAAA,EAAM,MAAM,WAAA,EAAa,SAAA,EAAW,aAAY,KAAM;AAC7D,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,IAAA,EAAM,IAAA,EAAK;AACpD,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,SAAA,KAAc,KAAA,CAAA,EAAW,KAAA,CAAM,SAAA,GAAY,SAAA;AAC/C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AAEnD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,iBAAA,EAAmB,EAAE,KAAA,EAAO,CAAA;AACnC,QAAA,OAAO,UAAA,CAAW,KAAK,mBAAmB,CAAA;AAAA,MAC5C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,0CAAA,EAA4C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACrF,QAAA,OAAO,WAAA;AAAA,UACL,gCAAgC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACxF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACtFO,SAAS,wBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,oBAAoB,CAAC,CAAA;AAAA,IACxD;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EAAa,yEAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gCAAgC;AAAA;AAC/E,KACF;AAAA,IACA,OAAO,EAAE,YAAA,EAAa,KAAM;AAC1B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,mBAAA,EAAqB,EAAE,YAAA,EAAc,CAAA;AAC5C,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,0CAAA,EAA4C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACrF,QAAA,OAAO,WAAA;AAAA,UACL,kCAAkC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC1F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,sBAAsB,CAAC,CAAA;AAAA,IAC1D;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EACE,qJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAAA,QACtD,WAAA,EAAa,eAAA,CAAgB,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QACnF,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QACnE,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QAC/E,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2BAA2B,CAAA;AAAA,QACpE,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,eAAe,CAAA;AAAA,QACvD,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sBAAsB,CAAA;AAAA,QACjE,YAAA,EAAcA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QAClF,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0BAA0B,CAAA;AAAA,QACrE,iBAAiBA,CAAAA,CACd,MAAA,GACA,QAAA,EAAS,CACT,SAAS,4CAA4C;AAAA;AAC1D,KACF;AAAA,IACA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,eAAA,KAAoB,KAAA,CAAA,EAAW,KAAA,CAAM,eAAA,GAAkB,eAAA;AAE3D,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,mBAAA,EAAqB,EAAE,KAAA,EAAO,CAAA;AACrC,QAAA,OAAO,UAAA,CAAW,KAAK,oBAAoB,CAAA;AAAA,MAC7C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,4CAAA,EAA8C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACvF,QAAA,OAAO,WAAA;AAAA,UACL,kCAAkC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC1F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACvFO,SAAS,uBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iBAAiB,CAAC,CAAA;AAAA,IACrD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EAAa,yDAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,eAAe,CAAA;AAAE,KAC1D;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,cAAA,EAAgB,EAAE,EAAA,EAAI,CAAA;AAC7B,QAAA,IAAI,CAAC,IAAA,CAAK,aAAA,SAAsB,WAAA,CAAY,CAAA,WAAA,EAAc,EAAE,CAAA,UAAA,CAAY,CAAA;AACxE,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,uCAAA,EAAyC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAClF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,8HAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,MAAA,EAAQ,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QAC9E,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4BAA4B,CAAA;AAAA,QACpE,GAAG;AAAA;AACL,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,SAAS,MAAA,EAAQ,KAAA,EAAO,QAAO,KAAM;AACpD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,gBAAA,EAAkB;AAAA,UACvB,MAAA;AAAA,UACA,OAAA;AAAA,UACA,YAAY,eAAA,CAAgB,EAAE,MAAA,EAAQ,KAAA,EAAO,QAAQ;AAAA,SACtD,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,+BAA+B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACvF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EACE,qFAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,kBAAkB,CAAA;AAAA,QACpD,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC,CAAA;AAAA,QAC1E,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,QAC1D,cAAcA,CAAAA,CACX,OAAA,GACA,QAAA,EAAS,CACT,SAAS,gDAAgD,CAAA;AAAA,QAC5D,IAAA,EAAMA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gBAAgB;AAAA;AAChE,KACF;AAAA,IACA,OAAO,EAAE,KAAA,EAAO,QAAQ,OAAA,EAAS,YAAA,EAAc,MAAK,KAAM;AACxD,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,KAAA,EAAM;AAC/C,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AAErC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,eAAA,EAAiB,EAAE,KAAA,EAAO,CAAA;AACjC,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EAAa,sDAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,eAAe,CAAA,EAAE;AAAA;AAAA;AAAA,MAGxD,WAAA,EAAa,EAAE,eAAA,EAAiB,IAAA;AAAK,KACvC;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,eAAA,EAAiB,EAAE,EAAA,EAAI,CAAA;AAC9B,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACzHO,SAAS,kBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,6EAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,YAAA,EAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe,CAAA;AAAA,QACjD,MAAA,EAAQ,oBAAA,CAAqB,QAAA,EAAS,CAAE,SAAS,6BAA6B;AAAA;AAChF,KACF;AAAA,IACA,OAAO,EAAE,YAAA,EAAc,MAAA,EAAO,KAAM;AAClC,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,YAAA,EAAc,EAAE,YAAA,EAAc,MAAA,EAAQ,CAAA;AAC7C,QAAA,OAAO,UAAA,CAAW,KAAK,cAAc,CAAA;AAAA,MACvC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,cAAc,CAAC,CAAA;AAAA,IAClD;AAAA,MACE,KAAA,EAAO,YAAA;AAAA,MACP,WAAA,EACE,sHAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,YAAA,EAAcA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACtE,IAAA,EAAMA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,SAAS,iBAAiB,CAAA;AAAA,QAClD,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC;AAAA;AAClF,KACF;AAAA,IACA,OAAO,EAAE,YAAA,EAAc,IAAA,EAAM,aAAY,KAAM;AAC7C,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,YAAA,EAAc,IAAA,EAAK;AAC5D,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AAEnD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAE9B,UAAA,EAAY,EAAE,KAAA,EAAO,CAAA;AAC5B,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,oCAAA,EAAsC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC/E,QAAA,OAAO,WAAA;AAAA,UACL,yBAAyB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACjF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,kBAAkB,CAAC,CAAA;AAAA,IACtD;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EAAa,mFAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,UAAU,CAAA;AAAA,QAClC,MAAA,EAAQ,oBAAA,CAAqB,QAAA,CAAS,uBAAuB;AAAA,OAC/D;AAAA;AAAA;AAAA,MAGA,WAAA,EAAa,EAAE,eAAA,EAAiB,IAAA;AAAK,KACvC;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,cAAA,EAAgB,EAAE,EAAA,EAAI,MAAA,EAAQ,CAAA;AACrC,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;;AC1FO,SAAS,mBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AAAA,IAC5C;AAAA,MACE,KAAA,EAAO,6BAAA;AAAA,MACP,WAAA,EACE,8FAAA;AAAA,MACF,aAAa;AAAC,KAChB;AAAA,IACA,YAAY;AACV,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAAmC,MAAA,EAAQ,EAAE,CAAA;AAClF,QAAA,OAAO,WAAW,EAAE,EAAA,EAAI,MAAM,MAAA,EAAQ,IAAA,CAAK,WAAW,CAAA;AAAA,MACxD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,8BAAA,EAAgC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACzE,QAAA,OAAO,WAAA;AAAA,UACL,uCAAuC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC/F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;;AC1BO,SAAS,+BAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,YAAY,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AACjE,EAAA,MAAM,aAAa,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,SAAS,CAAC,CAAA;AACnE,EAAA,MAAM,YAAY,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,QAAQ,CAAC,CAAA;AACjE,EAAA,MAAM,iBAAiB,KAAA,CAAM,cAAA,CAAe,GAAA,CAAI,WAAA,EAAa,aAAa,CAAC,CAAA;AAG3E,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,uBAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,8BAAA;AAAA,MACP,WAAA,EACE,gGAAA;AAAA,MACF,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,SAAS,CAAA,UAAA,CAAY,CAAA;AAClD,MAAA,MAAM,MAAA,GAAS,CAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;AA6Bf,MAAA,OAAO;AAAA,QACL,QAAA,EAAU,CAAC,EAAE,GAAA,EAAK,WAAW,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,YAAA,EAAc;AAAA,OACrE;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,wBAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,wBAAA;AAAA,MACP,WAAA,EAAa,mDAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,UAAU,CAAA,UAAA,CAAY,CAAA;AACnD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAAqC,YAAA,EAAc;AAAA,UACtF,UAAA,EAAY,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,CAAA;AAAE,SACpC,CAAA;AACD,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,UAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,cAAA,EAAgB,MAAM,CAAC,CAAA;AAAA,cACjD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,UAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,uBAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,gCAAA;AAAA,MACP,WAAA,EAAa,kDAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,SAAS,CAAA,UAAA,CAAY,CAAA;AAClD,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAAoC,WAAA,EAAa;AAAA,UACpF,UAAA,EAAY,EAAE,KAAA,EAAO,EAAA,EAAI,QAAQ,CAAA;AAAE,SACpC,CAAA;AACD,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,SAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,aAAA,EAAe,MAAM,CAAC,CAAA;AAAA,cAChD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,SAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,gBAAA;AAAA,IACL,4BAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,qCAAA;AAAA,MACP,WAAA,EAAa,iDAAA;AAAA,MACb,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,YAAY;AACV,MAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,SAAA,EAAY,cAAc,CAAA,UAAA,CAAY,CAAA;AACvD,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UACnC,gBAAA;AAAA,UACA,EAAE,UAAA,EAAY,EAAE,OAAO,EAAA,EAAI,MAAA,EAAQ,GAAE;AAAE,SACzC;AACA,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,cAAA;AAAA,cACL,MAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,kBAAA,EAAoB,MAAM,CAAC,CAAA;AAAA,cACrD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,OAAO;AAAA,UACL,QAAA,EAAU;AAAA,YACR;AAAA,cACE,GAAA,EAAK,cAAA;AAAA,cACL,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,gBACnB,OAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK;AAAA,eAC7D,CAAA;AAAA,cACD,QAAA,EAAU;AAAA;AACZ;AACF,SACF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;ACnLO,SAAS,6BAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAM,IAAI,GAAA,CAAI,WAAA;AACd,EAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,aAAA,CAAc,CAAA,EAAG,kBAAkB,CAAC,CAAA;AACjE,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,aAAA,CAAc,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAG9D,EAAA,MAAA,CAAO,cAAA;AAAA,IACL,cAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,qLAAA;AAAA,MACF,UAAA,EAAY;AAAA,QACV,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,gBAAgB,CAAA;AAAA,QACtD,SAASA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2BAA2B;AAAA;AACrE,KACF;AAAA,IACA,CAAC,EAAE,KAAA,EAAO,OAAA,EAAQ,KAAM;AACtB,MAAA,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA,OAAA,EAAU,cAAc,WAAW,EAAE,KAAA,EAAO,SAAS,CAAA;AACtE,MAAA,MAAM,SAAA,GAAY,KAAA,GACd,CAAA,kBAAA,EAAqB,KAAK,CAAA,EAAA,CAAA,GAC1B,sCAAA;AACJ,MAAA,MAAM,SAAA,GAAY,UACd,CAAA,2BAAA,EAA8B,OAAO,MACrC,CAAA,kCAAA,EAAqC,CAAC,kBAAkB,CAAC,CAAA,eAAA,CAAA;AAC7D,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,IAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAM,wDAAwD,SAAS;;AAAA,cAAA,EAErE,SAAS;AAAA,kBAAA,EACL,CAAC,CAAA;AAAA,2DAAA,EACwC,CAAC,CAAA;AAAA,mBAAA,EACzC,CAAC,6FAA6F,CAAC,CAAA;AAAA,kCAAA,EACrF,CAAC,CAAA;;AAAA,wDAAA;AAAA;AAGpB;AACF;AACF,OACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,cAAA;AAAA,IACL,WAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,mJAAA;AAAA,MACF,UAAA,EAAY;AAAA,QACV,cAAcA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC;AAAA;AACtF,KACF;AAAA,IACA,CAAC,EAAE,YAAA,EAAa,KAAM;AACpB,MAAA,GAAA,CAAI,OAAO,KAAA,CAAM,CAAA,OAAA,EAAU,WAAW,CAAA,OAAA,CAAA,EAAW,EAAE,cAAc,CAAA;AACjE,MAAA,MAAM,iBAAiB,YAAA,GACnB,CAAA,mBAAA,EAAsB,YAAY,CAAA,EAAA,CAAA,GAClC,kCAAkC,CAAC,CAAA,kCAAA,CAAA;AACvC,MAAA,OAAO;AAAA,QACL,QAAA,EAAU;AAAA,UACR;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,IAAA,EAAM,MAAA;AAAA,cACN,IAAA,EAAM,uDAAuD,cAAc;;AAAA,uBAAA,EAEhE,CAAC,2BAA2B,CAAC,CAAA;AAAA,0BAAA,EAC1B,CAAC,kMAA6L,CAAC,CAAA;AAAA,2BAAA,EAC9L,CAAC,mHAAmH,CAAC,CAAA;AAAA,uBAAA,EACzH,CAAC,6HAA6H,CAAC,CAAA;;AAAA,yCAAA;AAAA;AAG5I;AACF;AACF,OACF;AAAA,IACF;AAAA,GACF;AACF;;;ACnEA,IAAM,oBAAA,GAAkC;AAAA,EACtC,EAAA,EAAI,gBAAA;AAAA,EACJ,OAAA,EAAS,OAAA;AAAA,EACT,WAAA,EAAa,gBAAA;AAAA,EACb,SAAA,EAAW,CAAC,MAAM,CAAA;AAAA,EAClB,YAAA,EAAc,EAAE,KAAA,EAAO,EAAC,EAAG,WAAW,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAAA,EAEtD,QAAA,CAAS,QAAmB,GAAA,EAAqC;AAC/D,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,YAAsB,EAAC;AAC7B,IAAA,MAAM,UAAoB,EAAC;AAE3B,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAsB;AACvC,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAM,aAAA,GAAgB,CAAC,GAAA,KAAwB;AAC7C,MAAA,SAAA,CAAU,KAAK,GAAG,CAAA;AAClB,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAsB;AACzC,MAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AACd,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AAEA,IAAA,kBAAA,CAAmB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACzC,IAAA,kBAAA,CAAmB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACzC,IAAA,qBAAA,CAAsB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC5C,IAAA,oBAAA,CAAqB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC3C,IAAA,uBAAA,CAAwB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC9C,IAAA,wBAAA,CAAyB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC/C,IAAA,uBAAA,CAAwB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAC9C,IAAA,kBAAA,CAAmB,MAAA,EAAQ,KAAK,SAAS,CAAA;AACzC,IAAA,mBAAA,CAAoB,MAAA,EAAQ,KAAK,SAAS,CAAA;AAE1C,IAAA,+BAAA,CAAgC,MAAA,EAAQ,KAAK,aAAa,CAAA;AAC1D,IAAA,6BAAA,CAA8B,MAAA,EAAQ,KAAK,WAAW,CAAA;AAEtD,IAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAAQ;AAAA,EACrC;AACF,CAAA;AAEA,IAAO,sBAAA,GAAQ","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the TheCulturePost MCP module.\n *\n * TheCulturePost is the culture / religion / values / history platform —\n * the federated system of record for well-sourced stories, topic timelines,\n * citable archives + oral histories, and respectful community discussion\n * (future-products ecosystem). Backend subgraph:\n * ~/products/theculturepost/wspace-theculturepost-svc/ (Hive service name\n * `theculturepost`).\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 — TheCulturePost inputs do NOT carry a workspaceId.\n *\n * Root fields are consistently prefixed `tcp*` and every product-owned type is\n * prefixed `Tcp*` (the subgraph's collision-avoidance contract). Each operation\n * below is called by its REAL server-side name.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (mirror the backend object types)\n// ---------------------------------------------------------------------------\n\nexport const STORY_FIELDS = `\n id slug title summary body format status readingMins languages tags\n topicId authorId editorId publishedAt workspaceId createdAt updatedAt\n cover { id }\n`;\n\nexport const TOPIC_FIELDS = `\n id slug name description category tradition isFeatured\n workspaceId createdAt updatedAt\n`;\n\nexport const CITATION_FIELDS = `\n id storyId title author publisher publishedOn url excerpt provenance\n sourceType verification workspaceId createdAt updatedAt\n sourceFile { id }\n`;\n\nexport const ARCHIVE_ITEM_FIELDS = `\n id title description kind accessLevel collectionId languages tags origin\n provenance datedAt workspaceId createdAt updatedAt\n file { id }\n`;\n\nexport const COLLECTION_FIELDS = `\n id slug name description tradition itemCount\n workspaceId createdAt updatedAt\n cover { id }\n`;\n\nexport const ORAL_HISTORY_FIELDS = `\n id title narratorName language summary transcript durationSecs recordedAt\n collectionId accessLevel workspaceId createdAt updatedAt\n recording { id }\n`;\n\nexport const DISCUSSION_FIELDS = `\n id title prompt storyId isInterfaith isLocked status replyCount tags\n openedById workspaceId createdAt updatedAt\n`;\n\nexport const REPLY_FIELDS = `\n id discussionId body perspective status authorId\n workspaceId createdAt updatedAt\n`;\n\nexport const PAGE_INFO = `\n pageInfo { cursor hasMore }\n`;\n\n// ---------------------------------------------------------------------------\n// Stories (editorial)\n// ---------------------------------------------------------------------------\n\nexport const GET_STORY = `\n query TheculturepostGetStory($id: ID!) {\n tcpStory(id: $id) {\n ${STORY_FIELDS}\n topic { id name slug category }\n citations { id title sourceType verification url }\n }\n }\n`;\n\nexport const LIST_STORIES = `\n query TheculturepostListStories(\n $pagination: PaginationInput\n $status: TcpStoryStatus\n $topicId: ID\n ) {\n tcpListStories(pagination: $pagination, status: $status, topicId: $topicId) {\n items { ${STORY_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_STORY = `\n mutation TheculturepostCreateStory($input: TcpCreateStoryInput!) {\n tcpCreateStory(input: $input) { ${STORY_FIELDS} }\n }\n`;\n\nexport const UPDATE_STORY = `\n mutation TheculturepostUpdateStory($id: ID!, $input: TcpUpdateStoryInput!) {\n tcpUpdateStory(id: $id, input: $input) { ${STORY_FIELDS} }\n }\n`;\n\nexport const TRANSITION_STORY = `\n mutation TheculturepostTransitionStory($id: ID!, $status: TcpStoryStatus!) {\n tcpTransitionStory(id: $id, status: $status) { ${STORY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Topics (editorial)\n// ---------------------------------------------------------------------------\n\nexport const GET_TOPIC = `\n query TheculturepostGetTopic($id: ID!) {\n tcpTopic(id: $id) {\n ${TOPIC_FIELDS}\n stories { id title slug status }\n }\n }\n`;\n\nexport const LIST_TOPICS = `\n query TheculturepostListTopics(\n $category: TcpTopicCategory\n $pagination: PaginationInput\n ) {\n tcpListTopics(category: $category, pagination: $pagination) {\n items { ${TOPIC_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_TOPIC = `\n mutation TheculturepostCreateTopic($input: TcpCreateTopicInput!) {\n tcpCreateTopic(input: $input) { ${TOPIC_FIELDS} }\n }\n`;\n\nexport const UPDATE_TOPIC = `\n mutation TheculturepostUpdateTopic($id: ID!, $input: TcpUpdateTopicInput!) {\n tcpUpdateTopic(id: $id, input: $input) { ${TOPIC_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_TOPIC = `\n mutation TheculturepostArchiveTopic($id: ID!) {\n tcpArchiveTopic(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Citations (editorial)\n// ---------------------------------------------------------------------------\n\nexport const LIST_CITATIONS = `\n query TheculturepostListCitations($storyId: ID!) {\n tcpListCitations(storyId: $storyId) { ${CITATION_FIELDS} }\n }\n`;\n\nexport const ADD_CITATION = `\n mutation TheculturepostAddCitation($input: TcpCreateCitationInput!) {\n tcpAddCitation(input: $input) { ${CITATION_FIELDS} }\n }\n`;\n\nexport const VERIFY_CITATION = `\n mutation TheculturepostVerifyCitation(\n $id: ID!\n $verification: TcpVerificationStatus!\n ) {\n tcpVerifyCitation(id: $id, verification: $verification) { ${CITATION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Archive items (archive)\n// ---------------------------------------------------------------------------\n\nexport const GET_ARCHIVE_ITEM = `\n query TheculturepostGetArchiveItem($id: ID!) {\n tcpArchiveItem(id: $id) {\n ${ARCHIVE_ITEM_FIELDS}\n collection { id name slug }\n }\n }\n`;\n\nexport const LIST_ARCHIVE_ITEMS = `\n query TheculturepostListArchiveItems(\n $accessLevel: TcpAccessLevel\n $collectionId: ID\n $kind: TcpArchiveItemKind\n $pagination: PaginationInput\n ) {\n tcpListArchiveItems(\n accessLevel: $accessLevel\n collectionId: $collectionId\n kind: $kind\n pagination: $pagination\n ) {\n items { ${ARCHIVE_ITEM_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const CREATE_ARCHIVE_ITEM = `\n mutation TheculturepostCreateArchiveItem($input: TcpCreateArchiveItemInput!) {\n tcpCreateArchiveItem(input: $input) { ${ARCHIVE_ITEM_FIELDS} }\n }\n`;\n\nexport const UPDATE_ARCHIVE_ITEM = `\n mutation TheculturepostUpdateArchiveItem(\n $id: ID!\n $input: TcpUpdateArchiveItemInput!\n ) {\n tcpUpdateArchiveItem(id: $id, input: $input) { ${ARCHIVE_ITEM_FIELDS} }\n }\n`;\n\nexport const ARCHIVE_ARCHIVE_ITEM = `\n mutation TheculturepostArchiveArchiveItem($id: ID!) {\n tcpArchiveArchiveItem(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collections (archive)\n// ---------------------------------------------------------------------------\n\nexport const GET_COLLECTION = `\n query TheculturepostGetCollection($id: ID!) {\n tcpCollection(id: $id) {\n ${COLLECTION_FIELDS}\n items { id title kind accessLevel }\n oralHistories { id title narratorName }\n }\n }\n`;\n\nexport const LIST_COLLECTIONS = `\n query TheculturepostListCollections($pagination: PaginationInput) {\n tcpListCollections(pagination: $pagination) { ${COLLECTION_FIELDS} }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation TheculturepostCreateCollection($input: TcpCreateCollectionInput!) {\n tcpCreateCollection(input: $input) { ${COLLECTION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Oral histories (archive)\n// ---------------------------------------------------------------------------\n\nexport const LIST_ORAL_HISTORIES = `\n query TheculturepostListOralHistories($collectionId: ID) {\n tcpListOralHistories(collectionId: $collectionId) { ${ORAL_HISTORY_FIELDS} }\n }\n`;\n\nexport const RECORD_ORAL_HISTORY = `\n mutation TheculturepostRecordOralHistory($input: TcpCreateOralHistoryInput!) {\n tcpRecordOralHistory(input: $input) { ${ORAL_HISTORY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Discussions (community)\n// ---------------------------------------------------------------------------\n\nexport const GET_DISCUSSION = `\n query TheculturepostGetDiscussion($id: ID!) {\n tcpDiscussion(id: $id) {\n ${DISCUSSION_FIELDS}\n replies { id body perspective status authorId }\n }\n }\n`;\n\nexport const LIST_DISCUSSIONS = `\n query TheculturepostListDiscussions(\n $pagination: PaginationInput\n $status: TcpModerationStatus\n $storyId: ID\n ) {\n tcpListDiscussions(pagination: $pagination, status: $status, storyId: $storyId) {\n items { ${DISCUSSION_FIELDS} }\n ${PAGE_INFO}\n }\n }\n`;\n\nexport const OPEN_DISCUSSION = `\n mutation TheculturepostOpenDiscussion($input: TcpCreateDiscussionInput!) {\n tcpOpenDiscussion(input: $input) { ${DISCUSSION_FIELDS} }\n }\n`;\n\nexport const LOCK_DISCUSSION = `\n mutation TheculturepostLockDiscussion($id: ID!) {\n tcpLockDiscussion(id: $id) { ${DISCUSSION_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Replies (community)\n// ---------------------------------------------------------------------------\n\nexport const LIST_REPLIES = `\n query TheculturepostListReplies($discussionId: ID!, $status: TcpModerationStatus) {\n tcpListReplies(discussionId: $discussionId, status: $status) { ${REPLY_FIELDS} }\n }\n`;\n\nexport const POST_REPLY = `\n mutation TheculturepostPostReply($input: TcpCreateReplyInput!) {\n tcpPostReply(input: $input) { ${REPLY_FIELDS} }\n }\n`;\n\nexport const MODERATE_REPLY = `\n mutation TheculturepostModerateReply($id: ID!, $status: TcpModerationStatus!) {\n tcpModerateReply(id: $id, status: $status) { ${REPLY_FIELDS} }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query TheculturepostHealth {\n tcpHealth\n }\n`;\n","/**\n * Shared zod schemas + helpers for the TheCulturePost 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 cursor/limit/offset\n * pagination shape (PaginationInput) is assembled by `buildPagination` so each\n * list tool stays terse.\n */\n\nimport { z } from 'zod';\n\nexport const AccessLevelEnum = z\n .enum(['COMMUNITY', 'EMBARGOED', 'PUBLIC', 'RESTRICTED'])\n .describe('Visibility/access level of an archive item or oral history');\n\nexport const ArchiveItemKindEnum = z\n .enum(['AUDIO', 'DOCUMENT', 'MANUSCRIPT', 'MAP', 'OBJECT', 'PHOTOGRAPH', 'VIDEO'])\n .describe('Kind of cultural artifact in the archive');\n\nexport const ModerationStatusEnum = z\n .enum(['APPROVED', 'FLAGGED', 'PENDING', 'REMOVED'])\n .describe('Moderation status of a discussion or reply');\n\nexport const SourceTypeEnum = z\n .enum([\n 'ACADEMIC',\n 'ARCHIVAL_RECORD',\n 'ARTIFACT',\n 'BOOK',\n 'INTERVIEW',\n 'PERIODICAL',\n 'PRIMARY_DOCUMENT',\n 'WEB',\n ])\n .describe('Type of cited source backing a story claim');\n\nexport const StoryFormatEnum = z\n .enum(['ARTICLE', 'ESSAY', 'EXPLAINER', 'ORAL_HISTORY', 'PHOTO_STORY', 'TIMELINE'])\n .describe('Editorial format of a story');\n\nexport const StoryStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'IDEA', 'IN_REVIEW', 'PUBLISHED'])\n .describe('Editorial lifecycle status of a story');\n\nexport const TopicCategoryEnum = z\n .enum([\n 'CULTURE_AND_IDENTITY',\n 'FESTIVALS_AND_RITUALS',\n 'HERITAGE_AND_ARCHIVES',\n 'HISTORY',\n 'MIGRATION_AND_DIASPORA',\n 'ORAL_HISTORIES',\n 'PHILOSOPHY_AND_THOUGHT',\n 'RELIGION_AND_FAITH',\n 'VALUES_AND_ETHICS',\n ])\n .describe('Thematic category of a topic');\n\nexport const VerificationStatusEnum = z\n .enum(['CORROBORATED', 'DISPUTED', 'RETRACTED', 'UNVERIFIED'])\n .describe('Verification status of a citation');\n\n/** Reusable optional pagination inputs (PaginationInput: { cursor, limit, offset }). */\nexport const paginationShape = {\n cursor: z.string().optional().describe('Opaque cursor for keyset pagination'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n} as const;\n\n/**\n * Build a `PaginationInput` object from the optional cursor/limit/offset tool\n * args, or `undefined` when none were supplied (so the backend default applies).\n */\nexport function buildPagination(args: {\n cursor?: string;\n limit?: number;\n offset?: number;\n}): Record<string, unknown> | undefined {\n const pagination: Record<string, unknown> = {};\n if (args.cursor !== undefined) pagination.cursor = args.cursor;\n if (args.limit !== undefined) pagination.limit = args.limit;\n if (args.offset !== undefined) pagination.offset = args.offset;\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n","/**\n * TheCulturePost story tools — the editorial heart of the platform.\n *\n * Surface (5): stories_{get,list,create,update,transition}. Backend root fields\n * (tcpStory / tcpListStories / tcpCreateStory / tcpUpdateStory /\n * tcpTransitionStory) are all called by their REAL names in operations.ts.\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 { StoryFormatEnum, StoryStatusEnum, paginationShape, buildPagination } from './shared.js';\n\nexport function registerStoryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_get')),\n {\n title: 'Get Story',\n description: 'Fetch a single TheCulturePost story by ID, including its topic and citations.',\n inputSchema: { id: z.string().describe('Story ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpStory: Record<string, unknown> | null;\n }>(ops.GET_STORY, { id });\n if (!data.tcpStory) return errorResult(`Story ${id} not found`);\n return jsonResult(data.tcpStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_get failed', { error: String(error) });\n return errorResult(\n `Failed to get story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_list')),\n {\n title: 'List Stories',\n description:\n 'List stories in the bound workspace, optionally filtered by editorial status and/or topic. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n status: StoryStatusEnum.optional().describe('Filter by editorial status'),\n topicId: z.string().optional().describe('Filter by topic ID'),\n ...paginationShape,\n },\n },\n async ({ status, topicId, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListStories: Record<string, unknown>;\n }>(ops.LIST_STORIES, {\n status,\n topicId,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListStories);\n } catch (error) {\n ctx.logger.error('theculturepost stories_list failed', { error: String(error) });\n return errorResult(\n `Failed to list stories: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_create')),\n {\n title: 'Create Story',\n description:\n 'Draft a new story. `slug` must be unique within the workspace. Stories start in DRAFT (or IDEA) and advance via stories_transition.',\n inputSchema: {\n title: z.string().min(1).describe('Story headline'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n topicId: z.string().optional().describe('Owning topic ID'),\n summary: z.string().optional().describe('Short standfirst / dek'),\n body: z.string().optional().describe('Story body (markdown/rich text)'),\n format: StoryFormatEnum.optional().describe('Editorial format (default ARTICLE)'),\n languages: z.array(z.string()).optional().describe('ISO language codes the story is in'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n readingMins: z.number().int().optional().describe('Estimated reading time in minutes'),\n authorId: z.string().optional().describe('Author user ID'),\n editorId: z.string().optional().describe('Editor user ID'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the hero image'),\n },\n },\n async ({\n title,\n slug,\n topicId,\n summary,\n body,\n format,\n languages,\n tags,\n readingMins,\n authorId,\n editorId,\n coverFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { title, slug };\n if (topicId !== undefined) input.topicId = topicId;\n if (summary !== undefined) input.summary = summary;\n if (body !== undefined) input.body = body;\n if (format !== undefined) input.format = format;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (readingMins !== undefined) input.readingMins = readingMins;\n if (authorId !== undefined) input.authorId = authorId;\n if (editorId !== undefined) input.editorId = editorId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateStory: Record<string, unknown>;\n }>(ops.CREATE_STORY, { input });\n return jsonResult(data.tcpCreateStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_create failed', { error: String(error) });\n return errorResult(\n `Failed to create story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_update')),\n {\n title: 'Update Story',\n description:\n 'Update a story’s editorial fields. At least one mutable field must be provided. Use stories_transition to change `status`.',\n inputSchema: {\n id: z.string().describe('Story ID'),\n title: z.string().optional().describe('Updated headline'),\n summary: z.string().optional().describe('Updated standfirst / dek'),\n body: z.string().optional().describe('Updated body'),\n format: StoryFormatEnum.optional().describe('Updated editorial format'),\n languages: z.array(z.string()).optional().describe('Updated language codes'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n readingMins: z.number().int().optional().describe('Updated reading time'),\n topicId: z.string().optional().describe('Reassign to a topic'),\n authorId: z.string().optional().describe('Updated author user ID'),\n editorId: z.string().optional().describe('Updated editor user ID'),\n coverFileId: z.string().optional().describe('Updated hero-image File ID'),\n },\n },\n async ({\n id,\n title,\n summary,\n body,\n format,\n languages,\n tags,\n readingMins,\n topicId,\n authorId,\n editorId,\n coverFileId,\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 (body !== undefined) input.body = body;\n if (format !== undefined) input.format = format;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (readingMins !== undefined) input.readingMins = readingMins;\n if (topicId !== undefined) input.topicId = topicId;\n if (authorId !== undefined) input.authorId = authorId;\n if (editorId !== undefined) input.editorId = editorId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/summary/body/format/languages/tags/readingMins/topicId/authorId/editorId/coverFileId',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n tcpUpdateStory: Record<string, unknown>;\n }>(ops.UPDATE_STORY, { id, input });\n return jsonResult(data.tcpUpdateStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_update failed', { error: String(error) });\n return errorResult(\n `Failed to update story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'stories_transition')),\n {\n title: 'Transition Story',\n description:\n 'Advance a story through its editorial lifecycle (validated transitions): IDEA → DRAFT → IN_REVIEW → PUBLISHED → ARCHIVED.',\n inputSchema: {\n id: z.string().describe('Story ID'),\n status: StoryStatusEnum.describe('Target editorial status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpTransitionStory: Record<string, unknown>;\n }>(ops.TRANSITION_STORY, { id, status });\n return jsonResult(data.tcpTransitionStory);\n } catch (error) {\n ctx.logger.error('theculturepost stories_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition story: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost topic tools — thematic hubs that group stories.\n *\n * Surface (5): topics_{get,list,create,update,archive}. `topics_archive` maps to\n * the soft-delete mutation tcpArchiveTopic (returns Boolean).\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 { TopicCategoryEnum, paginationShape, buildPagination } from './shared.js';\n\nexport function registerTopicTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_get')),\n {\n title: 'Get Topic',\n description: 'Fetch a single topic by ID, including its stories.',\n inputSchema: { id: z.string().describe('Topic ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpTopic: Record<string, unknown> | null;\n }>(ops.GET_TOPIC, { id });\n if (!data.tcpTopic) return errorResult(`Topic ${id} not found`);\n return jsonResult(data.tcpTopic);\n } catch (error) {\n ctx.logger.error('theculturepost topics_get failed', { error: String(error) });\n return errorResult(\n `Failed to get topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_list')),\n {\n title: 'List Topics',\n description:\n 'List topics in the bound workspace, optionally filtered by category. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n category: TopicCategoryEnum.optional().describe('Filter by thematic category'),\n ...paginationShape,\n },\n },\n async ({ category, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListTopics: Record<string, unknown>;\n }>(ops.LIST_TOPICS, {\n category,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListTopics);\n } catch (error) {\n ctx.logger.error('theculturepost topics_list failed', { error: String(error) });\n return errorResult(\n `Failed to list topics: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_create')),\n {\n title: 'Create Topic',\n description:\n 'Create a new topic. `slug` must be unique within the workspace. Default category is CULTURE_AND_IDENTITY.',\n inputSchema: {\n name: z.string().min(1).describe('Topic display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n category: TopicCategoryEnum.optional().describe(\n 'Thematic category (default CULTURE_AND_IDENTITY)',\n ),\n description: z.string().optional().describe('Topic description'),\n tradition: z.string().optional().describe('Associated cultural/religious tradition'),\n isFeatured: z.boolean().optional().describe('Pin to the featured rail (default false)'),\n },\n },\n async ({ name, slug, category, description, tradition, isFeatured }) => {\n try {\n const input: Record<string, unknown> = { name, slug };\n if (category !== undefined) input.category = category;\n if (description !== undefined) input.description = description;\n if (tradition !== undefined) input.tradition = tradition;\n if (isFeatured !== undefined) input.isFeatured = isFeatured;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateTopic: Record<string, unknown>;\n }>(ops.CREATE_TOPIC, { input });\n return jsonResult(data.tcpCreateTopic);\n } catch (error) {\n ctx.logger.error('theculturepost topics_create failed', { error: String(error) });\n return errorResult(\n `Failed to create topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_update')),\n {\n title: 'Update Topic',\n description:\n 'Update a topic. At least one mutable field must be provided. (Slug is immutable.)',\n inputSchema: {\n id: z.string().describe('Topic ID'),\n name: z.string().optional().describe('Updated display name'),\n description: z.string().optional().describe('Updated description'),\n category: TopicCategoryEnum.optional().describe('Updated thematic category'),\n tradition: z.string().optional().describe('Updated associated tradition'),\n isFeatured: z.boolean().optional().describe('Updated featured flag'),\n },\n },\n async ({ id, name, description, category, tradition, isFeatured }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (tradition !== undefined) input.tradition = tradition;\n if (isFeatured !== undefined) input.isFeatured = isFeatured;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/description/category/tradition/isFeatured',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n tcpUpdateTopic: Record<string, unknown>;\n }>(ops.UPDATE_TOPIC, { id, input });\n return jsonResult(data.tcpUpdateTopic);\n } catch (error) {\n ctx.logger.error('theculturepost topics_update failed', { error: String(error) });\n return errorResult(\n `Failed to update topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'topics_archive')),\n {\n title: 'Archive Topic',\n description: 'Archive (soft-delete) a topic. Returns true on success.',\n inputSchema: { id: z.string().describe('Topic ID') },\n // BOFF-6784: name doesn't match the `delete` heuristic, so declare the\n // destructive annotation explicitly so the confirmation gate catches it.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ tcpArchiveTopic: boolean }>(\n ops.ARCHIVE_TOPIC,\n { id },\n );\n return jsonResult({ archived: data.tcpArchiveTopic, id });\n } catch (error) {\n ctx.logger.error('theculturepost topics_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive topic: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost citation tools — the well-sourced backbone of every story.\n *\n * Surface (3): citations_{list,add,verify}. `citations_add` maps to\n * tcpAddCitation; `citations_verify` maps to tcpVerifyCitation (sets the\n * editorial verification status).\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 { SourceTypeEnum, VerificationStatusEnum } from './shared.js';\n\nexport function registerCitationTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'citations_list')),\n {\n title: 'List Citations',\n description: 'List the citations backing a given story.',\n inputSchema: { storyId: z.string().describe('Story ID') },\n },\n async ({ storyId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListCitations: Array<Record<string, unknown>>;\n }>(ops.LIST_CITATIONS, { storyId });\n return jsonResult(data.tcpListCitations);\n } catch (error) {\n ctx.logger.error('theculturepost citations_list failed', { error: String(error) });\n return errorResult(\n `Failed to list citations: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'citations_add')),\n {\n title: 'Add Citation',\n description:\n 'Attach a citation to a story. New citations default to UNVERIFIED; use citations_verify to corroborate.',\n inputSchema: {\n storyId: z.string().min(1).describe('Story the citation supports'),\n title: z.string().min(1).describe('Title of the cited work'),\n sourceType: SourceTypeEnum.optional().describe('Type of source (default WEB)'),\n author: z.string().optional().describe('Author of the cited work'),\n publisher: z.string().optional().describe('Publisher / outlet'),\n publishedOn: z.string().optional().describe('Publication date (ISO 8601)'),\n url: z.string().optional().describe('Canonical URL of the source'),\n excerpt: z.string().optional().describe('Quoted excerpt supporting the claim'),\n provenance: z.string().optional().describe('Provenance / chain-of-custody note'),\n sourceFileId: z.string().optional().describe('wspace-files-svc File ID for a scan'),\n },\n },\n async ({\n storyId,\n title,\n sourceType,\n author,\n publisher,\n publishedOn,\n url,\n excerpt,\n provenance,\n sourceFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { storyId, title };\n if (sourceType !== undefined) input.sourceType = sourceType;\n if (author !== undefined) input.author = author;\n if (publisher !== undefined) input.publisher = publisher;\n if (publishedOn !== undefined) input.publishedOn = publishedOn;\n if (url !== undefined) input.url = url;\n if (excerpt !== undefined) input.excerpt = excerpt;\n if (provenance !== undefined) input.provenance = provenance;\n if (sourceFileId !== undefined) input.sourceFileId = sourceFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpAddCitation: Record<string, unknown>;\n }>(ops.ADD_CITATION, { input });\n return jsonResult(data.tcpAddCitation);\n } catch (error) {\n ctx.logger.error('theculturepost citations_add failed', { error: String(error) });\n return errorResult(\n `Failed to add citation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'citations_verify')),\n {\n title: 'Verify Citation',\n description:\n 'Set the verification status of a citation (CORROBORATED / DISPUTED / RETRACTED / UNVERIFIED).',\n inputSchema: {\n id: z.string().describe('Citation ID'),\n verification: VerificationStatusEnum.describe('New verification status'),\n },\n },\n async ({ id, verification }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpVerifyCitation: Record<string, unknown>;\n }>(ops.VERIFY_CITATION, { id, verification });\n return jsonResult(data.tcpVerifyCitation);\n } catch (error) {\n ctx.logger.error('theculturepost citations_verify failed', { error: String(error) });\n return errorResult(\n `Failed to verify citation: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost archive-item tools — citable cultural artifacts.\n *\n * Surface (5): archive_{get,list,create,update,archive}. `archive_archive` maps\n * to the soft-delete mutation tcpArchiveArchiveItem (returns Boolean). Artifact\n * binaries are referenced via a wspace-files-svc File ID — never stored 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 {\n AccessLevelEnum,\n ArchiveItemKindEnum,\n paginationShape,\n buildPagination,\n} from './shared.js';\n\nexport function registerArchiveTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_get')),\n {\n title: 'Get Archive Item',\n description:\n 'Fetch a single archive item (cultural artifact) by ID, including its parent collection.',\n inputSchema: { id: z.string().describe('Archive item ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpArchiveItem: Record<string, unknown> | null;\n }>(ops.GET_ARCHIVE_ITEM, { id });\n if (!data.tcpArchiveItem) return errorResult(`Archive item ${id} not found`);\n return jsonResult(data.tcpArchiveItem);\n } catch (error) {\n ctx.logger.error('theculturepost archive_get failed', { error: String(error) });\n return errorResult(\n `Failed to get archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_list')),\n {\n title: 'List Archive Items',\n description:\n 'List archive items, optionally filtered by access level, collection, and/or kind. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n accessLevel: AccessLevelEnum.optional().describe('Filter by access level'),\n collectionId: z.string().optional().describe('Filter by parent collection ID'),\n kind: ArchiveItemKindEnum.optional().describe('Filter by artifact kind'),\n ...paginationShape,\n },\n },\n async ({ accessLevel, collectionId, kind, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListArchiveItems: Record<string, unknown>;\n }>(ops.LIST_ARCHIVE_ITEMS, {\n accessLevel,\n collectionId,\n kind,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListArchiveItems);\n } catch (error) {\n ctx.logger.error('theculturepost archive_list failed', { error: String(error) });\n return errorResult(\n `Failed to list archive items: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_create')),\n {\n title: 'Create Archive Item',\n description:\n 'Add a cultural artifact to the archive. Default kind is DOCUMENT and default access level is PUBLIC. Reference the binary via `fileId` (wspace-files-svc).',\n inputSchema: {\n title: z.string().min(1).describe('Artifact title'),\n kind: ArchiveItemKindEnum.optional().describe('Artifact kind (default DOCUMENT)'),\n accessLevel: AccessLevelEnum.optional().describe('Access level (default PUBLIC)'),\n description: z.string().optional().describe('Artifact description'),\n collectionId: z.string().optional().describe('Parent collection ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the binary'),\n languages: z.array(z.string()).optional().describe('Languages present in the artifact'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n origin: z.string().optional().describe('Geographic / cultural origin'),\n provenance: z.string().optional().describe('Provenance / chain-of-custody note'),\n datedAt: z.string().optional().describe('Date the artifact is from (ISO 8601)'),\n },\n },\n async ({\n title,\n kind,\n accessLevel,\n description,\n collectionId,\n fileId,\n languages,\n tags,\n origin,\n provenance,\n datedAt,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (kind !== undefined) input.kind = kind;\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (fileId !== undefined) input.fileId = fileId;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (origin !== undefined) input.origin = origin;\n if (provenance !== undefined) input.provenance = provenance;\n if (datedAt !== undefined) input.datedAt = datedAt;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateArchiveItem: Record<string, unknown>;\n }>(ops.CREATE_ARCHIVE_ITEM, { input });\n return jsonResult(data.tcpCreateArchiveItem);\n } catch (error) {\n ctx.logger.error('theculturepost archive_create failed', { error: String(error) });\n return errorResult(\n `Failed to create archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_update')),\n {\n title: 'Update Archive Item',\n description: 'Update an archive item. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Archive item ID'),\n title: z.string().optional().describe('Updated title'),\n kind: ArchiveItemKindEnum.optional().describe('Updated artifact kind'),\n accessLevel: AccessLevelEnum.optional().describe('Updated access level'),\n description: z.string().optional().describe('Updated description'),\n collectionId: z.string().optional().describe('Reassign to a collection'),\n fileId: z.string().optional().describe('Updated binary File ID'),\n languages: z.array(z.string()).optional().describe('Updated languages'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n origin: z.string().optional().describe('Updated origin'),\n provenance: z.string().optional().describe('Updated provenance'),\n datedAt: z.string().optional().describe('Updated artifact date (ISO 8601)'),\n },\n },\n async ({\n id,\n title,\n kind,\n accessLevel,\n description,\n collectionId,\n fileId,\n languages,\n tags,\n origin,\n provenance,\n datedAt,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (kind !== undefined) input.kind = kind;\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (fileId !== undefined) input.fileId = fileId;\n if (languages !== undefined) input.languages = languages;\n if (tags !== undefined) input.tags = tags;\n if (origin !== undefined) input.origin = origin;\n if (provenance !== undefined) input.provenance = provenance;\n if (datedAt !== undefined) input.datedAt = datedAt;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/kind/accessLevel/description/collectionId/fileId/languages/tags/origin/provenance/datedAt',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n tcpUpdateArchiveItem: Record<string, unknown>;\n }>(ops.UPDATE_ARCHIVE_ITEM, { id, input });\n return jsonResult(data.tcpUpdateArchiveItem);\n } catch (error) {\n ctx.logger.error('theculturepost archive_update failed', { error: String(error) });\n return errorResult(\n `Failed to update archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'archive_archive')),\n {\n title: 'Archive Archive Item',\n description: 'Archive (soft-delete) an archive item. Returns true on success.',\n inputSchema: { id: z.string().describe('Archive item ID') },\n // BOFF-6784: `archive` is not matched by the name-based `delete`\n // heuristic, so declare the destructive annotation explicitly.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ tcpArchiveArchiveItem: boolean }>(\n ops.ARCHIVE_ARCHIVE_ITEM,\n { id },\n );\n return jsonResult({ archived: data.tcpArchiveArchiveItem, id });\n } catch (error) {\n ctx.logger.error('theculturepost archive_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive archive item: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost collection tools — curated groupings of archive items + oral\n * histories.\n *\n * Surface (3): collections_{get,list,create}. `tcpListCollections` returns a\n * plain list (not a connection); `tcpCollection` returns the items + oral\n * histories it 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 { paginationShape, buildPagination } from './shared.js';\n\nexport function registerCollectionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_get')),\n {\n title: 'Get Collection',\n description:\n 'Fetch a single collection by ID, including its archive items and oral histories.',\n inputSchema: { id: z.string().describe('Collection ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpCollection: Record<string, unknown> | null;\n }>(ops.GET_COLLECTION, { id });\n if (!data.tcpCollection) return errorResult(`Collection ${id} not found`);\n return jsonResult(data.tcpCollection);\n } catch (error) {\n ctx.logger.error('theculturepost 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: 'List the curated collections in the bound workspace.',\n inputSchema: { ...paginationShape },\n },\n async ({ cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListCollections: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLECTIONS, {\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListCollections);\n } catch (error) {\n ctx.logger.error('theculturepost 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 name: z.string().min(1).describe('Collection display name'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n description: z.string().optional().describe('Collection description'),\n tradition: z.string().optional().describe('Associated cultural/religious tradition'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover image'),\n },\n },\n async ({ name, slug, description, tradition, coverFileId }) => {\n try {\n const input: Record<string, unknown> = { name, slug };\n if (description !== undefined) input.description = description;\n if (tradition !== undefined) input.tradition = tradition;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.tcpCreateCollection);\n } catch (error) {\n ctx.logger.error('theculturepost 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","/**\n * TheCulturePost oral-history tools — recorded first-person cultural testimony.\n *\n * Surface (2): oralhistories_{list,record}. `oralhistories_record` maps to\n * tcpRecordOralHistory. Recordings are referenced via a wspace-files-svc File\n * ID (audio/video) — never stored 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 { AccessLevelEnum } from './shared.js';\n\nexport function registerOralHistoryTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'oralhistories_list')),\n {\n title: 'List Oral Histories',\n description: 'List recorded oral histories, optionally scoped to a single collection.',\n inputSchema: {\n collectionId: z.string().optional().describe('Filter by parent collection ID'),\n },\n },\n async ({ collectionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListOralHistories: Array<Record<string, unknown>>;\n }>(ops.LIST_ORAL_HISTORIES, { collectionId });\n return jsonResult(data.tcpListOralHistories);\n } catch (error) {\n ctx.logger.error('theculturepost oralhistories_list failed', { error: String(error) });\n return errorResult(\n `Failed to list oral histories: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'oralhistories_record')),\n {\n title: 'Record Oral History',\n description:\n 'Register a recorded oral history. Default access level is COMMUNITY. Reference the recording via `recordingFileId` (wspace-files-svc, audio/video).',\n inputSchema: {\n title: z.string().min(1).describe('Oral-history title'),\n accessLevel: AccessLevelEnum.optional().describe('Access level (default COMMUNITY)'),\n collectionId: z.string().optional().describe('Parent collection ID'),\n narratorName: z.string().optional().describe('Name of the narrator/storyteller'),\n language: z.string().optional().describe('Language of the recording'),\n summary: z.string().optional().describe('Short summary'),\n transcript: z.string().optional().describe('Full transcript text'),\n durationSecs: z.number().int().optional().describe('Recording duration in seconds'),\n recordedAt: z.string().optional().describe('Date recorded (ISO 8601)'),\n recordingFileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID for the recording'),\n },\n },\n async ({\n title,\n accessLevel,\n collectionId,\n narratorName,\n language,\n summary,\n transcript,\n durationSecs,\n recordedAt,\n recordingFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (narratorName !== undefined) input.narratorName = narratorName;\n if (language !== undefined) input.language = language;\n if (summary !== undefined) input.summary = summary;\n if (transcript !== undefined) input.transcript = transcript;\n if (durationSecs !== undefined) input.durationSecs = durationSecs;\n if (recordedAt !== undefined) input.recordedAt = recordedAt;\n if (recordingFileId !== undefined) input.recordingFileId = recordingFileId;\n\n const data = await ctx.gql.workspace.request<{\n tcpRecordOralHistory: Record<string, unknown>;\n }>(ops.RECORD_ORAL_HISTORY, { input });\n return jsonResult(data.tcpRecordOralHistory);\n } catch (error) {\n ctx.logger.error('theculturepost oralhistories_record failed', { error: String(error) });\n return errorResult(\n `Failed to record oral history: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost discussion tools — respectful-by-design community threads.\n *\n * Surface (4): discussions_{get,list,open,lock}. `discussions_open` maps to\n * tcpOpenDiscussion; `discussions_lock` maps to tcpLockDiscussion (freeze a\n * thread). Discussions may be tied to a story and flagged interfaith.\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 { ModerationStatusEnum, paginationShape, buildPagination } from './shared.js';\n\nexport function registerDiscussionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_get')),\n {\n title: 'Get Discussion',\n description: 'Fetch a single discussion by ID, including its replies.',\n inputSchema: { id: z.string().describe('Discussion ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpDiscussion: Record<string, unknown> | null;\n }>(ops.GET_DISCUSSION, { id });\n if (!data.tcpDiscussion) return errorResult(`Discussion ${id} not found`);\n return jsonResult(data.tcpDiscussion);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get discussion: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_list')),\n {\n title: 'List Discussions',\n description:\n 'List discussions, optionally filtered by moderation status and/or related story. Returns a connection ({ items, pageInfo }).',\n inputSchema: {\n status: ModerationStatusEnum.optional().describe('Filter by moderation status'),\n storyId: z.string().optional().describe('Filter by related story ID'),\n ...paginationShape,\n },\n },\n async ({ status, storyId, cursor, limit, offset }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListDiscussions: Record<string, unknown>;\n }>(ops.LIST_DISCUSSIONS, {\n status,\n storyId,\n pagination: buildPagination({ cursor, limit, offset }),\n });\n return jsonResult(data.tcpListDiscussions);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list discussions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_open')),\n {\n title: 'Open Discussion',\n description:\n 'Open a new community discussion, optionally tied to a story and flagged interfaith.',\n inputSchema: {\n title: z.string().min(1).describe('Discussion title'),\n prompt: z.string().optional().describe('Opening prompt / framing question'),\n storyId: z.string().optional().describe('Related story ID'),\n isInterfaith: z\n .boolean()\n .optional()\n .describe('Flag as an interfaith dialogue (default false)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ title, prompt, storyId, isInterfaith, tags }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (prompt !== undefined) input.prompt = prompt;\n if (storyId !== undefined) input.storyId = storyId;\n if (isInterfaith !== undefined) input.isInterfaith = isInterfaith;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n tcpOpenDiscussion: Record<string, unknown>;\n }>(ops.OPEN_DISCUSSION, { input });\n return jsonResult(data.tcpOpenDiscussion);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_open failed', { error: String(error) });\n return errorResult(\n `Failed to open discussion: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'discussions_lock')),\n {\n title: 'Lock Discussion',\n description: 'Lock a discussion thread to prevent further replies.',\n inputSchema: { id: z.string().describe('Discussion ID') },\n // BOFF-6784: locking is an irreversible state change from an MCP\n // perspective; treat it as destructive so the confirmation gate applies.\n annotations: { destructiveHint: true },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpLockDiscussion: Record<string, unknown>;\n }>(ops.LOCK_DISCUSSION, { id });\n return jsonResult(data.tcpLockDiscussion);\n } catch (error) {\n ctx.logger.error('theculturepost discussions_lock failed', { error: String(error) });\n return errorResult(\n `Failed to lock discussion: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost reply tools — moderated contributions to a discussion.\n *\n * Surface (3): replies_{list,post,moderate}. `replies_post` maps to\n * tcpPostReply; `replies_moderate` maps to tcpModerateReply (approve / flag /\n * remove — respectful-by-design controls).\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 { ModerationStatusEnum } from './shared.js';\n\nexport function registerReplyTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'replies_list')),\n {\n title: 'List Replies',\n description: 'List the replies on a discussion, optionally filtered by moderation status.',\n inputSchema: {\n discussionId: z.string().describe('Discussion ID'),\n status: ModerationStatusEnum.optional().describe('Filter by moderation status'),\n },\n },\n async ({ discussionId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpListReplies: Array<Record<string, unknown>>;\n }>(ops.LIST_REPLIES, { discussionId, status });\n return jsonResult(data.tcpListReplies);\n } catch (error) {\n ctx.logger.error('theculturepost replies_list failed', { error: String(error) });\n return errorResult(\n `Failed to list replies: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'replies_post')),\n {\n title: 'Post Reply',\n description:\n 'Post a reply to a discussion. Optionally label the contributor’s `perspective` (e.g. a tradition or viewpoint).',\n inputSchema: {\n discussionId: z.string().min(1).describe('Discussion being replied to'),\n body: z.string().min(1).describe('Reply body text'),\n perspective: z.string().optional().describe('Optional viewpoint/tradition label'),\n },\n },\n async ({ discussionId, body, perspective }) => {\n try {\n const input: Record<string, unknown> = { discussionId, body };\n if (perspective !== undefined) input.perspective = perspective;\n\n const data = await ctx.gql.workspace.request<{\n tcpPostReply: Record<string, unknown>;\n }>(ops.POST_REPLY, { input });\n return jsonResult(data.tcpPostReply);\n } catch (error) {\n ctx.logger.error('theculturepost replies_post failed', { error: String(error) });\n return errorResult(\n `Failed to post reply: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'replies_moderate')),\n {\n title: 'Moderate Reply',\n description: 'Moderate a reply — set its status to APPROVED, FLAGGED, PENDING, or REMOVED.',\n inputSchema: {\n id: z.string().describe('Reply ID'),\n status: ModerationStatusEnum.describe('New moderation status'),\n },\n // BOFF-6784: moderation can remove/suppress user-generated content;\n // declare destructive so the confirmation gate catches it.\n annotations: { destructiveHint: true },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tcpModerateReply: Record<string, unknown>;\n }>(ops.MODERATE_REPLY, { id, status });\n return jsonResult(data.tcpModerateReply);\n } catch (error) {\n ctx.logger.error('theculturepost replies_moderate failed', { error: String(error) });\n return errorResult(\n `Failed to moderate reply: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * TheCulturePost system tools.\n *\n * Surface (1): health. Maps to the @public tcpHealth query (no auth required) —\n * a liveness/identity probe for the TheCulturePost 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 registerSystemTools(\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: 'TheCulturePost Health Check',\n description:\n 'Public health probe for the TheCulturePost subgraph (tcpHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ tcpHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.tcpHealth });\n } catch (error) {\n ctx.logger.error('theculturepost health failed', { error: String(error) });\n return errorResult(\n `TheCulturePost 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_STORIES, LIST_TOPICS, LIST_COLLECTIONS } from './operations.js';\n\n/**\n * Read-only TheCulturePost 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 registerTheculturepostResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const storiesUri = track(mcpResourceUri(ctx.productName, 'stories'));\n const topicsUri = track(mcpResourceUri(ctx.productName, 'topics'));\n const collectionsUri = track(mcpResourceUri(ctx.productName, 'collections'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'theculturepost-schema',\n schemaUri,\n {\n title: 'TheCulturePost Domain Schema',\n description:\n 'Overview of the TheCulturePost 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 = `# TheCulturePost Domain (Overview)\n\nCulture / religion / values / history platform — well-sourced stories, topic\ntimelines, citable archives + oral histories, respectful community discussion.\n\n## Entities\n- TcpStory — an editorial story (has citations, belongs to a topic)\n- TcpTopic — a thematic hub grouping stories\n- TcpCitation — a cited source backing a story claim\n- TcpArchiveItem — a cultural artifact (binary referenced via wspace-files-svc File)\n- TcpCollection — a curated grouping of archive items + oral histories\n- TcpOralHistory — recorded first-person testimony (recording via File)\n- TcpDiscussion — a respectful community thread (optionally tied to a story)\n- TcpReply — a moderated contribution to a discussion\n\n## Enums\n- TcpStoryStatus: IDEA, DRAFT, IN_REVIEW, PUBLISHED, ARCHIVED\n- TcpStoryFormat: ARTICLE, ESSAY, EXPLAINER, ORAL_HISTORY, PHOTO_STORY, TIMELINE\n- TcpTopicCategory: CULTURE_AND_IDENTITY, FESTIVALS_AND_RITUALS, HERITAGE_AND_ARCHIVES, HISTORY, MIGRATION_AND_DIASPORA, ORAL_HISTORIES, PHILOSOPHY_AND_THOUGHT, RELIGION_AND_FAITH, VALUES_AND_ETHICS\n- TcpSourceType: ACADEMIC, ARCHIVAL_RECORD, ARTIFACT, BOOK, INTERVIEW, PERIODICAL, PRIMARY_DOCUMENT, WEB\n- TcpVerificationStatus: UNVERIFIED, CORROBORATED, DISPUTED, RETRACTED\n- TcpArchiveItemKind: AUDIO, DOCUMENT, MANUSCRIPT, MAP, OBJECT, PHOTOGRAPH, VIDEO\n- TcpAccessLevel: PUBLIC, COMMUNITY, RESTRICTED, EMBARGOED\n- TcpModerationStatus: PENDING, APPROVED, FLAGGED, REMOVED\n\n## Tool groups\nstories, topics, citations, archive, collections, oralhistories, discussions, replies, 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>://stories — recent stories\n server.registerResource(\n 'theculturepost-stories',\n storiesUri,\n {\n title: 'TheCulturePost Stories',\n description: 'The first page of stories in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${storiesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tcpListStories: unknown }>(LIST_STORIES, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: storiesUri,\n text: JSON.stringify(data.tcpListStories, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: storiesUri,\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>://topics — topic directory\n server.registerResource(\n 'theculturepost-topics',\n topicsUri,\n {\n title: 'TheCulturePost Topic Directory',\n description: 'The first page of topics in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${topicsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tcpListTopics: unknown }>(LIST_TOPICS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: topicsUri,\n text: JSON.stringify(data.tcpListTopics, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: topicsUri,\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>://collections — curated collections directory\n server.registerResource(\n 'theculturepost-collections',\n collectionsUri,\n {\n title: 'TheCulturePost Collection Directory',\n description: 'The curated collections in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${collectionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tcpListCollections: unknown }>(\n LIST_COLLECTIONS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: collectionsUri,\n text: JSON.stringify(data.tcpListCollections, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: collectionsUri,\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 * TheCulturePost MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerTheculturepostPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const publishingName = track(mcpPromptName(p, 'story-publishing'));\n const archiveName = track(mcpPromptName(p, 'archive-curation'));\n\n // <product>-story-publishing — editorial workflow end to end\n server.registerPrompt(\n publishingName,\n {\n title: 'Story Publishing',\n description:\n 'Guide for taking a TheCulturePost story from idea to publication: pick/create a topic, draft the story, attach + verify citations, then transition through the editorial lifecycle.',\n argsSchema: {\n title: z.string().optional().describe('Story headline'),\n topicId: z.string().optional().describe('Owning topic ID, if known'),\n },\n },\n ({ title, topicId }) => {\n ctx.logger.debug(`Prompt ${publishingName} called`, { title, topicId });\n const titleNote = title\n ? `Use the headline \"${title}\".`\n : 'Ask the user for the story headline.';\n const topicNote = topicId\n ? `File the story under topic ${topicId}.`\n : `First find or create a topic with ${p}_topics_list / ${p}_topics_create.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me publish a well-sourced TheCulturePost story. ${titleNote}\n\n1. **Topic**: ${topicNote}\n2. **Draft**: Use ${p}_stories_create. Provide a unique slug, a summary, a format (ARTICLE/ESSAY/EXPLAINER/PHOTO_STORY/TIMELINE/ORAL_HISTORY), and the body. It starts in DRAFT.\n3. **Cite**: For every factual claim, attach a source with ${p}_citations_add (set a sourceType and url/excerpt). Sourcing is non-negotiable here.\n4. **Verify**: Use ${p}_citations_verify to mark each citation CORROBORATED (or DISPUTED/RETRACTED). Review with ${p}_citations_list.\n5. **Review → Publish**: Use ${p}_stories_transition to move DRAFT → IN_REVIEW, then → PUBLISHED once citations check out.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-archive-curation — build a collection + invite discussion\n server.registerPrompt(\n archiveName,\n {\n title: 'Archive Curation',\n description:\n 'Workflow for curating a cultural archive: create a collection, add archive items and oral histories, then open a respectful community discussion.',\n argsSchema: {\n collectionId: z.string().optional().describe('Collection ID to curate, if it exists'),\n },\n },\n ({ collectionId }) => {\n ctx.logger.debug(`Prompt ${archiveName} called`, { collectionId });\n const collectionNote = collectionId\n ? `Curate collection \"${collectionId}\".`\n : `First create a collection with ${p}_collections_create (unique slug).`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me curate a TheCulturePost archive collection. ${collectionNote}\n\n1. **Collection**: Use ${p}_collections_create (or ${p}_collections_get to inspect an existing one).\n2. **Archive Items**: Use ${p}_archive_create for each artifact — set a kind (PHOTOGRAPH/MANUSCRIPT/MAP/OBJECT/AUDIO/VIDEO/DOCUMENT), an accessLevel, provenance/origin, and reference the binary via fileId. List with ${p}_archive_list filtered by collectionId.\n3. **Oral Histories**: Use ${p}_oralhistories_record for recorded testimony (narratorName, language, transcript, recordingFileId). Review with ${p}_oralhistories_list.\n4. **Discussion**: Use ${p}_discussions_open to invite respectful community dialogue around the collection or a related story; moderate replies with ${p}_replies_moderate.\n\nSummarize what was added after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * TheCulturePost module — domain module for the future-products ecosystem program.\n *\n * Covers all 8 @key entities of wspace-theculturepost-svc grouped into\n * per-entity sub-APIs: stories, topics, citations, archive (items),\n * collections, oralhistories, discussions, replies — plus a public health\n * probe. Mirrors the rich kadaikodi module's structure (tools/<entity>.ts +\n * resources.ts + prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/theculturepost/wspace-theculturepost-svc/\n * (Hive service name `theculturepost`). All operations run against the WORKSPACE\n * gateway; the @public tcpHealth 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 { registerStoryTools } from './tools/stories.js';\nimport { registerTopicTools } from './tools/topics.js';\nimport { registerCitationTools } from './tools/citations.js';\nimport { registerArchiveTools } from './tools/archive.js';\nimport { registerCollectionTools } from './tools/collections.js';\nimport { registerOralHistoryTools } from './tools/oralhistories.js';\nimport { registerDiscussionTools } from './tools/discussions.js';\nimport { registerReplyTools } from './tools/replies.js';\nimport { registerSystemTools } from './tools/system.js';\nimport { registerTheculturepostResources } from './resources.js';\nimport { registerTheculturepostPrompts } from './prompts.js';\n\nconst theculturepostModule: McpModule = {\n id: 'theculturepost',\n version: '0.0.1',\n displayName: 'TheCulturePost',\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 registerStoryTools(server, ctx, trackTool);\n registerTopicTools(server, ctx, trackTool);\n registerCitationTools(server, ctx, trackTool);\n registerArchiveTools(server, ctx, trackTool);\n registerCollectionTools(server, ctx, trackTool);\n registerOralHistoryTools(server, ctx, trackTool);\n registerDiscussionTools(server, ctx, trackTool);\n registerReplyTools(server, ctx, trackTool);\n registerSystemTools(server, ctx, trackTool);\n\n registerTheculturepostResources(server, ctx, trackResource);\n registerTheculturepostPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default theculturepostModule;\n"]}