@dobbyai/mcp-external 1.1.0 → 1.2.0

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 (289) hide show
  1. package/README.md +44 -14
  2. package/dist/__tests__/agent-mail-tools.test.js +19 -26
  3. package/dist/__tests__/agent-mail-tools.test.js.map +1 -1
  4. package/dist/__tests__/auth.test.js +50 -5
  5. package/dist/__tests__/auth.test.js.map +1 -1
  6. package/dist/__tests__/doctor.test.d.ts +16 -0
  7. package/dist/__tests__/doctor.test.d.ts.map +1 -0
  8. package/dist/__tests__/doctor.test.js +258 -0
  9. package/dist/__tests__/doctor.test.js.map +1 -0
  10. package/dist/__tests__/external-agents-tools.test.d.ts +11 -0
  11. package/dist/__tests__/external-agents-tools.test.d.ts.map +1 -0
  12. package/dist/__tests__/external-agents-tools.test.js +619 -0
  13. package/dist/__tests__/external-agents-tools.test.js.map +1 -0
  14. package/dist/__tests__/gateway-bearer.test.d.ts +12 -0
  15. package/dist/__tests__/gateway-bearer.test.d.ts.map +1 -0
  16. package/dist/__tests__/gateway-bearer.test.js +112 -0
  17. package/dist/__tests__/gateway-bearer.test.js.map +1 -0
  18. package/dist/__tests__/gateway-key-resolver.test.d.ts +10 -0
  19. package/dist/__tests__/gateway-key-resolver.test.d.ts.map +1 -0
  20. package/dist/__tests__/gateway-key-resolver.test.js +125 -0
  21. package/dist/__tests__/gateway-key-resolver.test.js.map +1 -0
  22. package/dist/__tests__/http-concurrency.test.d.ts +20 -0
  23. package/dist/__tests__/http-concurrency.test.d.ts.map +1 -0
  24. package/dist/__tests__/http-concurrency.test.js +254 -0
  25. package/dist/__tests__/http-concurrency.test.js.map +1 -0
  26. package/dist/__tests__/integration/protocol.test.js +14 -8
  27. package/dist/__tests__/integration/protocol.test.js.map +1 -1
  28. package/dist/__tests__/mcp-integrations.test.js +20 -30
  29. package/dist/__tests__/mcp-integrations.test.js.map +1 -1
  30. package/dist/__tests__/memory-graph-tools.test.js +27 -38
  31. package/dist/__tests__/memory-graph-tools.test.js.map +1 -1
  32. package/dist/__tests__/registry-dispatch.test.d.ts +11 -0
  33. package/dist/__tests__/registry-dispatch.test.d.ts.map +1 -0
  34. package/dist/__tests__/registry-dispatch.test.js +30 -0
  35. package/dist/__tests__/registry-dispatch.test.js.map +1 -0
  36. package/dist/__tests__/registry-listing-parity.test.d.ts +2 -0
  37. package/dist/__tests__/registry-listing-parity.test.d.ts.map +1 -0
  38. package/dist/__tests__/registry-listing-parity.test.js +89 -0
  39. package/dist/__tests__/registry-listing-parity.test.js.map +1 -0
  40. package/dist/__tests__/role-cap.test.d.ts +2 -0
  41. package/dist/__tests__/role-cap.test.d.ts.map +1 -0
  42. package/dist/__tests__/role-cap.test.js +113 -0
  43. package/dist/__tests__/role-cap.test.js.map +1 -0
  44. package/dist/__tests__/schedule-tools.test.js +15 -20
  45. package/dist/__tests__/schedule-tools.test.js.map +1 -1
  46. package/dist/__tests__/server-gateway-key.test.d.ts +18 -0
  47. package/dist/__tests__/server-gateway-key.test.d.ts.map +1 -0
  48. package/dist/__tests__/server-gateway-key.test.js +148 -0
  49. package/dist/__tests__/server-gateway-key.test.js.map +1 -0
  50. package/dist/__tests__/server-user-scoped.test.d.ts +34 -0
  51. package/dist/__tests__/server-user-scoped.test.d.ts.map +1 -0
  52. package/dist/__tests__/server-user-scoped.test.js +577 -0
  53. package/dist/__tests__/server-user-scoped.test.js.map +1 -0
  54. package/dist/__tests__/task-id-pattern.test.d.ts +12 -0
  55. package/dist/__tests__/task-id-pattern.test.d.ts.map +1 -0
  56. package/dist/__tests__/task-id-pattern.test.js +43 -0
  57. package/dist/__tests__/task-id-pattern.test.js.map +1 -0
  58. package/dist/__tests__/tiers.test.js +152 -56
  59. package/dist/__tests__/tiers.test.js.map +1 -1
  60. package/dist/__tests__/tools/hosted-agents.test.d.ts +9 -0
  61. package/dist/__tests__/tools/hosted-agents.test.d.ts.map +1 -0
  62. package/dist/__tests__/tools/hosted-agents.test.js +301 -0
  63. package/dist/__tests__/tools/hosted-agents.test.js.map +1 -0
  64. package/dist/__tests__/tools/llm-providers.test.d.ts +10 -0
  65. package/dist/__tests__/tools/llm-providers.test.d.ts.map +1 -0
  66. package/dist/__tests__/tools/llm-providers.test.js +105 -0
  67. package/dist/__tests__/tools/llm-providers.test.js.map +1 -0
  68. package/dist/__tests__/tools/services.test.js +139 -98
  69. package/dist/__tests__/tools/services.test.js.map +1 -1
  70. package/dist/__tests__/tools.test.js +24 -15
  71. package/dist/__tests__/tools.test.js.map +1 -1
  72. package/dist/__tests__/transport.test.js +365 -23
  73. package/dist/__tests__/transport.test.js.map +1 -1
  74. package/dist/__tests__/validate-credentials.test.d.ts +9 -0
  75. package/dist/__tests__/validate-credentials.test.d.ts.map +1 -0
  76. package/dist/__tests__/validate-credentials.test.js +172 -0
  77. package/dist/__tests__/validate-credentials.test.js.map +1 -0
  78. package/dist/__tests__/web-eval-tools.test.js +21 -32
  79. package/dist/__tests__/web-eval-tools.test.js.map +1 -1
  80. package/dist/__tests__/whoami.test.d.ts +11 -0
  81. package/dist/__tests__/whoami.test.d.ts.map +1 -0
  82. package/dist/__tests__/whoami.test.js +194 -0
  83. package/dist/__tests__/whoami.test.js.map +1 -0
  84. package/dist/__tests__/workflow-tools.test.js +20 -27
  85. package/dist/__tests__/workflow-tools.test.js.map +1 -1
  86. package/dist/__tests__/workloads.test.d.ts +9 -0
  87. package/dist/__tests__/workloads.test.d.ts.map +1 -0
  88. package/dist/__tests__/workloads.test.js +169 -0
  89. package/dist/__tests__/workloads.test.js.map +1 -0
  90. package/dist/auth/token-verifier.d.ts +11 -6
  91. package/dist/auth/token-verifier.d.ts.map +1 -1
  92. package/dist/auth/token-verifier.js +41 -19
  93. package/dist/auth/token-verifier.js.map +1 -1
  94. package/dist/connectors/claude-desktop.d.ts.map +1 -1
  95. package/dist/connectors/claude-desktop.js +3 -2
  96. package/dist/connectors/claude-desktop.js.map +1 -1
  97. package/dist/connectors/cursor.d.ts.map +1 -1
  98. package/dist/connectors/cursor.js +3 -2
  99. package/dist/connectors/cursor.js.map +1 -1
  100. package/dist/connectors/setup.d.ts.map +1 -1
  101. package/dist/connectors/setup.js +2 -1
  102. package/dist/connectors/setup.js.map +1 -1
  103. package/dist/connectors/vscode.d.ts.map +1 -1
  104. package/dist/connectors/vscode.js +3 -2
  105. package/dist/connectors/vscode.js.map +1 -1
  106. package/dist/connectors/windsurf.d.ts.map +1 -1
  107. package/dist/connectors/windsurf.js +3 -2
  108. package/dist/connectors/windsurf.js.map +1 -1
  109. package/dist/doctor.d.ts +34 -0
  110. package/dist/doctor.d.ts.map +1 -0
  111. package/dist/doctor.js +134 -0
  112. package/dist/doctor.js.map +1 -0
  113. package/dist/http-server.d.ts +24 -3
  114. package/dist/http-server.d.ts.map +1 -1
  115. package/dist/http-server.js +342 -62
  116. package/dist/http-server.js.map +1 -1
  117. package/dist/index.d.ts +5 -1
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +72 -208
  120. package/dist/index.js.map +1 -1
  121. package/dist/lib/consts.d.ts +21 -0
  122. package/dist/lib/consts.d.ts.map +1 -0
  123. package/dist/lib/consts.js +30 -0
  124. package/dist/lib/consts.js.map +1 -0
  125. package/dist/lib/dobby-client.d.ts +50 -23
  126. package/dist/lib/dobby-client.d.ts.map +1 -1
  127. package/dist/lib/dobby-client.js +105 -54
  128. package/dist/lib/dobby-client.js.map +1 -1
  129. package/dist/lib/gateway-key-resolver.d.ts +38 -0
  130. package/dist/lib/gateway-key-resolver.d.ts.map +1 -0
  131. package/dist/lib/gateway-key-resolver.js +59 -0
  132. package/dist/lib/gateway-key-resolver.js.map +1 -0
  133. package/dist/lib/log.d.ts +25 -0
  134. package/dist/lib/log.d.ts.map +1 -0
  135. package/dist/lib/log.js +36 -0
  136. package/dist/lib/log.js.map +1 -0
  137. package/dist/server.d.ts +175 -0
  138. package/dist/server.d.ts.map +1 -0
  139. package/dist/server.js +1017 -0
  140. package/dist/server.js.map +1 -0
  141. package/dist/tools/agent-mail.d.ts +0 -41
  142. package/dist/tools/agent-mail.d.ts.map +1 -1
  143. package/dist/tools/agent-mail.js +0 -222
  144. package/dist/tools/agent-mail.js.map +1 -1
  145. package/dist/tools/agent-versions.d.ts +93 -0
  146. package/dist/tools/agent-versions.d.ts.map +1 -0
  147. package/dist/tools/agent-versions.js +99 -0
  148. package/dist/tools/agent-versions.js.map +1 -0
  149. package/dist/tools/approvals.d.ts +0 -34
  150. package/dist/tools/approvals.d.ts.map +1 -1
  151. package/dist/tools/approvals.js +0 -81
  152. package/dist/tools/approvals.js.map +1 -1
  153. package/dist/tools/claude-code-sync.d.ts +40 -0
  154. package/dist/tools/claude-code-sync.d.ts.map +1 -0
  155. package/dist/tools/claude-code-sync.js +52 -0
  156. package/dist/tools/claude-code-sync.js.map +1 -0
  157. package/dist/tools/control-plane.d.ts +118 -0
  158. package/dist/tools/control-plane.d.ts.map +1 -0
  159. package/dist/tools/control-plane.js +135 -0
  160. package/dist/tools/control-plane.js.map +1 -0
  161. package/dist/tools/crew-builder.d.ts +0 -66
  162. package/dist/tools/crew-builder.d.ts.map +1 -1
  163. package/dist/tools/crew-builder.js +0 -185
  164. package/dist/tools/crew-builder.js.map +1 -1
  165. package/dist/tools/crewai.d.ts +0 -63
  166. package/dist/tools/crewai.d.ts.map +1 -1
  167. package/dist/tools/crewai.js +0 -145
  168. package/dist/tools/crewai.js.map +1 -1
  169. package/dist/tools/exa.d.ts +0 -35
  170. package/dist/tools/exa.d.ts.map +1 -1
  171. package/dist/tools/exa.js +0 -103
  172. package/dist/tools/exa.js.map +1 -1
  173. package/dist/tools/external-agents.d.ts +440 -0
  174. package/dist/tools/external-agents.d.ts.map +1 -0
  175. package/dist/tools/external-agents.js +386 -0
  176. package/dist/tools/external-agents.js.map +1 -0
  177. package/dist/tools/github-mcp.d.ts +0 -75
  178. package/dist/tools/github-mcp.d.ts.map +1 -1
  179. package/dist/tools/github-mcp.js +0 -162
  180. package/dist/tools/github-mcp.js.map +1 -1
  181. package/dist/tools/governance.d.ts +162 -18
  182. package/dist/tools/governance.d.ts.map +1 -1
  183. package/dist/tools/governance.js +208 -93
  184. package/dist/tools/governance.js.map +1 -1
  185. package/dist/tools/hosted-agents.d.ts +216 -0
  186. package/dist/tools/hosted-agents.d.ts.map +1 -0
  187. package/dist/tools/hosted-agents.js +214 -0
  188. package/dist/tools/hosted-agents.js.map +1 -0
  189. package/dist/tools/index.d.ts +3933 -1219
  190. package/dist/tools/index.d.ts.map +1 -1
  191. package/dist/tools/index.js +412 -393
  192. package/dist/tools/index.js.map +1 -1
  193. package/dist/tools/jira.d.ts +0 -176
  194. package/dist/tools/jira.d.ts.map +1 -1
  195. package/dist/tools/jira.js +0 -365
  196. package/dist/tools/jira.js.map +1 -1
  197. package/dist/tools/llm-providers.d.ts +50 -0
  198. package/dist/tools/llm-providers.d.ts.map +1 -0
  199. package/dist/tools/llm-providers.js +41 -0
  200. package/dist/tools/llm-providers.js.map +1 -0
  201. package/dist/tools/mcp-metrics.d.ts +0 -15
  202. package/dist/tools/mcp-metrics.d.ts.map +1 -1
  203. package/dist/tools/mcp-metrics.js +0 -217
  204. package/dist/tools/mcp-metrics.js.map +1 -1
  205. package/dist/tools/mcp-tools.d.ts +0 -29
  206. package/dist/tools/mcp-tools.d.ts.map +1 -1
  207. package/dist/tools/mcp-tools.js +0 -131
  208. package/dist/tools/mcp-tools.js.map +1 -1
  209. package/dist/tools/mem0.d.ts +0 -41
  210. package/dist/tools/mem0.d.ts.map +1 -1
  211. package/dist/tools/mem0.js +65 -165
  212. package/dist/tools/mem0.js.map +1 -1
  213. package/dist/tools/memory-graph.d.ts +0 -46
  214. package/dist/tools/memory-graph.d.ts.map +1 -1
  215. package/dist/tools/memory-graph.js +0 -386
  216. package/dist/tools/memory-graph.js.map +1 -1
  217. package/dist/tools/memory-stores.d.ts +141 -0
  218. package/dist/tools/memory-stores.d.ts.map +1 -0
  219. package/dist/tools/memory-stores.js +147 -0
  220. package/dist/tools/memory-stores.js.map +1 -0
  221. package/dist/tools/messages.d.ts +0 -20
  222. package/dist/tools/messages.d.ts.map +1 -1
  223. package/dist/tools/messages.js +0 -49
  224. package/dist/tools/messages.js.map +1 -1
  225. package/dist/tools/moltbook.d.ts +0 -236
  226. package/dist/tools/moltbook.d.ts.map +1 -1
  227. package/dist/tools/moltbook.js +0 -458
  228. package/dist/tools/moltbook.js.map +1 -1
  229. package/dist/tools/monitoring-attribution.d.ts +71 -0
  230. package/dist/tools/monitoring-attribution.d.ts.map +1 -0
  231. package/dist/tools/monitoring-attribution.js +74 -0
  232. package/dist/tools/monitoring-attribution.js.map +1 -0
  233. package/dist/tools/ops.d.ts +0 -80
  234. package/dist/tools/ops.d.ts.map +1 -1
  235. package/dist/tools/ops.js +0 -209
  236. package/dist/tools/ops.js.map +1 -1
  237. package/dist/tools/orchestrations.d.ts +109 -0
  238. package/dist/tools/orchestrations.d.ts.map +1 -0
  239. package/dist/tools/orchestrations.js +115 -0
  240. package/dist/tools/orchestrations.js.map +1 -0
  241. package/dist/tools/outcomes.d.ts +138 -0
  242. package/dist/tools/outcomes.d.ts.map +1 -0
  243. package/dist/tools/outcomes.js +136 -0
  244. package/dist/tools/outcomes.js.map +1 -0
  245. package/dist/tools/schedules.d.ts +0 -47
  246. package/dist/tools/schedules.d.ts.map +1 -1
  247. package/dist/tools/schedules.js +0 -109
  248. package/dist/tools/schedules.js.map +1 -1
  249. package/dist/tools/services.d.ts +0 -16
  250. package/dist/tools/services.d.ts.map +1 -1
  251. package/dist/tools/services.js +0 -135
  252. package/dist/tools/services.js.map +1 -1
  253. package/dist/tools/sessions.d.ts +124 -0
  254. package/dist/tools/sessions.d.ts.map +1 -0
  255. package/dist/tools/sessions.js +130 -0
  256. package/dist/tools/sessions.js.map +1 -0
  257. package/dist/tools/setup-status.d.ts +29 -0
  258. package/dist/tools/setup-status.d.ts.map +1 -0
  259. package/dist/tools/setup-status.js +35 -0
  260. package/dist/tools/setup-status.js.map +1 -0
  261. package/dist/tools/tasks.d.ts +0 -57
  262. package/dist/tools/tasks.d.ts.map +1 -1
  263. package/dist/tools/tasks.js +8 -217
  264. package/dist/tools/tasks.js.map +1 -1
  265. package/dist/tools/tiers.d.ts +23 -7
  266. package/dist/tools/tiers.d.ts.map +1 -1
  267. package/dist/tools/tiers.js +180 -79
  268. package/dist/tools/tiers.js.map +1 -1
  269. package/dist/tools/unified-agents.d.ts +0 -19
  270. package/dist/tools/unified-agents.d.ts.map +1 -1
  271. package/dist/tools/unified-agents.js +2 -103
  272. package/dist/tools/unified-agents.js.map +1 -1
  273. package/dist/tools/web-eval.d.ts +0 -43
  274. package/dist/tools/web-eval.d.ts.map +1 -1
  275. package/dist/tools/web-eval.js +0 -211
  276. package/dist/tools/web-eval.js.map +1 -1
  277. package/dist/tools/workflow.d.ts +0 -66
  278. package/dist/tools/workflow.d.ts.map +1 -1
  279. package/dist/tools/workflow.js +2 -409
  280. package/dist/tools/workflow.js.map +1 -1
  281. package/dist/tools/workloads.d.ts +81 -0
  282. package/dist/tools/workloads.d.ts.map +1 -0
  283. package/dist/tools/workloads.js +81 -0
  284. package/dist/tools/workloads.js.map +1 -0
  285. package/package.json +7 -6
  286. package/dist/tools/knowledge-base.d.ts +0 -144
  287. package/dist/tools/knowledge-base.d.ts.map +0 -1
  288. package/dist/tools/knowledge-base.js +0 -179
  289. package/dist/tools/knowledge-base.js.map +0 -1
