@dain-os/mcp-server 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -24
- package/dist/index.js +0 -0
- package/dist/tools/generic.d.ts +14 -0
- package/dist/tools/generic.d.ts.map +1 -0
- package/dist/tools/generic.js +238 -0
- package/dist/tools/generic.js.map +1 -0
- package/dist/tools/index.d.ts +8 -14
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +12 -36
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +55 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +340 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/semantic/cadence.d.ts +7 -0
- package/dist/tools/semantic/cadence.d.ts.map +1 -0
- package/dist/tools/semantic/cadence.js +120 -0
- package/dist/tools/semantic/cadence.js.map +1 -0
- package/dist/tools/semantic/developer.d.ts +7 -0
- package/dist/tools/semantic/developer.d.ts.map +1 -0
- package/dist/tools/semantic/developer.js +145 -0
- package/dist/tools/semantic/developer.js.map +1 -0
- package/dist/tools/semantic/index.d.ts +7 -0
- package/dist/tools/semantic/index.d.ts.map +1 -0
- package/dist/tools/semantic/index.js +17 -0
- package/dist/tools/semantic/index.js.map +1 -0
- package/dist/tools/semantic/proposal-content.d.ts +9 -0
- package/dist/tools/semantic/proposal-content.d.ts.map +1 -0
- package/dist/tools/semantic/proposal-content.js +118 -0
- package/dist/tools/semantic/proposal-content.js.map +1 -0
- package/dist/tools/semantic/proposals.d.ts +7 -0
- package/dist/tools/semantic/proposals.d.ts.map +1 -0
- package/dist/tools/semantic/proposals.js +107 -0
- package/dist/tools/semantic/proposals.js.map +1 -0
- package/dist/tools/semantic/tasks.d.ts +7 -0
- package/dist/tools/semantic/tasks.d.ts.map +1 -0
- package/dist/tools/semantic/tasks.js +123 -0
- package/dist/tools/semantic/tasks.js.map +1 -0
- package/package.json +1 -1
- package/dist/tools/cadence.d.ts +0 -4
- package/dist/tools/cadence.d.ts.map +0 -1
- package/dist/tools/cadence.js +0 -245
- package/dist/tools/cadence.js.map +0 -1
- package/dist/tools/comments.d.ts +0 -3
- package/dist/tools/comments.d.ts.map +0 -1
- package/dist/tools/comments.js +0 -19
- package/dist/tools/comments.js.map +0 -1
- package/dist/tools/developer.d.ts +0 -3
- package/dist/tools/developer.d.ts.map +0 -1
- package/dist/tools/developer.js +0 -349
- package/dist/tools/developer.js.map +0 -1
- package/dist/tools/iam.d.ts +0 -3
- package/dist/tools/iam.d.ts.map +0 -1
- package/dist/tools/iam.js +0 -38
- package/dist/tools/iam.js.map +0 -1
- package/dist/tools/log-time-entry.d.ts +0 -3
- package/dist/tools/log-time-entry.d.ts.map +0 -1
- package/dist/tools/log-time-entry.js +0 -54
- package/dist/tools/log-time-entry.js.map +0 -1
- package/dist/tools/pr-review.d.ts +0 -3
- package/dist/tools/pr-review.d.ts.map +0 -1
- package/dist/tools/pr-review.js +0 -83
- package/dist/tools/pr-review.js.map +0 -1
- package/dist/tools/products.d.ts +0 -3
- package/dist/tools/products.d.ts.map +0 -1
- package/dist/tools/products.js +0 -37
- package/dist/tools/products.js.map +0 -1
- package/dist/tools/projects.d.ts +0 -3
- package/dist/tools/projects.d.ts.map +0 -1
- package/dist/tools/projects.js +0 -151
- package/dist/tools/projects.js.map +0 -1
- package/dist/tools/proposal-content.d.ts +0 -3
- package/dist/tools/proposal-content.d.ts.map +0 -1
- package/dist/tools/proposal-content.js +0 -136
- package/dist/tools/proposal-content.js.map +0 -1
- package/dist/tools/proposal-options.d.ts +0 -3
- package/dist/tools/proposal-options.d.ts.map +0 -1
- package/dist/tools/proposal-options.js +0 -132
- package/dist/tools/proposal-options.js.map +0 -1
- package/dist/tools/proposals.d.ts +0 -22
- package/dist/tools/proposals.d.ts.map +0 -1
- package/dist/tools/proposals.js +0 -179
- package/dist/tools/proposals.js.map +0 -1
- package/dist/tools/tasks.d.ts +0 -3
- package/dist/tools/tasks.d.ts.map +0 -1
- package/dist/tools/tasks.js +0 -255
- package/dist/tools/tasks.js.map +0 -1
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource registry — single source of truth for every API resource
|
|
3
|
+
* the generic query/mutate tools can operate on.
|
|
4
|
+
*
|
|
5
|
+
* Adding a new resource to the MCP = adding an entry here.
|
|
6
|
+
* No new tool handler needed.
|
|
7
|
+
*/
|
|
8
|
+
const SHARE_URL_BASE = 'https://dainos.app/proposals/view';
|
|
9
|
+
const SHAREABLE_STATUSES = new Set(['sent', 'viewed', 'signed', 'accepted']);
|
|
10
|
+
export const RESOURCES = {
|
|
11
|
+
// ── Projects ──────────────────────────────────────────────────────
|
|
12
|
+
projects: {
|
|
13
|
+
basePath: '/projects',
|
|
14
|
+
description: 'Client projects with status tracking, dates, and billing config.',
|
|
15
|
+
searchable: false,
|
|
16
|
+
defaultSort: { field: 'created_at', direction: 'desc' },
|
|
17
|
+
defaultLimit: 25,
|
|
18
|
+
maxLimit: 100,
|
|
19
|
+
afterFetch: (data, input) => {
|
|
20
|
+
if (!input.id && Array.isArray(data)) {
|
|
21
|
+
return data.filter((p) => typeof p === 'object' && p !== null && p.status !== 'archived');
|
|
22
|
+
}
|
|
23
|
+
return data;
|
|
24
|
+
},
|
|
25
|
+
fields: {
|
|
26
|
+
id: { type: 'uuid', description: 'Project ID', writable: false },
|
|
27
|
+
name: { type: 'string', description: 'Project name', filterable: true, required: true },
|
|
28
|
+
description: { type: 'string', description: 'Project description' },
|
|
29
|
+
status: { type: 'enum', description: 'Project lifecycle stage', filterable: true, enumValues: ['planning', 'active', 'on_hold', 'completed', 'archived', 'cancelled'] },
|
|
30
|
+
clientCompanyId: { type: 'uuid', description: 'Owning company', filterable: true, nullable: true },
|
|
31
|
+
ownerId: { type: 'uuid', description: 'Project owner user id', nullable: true },
|
|
32
|
+
productId: { type: 'uuid', description: 'Linked product', filterable: true, nullable: true },
|
|
33
|
+
projectType: { type: 'enum', description: 'Project type', enumValues: ['internal', 'client', 'product', 'research'] },
|
|
34
|
+
billingMethod: { type: 'enum', description: 'Billing method', enumValues: ['fixed', 'hourly', 'retainer', 'non_billable'] },
|
|
35
|
+
startDate: { type: 'date', description: 'ISO 8601 start date', filterable: true, nullable: true },
|
|
36
|
+
targetEndDate: { type: 'date', description: 'ISO 8601 end date', filterable: true, nullable: true },
|
|
37
|
+
budgetHours: { type: 'number', description: 'Budget in hours', nullable: true },
|
|
38
|
+
budgetAmount: { type: 'number', description: 'Budget in currency', nullable: true },
|
|
39
|
+
priority: { type: 'number', description: 'Priority 0-100', nullable: true },
|
|
40
|
+
tags: { type: 'json', description: 'Array of string tags' },
|
|
41
|
+
created_at: { type: 'date', description: 'Creation timestamp', filterable: true, writable: false },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
milestones: {
|
|
45
|
+
basePath: '/milestones',
|
|
46
|
+
description: 'Project milestones for grouping tasks and tracking progress. Nested under projects.',
|
|
47
|
+
parentIdParam: 'projectId',
|
|
48
|
+
nestedBasePath: '/projects/${parentId}/milestones',
|
|
49
|
+
operations: ['list', 'update'],
|
|
50
|
+
fields: {
|
|
51
|
+
id: { type: 'uuid', description: 'Milestone ID', writable: false },
|
|
52
|
+
name: { type: 'string', description: 'Milestone name', required: true },
|
|
53
|
+
description: { type: 'string', description: 'Description', nullable: true },
|
|
54
|
+
status: { type: 'enum', description: 'Status', enumValues: ['pending', 'in_progress', 'completed', 'cancelled'] },
|
|
55
|
+
startDate: { type: 'date', description: 'ISO 8601 or null', nullable: true },
|
|
56
|
+
dueDate: { type: 'date', description: 'ISO 8601 or null', nullable: true },
|
|
57
|
+
isBillable: { type: 'boolean', description: 'Whether billable' },
|
|
58
|
+
billableAmount: { type: 'number', description: 'Billable amount', nullable: true },
|
|
59
|
+
sortOrder: { type: 'number', description: 'Display order' },
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
// ── Tasks ─────────────────────────────────────────────────────────
|
|
63
|
+
tasks: {
|
|
64
|
+
basePath: '/tasks',
|
|
65
|
+
description: 'Work items within projects. For creating tasks use create_task (handles milestone resolution). For marking done use complete_task.',
|
|
66
|
+
searchable: true,
|
|
67
|
+
defaultSort: { field: 'created_at', direction: 'desc' },
|
|
68
|
+
defaultLimit: 25,
|
|
69
|
+
maxLimit: 200,
|
|
70
|
+
operations: ['list', 'get', 'update', 'delete'],
|
|
71
|
+
fields: {
|
|
72
|
+
id: { type: 'uuid', description: 'Task ID', writable: false },
|
|
73
|
+
title: { type: 'string', description: 'Task title', filterable: true },
|
|
74
|
+
description: { type: 'string', description: 'Plain-text description (internal)' },
|
|
75
|
+
titleClient: { type: 'string', description: 'Client-friendly title', nullable: true },
|
|
76
|
+
descriptionClient: { type: 'string', description: 'Client-facing description', nullable: true },
|
|
77
|
+
descriptionJson: { type: 'json', description: 'Plate JSON for internal editor', nullable: true },
|
|
78
|
+
descriptionClientJson: { type: 'json', description: 'Plate JSON for client editor', nullable: true },
|
|
79
|
+
clientViewLocked: { type: 'boolean', description: 'Lock client view from auto-regen' },
|
|
80
|
+
status: { type: 'enum', description: 'Task status', filterable: true, enumValues: ['backlog', 'todo', 'in_progress', 'in_review', 'blocked', 'done', 'cancelled'] },
|
|
81
|
+
projectId: { type: 'uuid', description: 'Parent project', filterable: true },
|
|
82
|
+
milestoneId: { type: 'uuid', description: 'Parent milestone', filterable: true, nullable: true },
|
|
83
|
+
assigneeId: { type: 'uuid', description: 'Assigned user', filterable: true, nullable: true },
|
|
84
|
+
portalAssigneeId: { type: 'uuid', description: 'Portal-user assignee', nullable: true },
|
|
85
|
+
priorityMoscow: { type: 'enum', description: 'MoSCoW priority', filterable: true, enumValues: ['must', 'should', 'could', 'wont'] },
|
|
86
|
+
storyPoints: { type: 'number', description: 'Story points (0-100)' },
|
|
87
|
+
estimatedHours: { type: 'number', description: 'Estimated hours' },
|
|
88
|
+
actualHoursDelta: { type: 'number', description: 'Additive hours increment. actual_hours += delta' },
|
|
89
|
+
isBillable: { type: 'boolean', description: 'Whether task is billable', filterable: true },
|
|
90
|
+
dueDate: { type: 'date', description: 'Due date (ISO 8601)', filterable: true, nullable: true },
|
|
91
|
+
startDate: { type: 'date', description: 'Start date (ISO 8601)', nullable: true },
|
|
92
|
+
completedAt: { type: 'date', description: 'Completion timestamp (auto-set on done)', nullable: true },
|
|
93
|
+
completedBy: { type: 'uuid', description: 'User who completed', nullable: true },
|
|
94
|
+
tags: { type: 'json', description: 'Array of string tags' },
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
task_comments: {
|
|
98
|
+
basePath: '/comments',
|
|
99
|
+
description: 'Comments on tasks. Internal by default; set isInternal=false for client-visible.',
|
|
100
|
+
parentIdParam: 'taskId',
|
|
101
|
+
nestedBasePath: '/tasks/${parentId}/comments',
|
|
102
|
+
operations: ['create'],
|
|
103
|
+
fields: {
|
|
104
|
+
id: { type: 'uuid', description: 'Comment ID', writable: false },
|
|
105
|
+
content: { type: 'string', description: 'Comment body (markdown)', required: true },
|
|
106
|
+
isInternal: { type: 'boolean', description: 'Defaults true. False = client-visible' },
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
// ── CRM / Proposals ──────────────────────────────────────────────
|
|
110
|
+
proposals: {
|
|
111
|
+
basePath: '/crm/proposals',
|
|
112
|
+
description: 'Client proposals. get returns computed shareUrl when status is sent/viewed/signed/accepted. For content edits use proposal_content. For status changes use set_proposal_status.',
|
|
113
|
+
searchable: true,
|
|
114
|
+
defaultLimit: 25,
|
|
115
|
+
maxLimit: 100,
|
|
116
|
+
afterFetch: (data, input) => {
|
|
117
|
+
if (!input.id)
|
|
118
|
+
return data;
|
|
119
|
+
const proposal = data;
|
|
120
|
+
if (!proposal || typeof proposal !== 'object')
|
|
121
|
+
return data;
|
|
122
|
+
const unwrapped = 'data' in proposal ? proposal.data : proposal;
|
|
123
|
+
if (!unwrapped || typeof unwrapped !== 'object')
|
|
124
|
+
return data;
|
|
125
|
+
const token = unwrapped.shareToken;
|
|
126
|
+
const status = unwrapped.status;
|
|
127
|
+
const shareUrl = token && status && SHAREABLE_STATUSES.has(status)
|
|
128
|
+
? `${SHARE_URL_BASE}/${token}`
|
|
129
|
+
: null;
|
|
130
|
+
return { ...unwrapped, shareUrl };
|
|
131
|
+
},
|
|
132
|
+
fields: {
|
|
133
|
+
id: { type: 'uuid', description: 'Proposal ID', writable: false },
|
|
134
|
+
title: { type: 'string', description: 'Proposal title', filterable: true, required: true },
|
|
135
|
+
status: { type: 'enum', description: 'Proposal status', filterable: true, enumValues: ['draft', 'sent', 'viewed', 'signed', 'accepted', 'rejected', 'expired'] },
|
|
136
|
+
dealId: { type: 'uuid', description: 'Linked deal/enquiry', filterable: true, nullable: true },
|
|
137
|
+
companyId: { type: 'uuid', description: 'Client company', filterable: true, nullable: true },
|
|
138
|
+
contactId: { type: 'uuid', description: 'Primary contact', nullable: true },
|
|
139
|
+
coverLetter: { type: 'string', description: 'Cover letter text', nullable: true },
|
|
140
|
+
termsAndConditions: { type: 'string', description: 'T&Cs text', nullable: true },
|
|
141
|
+
validFrom: { type: 'date', description: 'Valid-from date', nullable: true },
|
|
142
|
+
validUntil: { type: 'date', description: 'Expiry date', nullable: true },
|
|
143
|
+
currencyId: { type: 'uuid', description: 'Currency', nullable: true },
|
|
144
|
+
lineItems: { type: 'json', description: 'Array of {name, quantity, unitPrice, ...}' },
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
proposal_options: {
|
|
148
|
+
basePath: '/options',
|
|
149
|
+
description: 'Pricing options on a proposal. For create/update use create_proposal_option / update_proposal_option (pricing model constraints). For recommendation use set_recommended_option.',
|
|
150
|
+
parentIdParam: 'proposalId',
|
|
151
|
+
nestedBasePath: '/crm/proposals/${parentId}/options',
|
|
152
|
+
operations: ['list', 'delete'],
|
|
153
|
+
fields: {
|
|
154
|
+
id: { type: 'uuid', description: 'Option ID', writable: false },
|
|
155
|
+
title: { type: 'string', description: 'Option title' },
|
|
156
|
+
pricingModel: { type: 'enum', description: 'Pricing model', enumValues: ['retainer', 'fixed_fee', 'ad_hoc', 'blended'] },
|
|
157
|
+
recommended: { type: 'boolean', description: 'Is recommended' },
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
proposal_content: {
|
|
161
|
+
basePath: '/content',
|
|
162
|
+
description: 'Structured proposal content (sections + blocks). For mutations use the proposal_content semantic tool.',
|
|
163
|
+
parentIdParam: 'proposalId',
|
|
164
|
+
nestedBasePath: '/crm/proposals/${parentId}/content',
|
|
165
|
+
singleton: true,
|
|
166
|
+
operations: ['get'],
|
|
167
|
+
fields: {},
|
|
168
|
+
},
|
|
169
|
+
// ── Developer ─────────────────────────────────────────────────────
|
|
170
|
+
session_context: {
|
|
171
|
+
basePath: '/developer/sessions',
|
|
172
|
+
description: 'Development session records. Captures decisions, files, blockers, handoff notes.',
|
|
173
|
+
updateMethod: 'PATCH',
|
|
174
|
+
defaultLimit: 10,
|
|
175
|
+
maxLimit: 50,
|
|
176
|
+
operations: ['list', 'create', 'update'],
|
|
177
|
+
fields: {
|
|
178
|
+
id: { type: 'uuid', description: 'Session ID', writable: false },
|
|
179
|
+
project: { type: 'string', description: 'Project slug', filterable: true, required: true },
|
|
180
|
+
session_name: { type: 'string', description: 'Short descriptive title', required: true },
|
|
181
|
+
session_date: { type: 'date', description: 'YYYY-MM-DD. Defaults today', filterable: true },
|
|
182
|
+
operator: { type: 'string', description: 'e.g. "Dane + Claude Opus 4.7"', required: true },
|
|
183
|
+
machine: { type: 'string', description: 'Machine identifier', nullable: true },
|
|
184
|
+
duration_minutes: { type: 'number', description: 'Duration in minutes', nullable: true },
|
|
185
|
+
summary: { type: 'string', description: '2-4 sentence overview', required: true },
|
|
186
|
+
decisions_made: { type: 'json', description: 'Array of {decision, reason}', nullable: true },
|
|
187
|
+
files_touched: { type: 'json', description: 'Array of file paths', nullable: true },
|
|
188
|
+
tasks_completed: { type: 'json', description: 'Array of task descriptions', nullable: true },
|
|
189
|
+
blockers: { type: 'json', description: 'Array of blocker strings', nullable: true },
|
|
190
|
+
handoff_notes: { type: 'string', description: 'Notes for next session', nullable: true },
|
|
191
|
+
tags: { type: 'json', description: 'Array of string tags', nullable: true },
|
|
192
|
+
client_visible: { type: 'boolean', description: 'Visible in portal (default true)', nullable: true },
|
|
193
|
+
product_id: { type: 'uuid', description: 'Linked product UUID', nullable: true },
|
|
194
|
+
task_ids: { type: 'json', description: 'Array of task UUIDs (max 100)', nullable: true },
|
|
195
|
+
operator_iam_user_id: { type: 'uuid', description: 'Operator IAM user UUID', nullable: true },
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
developer_changelog: {
|
|
199
|
+
basePath: '/developer/changelog',
|
|
200
|
+
description: 'Commit-level changelog entries. For batch-inserting commits use log_changelog_entry.',
|
|
201
|
+
updateMethod: 'PATCH',
|
|
202
|
+
defaultLimit: 50,
|
|
203
|
+
maxLimit: 200,
|
|
204
|
+
operations: ['list', 'update'],
|
|
205
|
+
fields: {
|
|
206
|
+
id: { type: 'uuid', description: 'Entry ID', writable: false },
|
|
207
|
+
project: { type: 'string', description: 'Project slug', filterable: true },
|
|
208
|
+
since: { type: 'date', description: 'Filter: committed_at >= this ISO 8601 datetime', filterable: true, writable: false },
|
|
209
|
+
commit_type: { type: 'enum', description: 'Conventional commit type', enumValues: ['feat', 'fix', 'chore', 'refactor', 'test', 'docs', 'perf', 'ci', 'build', 'revert', 'style'] },
|
|
210
|
+
scope: { type: 'string', description: 'Commit scope', nullable: true },
|
|
211
|
+
summary: { type: 'string', description: 'Commit subject line' },
|
|
212
|
+
description: { type: 'string', description: 'Commit body', nullable: true },
|
|
213
|
+
branch: { type: 'string', description: 'Git branch', nullable: true },
|
|
214
|
+
milestone: { type: 'string', description: 'Milestone name', nullable: true },
|
|
215
|
+
task_ref: { type: 'string', description: 'Task reference', nullable: true },
|
|
216
|
+
author: { type: 'string', description: 'Commit author', nullable: true },
|
|
217
|
+
committed_at: { type: 'date', description: 'Commit timestamp' },
|
|
218
|
+
pr_number: { type: 'number', description: 'PR number', nullable: true },
|
|
219
|
+
pr_url: { type: 'string', description: 'PR URL', nullable: true },
|
|
220
|
+
tags: { type: 'json', description: 'Array of string tags', nullable: true },
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
developer_knowledge_base: {
|
|
224
|
+
basePath: '/developer/knowledge-base',
|
|
225
|
+
description: 'Dev knowledge base: gotchas, patterns, lessons, decisions, workarounds. For batch-inserting use log_knowledge_base_entry.',
|
|
226
|
+
searchable: true,
|
|
227
|
+
searchPath: '/developer/knowledge-base/search',
|
|
228
|
+
updateMethod: 'PATCH',
|
|
229
|
+
operations: ['update'],
|
|
230
|
+
fields: {
|
|
231
|
+
id: { type: 'uuid', description: 'Entry ID', writable: false },
|
|
232
|
+
project: { type: 'string', description: 'Project slug', filterable: true },
|
|
233
|
+
module: { type: 'string', description: 'Code module', filterable: true },
|
|
234
|
+
category: { type: 'enum', description: 'Entry category', filterable: true, enumValues: ['gotcha', 'pattern', 'lesson', 'decision', 'workaround'] },
|
|
235
|
+
severity: { type: 'enum', description: 'Severity', filterable: true, enumValues: ['critical', 'high', 'medium', 'low'] },
|
|
236
|
+
title: { type: 'string', description: 'Short title', filterable: true },
|
|
237
|
+
description: { type: 'string', description: 'Full description' },
|
|
238
|
+
impact: { type: 'string', description: 'Impact if unknown', nullable: true },
|
|
239
|
+
prevention: { type: 'string', description: 'Prevention', nullable: true },
|
|
240
|
+
source_type: { type: 'enum', description: 'Source type', enumValues: ['fix_commit', 'pr_comment', 'pr_review', 'code_review', 'ai_conversation', 'incident', 'documentation', 'debugging_session'] },
|
|
241
|
+
source_refs: { type: 'json', description: 'Array of links/paths', nullable: true },
|
|
242
|
+
tags: { type: 'json', description: 'Array of tags', nullable: true },
|
|
243
|
+
platform: { type: 'string', description: 'e.g. "supabase"', nullable: true },
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
// ── IAM ───────────────────────────────────────────────────────────
|
|
247
|
+
iam_users: {
|
|
248
|
+
basePath: '/iam/users',
|
|
249
|
+
description: 'Team members in the current tenant. Read-only via MCP.',
|
|
250
|
+
operations: ['list', 'get'],
|
|
251
|
+
fields: {
|
|
252
|
+
id: { type: 'uuid', description: 'User ID', writable: false },
|
|
253
|
+
name: { type: 'string', description: 'Display name', writable: false },
|
|
254
|
+
email: { type: 'string', description: 'Email address', writable: false },
|
|
255
|
+
status: { type: 'enum', description: 'Account status', filterable: true, writable: false, enumValues: ['active', 'inactive', 'suspended', 'pending'] },
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
// ── Library ───────────────────────────────────────────────────────
|
|
259
|
+
instructions: {
|
|
260
|
+
basePath: '/instructions',
|
|
261
|
+
description: 'Instruction library (rules, skills, agents, commands). Get by slug returns resolved markdown with template variables.',
|
|
262
|
+
searchable: true,
|
|
263
|
+
searchPath: '/instructions',
|
|
264
|
+
operations: ['list', 'get'],
|
|
265
|
+
fields: {
|
|
266
|
+
id: { type: 'uuid', description: 'Instruction ID', writable: false },
|
|
267
|
+
slug: { type: 'string', description: 'URL-safe slug', filterable: true },
|
|
268
|
+
title: { type: 'string', description: 'Title', filterable: true },
|
|
269
|
+
category: { type: 'enum', description: 'Instruction type', filterable: true, enumValues: ['rule', 'skill', 'agent', 'command', 'prompt', 'template', 'claude_md'] },
|
|
270
|
+
project: { type: 'string', description: 'Project scope', filterable: true },
|
|
271
|
+
tags: { type: 'string', description: 'Comma-separated tag filter', filterable: true, writable: false },
|
|
272
|
+
q: { type: 'string', description: 'Free-text search', filterable: true, writable: false },
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
library_templates: {
|
|
276
|
+
basePath: '/library/templates',
|
|
277
|
+
description: 'Full CRUD for the Claude instructions library. Use this to create, update, or delete instructions (rules, skills, agents, commands, prompts, templates). For read-only access with template variable resolution, use the "instructions" resource instead.',
|
|
278
|
+
searchable: true,
|
|
279
|
+
fields: {
|
|
280
|
+
id: { type: 'uuid', description: 'Template ID', writable: false },
|
|
281
|
+
category: { type: 'enum', description: 'Instruction type', filterable: true, required: true, enumValues: ['claude_md', 'command', 'rule', 'hook', 'agent', 'prompt', 'skill', 'template'] },
|
|
282
|
+
title: { type: 'string', description: 'Instruction title', filterable: true, required: true },
|
|
283
|
+
slug: { type: 'string', description: 'URL-safe slug (lowercase, hyphens only)', required: true },
|
|
284
|
+
description: { type: 'string', description: 'Short description', nullable: true },
|
|
285
|
+
markdownContent: { type: 'string', description: 'Full markdown body with {{variables}}', required: true },
|
|
286
|
+
targetPath: { type: 'string', description: 'Target file path for the instruction', nullable: true },
|
|
287
|
+
status: { type: 'enum', description: 'Lifecycle status', filterable: true, enumValues: ['active', 'draft', 'deprecated'] },
|
|
288
|
+
isTemplate: { type: 'boolean', description: 'Whether this is a template with variables' },
|
|
289
|
+
templateVariables: { type: 'json', description: 'Array of {name, type, required, description}' },
|
|
290
|
+
dependencies: { type: 'json', description: 'Array of dependency slugs' },
|
|
291
|
+
compatibleWith: { type: 'json', description: 'Array of project slugs (or ["all"])' },
|
|
292
|
+
tags: { type: 'json', description: 'Array of string tags' },
|
|
293
|
+
usageNotes: { type: 'string', description: 'Usage guidance', nullable: true },
|
|
294
|
+
author: { type: 'string', description: 'Author name', nullable: true },
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
// ── Products ──────────────────────────────────────────────────────
|
|
298
|
+
product_repos: {
|
|
299
|
+
basePath: '/products/repos/lookup',
|
|
300
|
+
description: 'Look up which DainOS product(s) are linked to a GitHub repository.',
|
|
301
|
+
operations: ['list'],
|
|
302
|
+
fields: {
|
|
303
|
+
owner: { type: 'string', description: 'GitHub org/username', filterable: true, writable: false, required: true },
|
|
304
|
+
repo: { type: 'string', description: 'GitHub repo name', filterable: true, writable: false, required: true },
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
product_task_summary: {
|
|
308
|
+
basePath: '/tasks/summary',
|
|
309
|
+
description: 'Task status counts + active tasks for a product across all linked projects.',
|
|
310
|
+
parentIdParam: 'productId',
|
|
311
|
+
nestedBasePath: '/products/${parentId}/tasks/summary',
|
|
312
|
+
singleton: true,
|
|
313
|
+
operations: ['get'],
|
|
314
|
+
fields: {
|
|
315
|
+
productId: { type: 'uuid', description: 'Product UUID', writable: false },
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
// ── PR Review ─────────────────────────────────────────────────────
|
|
319
|
+
pr_review_findings: {
|
|
320
|
+
basePath: '/pr-review/findings/unscored',
|
|
321
|
+
description: 'PR review findings awaiting verdict scoring.',
|
|
322
|
+
operations: ['list'],
|
|
323
|
+
fields: {
|
|
324
|
+
repo: { type: 'string', description: 'Full repo path, e.g. "dain-agency/dain-os"', filterable: true, writable: false, required: true },
|
|
325
|
+
prNumber: { type: 'number', description: 'PR number', filterable: true, writable: false, required: true },
|
|
326
|
+
scoredBy: { type: 'uuid', description: 'Scorer user UUID', filterable: true, writable: false, required: true },
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
};
|
|
330
|
+
/** Serialize registry for describe_schema output, stripping non-serializable hooks. */
|
|
331
|
+
export function serializeRegistry(resources) {
|
|
332
|
+
const source = resources ?? RESOURCES;
|
|
333
|
+
const out = {};
|
|
334
|
+
for (const [name, def] of Object.entries(source)) {
|
|
335
|
+
const { afterFetch: _af, ...serializable } = def;
|
|
336
|
+
out[name] = serializable;
|
|
337
|
+
}
|
|
338
|
+
return out;
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cadence semantic tools — sprint feed, progress reporting, blocking.
|
|
3
|
+
* All four tools carry real business logic (audit trail writes, state machines).
|
|
4
|
+
*/
|
|
5
|
+
import type { ToolDefinition } from '../types.js';
|
|
6
|
+
export declare const cadenceSemanticTools: ToolDefinition[];
|
|
7
|
+
//# sourceMappingURL=cadence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cadence.d.ts","sourceRoot":"","sources":["../../../src/tools/semantic/cadence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAoHlD,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAKhD,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cadence semantic tools — sprint feed, progress reporting, blocking.
|
|
3
|
+
* All four tools carry real business logic (audit trail writes, state machines).
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
const claimNextTask = {
|
|
7
|
+
name: 'claim_next_task',
|
|
8
|
+
description: 'Fetch the highest-ranked open task from the Cadence sprint feed. ' +
|
|
9
|
+
'Returns the task with its Cadence ranking rationale and score. ' +
|
|
10
|
+
'Call at the start of an autonomous work session to find what to work on next.',
|
|
11
|
+
inputSchema: z.object({
|
|
12
|
+
sprintId: z.string().uuid().optional().describe('Restrict to a specific sprint.'),
|
|
13
|
+
projectId: z.string().uuid().optional().describe('Restrict to a specific project.'),
|
|
14
|
+
assigneeId: z.string().uuid().optional().describe('Restrict to a specific assignee.'),
|
|
15
|
+
client: z.string().max(100).optional().describe('Caller identity for audit trail.'),
|
|
16
|
+
}),
|
|
17
|
+
handler: async (client, input) => {
|
|
18
|
+
const params = new URLSearchParams();
|
|
19
|
+
if (input.sprintId)
|
|
20
|
+
params.set('sprintId', input.sprintId);
|
|
21
|
+
if (input.projectId)
|
|
22
|
+
params.set('projectId', input.projectId);
|
|
23
|
+
if (input.assigneeId)
|
|
24
|
+
params.set('assigneeId', input.assigneeId);
|
|
25
|
+
const query = params.toString() ? `?${params.toString()}` : '';
|
|
26
|
+
return client.get(`/cadence/feed/next-task${query}`);
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
const reportTaskProgress = {
|
|
30
|
+
name: 'report_task_progress',
|
|
31
|
+
description: 'Append a one-line progress note to a task and record it in the Cadence audit trail. ' +
|
|
32
|
+
'The note is written to the AI progress log section in the task description and creates ' +
|
|
33
|
+
'a cadence_actions row for the sprint timeline.',
|
|
34
|
+
inputSchema: z.object({
|
|
35
|
+
taskId: z.string().uuid(),
|
|
36
|
+
note: z.string().min(1).max(500).describe('One-line progress note.'),
|
|
37
|
+
client: z.string().max(100).optional().describe('Caller identity for audit trail.'),
|
|
38
|
+
}),
|
|
39
|
+
handler: async (client, input) => {
|
|
40
|
+
const task = await client.get(`/tasks/${input.taskId}`);
|
|
41
|
+
const now = new Date().toISOString();
|
|
42
|
+
const clientLabel = input.client ?? 'mcp-agent';
|
|
43
|
+
const newLine = `[${now}] (${clientLabel}) ${input.note}`;
|
|
44
|
+
const BEGIN_MARKER = '<!-- BEGIN AI-PROGRESS-LOG -->';
|
|
45
|
+
const END_MARKER = '<!-- END AI-PROGRESS-LOG -->';
|
|
46
|
+
const existing = task.description ?? '';
|
|
47
|
+
let updatedDescription;
|
|
48
|
+
if (existing.includes(BEGIN_MARKER) && existing.includes(END_MARKER)) {
|
|
49
|
+
updatedDescription = existing.replace(END_MARKER, `${newLine}\n${END_MARKER}`);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
updatedDescription = existing.trimEnd() + `\n\n${BEGIN_MARKER}\n${newLine}\n${END_MARKER}`;
|
|
53
|
+
}
|
|
54
|
+
await client.put(`/tasks/${input.taskId}`, { description: updatedDescription });
|
|
55
|
+
await client.post('/cadence/actions', {
|
|
56
|
+
actionType: 'progress_note',
|
|
57
|
+
targetType: 'task',
|
|
58
|
+
targetId: input.taskId,
|
|
59
|
+
rationale: input.note,
|
|
60
|
+
payload: { via: 'mcp', client: clientLabel, timestamp: now },
|
|
61
|
+
});
|
|
62
|
+
return { success: true, taskId: input.taskId, note: input.note };
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
const markBlocked = {
|
|
66
|
+
name: 'mark_blocked',
|
|
67
|
+
description: 'Mark a task as blocked and record the reason in the Cadence audit trail. ' +
|
|
68
|
+
'The reason must be specific enough for a human to act on.',
|
|
69
|
+
inputSchema: z.object({
|
|
70
|
+
taskId: z.string().uuid(),
|
|
71
|
+
reason: z.string().min(1).max(500).describe('Plain English blocker description.'),
|
|
72
|
+
client: z.string().max(100).optional().describe('Caller identity for audit trail.'),
|
|
73
|
+
}),
|
|
74
|
+
handler: async (client, input) => {
|
|
75
|
+
const clientLabel = input.client ?? 'mcp-agent';
|
|
76
|
+
const now = new Date().toISOString();
|
|
77
|
+
await client.put(`/tasks/${input.taskId}`, { status: 'blocked' });
|
|
78
|
+
await client.post('/cadence/actions', {
|
|
79
|
+
actionType: 'mark_blocked',
|
|
80
|
+
targetType: 'task',
|
|
81
|
+
targetId: input.taskId,
|
|
82
|
+
rationale: input.reason,
|
|
83
|
+
payload: { via: 'mcp', client: clientLabel, timestamp: now, reason: input.reason },
|
|
84
|
+
});
|
|
85
|
+
return { success: true, taskId: input.taskId, reason: input.reason };
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
const requestUnblock = {
|
|
89
|
+
name: 'request_unblock',
|
|
90
|
+
description: 'Signal that a blocked task needs human attention. Creates a cadence_actions row ' +
|
|
91
|
+
'that surfaces in the next Cadence daily scan. Does not change task status.',
|
|
92
|
+
inputSchema: z.object({
|
|
93
|
+
taskId: z.string().uuid(),
|
|
94
|
+
context: z.string().min(1).max(500).optional().describe('Additional context for the human.'),
|
|
95
|
+
client: z.string().max(100).optional().describe('Caller identity for audit trail.'),
|
|
96
|
+
}),
|
|
97
|
+
handler: async (client, input) => {
|
|
98
|
+
const clientLabel = input.client ?? 'mcp-agent';
|
|
99
|
+
const now = new Date().toISOString();
|
|
100
|
+
await client.post('/cadence/actions', {
|
|
101
|
+
actionType: 'request_unblock',
|
|
102
|
+
targetType: 'task',
|
|
103
|
+
targetId: input.taskId,
|
|
104
|
+
rationale: input.context ?? 'Agent requested human unblock.',
|
|
105
|
+
payload: { via: 'mcp', client: clientLabel, timestamp: now, context: input.context ?? null },
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
success: true,
|
|
109
|
+
taskId: input.taskId,
|
|
110
|
+
message: 'Unblock request recorded. The next Cadence daily scan will surface this task.',
|
|
111
|
+
};
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
export const cadenceSemanticTools = [
|
|
115
|
+
claimNextTask,
|
|
116
|
+
reportTaskProgress,
|
|
117
|
+
markBlocked,
|
|
118
|
+
requestUnblock,
|
|
119
|
+
];
|
|
120
|
+
//# sourceMappingURL=cadence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cadence.js","sourceRoot":"","sources":["../../../src/tools/semantic/cadence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Developer semantic tools — batch writes with preprocessing that
|
|
3
|
+
* doesn't fit the generic mutate pattern.
|
|
4
|
+
*/
|
|
5
|
+
import type { ToolDefinition } from '../types.js';
|
|
6
|
+
export declare const developerSemanticTools: ToolDefinition[];
|
|
7
|
+
//# sourceMappingURL=developer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"developer.d.ts","sourceRoot":"","sources":["../../../src/tools/semantic/developer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA6JlD,eAAO,MAAM,sBAAsB,EAAE,cAAc,EAKlD,CAAC"}
|