@swoft/gtd-domain
Version:
Getting Things Done (GTD) productivity system - consolidated domain implementation
1 lines • 11.6 kB
Source Map (JSON)
{"version":3,"sources":["../src/integration/contracts/zodios-api.ts"],"sourcesContent":["/**\n * GTD Domain - Zodios API Definitions\n * \n * Type-safe API contracts using Zodios to ensure backend, frontend,\n * and MCP clients always stay in sync. Single source of truth!\n */\n\nimport { makeApi } from '@zodios/core';\nimport { z } from 'zod';\n\n// Zod schemas based on existing contracts\nexport const InboxCaptureRequestSchema = z.object({\n content: z.string().describe('The content/description of the item to capture'),\n capturedBy: z.string().describe('Who is capturing this item'),\n priority: z.enum(['low', 'medium', 'high', 'urgent']).optional().describe('Optional priority level'),\n tags: z.array(z.string()).optional().describe('Optional tags for categorization'),\n source: z.string().optional().describe('Source of the capture (for tracking)'),\n context: z.object({\n location: z.string().optional(),\n project: z.string().optional(),\n reference: z.string().optional()\n }).optional().describe('Optional context information')\n});\n\nexport const InboxItemSummarySchema = z.object({\n id: z.string().describe('Unique identifier for the inbox item'),\n content: z.string().describe('The original content/description of the item'),\n text: z.string().describe('Backward compatibility field - same as content'),\n title: z.string().describe('User-friendly title extracted from content'),\n status: z.enum(['unprocessed', 'processed']).describe('Current processing status'),\n capturedAt: z.string().describe('When the item was captured (ISO date)'),\n createdAt: z.date().describe('Backward compatibility field - same as capturedAt'),\n capturedBy: z.string().describe('Who captured this item (person ID)'),\n capturedByPerson: z.object({\n id: z.string(),\n displayName: z.string(),\n roleType: z.enum(['Human', 'AiAgent'])\n }).nullable().describe('Enriched person information'),\n priority: z.enum(['low', 'medium', 'high', 'urgent']).optional().describe('Priority level if assigned'),\n clarification: z.string().optional().describe('Clarification text if item has been clarified'),\n description: z.string().optional().describe('Backward compatibility field - same as clarification'),\n isActionable: z.boolean().optional().describe('Whether the item has been determined to be actionable'),\n tags: z.array(z.string()).optional().describe('Tags associated with the item')\n});\n\nexport const InboxCaptureResultSchema = z.object({\n success: z.boolean().describe('Whether the capture was successful'),\n itemId: z.string().describe('The ID of the created inbox item'),\n capturedAt: z.string().describe('When the item was captured'),\n message: z.string().describe('Human-readable message'),\n error: z.string().optional().describe('Error details if capture failed')\n});\n\nexport const InboxQueryCriteriaSchema = z.object({\n status: z.enum(['inbox', 'clarified', 'processed']).optional(),\n priority: z.enum(['low', 'medium', 'high', 'urgent']).optional(),\n capturedBy: z.string().optional(),\n tags: z.array(z.string()).optional(),\n limit: z.number().optional(),\n offset: z.number().optional()\n});\n\n// GTD Domain API using Zodios\nexport const gtdDomainApi = makeApi([\n {\n method: 'post',\n path: '/api/gtd/inbox',\n alias: 'captureInboxItem',\n description: 'Capture a new item into GTD inbox',\n parameters: [\n {\n name: 'body',\n type: 'Body',\n schema: InboxCaptureRequestSchema\n }\n ],\n response: InboxCaptureResultSchema\n },\n {\n method: 'get',\n path: '/api/gtd/inbox',\n alias: 'getInboxItems',\n description: 'Get inbox items with optional filtering',\n parameters: [\n {\n name: 'query',\n type: 'Query',\n schema: InboxQueryCriteriaSchema\n }\n ],\n response: z.object({\n items: z.array(InboxItemSummarySchema),\n total: z.number(),\n hasMore: z.boolean()\n })\n },\n {\n method: 'get',\n path: '/api/gtd/inbox/:id',\n alias: 'getInboxItem',\n description: 'Get a specific inbox item by ID',\n parameters: [\n {\n name: 'id',\n type: 'Path',\n schema: z.string()\n }\n ],\n response: InboxItemSummarySchema\n },\n {\n method: 'put',\n path: '/api/gtd/inbox/:id/clarify',\n alias: 'clarifyInboxItem',\n description: 'Clarify an inbox item (step 2 of GTD)',\n parameters: [\n {\n name: 'id',\n type: 'Path',\n schema: z.string()\n },\n {\n name: 'body',\n type: 'Body',\n schema: z.object({\n isActionable: z.boolean(),\n outcome: z.string().optional(),\n nextAction: z.string().optional(),\n context: z.string().optional(),\n project: z.string().optional(),\n clarifiedBy: z.string()\n })\n }\n ],\n response: InboxItemSummarySchema\n },\n {\n method: 'get',\n path: '/api/gtd/next-actions',\n alias: 'getNextActions',\n description: 'Get next actions organized by context',\n parameters: [\n {\n name: 'query',\n type: 'Query',\n schema: z.object({\n context: z.string().optional(),\n priority: z.enum(['low', 'medium', 'high', 'urgent']).optional(),\n limit: z.number().optional()\n })\n }\n ],\n response: z.object({\n actions: z.array(z.object({\n id: z.string(),\n content: z.string(),\n context: z.string(),\n priority: z.enum(['low', 'medium', 'high', 'urgent']),\n project: z.string().optional(),\n dueDate: z.string().optional()\n })),\n byContext: z.record(z.string(), z.array(z.any()))\n })\n },\n {\n method: 'get',\n path: '/api/gtd/weekly-review',\n alias: 'getWeeklyReview',\n description: 'Get data for GTD weekly review',\n response: z.object({\n inbox: z.array(InboxItemSummarySchema),\n overdueTasks: z.array(z.any()),\n waitingForTasks: z.array(z.any()),\n somedayTasks: z.array(z.any()),\n completedThisWeek: z.array(z.any()),\n stats: z.object({\n tasksCompleted: z.number(),\n tasksCreated: z.number(),\n averageCompletionTime: z.number(),\n productivityScore: z.number()\n })\n })\n }\n]);\n\n// Export types inferred from Zodios API\nexport type GTDApi = typeof gtdDomainApi;\nexport type InboxCaptureRequest = z.infer<typeof InboxCaptureRequestSchema>;\nexport type InboxItemSummary = z.infer<typeof InboxItemSummarySchema>;\nexport type InboxCaptureResult = z.infer<typeof InboxCaptureResultSchema>;\nexport type InboxQueryCriteria = z.infer<typeof InboxQueryCriteriaSchema>;"],"mappings":"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","names":["makeApi","z","InboxCaptureRequestSchema","object","content","string","describe","capturedBy","priority","enum","optional","tags","array","source","context","location","project","reference","InboxItemSummarySchema","id","text","title","status","capturedAt","createdAt","date","capturedByPerson","displayName","roleType","nullable","clarification","description","isActionable","boolean","InboxCaptureResultSchema","success","itemId","message","error","InboxQueryCriteriaSchema","limit","number","offset","gtdDomainApi","method","path","alias","parameters","name","type","schema","response","items","total","hasMore","outcome","nextAction","clarifiedBy","actions","dueDate","byContext","record","any","inbox","overdueTasks","waitingForTasks","somedayTasks","completedThisWeek","stats","tasksCompleted","tasksCreated","averageCompletionTime","productivityScore"]}