@zhixuan92/multi-model-agent 4.0.1 → 4.0.2

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 (114) hide show
  1. package/README.md +6 -7
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +9 -24
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/serve.d.ts.map +1 -1
  6. package/dist/cli/serve.js +15 -16
  7. package/dist/cli/serve.js.map +1 -1
  8. package/dist/cli/status.js +1 -1
  9. package/dist/cli/status.js.map +1 -1
  10. package/dist/cli/sync-skills.d.ts +62 -0
  11. package/dist/cli/sync-skills.d.ts.map +1 -0
  12. package/dist/cli/sync-skills.js +251 -0
  13. package/dist/cli/sync-skills.js.map +1 -0
  14. package/dist/http/async-dispatch.d.ts.map +1 -1
  15. package/dist/http/async-dispatch.js +30 -6
  16. package/dist/http/async-dispatch.js.map +1 -1
  17. package/dist/http/handlers/introspection/status.js +1 -1
  18. package/dist/skills/mma-audit/SKILL.md +1 -1
  19. package/dist/skills/mma-context-blocks/SKILL.md +1 -1
  20. package/dist/skills/mma-debug/SKILL.md +1 -1
  21. package/dist/skills/mma-delegate/SKILL.md +1 -1
  22. package/dist/skills/mma-execute-plan/SKILL.md +1 -1
  23. package/dist/skills/mma-explore/SKILL.md +1 -1
  24. package/dist/skills/mma-investigate/SKILL.md +1 -1
  25. package/dist/skills/mma-retry/SKILL.md +1 -1
  26. package/dist/skills/mma-review/SKILL.md +1 -1
  27. package/dist/skills/mma-verify/SKILL.md +1 -1
  28. package/dist/skills/multi-model-agent/SKILL.md +1 -1
  29. package/package.json +3 -2
  30. package/scripts/postinstall.js +2 -2
  31. package/dist/cli/install-skill.d.ts +0 -78
  32. package/dist/cli/install-skill.d.ts.map +0 -1
  33. package/dist/cli/install-skill.js +0 -304
  34. package/dist/cli/install-skill.js.map +0 -1
  35. package/dist/cli/update-skills.d.ts +0 -16
  36. package/dist/cli/update-skills.d.ts.map +0 -1
  37. package/dist/cli/update-skills.js +0 -158
  38. package/dist/cli/update-skills.js.map +0 -1
  39. package/dist/http/loopback.d.ts +0 -17
  40. package/dist/http/loopback.d.ts.map +0 -1
  41. package/dist/http/loopback.js +0 -43
  42. package/dist/http/loopback.js.map +0 -1
  43. package/dist/http/router.d.ts +0 -19
  44. package/dist/http/router.d.ts.map +0 -1
  45. package/dist/http/router.js +0 -51
  46. package/dist/http/router.js.map +0 -1
  47. package/dist/http/wire/delegate-wire.d.ts +0 -4
  48. package/dist/http/wire/delegate-wire.d.ts.map +0 -1
  49. package/dist/http/wire/delegate-wire.js +0 -16
  50. package/dist/http/wire/delegate-wire.js.map +0 -1
  51. package/dist/http/wire/execute-plan-wire.d.ts +0 -18
  52. package/dist/http/wire/execute-plan-wire.d.ts.map +0 -1
  53. package/dist/http/wire/execute-plan-wire.js +0 -26
  54. package/dist/http/wire/execute-plan-wire.js.map +0 -1
  55. package/dist/http/wire/registry.d.ts +0 -3
  56. package/dist/http/wire/registry.d.ts.map +0 -1
  57. package/dist/http/wire/registry.js +0 -20
  58. package/dist/http/wire/registry.js.map +0 -1
  59. package/dist/install/claude-code.d.ts +0 -43
  60. package/dist/install/claude-code.d.ts.map +0 -1
  61. package/dist/install/claude-code.js +0 -65
  62. package/dist/install/claude-code.js.map +0 -1
  63. package/dist/install/codex-cli.d.ts +0 -27
  64. package/dist/install/codex-cli.d.ts.map +0 -1
  65. package/dist/install/codex-cli.js +0 -84
  66. package/dist/install/codex-cli.js.map +0 -1
  67. package/dist/install/cursor.d.ts +0 -72
  68. package/dist/install/cursor.d.ts.map +0 -1
  69. package/dist/install/cursor.js +0 -81
  70. package/dist/install/cursor.js.map +0 -1
  71. package/dist/install/discover.d.ts +0 -27
  72. package/dist/install/discover.d.ts.map +0 -1
  73. package/dist/install/discover.js +0 -67
  74. package/dist/install/discover.js.map +0 -1
  75. package/dist/install/gemini-cli.d.ts +0 -66
  76. package/dist/install/gemini-cli.d.ts.map +0 -1
  77. package/dist/install/gemini-cli.js +0 -111
  78. package/dist/install/gemini-cli.js.map +0 -1
  79. package/dist/install/headers.d.ts +0 -17
  80. package/dist/install/headers.d.ts.map +0 -1
  81. package/dist/install/headers.js +0 -22
  82. package/dist/install/headers.js.map +0 -1
  83. package/dist/install/include-utils.d.ts +0 -27
  84. package/dist/install/include-utils.d.ts.map +0 -1
  85. package/dist/install/include-utils.js +0 -90
  86. package/dist/install/include-utils.js.map +0 -1
  87. package/dist/install/manifest-resolve.d.ts +0 -17
  88. package/dist/install/manifest-resolve.d.ts.map +0 -1
  89. package/dist/install/manifest-resolve.js +0 -78
  90. package/dist/install/manifest-resolve.js.map +0 -1
  91. package/dist/install/manifest.d.ts +0 -94
  92. package/dist/install/manifest.d.ts.map +0 -1
  93. package/dist/install/manifest.js +0 -234
  94. package/dist/install/manifest.js.map +0 -1
  95. package/dist/install/missing-skills.d.ts +0 -20
  96. package/dist/install/missing-skills.d.ts.map +0 -1
  97. package/dist/install/missing-skills.js +0 -42
  98. package/dist/install/missing-skills.js.map +0 -1
  99. package/dist/install/notify.d.ts +0 -6
  100. package/dist/install/notify.d.ts.map +0 -1
  101. package/dist/install/notify.js +0 -13
  102. package/dist/install/notify.js.map +0 -1
  103. package/dist/install/orchestrate.d.ts +0 -47
  104. package/dist/install/orchestrate.d.ts.map +0 -1
  105. package/dist/install/orchestrate.js +0 -98
  106. package/dist/install/orchestrate.js.map +0 -1
  107. package/dist/install/skill-manifest-sync.d.ts +0 -11
  108. package/dist/install/skill-manifest-sync.d.ts.map +0 -1
  109. package/dist/install/skill-manifest-sync.js +0 -65
  110. package/dist/install/skill-manifest-sync.js.map +0 -1
  111. package/dist/openapi.d.ts +0 -15
  112. package/dist/openapi.d.ts.map +0 -1
  113. package/dist/openapi.js +0 -286
  114. package/dist/openapi.js.map +0 -1
