@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
@@ -12,7 +12,6 @@
12
12
  * 4. acknowledge_ops_issue — acknowledge an issue
13
13
  * 5. get_ops_audit_log — recent ops events
14
14
  */
15
- import { DobbyClient } from '../lib/dobby-client.js';
16
15
  export declare const opsTools: {
17
16
  get_ops_health_summary: {
18
17
  name: string;
@@ -137,83 +136,4 @@ export declare const opsTools: {
137
136
  };
138
137
  };
139
138
  };
140
- export declare function handleGetOpsHealthSummary(client: DobbyClient): Promise<{
141
- content: {
142
- type: "text";
143
- text: string;
144
- }[];
145
- isError?: undefined;
146
- } | {
147
- content: {
148
- type: "text";
149
- text: string;
150
- }[];
151
- isError: boolean;
152
- }>;
153
- export declare function handleGetServiceStatus(client: DobbyClient, args: {
154
- service_name: string;
155
- hours?: number;
156
- }): Promise<{
157
- content: {
158
- type: "text";
159
- text: string;
160
- }[];
161
- isError?: undefined;
162
- } | {
163
- content: {
164
- type: "text";
165
- text: string;
166
- }[];
167
- isError: boolean;
168
- }>;
169
- export declare function handleGetActiveIssues(client: DobbyClient, args: {
170
- status?: string;
171
- severity?: string;
172
- limit?: number;
173
- }): Promise<{
174
- content: {
175
- type: "text";
176
- text: string;
177
- }[];
178
- isError?: undefined;
179
- } | {
180
- content: {
181
- type: "text";
182
- text: string;
183
- }[];
184
- isError: boolean;
185
- }>;
186
- export declare function handleAcknowledgeOpsIssue(client: DobbyClient, args: {
187
- issue_id: string;
188
- notes?: string;
189
- }): Promise<{
190
- content: {
191
- type: "text";
192
- text: string;
193
- }[];
194
- isError?: undefined;
195
- } | {
196
- content: {
197
- type: "text";
198
- text: string;
199
- }[];
200
- isError: boolean;
201
- }>;
202
- export declare function handleGetOpsAuditLog(client: DobbyClient, args: {
203
- hours?: number;
204
- event_type?: string;
205
- limit?: number;
206
- }): Promise<{
207
- content: {
208
- type: "text";
209
- text: string;
210
- }[];
211
- isError?: undefined;
212
- } | {
213
- content: {
214
- type: "text";
215
- text: string;
216
- }[];
217
- isError: boolean;
218
- }>;
219
139
  //# sourceMappingURL=ops.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/tools/ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMrD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsIpB,CAAC;AAyDF,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,WAAW;;;;;;;;;;;;GAYlE;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAmB/C;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAkB7D;AAED,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAkB3C;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAmB9D"}
