@glubean/sdk 0.2.1 → 0.2.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 (100) hide show
  1. package/dist/configure/http.d.ts +25 -0
  2. package/dist/configure/http.d.ts.map +1 -0
  3. package/dist/configure/http.js +88 -0
  4. package/dist/configure/http.js.map +1 -0
  5. package/dist/configure/index.d.ts +78 -0
  6. package/dist/configure/index.d.ts.map +1 -0
  7. package/dist/configure/index.js +78 -0
  8. package/dist/configure/index.js.map +1 -0
  9. package/dist/configure/plugin.d.ts +23 -0
  10. package/dist/configure/plugin.d.ts.map +1 -0
  11. package/dist/configure/plugin.js +81 -0
  12. package/dist/configure/plugin.js.map +1 -0
  13. package/dist/configure/runtime.d.ts +24 -0
  14. package/dist/configure/runtime.d.ts.map +1 -0
  15. package/dist/configure/runtime.js +45 -0
  16. package/dist/configure/runtime.js.map +1 -0
  17. package/dist/configure/template.d.ts +22 -0
  18. package/dist/configure/template.d.ts.map +1 -0
  19. package/dist/configure/template.js +34 -0
  20. package/dist/configure/template.js.map +1 -0
  21. package/dist/configure/vars.d.ts +20 -0
  22. package/dist/configure/vars.d.ts.map +1 -0
  23. package/dist/configure/vars.js +48 -0
  24. package/dist/configure/vars.js.map +1 -0
  25. package/dist/configure.d.ts +2 -133
  26. package/dist/configure.d.ts.map +1 -1
  27. package/dist/configure.js +2 -436
  28. package/dist/configure.js.map +1 -1
  29. package/dist/contract-artifacts.d.ts +268 -0
  30. package/dist/contract-artifacts.d.ts.map +1 -0
  31. package/dist/contract-artifacts.js +402 -0
  32. package/dist/contract-artifacts.js.map +1 -0
  33. package/dist/contract-core.d.ts +30 -0
  34. package/dist/contract-core.d.ts.map +1 -1
  35. package/dist/contract-core.js +47 -0
  36. package/dist/contract-core.js.map +1 -1
  37. package/dist/contract-http/adapter.d.ts.map +1 -1
  38. package/dist/contract-http/adapter.js +22 -7
  39. package/dist/contract-http/adapter.js.map +1 -1
  40. package/dist/contract-http/factory.d.ts.map +1 -1
  41. package/dist/contract-http/factory.js +13 -14
  42. package/dist/contract-http/factory.js.map +1 -1
  43. package/dist/contract-http/openapi.d.ts +56 -7
  44. package/dist/contract-http/openapi.d.ts.map +1 -1
  45. package/dist/contract-http/openapi.js +371 -21
  46. package/dist/contract-http/openapi.js.map +1 -1
  47. package/dist/contract-http/types.d.ts +2 -13
  48. package/dist/contract-http/types.d.ts.map +1 -1
  49. package/dist/contract-types.d.ts +59 -10
  50. package/dist/contract-types.d.ts.map +1 -1
  51. package/dist/expect.d.ts +13 -0
  52. package/dist/expect.d.ts.map +1 -1
  53. package/dist/expect.js +18 -0
  54. package/dist/expect.js.map +1 -1
  55. package/dist/index.d.ts +55 -10
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +14 -8
  58. package/dist/index.js.map +1 -1
  59. package/dist/install-plugin.d.ts +94 -0
  60. package/dist/install-plugin.d.ts.map +1 -0
  61. package/dist/install-plugin.js +222 -0
  62. package/dist/install-plugin.js.map +1 -0
  63. package/dist/internal.d.ts +1 -0
  64. package/dist/internal.d.ts.map +1 -1
  65. package/dist/internal.js +5 -0
  66. package/dist/internal.js.map +1 -1
  67. package/dist/plugin.d.ts +45 -34
  68. package/dist/plugin.d.ts.map +1 -1
  69. package/dist/plugin.js +47 -34
  70. package/dist/plugin.js.map +1 -1
  71. package/dist/{test-builder.d.ts → test/builder.d.ts} +2 -2
  72. package/dist/test/builder.d.ts.map +1 -0
  73. package/dist/{test-builder.js → test/builder.js} +3 -3
  74. package/dist/{test-builder.js.map → test/builder.js.map} +1 -1
  75. package/dist/{each-builder.d.ts → test/each-builder.d.ts} +1 -1
  76. package/dist/test/each-builder.d.ts.map +1 -0
  77. package/dist/{each-builder.js → test/each-builder.js} +3 -3
  78. package/dist/test/each-builder.js.map +1 -0
  79. package/dist/{test-extend.d.ts → test/extend.d.ts} +3 -3
  80. package/dist/test/extend.d.ts.map +1 -0
  81. package/dist/{test-extend.js → test/extend.js} +5 -5
  82. package/dist/test/extend.js.map +1 -0
  83. package/dist/{test-utils.d.ts → test/utils.d.ts} +2 -2
  84. package/dist/test/utils.d.ts.map +1 -0
  85. package/dist/{test-utils.js → test/utils.js} +1 -1
  86. package/dist/test/utils.js.map +1 -0
  87. package/dist/types.d.ts +78 -7
  88. package/dist/types.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/contract-http/markdown.d.ts +0 -10
  91. package/dist/contract-http/markdown.d.ts.map +0 -1
  92. package/dist/contract-http/markdown.js +0 -21
  93. package/dist/contract-http/markdown.js.map +0 -1
  94. package/dist/each-builder.d.ts.map +0 -1
  95. package/dist/each-builder.js.map +0 -1
  96. package/dist/test-builder.d.ts.map +0 -1
  97. package/dist/test-extend.d.ts.map +0 -1
  98. package/dist/test-extend.js.map +0 -1
  99. package/dist/test-utils.d.ts.map +0 -1
  100. package/dist/test-utils.js.map +0 -1