package/dist/openapi.js DELETED
@@ -1,286 +0,0 @@
1
- // packages/server/src/openapi.ts
2
- //
3
- // Builds the OpenAPI 3.0 document that describes all endpoints of the
4
- // multi-model-agent HTTP server.
5
- //
6
- // Uses @asteasolutions/zod-to-openapi to convert each tool's Zod inputSchema
7
- // directly into OpenAPI request body schemas.
8
- import { z } from 'zod';
9
- import { extendZodWithOpenApi, OpenAPIRegistry, OpenApiGeneratorV3, } from '@asteasolutions/zod-to-openapi';
10
- import * as delegate from '@zhixuan92/multi-model-agent-core/tools/delegate/schema';
11
- import * as audit from '@zhixuan92/multi-model-agent-core/tools/audit/schema';
12
- import * as review from '@zhixuan92/multi-model-agent-core/tools/review/schema';
13
- import * as verify from '@zhixuan92/multi-model-agent-core/tools/verify/schema';
14
- import * as debug from '@zhixuan92/multi-model-agent-core/tools/debug/schema';
15
- import * as executePlan from '@zhixuan92/multi-model-agent-core/tools/execute-plan/schema';
16
- import * as retry from '@zhixuan92/multi-model-agent-core/tools/retry/schema';
17
- import * as investigate from '@zhixuan92/multi-model-agent-core/tools/investigate/schema';
18
- import * as explore from '@zhixuan92/multi-model-agent-core/tools/explore/schema';
19
- // Extend Zod once with openapi support.
20
- extendZodWithOpenApi(z);
21
- /** Sort an object's keys recursively for deterministic JSON serialization. */
22
- function sortKeys(obj) {
23
- if (obj === null || typeof obj !== 'object')
24
- return obj;
25
- if (Array.isArray(obj))
26
- return obj.map(sortKeys);
27
- const sorted = {};
28
- for (const key of Object.keys(obj).sort()) {
29
- sorted[key] = sortKeys(obj[key]);
30
- }
31
- return sorted;
32
- }
33
- // ── v4.0 component schemas ───────────────────────────────────────────────────
34
- /** 4-field token usage shape (v4.0). */
35
- const tokenUsageSchema = z.object({
36
- inputTokens: z.number().int().min(0).describe('Prompt/input tokens consumed'),
37
- outputTokens: z.number().int().min(0).describe('Completion/output tokens produced'),
38
- cachedReadTokens: z.number().int().min(0).describe('Input tokens served from cache read'),
39
- cachedNonReadTokens: z.number().int().min(0).describe('Input tokens written to cache but not read'),
40
- });
41
- /** v4.0 output envelope (terminal response shape). */
42
- const outputEnvelopeSchema = z.object({
43
- headline: z.string().min(1).describe('One-line summary of the outcome'),
44
- results: z.array(z.unknown()).describe('Per-task result items'),
45
- batchTimings: z.object({}).passthrough().describe('Wall-clock and per-phase timings'),
46
- costSummary: z.object({
47
- totalCostUSD: z.number().min(0).describe('Total estimated cost in USD'),
48
- tokenUsage: tokenUsageSchema.describe('Aggregated token consumption'),
49
- }).passthrough().describe('Cost and token metering summary'),
50
- structuredReport: z.object({}).passthrough().describe('Structured report object (tool-specific schema)'),
51
- error: z.object({
52
- code: z.string().min(1),
53
- message: z.string().min(1),
54
- details: z.unknown().optional(),
55
- }).optional().describe('Terminal error if the batch failed'),
56
- annotatorConfidence: z.number().min(0).max(1).optional()
57
- .describe('Annotator confidence score (0-1) when the review policy produced annotations'),
58
- specReviewVerdict: z.enum(['approved', 'concerns', 'changes_required', 'annotated', 'error', 'skipped', 'not_applicable']).optional(),
59
- qualityReviewVerdict: z.enum(['approved', 'concerns', 'changes_required', 'annotated', 'error', 'skipped', 'not_applicable']).optional(),
60
- roundsUsed: z.number().int().min(0).optional().describe('Number of agent rounds consumed'),
61
- blockId: z.string().optional().describe('Terminal context block id registered automatically for this task'),
62
- }).passthrough();
63
- /** Shared 202 response for async tool endpoints. */
64
- const asyncResponse202 = {
65
- description: 'Accepted — batch created',
66
- content: {
67
- 'application/json': {
68
- schema: z.object({
69
- batchId: z.string().describe('Unique batch identifier for polling via GET /batch/:batchId'),
70
- statusUrl: z.string().describe('Full URL to poll for this batch'),
71
- }),
72
- },
73
- },
74
- };
75
- /** Shared `cwd` query parameter (required by all tool endpoints). */
76
- const cwdQueryParam = {
77
- name: 'cwd',
78
- in: 'query',
79
- required: true,
80
- description: 'Absolute path to the project working directory',
81
- schema: { type: 'string' },
82
- };
83
- /** Standard 401 error response. */
84
- const response401 = { description: 'Missing or invalid Bearer token' };
85
- /** Standard 403 error response. */
86
- const response403 = { description: 'Forbidden (loopback-only or path traversal)' };
87
- /** Standard 404 error response. */
88
- const response404 = { description: 'Resource not found' };
89
- // Tool-endpoint registration table. Each row contributes one path with the
90
- // shared shape: POST /<path>?cwd=<abs>, JSON body, async 202 response.
91
- const TOOL_ENDPOINTS = [
92
- { path: '/delegate', summary: 'Dispatch tasks to sub-agents', schema: delegate.inputSchema },
93
- { path: '/audit', summary: 'Audit documents or files', schema: audit.inputSchema },
94
- { path: '/review', summary: 'Review code for quality and security', schema: review.inputSchema },
95
- { path: '/verify', summary: 'Verify work against a checklist', schema: verify.inputSchema },
96
- { path: '/debug', summary: 'Debug a problem with sub-agent assistance', schema: debug.inputSchema },
97
- { path: '/execute-plan', summary: 'Execute tasks from a plan file', schema: executePlan.inputSchema },
98
- { path: '/retry', summary: 'Retry failed tasks from a previous batch', schema: retry.inputSchema },
99
- {
100
- path: '/investigate',
101
- summary: 'Investigate the codebase and answer a question with structured citations',
102
- schema: investigate.inputSchema,
103
- },
104
- {
105
- path: '/explore',
106
- summary: 'Explore a topic with parallel internal codebase search and external web research',
107
- schema: explore.inputSchema,
108
- },
109
- ];
110
- function registerToolEndpoint(registry, row) {
111
- registry.registerPath({
112
- method: 'post',
113
- path: row.path,
114
- summary: row.summary,
115
- tags: ['Tools'],
116
- request: {
117
- query: z.object({ cwd: z.string().describe('Project working directory') }),
118
- body: {
119
- required: true,
120
- content: { 'application/json': { schema: row.schema } },
121
- },
122
- },
123
- responses: {
124
- 202: asyncResponse202,
125
- 400: { description: 'Request validation error' },
126
- 401: response401,
127
- },
128
- });
129
- }
130
- export function buildOpenApiDoc() {
131
- const registry = new OpenAPIRegistry();
132
- // ── Component schemas ───────────────────────────────────────────────────────
133
- registry.register('TokenUsage', tokenUsageSchema);
134
- registry.register('OutputEnvelope', outputEnvelopeSchema);
135
- // ── Tool endpoints (POST, require cwd + auth) ───────────────────────────────
136
- for (const row of TOOL_ENDPOINTS)
137
- registerToolEndpoint(registry, row);
138
- // ── Control endpoints ───────────────────────────────────────────────────────
139
- registry.registerPath({
140
- method: 'get',
141
- path: '/batch/{batchId}',
142
- summary: 'Poll batch status',
143
- tags: ['Control'],
144
- request: {
145
- params: z.object({ batchId: z.string().describe('Batch identifier') }),
146
- query: z.object({
147
- taskIndex: z.string().optional().describe('Zero-based task index for result slicing'),
148
- }),
149
- },
150
- responses: {
151
- 200: {
152
- description: 'Batch state — pending returns { status: "pending" }; complete returns the OutputEnvelope; failed returns OutputEnvelope with error; expired returns { status: "expired" }',
153
- content: {
154
- 'application/json': {
155
- schema: z.union([
156
- z.object({ status: z.enum(['pending', 'expired']) }),
157
- outputEnvelopeSchema,
158
- ]),
159
- },
160
- },
161
- },
162
- 401: response401,
163
- 404: response404,
164
- },
165
- });
166
- registry.registerPath({
167
- method: 'post',
168
- path: '/context-blocks',
169
- summary: 'Register a context block',
170
- tags: ['Control'],
171
- request: {
172
- query: z.object({ cwd: z.string().describe('Project working directory') }),
173
- body: {
174
- required: true,
175
- content: {
176
- 'application/json': {
177
- schema: z.object({
178
- content: z.string().describe('Block content (plain text or markdown)'),
179
- label: z.string().optional().describe('Human-readable label'),
180
- }),
181
- },
182
- },
183
- },
184
- },
185
- responses: {
186
- 201: { description: 'Block created' },
187
- 400: { description: 'Validation error or content too large' },
188
- 401: response401,
189
- },
190
- });
191
- registry.registerPath({
192
- method: 'post',
193
- path: '/register-context-block',
194
- summary: 'Register a context block (alias)',
195
- tags: ['Control'],
196
- request: {
197
- query: z.object({ cwd: z.string().describe('Project working directory') }),
198
- body: {
199
- required: true,
200
- content: {
201
- 'application/json': {
202
- schema: z.object({
203
- content: z.string().describe('Block content (plain text or markdown)'),
204
- label: z.string().optional().describe('Human-readable label'),
205
- }),
206
- },
207
- },
208
- },
209
- },
210
- responses: {
211
- 201: { description: 'Block created' },
212
- 400: { description: 'Validation error or content too large' },
213
- 401: response401,
214
- },
215
- });
216
- registry.registerPath({
217
- method: 'delete',
218
- path: '/context-blocks/{blockId}',
219
- summary: 'Delete a context block',
220
- tags: ['Control'],
221
- request: {
222
- params: z.object({ blockId: z.string().describe('Context block identifier') }),
223
- query: z.object({ cwd: z.string().describe('Project working directory') }),
224
- },
225
- responses: {
226
- 200: { description: 'Block deleted (or was already absent)' },
227
- 401: response401,
228
- },
229
- });
230
- // ── Introspection endpoints ─────────────────────────────────────────────────
231
- registry.registerPath({
232
- method: 'get',
233
- path: '/health',
234
- summary: 'Liveness + skill manifest drift check — no auth required',
235
- tags: ['Introspection'],
236
- responses: {
237
- 200: {
238
- description: 'Server is alive; status=ok when all installed skills match the manifest, status=drift when one or more skills are missing, outdated, or orphaned',
239
- content: {
240
- 'application/json': {
241
- schema: z.union([
242
- z.object({ status: z.literal('ok') }),
243
- z.object({
244
- status: z.literal('drift'),
245
- drift: z.array(z.object({
246
- skill: z.string(),
247
- client: z.string(),
248
- issue: z.enum(['missing', 'outdated', 'orphan']),
249
- })),
250
- }),
251
- ]),
252
- },
253
- },
254
- },
255
- },
256
- });
257
- registry.registerPath({
258
- method: 'get',
259
- path: '/status',
260
- summary: 'Operator status — loopback + auth required',
261
- tags: ['Introspection'],
262
- responses: {
263
- 200: { description: 'Server status object (§5.10)' },
264
- 401: response401,
265
- 403: response403,
266
- },
267
- });
268
- // ── Generate ────────────────────────────────────────────────────────────────
269
- const generator = new OpenApiGeneratorV3(registry.definitions);
270
- const doc = generator.generateDocument({
271
- openapi: '3.0.3',
272
- info: {
273
- title: 'multi-model-agent',
274
- version: '4.0.0',
275
- },
276
- });
277
- // Return a key-sorted version for deterministic golden comparisons
278
- return sortKeys(doc);
279
- }
280
- /** Utility: serialize the OpenAPI doc with sorted keys for golden snapshots. */
281
- export function serializeOpenApiDoc(doc) {
282
- return JSON.stringify(doc, null, 2);
283
- }
284
- // Re-export cwdQueryParam for tests / external use
285
- export { cwdQueryParam };
286
- //# sourceMappingURL=openapi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}