@@ -90,8 +90,8 @@ export const taskTools = {
90
90
  properties: {
91
91
  task_id: {
92
92
  type: 'string',
93
- description: 'The task ID to retrieve (format: task_xxxxx)',
94
- pattern: '^task_[a-zA-Z0-9_-]+$',
93
+ description: 'The task ID to retrieve (as returned by create_task or list_tasks, e.g. task-1784122598603-abc123)',
94
+ pattern: '^[a-zA-Z0-9][a-zA-Z0-9_-]*$',
95
95
  },
96
96
  },
97
97
  required: ['task_id'],
@@ -112,8 +112,8 @@ export const taskTools = {
112
112
  properties: {
113
113
  task_id: {
114
114
  type: 'string',
115
- description: 'The task ID to update (format: task_xxxxx)',
116
- pattern: '^task_[a-zA-Z0-9_-]+$',
115
+ description: 'The task ID to update (as returned by create_task or list_tasks, e.g. task-1784122598603-abc123)',
116
+ pattern: '^[a-zA-Z0-9][a-zA-Z0-9_-]*$',
117
117
  },
118
118
  status: {
119
119
  type: 'string',
@@ -144,8 +144,8 @@ export const taskTools = {
144
144
  properties: {
145
145
  task_id: {
146
146
  type: 'string',
147
- description: 'The task ID to get timeline for (format: task_xxxxx)',
148
- pattern: '^task_[a-zA-Z0-9_-]+$',
147
+ description: 'The task ID to get timeline for (as returned by create_task or list_tasks, e.g. task-1784122598603-abc123)',
148
+ pattern: '^[a-zA-Z0-9][a-zA-Z0-9_-]*$',
149
149
  },
150
150
  },
151
151
  required: ['task_id'],
@@ -166,8 +166,8 @@ export const taskTools = {
166
166
  properties: {
167
167
  task_id: {
168
168
  type: 'string',
169
- description: 'The task ID to cancel (format: task_xxxxx)',
170
- pattern: '^task_[a-zA-Z0-9_-]+$',
169
+ description: 'The task ID to cancel (as returned by create_task or list_tasks, e.g. task-1784122598603-abc123)',
170
+ pattern: '^[a-zA-Z0-9][a-zA-Z0-9_-]*$',
171
171
  },
172
172
  },
173
173
  required: ['task_id'],
@@ -177,213 +177,4 @@ export const taskTools = {
177
177
  // ============================================
178
178
  // Tool Handlers
179
179
  // ============================================
180
- export async function handleCreateTask(client, args) {
181
- const result = await client.createTask({
182
- title: args.title,
183
- description: args.description,
184
- priority: args.priority || 'medium',
185
- link_to_task_id: args.link_to_task_id,
186
- });
187
- return {
188
- content: [
189
- {
190
- type: 'text',
191
- text: `✅ Task created successfully!\n\nTask ID: ${result.task_id}\nTitle: ${args.title}\nPriority: ${args.priority || 'medium'}\n\nThe task has been added to the queue. AI agents will start working on it soon.`,
192
- },
193
- ],
194
- };
195
- }
196
- export async function handleListTasks(client, args) {
197
- const tasks = await client.listTasks({
198
- status: args.status === 'all' ? undefined : args.status,
199
- priority: args.priority,
200
- assigned_to: args.assigned_to,
201
- limit: args.limit || 20,
202
- });
203
- if (tasks.length === 0) {
204
- return {
205
- content: [
206
- {
207
- type: 'text',
208
- text: 'No tasks found matching the criteria.',
209
- },
210
- ],
211
- };
212
- }
213
- const taskList = tasks
214
- .map((task, i) => {
215
- const statusEmoji = {
216
- pending: '⏳',
217
- in_progress: '🔄',
218
- completed: '✅',
219
- failed: '❌',
220
- cancelled: '🚫',
221
- }[task.status] || '❓';
222
- const priorityEmoji = {
223
- high: '🔴',
224
- medium: '🟡',
225
- low: '🟢',
226
- }[task.priority || 'medium'] || '';
227
- return `${i + 1}. ${statusEmoji} ${priorityEmoji} **${task.title}**\n ID: \`${task.task_id}\`\n Status: ${task.status}${task.pr_url ? `\n PR: ${task.pr_url}` : ''}`;
228
- })
229
- .join('\n\n');
230
- return {
231
- content: [
232
- {
233
- type: 'text',
234
- text: `Found ${tasks.length} task(s):\n\n${taskList}`,
235
- },
236
- ],
237
- };
238
- }
239
- export async function handleGetTask(client, args) {
240
- const task = await client.getTask(args.task_id);
241
- if (!task) {
242
- return {
243
- content: [
244
- {
245
- type: 'text',
246
- text: `❌ Task not found: ${args.task_id}`,
247
- },
248
- ],
249
- };
250
- }
251
- const statusEmoji = {
252
- pending: '⏳',
253
- in_progress: '🔄',
254
- completed: '✅',
255
- failed: '❌',
256
- cancelled: '🚫',
257
- }[task.status] || '❓';
258
- let details = `# ${statusEmoji} ${task.title}\n\n`;
259
- details += `**Task ID:** \`${task.task_id}\`\n`;
260
- details += `**Status:** ${task.status}\n`;
261
- details += `**Priority:** ${task.priority || 'medium'}\n`;
262
- details += `**Created:** ${task.created_at}\n`;
263
- details += `**Updated:** ${task.updated_at}\n`;
264
- if (task.description) {
265
- details += `\n## Description\n${task.description}\n`;
266
- }
267
- if (task.pr_url) {
268
- details += `\n## Pull Request\n${task.pr_url}\n`;
269
- }
270
- if (task.branch_name) {
271
- details += `**Branch:** ${task.branch_name}\n`;
272
- }
273
- if (task.result_summary) {
274
- details += `\n## Result Summary\n${task.result_summary}\n`;
275
- }
276
- return {
277
- content: [
278
- {
279
- type: 'text',
280
- text: details,
281
- },
282
- ],
283
- };
284
- }
285
- export async function handleUpdateTask(client, args) {
286
- await client.updateTask(args.task_id, {
287
- status: args.status,
288
- priority: args.priority,
289
- });
290
- const updates = [];
291
- if (args.status)
292
- updates.push(`Status → ${args.status}`);
293
- if (args.priority)
294
- updates.push(`Priority → ${args.priority}`);
295
- return {
296
- content: [
297
- {
298
- type: 'text',
299
- text: `✅ Task ${args.task_id} updated:\n${updates.join('\n')}`,
300
- },
301
- ],
302
- };
303
- }
304
- export async function handleGetTaskTimeline(client, args) {
305
- const timeline = await client.getTaskTimeline(args.task_id);
306
- if (timeline.length === 0) {
307
- return {
308
- content: [
309
- {
310
- type: 'text',
311
- text: `No timeline events found for task ${args.task_id}`,
312
- },
313
- ],
314
- };
315
- }
316
- const eventEmojis = {
317
- 'task_created': '🆕',
318
- 'status_changed': '🔄',
319
- 'plan_created': '📋',
320
- 'subtask_started': '▶️',
321
- 'subtask_completed': '✅',
322
- 'code_generated': '💻',
323
- 'frontend_code_generated': '🎨',
324
- 'tests_run': '🧪',
325
- 'pr_created': '📝',
326
- 'pr_merged': '🔀',
327
- 'approval_requested': '⏳',
328
- 'approval_approved': '✅',
329
- 'approval_rejected': '❌',
330
- 'agent_continuation_triggered': '🚀',
331
- 'continuation_after_approval_completed': '🎉',
332
- 'agent_retry_triggered': '🔁',
333
- 'retry_after_rejection_completed': '✨',
334
- 'execution_cancelled': '🛑',
335
- };
336
- const timelineText = timeline
337
- .slice(0, 20) // Limit to last 20 events
338
- .map((event) => {
339
- const emoji = eventEmojis[event.event_type] || '📌';
340
- const time = new Date(event.created_at).toLocaleString();
341
- const agent = event.agent_name ? ` (${event.agent_name})` : '';
342
- let details = '';
343
- if (event.details && typeof event.details === 'object') {
344
- const d = event.details;
345
- if (d.new_status)
346
- details = ` → ${d.new_status}`;
347
- if (d.pr_number)
348
- details = ` PR #${d.pr_number}`;
349
- if (d.error)
350
- details = ` Error: ${d.error}`;
351
- if (d.feedback)
352
- details = ` Feedback: "${d.feedback.slice(0, 50)}..."`;
353
- }
354
- return `${emoji} **${event.event_type.replace(/_/g, ' ')}**${agent}${details}\n ${time}`;
355
- })
356
- .join('\n\n');
357
- return {
358
- content: [
359
- {
360
- type: 'text',
361
- text: `# 📊 Timeline for Task ${args.task_id}\n\n${timelineText}`,
362
- },
363
- ],
364
- };
365
- }
366
- export async function handleCancelTask(client, args) {
367
- const result = await client.cancelTaskExecution(args.task_id);
368
- if (result.success) {
369
- return {
370
- content: [
371
- {
372
- type: 'text',
373
- text: `🛑 Task ${args.task_id} execution cancelled successfully.\n\nThe task status has been reverted to pending.`,
374
- },
375
- ],
376
- };
377
- }
378
- else {
379
- return {
380
- content: [
381
- {
382
- type: 'text',
383
- text: `⚠️ Could not cancel task ${args.task_id}.\n\n${result.message || 'Task may not be running or was already completed.'}`,
384
- },
385
- ],
386
- };
387
- }
388
- }
389
180
  //# sourceMappingURL=tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,28 @@
2
2
  * Tool Tier Filtering System
3
3
  *
4
4
  * Defines which tools are available at each subscription tier.
5
- * MVP (22 tools) — works immediately after OAuth, no extra setup.
6
- * Pro (50 tools) — adds integrations requiring customer API keys.
7
- * Enterprise (all tools) — everything including advanced AI features.
5
+ * MVP — works immediately after OAuth, no extra setup.
6
+ * Pro — adds integrations requiring customer API keys.
7
+ * Enterprise — everything, including tools absent from both allowlists below.
8
8
  *
9
- * Tier ↔ Plan mapping:
10
- * Free / Trial → mvp (22 tools, scope: mcp:read or mcp:execute)
11
- * Pro → pro (50 tools, scope: mcp:pro)
9
+ * Tier ↔ Plan mapping (Gil, 2026-07-12 — enforced end-to-end):
10
+ * Free / Trial → mvp (scope: mcp:read or mcp:execute)
11
+ * Pro / Team → pro (scope: mcp:pro)
12
12
  * Enterprise → enterprise (all tools, scope: mcp:*)
13
+ *
14
+ * The org's PLAN determines the tier for every token family; the token's own
15
+ * scopes only decide read vs execute. The web introspection endpoint
16
+ * (web/app/oauth/token/introspect) derives the effective scope; this module
17
+ * resolves it back to a tier + read-only flag for ListTools/CallTool
18
+ * enforcement in HTTP mode.
19
+ *
20
+ * Exact tier counts are pinned in ONE place — src/__tests__/tiers.test.ts
21
+ * ("tier sizes") — so adding a tool here is a deliberate, test-gated decision.
13
22
  */
14
23
  /** MVP tier: core platform tools that work without extra integration setup */
15
24
  export declare const MVP_TOOLS: readonly string[];
16
25
  export declare const PRO_TOOLS: readonly string[];
17
- export type ToolTier = 'mvp' | 'pro' | 'enterprise';
26
+ export type ToolTier = "mvp" | "pro" | "enterprise";
18
27
  export declare const TOOL_TIERS: Record<ToolTier, readonly string[]>;
19
28
  /**
20
29
  * Resolve the tool tier from an auth context.
@@ -26,6 +35,13 @@ export declare function resolveToolTier(authContext?: {
26
35
  scopes?: string[];
27
36
  plan?: string;
28
37
  }): ToolTier;
38
+ /**
39
+ * Read-only access: the introspection endpoint emits `mcp:read` (instead of
40
+ * `mcp:execute`) for tokens whose every scope ends in `:read`, alongside the
41
+ * plan tier scope (`mcp:pro` / `mcp:*`). Read-only tokens are limited to
42
+ * tools annotated readOnlyHint — on ListTools AND CallTool.
43
+ */
44
+ export declare function isReadOnlyScopes(scopes: string[]): boolean;
29
45
  /**
30
46
  * Filter tools by tier. Enterprise tier returns all tools.
31
47
  * For mvp/pro, returns only tools in that tier's allowlist.
@@ -1 +1 @@
1
- {"version":3,"file":"tiers.d.ts","sourceRoot":"","sources":["../../src/tools/tiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,8EAA8E;AAC9E,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EA6B7B,CAAC;AAuCX,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAAsC,CAAC;AAM9E,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAC;AAEpD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAI1D,CAAC;AAaF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,QAAQ,CAgBX;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,QAAQ,GACb,MAAM,EAAE,CAIV;AAED,mCAAmC;AACnC,eAAO,MAAM,WAAW;;;CAGd,CAAC"}
1
+ {"version":3,"file":"tiers.d.ts","sourceRoot":"","sources":["../../src/tools/tiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,8EAA8E;AAC9E,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAoF7B,CAAC;AAmEX,eAAO,MAAM,SAAS,EAAE,SAAS,MAAM,EAAsC,CAAC;AAM9E,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAC;AAEpD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAI1D,CAAC;AAaF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,QAAQ,CAkBX;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAE1D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,QAAQ,GACb,MAAM,EAAE,CAIV;AAED,mCAAmC;AACnC,eAAO,MAAM,WAAW;;;CAGd,CAAC"}
@@ -2,14 +2,23 @@
2
2
  * Tool Tier Filtering System
3
3
  *
4
4
  * Defines which tools are available at each subscription tier.
5
- * MVP (22 tools) — works immediately after OAuth, no extra setup.
6
- * Pro (50 tools) — adds integrations requiring customer API keys.
7
- * Enterprise (all tools) — everything including advanced AI features.
5
+ * MVP — works immediately after OAuth, no extra setup.
6
+ * Pro — adds integrations requiring customer API keys.
7
+ * Enterprise — everything, including tools absent from both allowlists below.
8
8
  *
9
- * Tier ↔ Plan mapping:
10
- * Free / Trial → mvp (22 tools, scope: mcp:read or mcp:execute)
11
- * Pro → pro (50 tools, scope: mcp:pro)
9
+ * Tier ↔ Plan mapping (Gil, 2026-07-12 — enforced end-to-end):
10
+ * Free / Trial → mvp (scope: mcp:read or mcp:execute)
11
+ * Pro / Team → pro (scope: mcp:pro)
12
12
  * Enterprise → enterprise (all tools, scope: mcp:*)
13
+ *
14
+ * The org's PLAN determines the tier for every token family; the token's own
15
+ * scopes only decide read vs execute. The web introspection endpoint
16
+ * (web/app/oauth/token/introspect) derives the effective scope; this module
17
+ * resolves it back to a tier + read-only flag for ListTools/CallTool
18
+ * enforcement in HTTP mode.
19
+ *
20
+ * Exact tier counts are pinned in ONE place — src/__tests__/tiers.test.ts
21
+ * ("tier sizes") — so adding a tool here is a deliberate, test-gated decision.
13
22
  */
14
23
  // ============================================
15
24
  // Tier Definitions
@@ -17,69 +26,152 @@
17
26
  /** MVP tier: core platform tools that work without extra integration setup */
18
27
  export const MVP_TOOLS = [
19
28
  // Tasks (6)
20
- 'create_task',
21
- 'list_tasks',
22
- 'get_task',
23
- 'update_task',
24
- 'get_task_timeline',
25
- 'cancel_task',
29
+ "create_task",
30
+ "list_tasks",
31
+ "get_task",
32
+ "update_task",
33
+ "get_task_timeline",
34
+ "cancel_task",
26
35
  // Messages (2)
27
- 'get_messages',
28
- 'send_message',
36
+ "get_messages",
37
+ "send_message",
29
38
  // Approvals — HITL (4)
30
- 'get_pending_approvals',
31
- 'approve_task',
32
- 'reject_task',
33
- 'request_changes',
39
+ "get_pending_approvals",
40
+ "approve_task",
41
+ "reject_task",
42
+ "request_changes",
34
43
  // Agent Ops (4)
35
- 'list_all_agents',
36
- 'workflow_classify_task',
37
- 'workflow_auto_assign',
38
- 'workflow_agent_workload',
44
+ "list_all_agents",
45
+ "workflow_classify_task",
46
+ "workflow_auto_assign",
47
+ "workflow_agent_workload",
39
48
  // Schedules (4)
40
- 'create_schedule',
41
- 'list_schedules',
42
- 'pause_schedule',
43
- 'delete_schedule',
49
+ "create_schedule",
50
+ "list_schedules",
51
+ "pause_schedule",
52
+ "delete_schedule",
53
+ // Sessions (4)
54
+ "session_list",
55
+ "session_detail",
56
+ "session_create",
57
+ "session_events",
44
58
  // Discovery (2)
45
- 'list_services',
46
- 'mcp_connection_info',
59
+ "list_services",
60
+ "mcp_connection_info",
61
+ // Workloads (3)
62
+ "list_workloads",
63
+ "create_workload",
64
+ "try_sample_workload",
65
+ // Control Plane (3)
66
+ "list_cp_reports",
67
+ "run_cp_scan",
68
+ "get_cp_config",
69
+ // Monitoring Attribution (2)
70
+ "get_run_attribution",
71
+ "get_monitoring_coverage",
72
+ // Setup Status (1)
73
+ "get_setup_status",
74
+ // Claude Code Sync (1)
75
+ "sync_claude_code_agents",
76
+ // Memory Stores — read (2)
77
+ "memory_store_list",
78
+ "memory_store_search",
79
+ // Agent Versioning — read (2)
80
+ "agent_version_list",
81
+ "agent_version_diff",
82
+ // Orchestration — read (2)
83
+ "orchestration_config_list",
84
+ "orchestration_threads",
85
+ // Outcomes — read (2)
86
+ "rubric_list",
87
+ "outcome_status",
88
+ // External Agents — read (3)
89
+ "list_external_agents",
90
+ "get_external_agent",
91
+ "get_agent_costs",
92
+ // Managed Agents — one-prompt hosted-agent flow write tools (6, Gil-decided
93
+ // mvp tier 2026-07-16: visibility for entitled design partners on free/pro
94
+ // plans — the hosted_agents allowlist stays the real gate, honest 403 +
95
+ // telemetry fallback for tenants not entitled)
96
+ "host_sample_agent",
97
+ "create_hosted_agent",
98
+ "deploy_hosted_agent",
99
+ "run_hosted_agent",
100
+ "get_agent_results",
101
+ "delete_hosted_agent",
102
+ // Governance — single-policy CRUD + dry-run (5, 2026-07-21: mvp tier, not
103
+ // enterprise like their import/export/apply_guardrail siblings — the
104
+ // underlying routes have no plan gate, so this mirrors the dashboard's
105
+ // un-gated behavior)
106
+ "create_policy",
107
+ "list_policies",
108
+ "update_policy",
109
+ "delete_policy",
110
+ "test_policy",
47
111
  ];
48
- /** Pro tier adds: Jira (10) + GitHub (7) + CrewAI (8) + Knowledge (3) */
112
+ /** Pro tier additions: Jira + GitHub + CrewAI + Knowledge + Memory write + Versioning + Orchestration + Outcomes + External Agents */
49
113
  const PRO_ADDITIONAL = [
114
+ // Audit integrity (1) — tamper-evident seal verification (design §10.4)
115
+ "verify_audit_seal",
116
+ // Data handling (1) — per-tenant PII storage mode posture (design §6.2, P7)
117
+ "get_data_handling",
50
118
  // Jira (10)
51
- 'jira_search_issues',
52
- 'jira_get_issue',
53
- 'jira_create_issue',
54
- 'jira_update_issue',
55
- 'jira_add_comment',
56
- 'jira_get_comments',
57
- 'jira_get_transitions',
58
- 'jira_transition_issue',
59
- 'jira_list_projects',
60
- 'jira_assign_issue',
119
+ "jira_search_issues",
120
+ "jira_get_issue",
121
+ "jira_create_issue",
122
+ "jira_update_issue",
123
+ "jira_add_comment",
124
+ "jira_get_comments",
125
+ "jira_get_transitions",
126
+ "jira_transition_issue",
127
+ "jira_list_projects",
128
+ "jira_assign_issue",
61
129
  // GitHub (7)
62
- 'github_search_code',
63
- 'github_get_file',
64
- 'github_create_pr',
65
- 'github_list_prs',
66
- 'github_list_issues',
67
- 'github_create_issue',
68
- 'github_get_workflow_runs',
130
+ "github_search_code",
131
+ "github_get_file",
132
+ "github_create_pr",
133
+ "github_list_prs",
134
+ "github_list_issues",
135
+ "github_create_issue",
136
+ "github_get_workflow_runs",
69
137
  // CrewAI Platform (4)
70
- 'crewai_health',
71
- 'crewai_inputs',
72
- 'crewai_kickoff',
73
- 'crewai_status',
138
+ "crewai_health",
139
+ "crewai_inputs",
140
+ "crewai_kickoff",
141
+ "crewai_status",
74
142
  // CrewAI Builder (4)
75
- 'crew_validate',
76
- 'crew_kickoff',
77
- 'crew_status',
78
- 'crew_list',
143
+ "crew_validate",
144
+ "crew_kickoff",
145
+ "crew_status",
146
+ "crew_list",
79
147
  // Knowledge Base (3)
80
- 'mem0_search',
81
- 'mem0_list',
82
- 'exa_web_search',
148
+ "mem0_search",
149
+ "mem0_list",
150
+ "exa_web_search",
151
+ // Memory Stores — write (3)
152
+ "memory_store_read",
153
+ "memory_store_write",
154
+ "memory_store_delete",
155
+ // Agent Versioning — write (1)
156
+ "agent_version_rollback",
157
+ // Orchestration — write (2)
158
+ "orchestration_start",
159
+ "orchestration_thread_message",
160
+ // Outcomes — write (2)
161
+ "rubric_create",
162
+ "outcome_define",
163
+ // External Agents — manage + trigger (9)
164
+ "register_external_agent",
165
+ "update_external_agent",
166
+ "deregister_external_agent",
167
+ "trigger_external_agent",
168
+ "retry_external_agent_trigger",
169
+ "get_agent_triggers",
170
+ "create_agent_schedule",
171
+ "update_agent_schedule",
172
+ "delete_agent_schedule",
173
+ // LLM Providers — connect (1)
174
+ "connect_llm_provider",
83
175
  ];
84
176
  export const PRO_TOOLS = [...MVP_TOOLS, ...PRO_ADDITIONAL];
85
177
  export const TOOL_TIERS = {
@@ -91,10 +183,10 @@ export const TOOL_TIERS = {
91
183
  // Scope → Tier Mapping
92
184
  // ============================================
93
185
  const SCOPE_TO_TIER = {
94
- 'mcp:read': 'mvp',
95
- 'mcp:execute': 'mvp',
96
- 'mcp:pro': 'pro',
97
- 'mcp:*': 'enterprise',
186
+ "mcp:read": "mvp",
187
+ "mcp:execute": "mvp",
188
+ "mcp:pro": "pro",
189
+ "mcp:*": "enterprise",
98
190
  };
99
191
  /**
100
192
  * Resolve the tool tier from an auth context.
@@ -103,36 +195,45 @@ const SCOPE_TO_TIER = {
103
195
  */
104
196
  export function resolveToolTier(authContext) {
105
197
  if (!authContext)
106
- return 'mvp';
198
+ return "mvp";
107
199
  // Check plan directly
108
- if (authContext.plan === 'enterprise')
109
- return 'enterprise';
110
- if (authContext.plan === 'pro')
111
- return 'pro';
200
+ if (authContext.plan === "enterprise")
201
+ return "enterprise";
202
+ if (authContext.plan === "pro")
203
+ return "pro";
112
204
  // Check scopes
113
- const scopes = authContext.scopes
114
- || (authContext.scope ? authContext.scope.split(' ') : []);
115
- if (scopes.includes('mcp:*'))
116
- return 'enterprise';
117
- if (scopes.includes('mcp:pro'))
118
- return 'pro';
119
- if (scopes.includes('mcp:execute') || scopes.includes('mcp:read'))
120
- return 'mvp';
121
- return 'mvp';
205
+ const scopes = authContext.scopes ||
206
+ (authContext.scope ? authContext.scope.split(" ") : []);
207
+ if (scopes.includes("mcp:*"))
208
+ return "enterprise";
209
+ if (scopes.includes("mcp:pro"))
210
+ return "pro";
211
+ if (scopes.includes("mcp:execute") || scopes.includes("mcp:read"))
212
+ return "mvp";
213
+ return "mvp";
214
+ }
215
+ /**
216
+ * Read-only access: the introspection endpoint emits `mcp:read` (instead of
217
+ * `mcp:execute`) for tokens whose every scope ends in `:read`, alongside the
218
+ * plan tier scope (`mcp:pro` / `mcp:*`). Read-only tokens are limited to
219
+ * tools annotated readOnlyHint — on ListTools AND CallTool.
220
+ */
221
+ export function isReadOnlyScopes(scopes) {
222
+ return scopes.includes("mcp:read") && !scopes.includes("mcp:execute");
122
223
  }
123
224
  /**
124
225
  * Filter tools by tier. Enterprise tier returns all tools.
125
226
  * For mvp/pro, returns only tools in that tier's allowlist.
126
227
  */
127
228
  export function filterToolsByTier(allToolNames, tier) {
128
- if (tier === 'enterprise')
229
+ if (tier === "enterprise")
129
230
  return allToolNames;
130
231
  const allowed = new Set(TOOL_TIERS[tier]);
131
- return allToolNames.filter(name => allowed.has(name));
232
+ return allToolNames.filter((name) => allowed.has(name));
132
233
  }
133
234
  /** Tier counts for verification */
134
235
  export const TIER_COUNTS = {
135
- mvp: MVP_TOOLS.length, // 22
136
- pro: PRO_TOOLS.length, // 50
236
+ mvp: MVP_TOOLS.length,
237
+ pro: PRO_TOOLS.length,
137
238
  };
138
239
  //# sourceMappingURL=tiers.js.map