@@ -1,38 +1,388 @@
1
1
  /**
2
2
  * OpenAPI generation for HTTP contracts.
3
3
  *
4
- * **P2 stub** — full logic will be migrated here from
5
- * `packages/mcp/src/index.ts` L1445–L1700 in P4. At that point MCP's
6
- * `glubean_openapi` tool will call `adapter.toOpenApi(extracted)` instead
7
- * of inlining HTTP-specific logic.
4
+ * Two public functions:
5
+ * - `buildOpenApiPartForHttp(contract)` partial OpenAPI document for a
6
+ * single HTTP contract. Used as HTTP adapter's `artifacts.openapi`
7
+ * producer.
8
+ * - `mergeOpenApiParts(parts, options)` → combine partial docs into a
9
+ * full OpenAPI document with info / tags / components / paths. Used as
10
+ * `openapiArtifact.merge`.
8
11
  *
9
- * For now the stub returns a minimal OpenAPI fragment so adapter.toOpenApi
10
- * is wired end-to-end and tests don't throw.
12
+ * Logic ported from `packages/mcp/src/index.ts` `contractsToOpenApi` (CAR-1
13
+ * Phase 2 — the two-way split of the former 250-line monolith:
14
+ * per-contract path+operation build stays with the HTTP adapter, final
15
+ * assembly moves to the artifact kind). Behavior is byte-for-byte
16
+ * preserved; `packages/mcp/src/openapi-integration.test.ts` guards the
17
+ * contract.
11
18
  */