1
+ {"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/tools/ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsIpB,CAAC"}
package/dist/tools/ops.js CHANGED
@@ -142,219 +142,10 @@ export const opsTools = {
142
142
  // ============================================
143
143
  // Internal Helper — Call Ops API
144
144
  // ============================================
145
- /**
146
- * Call the FastAPI ops endpoint with X-Ops-Key auth.
147
- * This does NOT go through the customer gateway.
148
- */
149
- async function callOpsApi(client, method, path, body, queryParams) {
150
- // Ops API runs on the Python backend (port 8000)
151
- const baseUrl = client.apiUrl?.replace(':3000', ':8000') || 'http://localhost:8000';
152
- const opsKey = process.env.OPS_API_KEY || process.env.DOBBY_OPS_KEY || 'dev-ops-key';
153
- let url = `${baseUrl}${path}`;
154
- if (queryParams) {
155
- const params = new URLSearchParams();
156
- for (const [key, val] of Object.entries(queryParams)) {
157
- if (val !== undefined && val !== null) {
158
- params.set(key, String(val));
159
- }
160
- }
161
- const qs = params.toString();
162
- if (qs)
163
- url += `?${qs}`;
164
- }
165
- const headers = {
166
- 'X-Ops-Key': opsKey,
167
- 'Content-Type': 'application/json',
168
- };
169
- const response = await fetch(url, {
170
- method,
171
- headers,
172
- body: body ? JSON.stringify(body) : undefined,
173
- });
174
- if (!response.ok) {
175
- const errBody = await response.json().catch(() => ({ error: `HTTP ${response.status}` }));
176
- throw new Error(errBody.detail || errBody.error || `Ops API returned ${response.status}`);
177
- }
178
- return response.json();
179
- }
180
145
  // ============================================
181
146
  // Tool Handlers
182
147
  // ============================================
183
- export async function handleGetOpsHealthSummary(client) {
184
- try {
185
- const data = await callOpsApi(client, 'GET', '/ops/health/summary');
186
- return {
187
- content: [{ type: 'text', text: formatHealthSummary(data) }],
188
- };
189
- }
190
- catch (error) {
191
- return {
192
- content: [{ type: 'text', text: `Failed to get health summary: ${error.message}` }],
193
- isError: true,
194
- };
195
- }
196
- }
197
- export async function handleGetServiceStatus(client, args) {
198
- try {
199
- const data = await callOpsApi(client, 'GET', `/ops/services/${args.service_name}/status`, undefined, { hours: args.hours || 24 });
200
- return {
201
- content: [{ type: 'text', text: formatServiceStatus(data) }],
202
- };
203
- }
204
- catch (error) {
205
- return {
206
- content: [{ type: 'text', text: `Failed to get service status: ${error.message}` }],
207
- isError: true,
208
- };
209
- }
210
- }
211
- export async function handleGetActiveIssues(client, args) {
212
- try {
213
- const params = {};
214
- if (args.status)
215
- params.status = args.status;
216
- if (args.severity)
217
- params.severity = args.severity;
218
- if (args.limit)
219
- params.limit = args.limit;
220
- const data = await callOpsApi(client, 'GET', '/ops/issues', undefined, params);
221
- return {
222
- content: [{ type: 'text', text: formatIssues(data) }],
223
- };
224
- }
225
- catch (error) {
226
- return {
227
- content: [{ type: 'text', text: `Failed to get issues: ${error.message}` }],
228
- isError: true,
229
- };
230
- }
231
- }
232
- export async function handleAcknowledgeOpsIssue(client, args) {
233
- try {
234
- const data = await callOpsApi(client, 'POST', `/ops/issues/${args.issue_id}/acknowledge`, {
235
- notes: args.notes || null,
236
- });
237
- return {
238
- content: [{
239
- type: 'text',
240
- text: `Issue ${args.issue_id} acknowledged.\nStatus: ${data.status}\nVersion: ${data.version}`,
241
- }],
242
- };
243
- }
244
- catch (error) {
245
- return {
246
- content: [{ type: 'text', text: `Failed to acknowledge issue: ${error.message}` }],
247
- isError: true,
248
- };
249
- }
250
- }
251
- export async function handleGetOpsAuditLog(client, args) {
252
- try {
253
- const params = {
254
- hours: args.hours || 24,
255
- limit: args.limit || 100,
256
- };
257
- if (args.event_type)
258
- params.event_type = args.event_type;
259
- const data = await callOpsApi(client, 'GET', '/ops/events', undefined, params);
260
- return {
261
- content: [{ type: 'text', text: formatAuditLog(data) }],
262
- };
263
- }
264
- catch (error) {
265
- return {
266
- content: [{ type: 'text', text: `Failed to get audit log: ${error.message}` }],
267
- isError: true,
268
- };
269
- }
270
- }
271
148
  // ============================================
272
149
  // Formatting Helpers
273
150
  // ============================================
274
- function formatHealthSummary(data) {
275
- const statusEmoji = {
276
- operational: '🟢',
277
- degraded: '🟡',
278
- partial_outage: '🟠',
279
- major_outage: '🔴',
280
- };
281
- let text = `# Platform Health Summary\n\n`;
282
- text += `**Overall:** ${statusEmoji[data.overall_status] || '⚪'} ${data.overall_status}\n`;
283
- text += `**Checked at:** ${data.checked_at}\n\n`;
284
- text += `| Service | Status | Latency | Critical |\n`;
285
- text += `|---------|--------|---------|----------|\n`;
286
- for (const svc of data.services || []) {
287
- const svcEmoji = { healthy: '✅', degraded: '⚠️', unhealthy: '❌', unknown: '❓' };
288
- text += `| ${svc.display_name} | ${svcEmoji[svc.status] || '❓'} ${svc.status} | ${svc.latency_ms}ms | ${svc.is_critical ? 'Yes' : 'No'} |\n`;
289
- }
290
- text += `\n**Summary:** ${data.healthy_count} healthy, ${data.degraded_count} degraded, ${data.unhealthy_count} unhealthy\n`;
291
- if (data.anomalies_detected > 0) {
292
- text += `\n⚠️ **${data.anomalies_detected} anomalies detected**\n`;
293
- }
294
- if (data.new_issues_created > 0) {
295
- text += `🆕 **${data.new_issues_created} new issues created**\n`;
296
- }
297
- return text;
298
- }
299
- function formatServiceStatus(data) {
300
- if (data.error)
301
- return `Error: ${data.error}`;
302
- let text = `# Service: ${data.display_name}\n\n`;
303
- text += `**Status:** ${data.current_status}\n`;
304
- text += `**Latency:** ${data.latency_ms}ms\n`;
305
- text += `**Critical:** ${data.is_critical ? 'Yes' : 'No'}\n`;
306
- if (data.error)
307
- text += `**Error:** ${data.error}\n`;
308
- if (data.active_issues?.length > 0) {
309
- text += `\n## Active Issues (${data.active_issues.length})\n`;
310
- for (const issue of data.active_issues) {
311
- text += `- [${issue.severity}] ${issue.title} (${issue.status})\n`;
312
- }
313
- }
314
- if (data.recent_events?.length > 0) {
315
- text += `\n## Recent Events (${data.recent_events.length})\n`;
316
- for (const evt of data.recent_events.slice(0, 10)) {
317
- text += `- [${evt.severity}] ${evt.title} (${evt.created_at})\n`;
318
- }
319
- }
320
- return text;
321
- }
322
- function formatIssues(data) {
323
- if (!data.issues?.length)
324
- return 'No active ops issues. All clear! ✅';
325
- const severityEmoji = {
326
- critical: '🔴', high: '🟠', medium: '🟡', low: '🔵',
327
- };
328
- let text = `# Active Ops Issues (${data.total})\n\n`;
329
- for (const issue of data.issues) {
330
- text += `## ${severityEmoji[issue.severity] || '⚪'} ${issue.title}\n`;
331
- text += `- **ID:** ${issue.issue_id}\n`;
332
- text += `- **Status:** ${issue.status}\n`;
333
- text += `- **Severity:** ${issue.severity}\n`;
334
- text += `- **Services:** ${(issue.service_names || []).join(', ')}\n`;
335
- text += `- **Detected:** ${issue.detected_at}\n`;
336
- if (issue.acknowledged_by)
337
- text += `- **Acknowledged by:** ${issue.acknowledged_by}\n`;
338
- text += '\n';
339
- }
340
- return text;
341
- }
342
- function formatAuditLog(data) {
343
- let text = `# Ops Audit Log (${data.total} events, last ${data.window_hours}h)\n\n`;
344
- if (!data.events?.length) {
345
- text += 'No events in this time window.\n';
346
- return text;
347
- }
348
- for (const evt of data.events) {
349
- const sevIcon = {
350
- info: 'ℹ️', warning: '⚠️', error: '❌', critical: '🔴',
351
- };
352
- text += `${sevIcon[evt.severity] || '•'} **${evt.event_type}** — ${evt.title}\n`;
353
- text += ` ${evt.created_at} | ${evt.actor}`;
354
- if (evt.service_name)
355
- text += ` | ${evt.service_name}`;
356
- text += '\n\n';
357
- }
358
- return text;
359
- }
360
151
  //# sourceMappingURL=ops.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/tools/ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/tools/ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Multi-Agent Orchestration Tools
3
+ *
4
+ * MCP tools for managing orchestration configs, sessions, and threads.
5
+ */
6
+ export declare const orchestrationTools: {
7
+ orchestration_config_list: {
8
+ name: string;
9
+ annotations: {
10
+ title: string;
11
+ readOnlyHint: boolean;
12
+ destructiveHint: boolean;
13
+ openWorldHint: boolean;
14
+ };
15
+ description: string;
16
+ inputSchema: {
17
+ type: "object";
18
+ properties: {
19
+ status: {
20
+ type: string;
21
+ enum: string[];
22
+ description: string;
23
+ };
24
+ };
25
+ };
26
+ };
27
+ orchestration_start: {
28
+ name: string;
29
+ annotations: {
30
+ title: string;
31
+ readOnlyHint: boolean;
32
+ destructiveHint: boolean;
33
+ openWorldHint: boolean;
34
+ };
35
+ description: string;
36
+ inputSchema: {
37
+ type: "object";
38
+ properties: {
39
+ config_id: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ title: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ initial_message: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ };
52
+ required: string[];
53
+ };
54
+ };
55
+ orchestration_threads: {
56
+ name: string;
57
+ annotations: {
58
+ title: string;
59
+ readOnlyHint: boolean;
60
+ destructiveHint: boolean;
61
+ openWorldHint: boolean;
62
+ };
63
+ description: string;
64
+ inputSchema: {
65
+ type: "object";
66
+ properties: {
67
+ session_id: {
68
+ type: string;
69
+ description: string;
70
+ };
71
+ };
72
+ required: string[];
73
+ };
74
+ };
75
+ orchestration_thread_message: {
76
+ name: string;
77
+ annotations: {
78
+ title: string;
79
+ readOnlyHint: boolean;
80
+ destructiveHint: boolean;
81
+ openWorldHint: boolean;
82
+ };
83
+ description: string;
84
+ inputSchema: {
85
+ type: "object";
86
+ properties: {
87
+ session_id: {
88
+ type: string;
89
+ description: string;
90
+ };
91
+ thread_id: {
92
+ type: string;
93
+ description: string;
94
+ };
95
+ message_type: {
96
+ type: string;
97
+ enum: string[];
98
+ description: string;
99
+ };
100
+ content: {
101
+ type: string;
102
+ description: string;
103
+ };
104
+ };
105
+ required: string[];
106
+ };
107
+ };
108
+ };
109
+ //# sourceMappingURL=orchestrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrations.d.ts","sourceRoot":"","sources":["../../src/tools/orchestrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyG9B,CAAC"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Multi-Agent Orchestration Tools
3
+ *
4
+ * MCP tools for managing orchestration configs, sessions, and threads.
5
+ */
6
+ // ============================================
7
+ // Tool Definitions
8
+ // ============================================
9
+ export const orchestrationTools = {
10
+ orchestration_config_list: {
11
+ name: 'orchestration_config_list',
12
+ annotations: {
13
+ title: 'List Orchestration Configs',
14
+ readOnlyHint: true,
15
+ destructiveHint: false,
16
+ openWorldHint: false,
17
+ },
18
+ description: 'List multi-agent orchestration configs for the organization',
19
+ inputSchema: {
20
+ type: 'object',
21
+ properties: {
22
+ status: {
23
+ type: 'string',
24
+ enum: ['active', 'archived'],
25
+ description: 'Filter by config status',
26
+ },
27
+ },
28
+ },
29
+ },
30
+ orchestration_start: {
31
+ name: 'orchestration_start',
32
+ annotations: {
33
+ title: 'Start Orchestrated Session',
34
+ readOnlyHint: false,
35
+ destructiveHint: true,
36
+ openWorldHint: false,
37
+ },
38
+ description: 'Start a new orchestrated session with coordinator + callable agents',
39
+ inputSchema: {
40
+ type: 'object',
41
+ properties: {
42
+ config_id: {
43
+ type: 'string',
44
+ description: 'The orchestration config ID (format: orch_xxxxx)',
45
+ },
46
+ title: {
47
+ type: 'string',
48
+ description: 'Title for the orchestrated session',
49
+ },
50
+ initial_message: {
51
+ type: 'string',
52
+ description: 'The initial task/message to send to the coordinator',
53
+ },
54
+ },
55
+ required: ['config_id', 'title', 'initial_message'],
56
+ },
57
+ },
58
+ orchestration_threads: {
59
+ name: 'orchestration_threads',
60
+ annotations: {
61
+ title: 'List Session Threads',
62
+ readOnlyHint: true,
63
+ destructiveHint: false,
64
+ openWorldHint: false,
65
+ },
66
+ description: 'List all threads in an orchestrated session with stats',
67
+ inputSchema: {
68
+ type: 'object',
69
+ properties: {
70
+ session_id: {
71
+ type: 'string',
72
+ description: 'The session ID (format: ses_xxxxx)',
73
+ },
74
+ },
75
+ required: ['session_id'],
76
+ },
77
+ },
78
+ orchestration_thread_message: {
79
+ name: 'orchestration_thread_message',
80
+ annotations: {
81
+ title: 'Send Thread Message',
82
+ readOnlyHint: false,
83
+ destructiveHint: false,
84
+ openWorldHint: false,
85
+ },
86
+ description: 'Send a message to a specific thread in an orchestrated session',
87
+ inputSchema: {
88
+ type: 'object',
89
+ properties: {
90
+ session_id: {
91
+ type: 'string',
92
+ description: 'The session ID (format: ses_xxxxx)',
93
+ },
94
+ thread_id: {
95
+ type: 'string',
96
+ description: 'The thread ID to send message to (format: thr_xxxxx)',
97
+ },
98
+ message_type: {
99
+ type: 'string',
100
+ enum: ['delegation', 'result', 'question', 'update', 'interrupt'],
101
+ description: 'Type of message',
102
+ },
103
+ content: {
104
+ type: 'string',
105
+ description: 'Message content',
106
+ },
107
+ },
108
+ required: ['session_id', 'thread_id', 'message_type', 'content'],
109
+ },
110
+ },
111
+ };
112
+ // ============================================
113
+ // Handler Functions
114
+ // ============================================
115
+ //# sourceMappingURL=orchestrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrations.js","sourceRoot":"","sources":["../../src/tools/orchestrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,+CAA+C;AAC/C,mBAAmB;AACnB,+CAA+C;AAE/C,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,yBAAyB,EAAE;QACzB,IAAI,EAAE,2BAA2B;QACjC,WAAW,EAAE;YACX,KAAK,EAAE,4BAA4B;YACnC,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;oBAC5B,WAAW,EAAE,yBAAyB;iBACvC;aACF;SACF;KACF;IAED,mBAAmB,EAAE;QACnB,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE;YACX,KAAK,EAAE,4BAA4B;YACnC,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kDAAkD;iBAChE;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qDAAqD;iBACnE;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,CAAC;SACpD;KACF;IAED,qBAAqB,EAAE;QACrB,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE;YACX,KAAK,EAAE,sBAAsB;YAC7B,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB;KACF;IAED,4BAA4B,EAAE;QAC5B,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE;YACX,KAAK,EAAE,qBAAqB;YAC5B,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oCAAoC;iBAClD;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;iBACpE;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC;oBACjE,WAAW,EAAE,iBAAiB;iBAC/B;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iBAAiB;iBAC/B;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC;SACjE;KACF;CACF,CAAC;AAEF,+CAA+C;AAC/C,oBAAoB;AACpB,+CAA+C"}