12
- export function buildOpenApiForHttp(projection) {
13
- // Stub: minimal path entry. Replaced with full implementation in P4.
14
- const method = (projection.meta?.method ?? "GET").toLowerCase();
15
- const path = projection.meta?.path ?? projection.target;
16
- const operation = {
17
- summary: projection.description,
18
- operationId: projection.id,
19
+ // =============================================================================
20
+ // Internal helpers
21
+ // =============================================================================
22
+ /**
23
+ * Map HttpSecurityScheme to OpenAPI securitySchemes entry + scheme name.
24
+ * Uses instanceName to disambiguate when multiple instances use different
25
+ * apiKey/oauth2 configurations (bearer/basic are canonical and shared).
26
+ */
27
+ function securityToOpenApi(security, instanceName) {
28
+ if (!security)
29
+ return null;
30
+ if (security === "bearer")
31
+ return { name: "bearerAuth", scheme: { type: "http", scheme: "bearer" } };
32
+ if (security === "basic")
33
+ return { name: "basicAuth", scheme: { type: "http", scheme: "basic" } };
34
+ if (typeof security === "object" && security !== null) {
35
+ const s = security;
36
+ const suffix = instanceName ? `_${instanceName}` : "";
37
+ if (s.type === "apiKey")
38
+ return {
39
+ name: `apiKeyAuth${suffix}`,
40
+ scheme: { type: "apiKey", name: s.name, in: s.in },
41
+ };
42
+ if (s.type === "oauth2")
43
+ return {
44
+ name: `oauth2Auth${suffix}`,
45
+ scheme: { type: "oauth2", flows: s.flows },
46
+ };
47
+ }
48
+ return null;
49
+ }
50
+ /**
51
+ * Read HTTP fields from either nested (v0.2+) or flat (pre-v0.2 fixture)
52
+ * shape. Mirrors MCP's former `toLegacyHttpContract` dual-read.
53
+ */
54
+ function readContractFields(c) {
55
+ const cAny = c;
56
+ const schemas = cAny.schemas;
57
+ return {
58
+ security: schemas?.security ?? cAny.security,
59
+ requestBody: schemas?.request?.body ?? cAny.requestSchema,
60
+ requestContentType: schemas?.request?.contentType ??
61
+ cAny.requestContentType,
62
+ requestHeaders: schemas?.request?.headers ?? cAny.requestHeaders,
63
+ requestExample: schemas?.request?.example ?? cAny.requestExample,
64
+ requestExamples: (schemas?.request?.examples ??
65
+ cAny.requestExamples),
19
66
  };
67
+ }
68
+ function readCaseFields(cas) {
69
+ const csAny = cas;
70
+ const cs_schemas = csAny.schemas;
71
+ const response = cs_schemas?.response;
72
+ const protocolExpect = csAny.protocolExpect;
73
+ return {
74
+ status: response?.status ?? protocolExpect?.status,
75
+ responseBody: response?.body ?? csAny.responseSchema,
76
+ responseContentType: response?.contentType ??
77
+ csAny.responseContentType,
78
+ responseHeaders: response?.headers ?? csAny.responseHeaders,
79
+ examples: (response?.examples ??
80
+ csAny.examples),
81
+ paramSchemas: (cs_schemas?.params ??
82
+ csAny.paramSchemas),
83
+ querySchemas: (cs_schemas?.query ??
84
+ csAny.querySchemas),
85
+ };
86
+ }
87
+ // =============================================================================
88
+ // Per-contract builder (HTTP adapter's artifacts.openapi producer)
89
+ // =============================================================================
90
+ /**
91
+ * Build a partial OpenAPI document for a single HTTP contract.
92
+ *
93
+ * Returns an object containing only the fields this contract contributes:
94
+ * a single `paths[apiPath][method]` entry, the `tags` it references (from
95
+ * `feature`), and the `components.securitySchemes` entry it needs (if any).
96
+ * Cross-contract fields (`openapi`, `info`, full `tags` array, full
97
+ * `components`) are materialized by `mergeOpenApiParts`.
98
+ *
99
+ * Returns `null` for non-HTTP protocols or malformed targets; the render
100
+ * pipeline drops null parts.
101
+ */
102
+ export function buildOpenApiPartForHttp(projection) {
103
+ const c = projection;
104
+ if (c.protocol !== "http")
105
+ return null;
106
+ const match = c.target.match(/^(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)\s+(.+)$/i);
107
+ if (!match)
108
+ return null;
109
+ const method = match[1].toLowerCase();
110
+ let apiPath = match[2];
111
+ // Convert :param to {param} for OpenAPI
112
+ apiPath = apiPath.replace(/:(\w+)/g, "{$1}");
113
+ // Dual-shape field reads (nested v0.2+ / flat pre-v0.2 fixtures)
114
+ const fields = readContractFields(c);
115
+ // Collect security scheme
116
+ const secMapping = securityToOpenApi(fields.security, c.instanceName);
20
117
  const responses = {};
21
- for (const c of projection.cases) {
22
- const status = String(c.schemas?.response?.status ?? 200);
23
- if (!responses[status]) {
24
- responses[status] = {
25
- description: c.description ?? "",
118
+ for (const cas of c.cases) {
119
+ const casFields = readCaseFields(cas);
120
+ const statusCode = String(casFields.status ?? 200);
121
+ const contentType = casFields.responseContentType ?? "application/json";
122
+ if (!responses[statusCode]) {
123
+ responses[statusCode] = {
124
+ description: cas.description ?? "",
125
+ contents: {},
126
+ headers: {},
26
127
  };
27
128
  }
129
+ const resp = responses[statusCode];
130
+ if (!resp.contents[contentType]) {
131
+ resp.contents[contentType] = { examples: {} };
132
+ }
133
+ const bucket = resp.contents[contentType];
134
+ // First non-undefined schema per (status, contentType) wins.
135
+ if (!bucket.schema && casFields.responseBody) {
136
+ bucket.schema = casFields.responseBody;
137
+ }
138
+ // Examples merge. Prefix with case key to guarantee uniqueness.
139
+ if (casFields.examples) {
140
+ for (const [exName, ex] of Object.entries(casFields.examples)) {
141
+ const fullName = exName === "default" ? cas.key : `${cas.key}_${exName}`;
142
+ bucket.examples[fullName] = ex;
143
+ }
144
+ }
145
+ // Response headers merge at status level (first wins per header name).
146
+ if (casFields.responseHeaders) {
147
+ const headersSchema = casFields.responseHeaders;
148
+ if (headersSchema?.properties) {
149
+ for (const [headerName, headerSchema] of Object.entries(headersSchema.properties)) {
150
+ if (!resp.headers[headerName]) {
151
+ resp.headers[headerName] = { schema: headerSchema };
152
+ }
153
+ }
154
+ }
155
+ }
28
156
  }
29
- operation.responses = responses;
30
- return {
157
+ // Finalize response shape for OpenAPI
158
+ const openApiResponses = {};
159
+ for (const [status, resp] of Object.entries(responses)) {
160
+ const out = { description: resp.description };
161
+ const contentOut = {};
162
+ for (const [ctype, bucket] of Object.entries(resp.contents)) {
163
+ if (bucket.schema || Object.keys(bucket.examples).length > 0) {
164
+ const entry = {};
165
+ if (bucket.schema)
166
+ entry.schema = bucket.schema;
167
+ if (Object.keys(bucket.examples).length > 0)
168
+ entry.examples = bucket.examples;
169
+ contentOut[ctype] = entry;
170
+ }
171
+ }
172
+ if (Object.keys(contentOut).length > 0)
173
+ out.content = contentOut;
174
+ if (Object.keys(resp.headers).length > 0)
175
+ out.headers = resp.headers;
176
+ openApiResponses[status] = out;
177
+ }
178
+ // Build operation
179
+ const operation = {
180
+ operationId: c.id,
181
+ summary: c.description,
182
+ responses: openApiResponses,
183
+ };
184
+ if (c.feature)
185
+ operation.tags = [c.feature];
186
+ // Contract-level deprecated flag
187
+ if (c.deprecated) {
188
+ operation.deprecated = true;
189
+ operation["x-deprecated-reason"] = c.deprecated;
190
+ }
191
+ // Contract-level OpenAPI extensions (x-* keys)
192
+ if (c.extensions) {
193
+ for (const [extKey, extVal] of Object.entries(c.extensions)) {
194
+ operation[extKey] = extVal;
195
+ }
196
+ }
197
+ // Operation-level security from contract instance
198
+ if (secMapping) {
199
+ operation.security = [{ [secMapping.name]: [] }];
200
+ }
201
+ else if (fields.security === null) {
202
+ operation.security = []; // explicitly public
203
+ }
204
+ const mergeFieldLevel = (target, source) => {
205
+ if (!source)
206
+ return;
207
+ for (const [name, meta] of Object.entries(source)) {
208
+ if (!target[name])
209
+ target[name] = {};
210
+ const slot = target[name];
211
+ if (slot.schema === undefined && meta.schema !== undefined)
212
+ slot.schema = meta.schema;
213
+ if (slot.description === undefined && meta.description !== undefined)
214
+ slot.description = meta.description;
215
+ if (slot.required === undefined && meta.required !== undefined)
216
+ slot.required = meta.required;
217
+ if (slot.deprecated === undefined && meta.deprecated !== undefined)
218
+ slot.deprecated = meta.deprecated;
219
+ }
220
+ };
221
+ const mergedParamMetas = {};
222
+ const mergedQueryMetas = {};
223
+ for (const cas of c.cases) {
224
+ const casFields = readCaseFields(cas);
225
+ mergeFieldLevel(mergedParamMetas, casFields.paramSchemas);
226
+ mergeFieldLevel(mergedQueryMetas, casFields.querySchemas);
227
+ }
228
+ // Extract path parameters from URL and attach merged metadata
229
+ const paramMatches = apiPath.matchAll(/\{(\w+)\}/g);
230
+ const pathParams = [...paramMatches].map((m) => {
231
+ const name = m[1];
232
+ const meta = mergedParamMetas[name];
233
+ return {
234
+ name,
235
+ in: "path",
236
+ required: meta?.required ?? true,
237
+ schema: meta?.schema ?? { type: "string" },
238
+ ...(meta?.description ? { description: meta.description } : {}),
239
+ ...(meta?.deprecated ? { deprecated: true } : {}),
240
+ };
241
+ });
242
+ // Query parameters (only ones with metadata)
243
+ const queryParams = Object.entries(mergedQueryMetas).map(([name, meta]) => ({
244
+ name,
245
+ in: "query",
246
+ required: meta.required ?? false,
247
+ schema: meta.schema ?? { type: "string" },
248
+ ...(meta.description ? { description: meta.description } : {}),
249
+ ...(meta.deprecated ? { deprecated: true } : {}),
250
+ }));
251
+ // Request header parameters from contract-level request.headers schema.
252
+ const headerParams = [];
253
+ const reqHeadersSchema = fields.requestHeaders;
254
+ if (reqHeadersSchema &&
255
+ typeof reqHeadersSchema === "object" &&
256
+ reqHeadersSchema.properties) {
257
+ const requiredList = Array.isArray(reqHeadersSchema.required)
258
+ ? reqHeadersSchema.required
259
+ : [];
260
+ for (const [headerName, headerSchema] of Object.entries(reqHeadersSchema.properties)) {
261
+ headerParams.push({
262
+ name: headerName,
263
+ in: "header",
264
+ required: requiredList.includes(headerName),
265
+ schema: headerSchema,
266
+ });
267
+ }
268
+ }
269
+ const allParams = [...pathParams, ...queryParams, ...headerParams];
270
+ if (allParams.length > 0)
271
+ operation.parameters = allParams;
272
+ // Request body (schema + examples)
273
+ if (fields.requestBody ||
274
+ fields.requestExample !== undefined ||
275
+ fields.requestExamples) {
276
+ const reqContentType = fields.requestContentType ?? "application/json";
277
+ const contentEntry = {};
278
+ if (fields.requestBody)
279
+ contentEntry.schema = fields.requestBody;
280
+ const exMap = {};
281
+ if (fields.requestExample !== undefined) {
282
+ exMap.default = { value: fields.requestExample };
283
+ }
284
+ if (fields.requestExamples) {
285
+ for (const [k, v] of Object.entries(fields.requestExamples)) {
286
+ exMap[k] = v;
287
+ }
288
+ }
289
+ if (Object.keys(exMap).length > 0)
290
+ contentEntry.examples = exMap;
291
+ operation.requestBody = {
292
+ content: { [reqContentType]: contentEntry },
293
+ };
294
+ }
295
+ // Assemble the partial doc
296
+ const partial = {
31
297
  paths: {
32
- [path]: {
298
+ [apiPath]: {
33
299
  [method]: operation,
34
300
  },
35
301
  },
36
302
  };
303
+ if (c.feature) {
304
+ partial.tags = [{ name: c.feature }];
305
+ }
306
+ if (secMapping) {
307
+ partial.components = {
308
+ securitySchemes: { [secMapping.name]: secMapping.scheme },
309
+ };
310
+ }
311
+ return partial;
312
+ }
313
+ // =============================================================================
314
+ // Merge: combine partial docs into a full OpenAPI document
315
+ // =============================================================================
316
+ /**
317
+ * Combine per-contract partials into a full OpenAPI 3.1 document.
318
+ *
319
+ * - `paths`: deep-merge at 2 levels (same path, different methods combine)
320
+ * - `components.securitySchemes`: union by name (first wins on collision;
321
+ * name uniqueness is handled at part construction via `instanceName` suffix)
322
+ * - `tags`: dedupe by name across parts
323
+ * - `info`: built from options.title / options.version (defaults match MCP)
324
+ * - `servers`: from options, if present
325
+ *
326
+ * Null / non-contributing parts are filtered by the render pipeline before
327
+ * reaching here.
328
+ */
329
+ export function mergeOpenApiParts(parts, options) {
330
+ const paths = {};
331
+ const tagsByName = new Map();
332
+ const securitySchemes = {};
333
+ for (const part of parts) {
334
+ const partPaths = (part.paths ?? {});
335
+ for (const [apiPath, methods] of Object.entries(partPaths)) {
336
+ if (!paths[apiPath])
337
+ paths[apiPath] = {};
338
+ for (const [method, operation] of Object.entries(methods)) {
339
+ // Same path + method collision shouldn't happen (ids unique) but if it
340
+ // does, first-wins matches MCP's Object.assign semantics.
341
+ if (!paths[apiPath][method]) {
342
+ paths[apiPath][method] = operation;
343
+ }
344
+ }
345
+ }
346
+ const partTags = (part.tags ?? []);
347
+ for (const tag of partTags) {
348
+ if (tag?.name && !tagsByName.has(tag.name))
349
+ tagsByName.set(tag.name, tag);
350
+ }
351
+ const partSchemes = (part.components ?? {}).securitySchemes;
352
+ if (partSchemes) {
353
+ for (const [name, scheme] of Object.entries(partSchemes)) {
354
+ if (!securitySchemes[name])
355
+ securitySchemes[name] = scheme;
356
+ }
357
+ }
358
+ }
359
+ const title = options?.title ?? "API Specification";
360
+ const version = options?.version ?? "1.0.0";
361
+ const doc = {
362
+ openapi: "3.1.0",
363
+ info: { title, version },
364
+ };
365
+ if (options?.servers && options.servers.length > 0) {
366
+ doc.servers = options.servers;
367
+ }
368
+ if (tagsByName.size > 0) {
369
+ doc.tags = [...tagsByName.values()];
370
+ }
371
+ if (Object.keys(securitySchemes).length > 0) {
372
+ doc.components = { securitySchemes };
373
+ }
374
+ doc.paths = paths;
375
+ return doc;
37
376
  }
377
+ /**
378
+ * Empty OpenAPI 3.1 skeleton returned when no HTTP contract contributes a
379
+ * part (e.g. a project with only gRPC / GraphQL contracts, or an empty
380
+ * project). Used as `openapiArtifact.empty` so callers always receive a
381
+ * valid `OpenApiDocument`.
382
+ */
383
+ export const emptyOpenApiDocument = {
384
+ openapi: "3.1.0",
385
+ info: { title: "", version: "0.0.0" },
386
+ paths: {},
387
+ };
38
388
  //# sourceMappingURL=openapi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/contract-http/openapi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,UAAU,mBAAmB,CACjC,UAA0E;IAE1E,qEAAqE;IACrE,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC;IAExD,MAAM,SAAS,GAA4B;QACzC,OAAO,EAAE,UAAU,CAAC,WAAW;QAC/B,WAAW,EAAE,UAAU,CAAC,EAAE;KAC3B,CAAC;IAEF,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,MAAM,CAAC,GAAG;gBAClB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;aACjC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;IAEhC,OAAO;QACL,KAAK,EAAE;YACL,CAAC,IAAI,CAAC,EAAE;gBACN,CAAC,MAAM,CAAC,EAAE,SAAS;aACpB;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/contract-http/openapi.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@
10
10
  * ContractCase, ContractExpect, etc.).
11
11
  */
12
12
  import type { HttpClient, SchemaLike, TestContext } from "../types.js";
13
- import type { CaseDefaultRun, CaseRequires, CaseSeverity, Extensions } from "../contract-types.js";
13
+ import type { BaseCaseSpec, Extensions } from "../contract-types.js";
14
14
  /**
15
15
  * HTTP security scheme declaration for contract instances.
16
16
  * Maps to OpenAPI `securitySchemes`. Authoritative metadata, not docs-only.
@@ -69,7 +69,7 @@ export interface ContractExpect<T = unknown> {
69
69
  /** Named response examples (OpenAPI docs). */
70
70
  examples?: Record<string, ContractExample<T>>;
71
71
  }
72
- export interface ContractCase<T = unknown, S = void> {
72
+ export interface ContractCase<T = unknown, S = void> extends BaseCaseSpec {
73
73
  /** Per-case HTTP client override. */
74
74
  client?: HttpClient;
75
75
  /** Why this case exists — required. */
@@ -95,17 +95,6 @@ export interface ContractCase<T = unknown, S = void> {
95
95
  teardown?: (ctx: TestContext, state: S) => Promise<void>;
96
96
  /** Business-logic verify — runs after status and schema validation. */
97
97
  verify?: (ctx: TestContext, res: T) => Promise<void>;
98
- /** Not yet executable; reason shown in skip message. */
99
- deferred?: string;
100
- /** Deprecated; value is the reason. */
101
- deprecated?: string;
102
- /** Additional tags (merged with contract-level tags). */
103
- tags?: string[];
104
- severity?: CaseSeverity;
105
- requires?: CaseRequires;
106
- defaultRun?: CaseDefaultRun;
107
- /** Per-case OpenAPI extensions. */
108
- extensions?: Extensions;
109
98
  }
110
99
  /**
111
100
  * Structured request specification. Can be a bare SchemaLike (JSON body
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contract-http/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/contract-http/types.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@
18
18
  * and `internal/40-discovery/proposals/contract-flow.md` v9 for design.
19
19
  */
20
20
  import type { Test, TestContext } from "./types.js";
21
+ import type { KnownArtifacts, KnownArtifactParts, KnownArtifactOptions } from "./index.js";
21
22
  /**
22
23
  * Case lifecycle.
23
24
  *
@@ -73,6 +74,24 @@ export interface FailureClassification {
73
74
  retryable?: boolean;
74
75
  message?: string;
75
76
  }
77
+ /**
78
+ * Minimum shape every case spec must satisfy. Adapter-specific case specs
79
+ * (HttpContractCase / GrpcContractCase / GraphqlContractCase / ...) extend
80
+ * this with protocol-specific fields.
81
+ *
82
+ * Core (`dispatchContract`) reads these fields directly from `spec.cases[key]`.
83
+ * Adapter-specific fields are opaque to core and passed through to the adapter.
84
+ */
85
+ export interface BaseCaseSpec {
86
+ description?: string;
87
+ deferred?: string;
88
+ deprecated?: string;
89
+ severity?: CaseSeverity;
90
+ requires?: CaseRequires;
91
+ defaultRun?: CaseDefaultRun;
92
+ tags?: string[];
93
+ extensions?: Extensions;
94
+ }
76
95
  /**
77
96
  * Protocol-agnostic case metadata. `schemas` is plugin-defined payload shape,
78
97
  * opaque to core.
@@ -182,7 +201,17 @@ export interface ContractProtocolAdapter<Spec = unknown, RuntimeSchemas = unknow
182
201
  * protocol-agnostic skeleton (no `schemas` / `meta`). See `contract-flow.md`
183
202
  * §3.5.3 rule 3.
184
203
  */
185
- normalize?: (projection: ContractProjection<RuntimeSchemas, RuntimeMeta> & {
204
+ /**
205
+ * Convert the runtime projection (may contain live refs like Zod schemas)
206
+ * into the JSON-safe `Extracted` form consumed by downstream (scanner /
207
+ * MCP / CLI / cloud). SDK's `dispatchContract` calls this unconditionally
208
+ * at contract construction and stores the result on the carrier as
209
+ * `_extracted` — scanner reads that directly. Adapter is responsible for
210
+ * knowing which fields are schemas (convert Zod → JSON Schema) vs literal
211
+ * example data (pass through) vs protocol-specific metadata that must
212
+ * survive normalize (e.g. HTTP `security`).
213
+ */
214
+ normalize: (projection: ContractProjection<RuntimeSchemas, RuntimeMeta> & {
186
215
  id: string;
187
216
  }) => ExtractedContractProjection<SafeSchemas, SafeMeta>;
188
217
  /**
@@ -197,16 +226,23 @@ export interface ContractProtocolAdapter<Spec = unknown, RuntimeSchemas = unknow
197
226
  }>;
198
227
  }) => FailureClassification | undefined;
199
228
  /**
200
- * Optional: render contract as an OpenAPI fragment. Input is the Extracted
201
- * projection (after normalize). Used by MCP `glubean_openapi` tool.
202
- */
203
- toOpenApi?: (projection: ExtractedContractProjection<SafeSchemas, SafeMeta>) => Record<string, unknown> | undefined;
204
- /**
205
- * Optional: render contract as Markdown documentation. Used by
206
- * CLI `glubean contracts --format md-outline` and
207
- * MCP `glubean_project_contracts`.
229
+ * Artifact producers declared by this adapter. Each entry is a
230
+ * per-contract renderer for a registered artifact kind (see
231
+ * `@glubean/sdk`'s `ArtifactKind` + `renderArtifact` / `KnownArtifacts`).
232
+ * Producers return the kind's Part type; cross-contract merging is the
233
+ * kind's responsibility.
234
+ *
235
+ * Keyed by `ArtifactKind.name`. Third-party plugins add new keys by
236
+ * augmenting `KnownArtifacts` / `KnownArtifactParts` / `KnownArtifactOptions`
237
+ * at the package root via `declare module "@glubean/sdk"`.
238
+ *
239
+ * Replaces the deprecated per-adapter `toMarkdown?` / `toOpenApi?` hooks
240
+ * (removed after v0.2.x) which polluted the generic interface with
241
+ * protocol-specific artifacts (OpenAPI is HTTP-only).
208
242
  */
209
- toMarkdown?: (projection: ExtractedContractProjection<SafeSchemas, SafeMeta>) => string;
243
+ artifacts?: {
244
+ [K in keyof KnownArtifacts]?: (projection: ExtractedContractProjection<SafeSchemas, SafeMeta>, options?: KnownArtifactOptions[K]) => KnownArtifactParts[K];
245
+ };
210
246
  /**
211
247
  * Optional: render the `target` string for display. HTTP: "POST /users"
212
248
  * stays as-is. gRPC: "Greeter/SayHello" might become "Greeter.SayHello()".
@@ -277,6 +313,19 @@ export interface ProtocolContract<Spec = unknown, PayloadSchemas = unknown, Meta
277
313
  readonly _projection: ContractProjection<PayloadSchemas, Meta> & {
278
314
  id: string;
279
315
  };
316
+ /**
317
+ * JSON-safe extracted projection — result of `adapter.normalize(_projection)`,
318
+ * computed by the dispatcher at contract construction. Scanner / MCP / CLI
319
+ * / cloud read this field directly as the canonical safe form. Never
320
+ * contains live refs (Zod schemas converted to plain JSON Schema etc.).
321
+ *
322
+ * Typed with the same generic slot as `_projection` for structural
323
+ * compatibility; at runtime it is always the Safe shape produced by
324
+ * the adapter's `normalize`.
325
+ */
326
+ readonly _extracted: ExtractedContractProjection<PayloadSchemas, Meta> & {
327
+ id: string;
328
+ };
280
329
  /**
281
330
  * Adapter-private runtime spec carrier. Holds the merged executable spec
282
331
  * (scoped-factory defaults + contract spec) used by `executeCaseInFlow`