@glubean/sdk 0.2.1 → 0.2.3

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 (119) hide show
  1. package/dist/bootstrap-registry.d.ts +38 -0
  2. package/dist/bootstrap-registry.d.ts.map +1 -0
  3. package/dist/bootstrap-registry.js +54 -0
  4. package/dist/bootstrap-registry.js.map +1 -0
  5. package/dist/configure/http.d.ts +25 -0
  6. package/dist/configure/http.d.ts.map +1 -0
  7. package/dist/configure/http.js +88 -0
  8. package/dist/configure/http.js.map +1 -0
  9. package/dist/configure/index.d.ts +78 -0
  10. package/dist/configure/index.d.ts.map +1 -0
  11. package/dist/configure/index.js +78 -0
  12. package/dist/configure/index.js.map +1 -0
  13. package/dist/configure/plugin.d.ts +23 -0
  14. package/dist/configure/plugin.d.ts.map +1 -0
  15. package/dist/configure/plugin.js +81 -0
  16. package/dist/configure/plugin.js.map +1 -0
  17. package/dist/configure/runtime.d.ts +24 -0
  18. package/dist/configure/runtime.d.ts.map +1 -0
  19. package/dist/configure/runtime.js +45 -0
  20. package/dist/configure/runtime.js.map +1 -0
  21. package/dist/configure/template.d.ts +22 -0
  22. package/dist/configure/template.d.ts.map +1 -0
  23. package/dist/configure/template.js +34 -0
  24. package/dist/configure/template.js.map +1 -0
  25. package/dist/configure/vars.d.ts +20 -0
  26. package/dist/configure/vars.d.ts.map +1 -0
  27. package/dist/configure/vars.js +48 -0
  28. package/dist/configure/vars.js.map +1 -0
  29. package/dist/configure.d.ts +2 -133
  30. package/dist/configure.d.ts.map +1 -1
  31. package/dist/configure.js +2 -436
  32. package/dist/configure.js.map +1 -1
  33. package/dist/contract-artifacts.d.ts +268 -0
  34. package/dist/contract-artifacts.d.ts.map +1 -0
  35. package/dist/contract-artifacts.js +402 -0
  36. package/dist/contract-artifacts.js.map +1 -0
  37. package/dist/contract-core.d.ts +43 -1
  38. package/dist/contract-core.d.ts.map +1 -1
  39. package/dist/contract-core.js +376 -5
  40. package/dist/contract-core.js.map +1 -1
  41. package/dist/contract-http/adapter.d.ts +1 -7
  42. package/dist/contract-http/adapter.d.ts.map +1 -1
  43. package/dist/contract-http/adapter.js +221 -199
  44. package/dist/contract-http/adapter.js.map +1 -1
  45. package/dist/contract-http/factory.d.ts.map +1 -1
  46. package/dist/contract-http/factory.js +13 -14
  47. package/dist/contract-http/factory.js.map +1 -1
  48. package/dist/contract-http/index.d.ts +1 -0
  49. package/dist/contract-http/index.d.ts.map +1 -1
  50. package/dist/contract-http/index.js +1 -0
  51. package/dist/contract-http/index.js.map +1 -1
  52. package/dist/contract-http/openapi.d.ts +56 -7
  53. package/dist/contract-http/openapi.d.ts.map +1 -1
  54. package/dist/contract-http/openapi.js +371 -21
  55. package/dist/contract-http/openapi.js.map +1 -1
  56. package/dist/contract-http/types.d.ts +72 -24
  57. package/dist/contract-http/types.d.ts.map +1 -1
  58. package/dist/contract-http/types.js +45 -1
  59. package/dist/contract-http/types.js.map +1 -1
  60. package/dist/contract-types.d.ts +270 -30
  61. package/dist/contract-types.d.ts.map +1 -1
  62. package/dist/expect.d.ts +13 -0
  63. package/dist/expect.d.ts.map +1 -1
  64. package/dist/expect.js +18 -0
  65. package/dist/expect.js.map +1 -1
  66. package/dist/index.d.ts +57 -10
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +15 -8
  69. package/dist/index.js.map +1 -1
  70. package/dist/install-plugin.d.ts +94 -0
  71. package/dist/install-plugin.d.ts.map +1 -0
  72. package/dist/install-plugin.js +222 -0
  73. package/dist/install-plugin.js.map +1 -0
  74. package/dist/internal.d.ts +2 -0
  75. package/dist/internal.d.ts.map +1 -1
  76. package/dist/internal.js +8 -0
  77. package/dist/internal.js.map +1 -1
  78. package/dist/plugin.d.ts +45 -34
  79. package/dist/plugin.d.ts.map +1 -1
  80. package/dist/plugin.js +47 -34
  81. package/dist/plugin.js.map +1 -1
  82. package/dist/runner-input-channel.d.ts +95 -0
  83. package/dist/runner-input-channel.d.ts.map +1 -0
  84. package/dist/runner-input-channel.js +110 -0
  85. package/dist/runner-input-channel.js.map +1 -0
  86. package/dist/{test-builder.d.ts → test/builder.d.ts} +2 -2
  87. package/dist/test/builder.d.ts.map +1 -0
  88. package/dist/{test-builder.js → test/builder.js} +3 -3
  89. package/dist/{test-builder.js.map → test/builder.js.map} +1 -1
  90. package/dist/{each-builder.d.ts → test/each-builder.d.ts} +1 -1
  91. package/dist/test/each-builder.d.ts.map +1 -0
  92. package/dist/{each-builder.js → test/each-builder.js} +3 -3
  93. package/dist/test/each-builder.js.map +1 -0
  94. package/dist/{test-extend.d.ts → test/extend.d.ts} +3 -3
  95. package/dist/test/extend.d.ts.map +1 -0
  96. package/dist/{test-extend.js → test/extend.js} +5 -5
  97. package/dist/test/extend.js.map +1 -0
  98. package/dist/{test-utils.d.ts → test/utils.d.ts} +2 -2
  99. package/dist/test/utils.d.ts.map +1 -0
  100. package/dist/{test-utils.js → test/utils.js} +1 -1
  101. package/dist/test/utils.js.map +1 -0
  102. package/dist/types.d.ts +78 -7
  103. package/dist/types.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/dist/contract-http/flow-helpers.d.ts +0 -12
  106. package/dist/contract-http/flow-helpers.d.ts.map +0 -1
  107. package/dist/contract-http/flow-helpers.js +0 -34
  108. package/dist/contract-http/flow-helpers.js.map +0 -1
  109. package/dist/contract-http/markdown.d.ts +0 -10
  110. package/dist/contract-http/markdown.d.ts.map +0 -1
  111. package/dist/contract-http/markdown.js +0 -21
  112. package/dist/contract-http/markdown.js.map +0 -1
  113. package/dist/each-builder.d.ts.map +0 -1
  114. package/dist/each-builder.js.map +0 -1
  115. package/dist/test-builder.d.ts.map +0 -1
  116. package/dist/test-extend.d.ts.map +0 -1
  117. package/dist/test-extend.js.map +0 -1
  118. package/dist/test-utils.d.ts.map +0 -1
  119. package/dist/test-utils.js.map +0 -1
@@ -27,13 +27,24 @@ function mergeHttpDefaults(defaults, spec) {
27
27
  return spec;
28
28
  const mergedTags = [...(defaults.tags ?? []), ...(spec.tags ?? [])];
29
29
  const mergedExtensions = mergeExtensions(defaults.extensions, spec.extensions);
30
- return {
30
+ // Embed the factory's instanceName + security into the spec via a private
31
+ // `_factory` channel. `projectHttp` reads this at projection time so the
32
+ // produced `_projection` (and therefore `_extracted`) already carry these
33
+ // fields — no post-dispatch mutation needed.
34
+ const baseMerged = {
31
35
  ...spec,
32
36
  client: spec.client ?? defaults.client,
33
37
  feature: spec.feature ?? defaults.feature,
34
38
  tags: mergedTags.length > 0 ? mergedTags : undefined,
35
39
  extensions: mergedExtensions,
36
40
  };
41
+ if (defaults._name) {
42
+ baseMerged._factory = {
43
+ instanceName: defaults._name,
44
+ security: defaults.security,
45
+ };
46
+ }
47
+ return baseMerged;
37
48
  }
38
49
  /**
39
50
  * Build a scoped HTTP factory. `dispatch` is `contract.http` attached by
@@ -47,10 +58,7 @@ export function createHttpFactory(dispatch, defaults) {
47
58
  `then call instance("${id}", spec).`);
48
59
  }
49
60
  const merged = mergeHttpDefaults(defaults, spec);
50
- const result = dispatch(id, merged);
51
- // Attach instanceName + security after dispatch so they appear in projection
52
- applyInstanceMetadata(result, defaults._name, defaults.security);
53
- return result;
61
+ return dispatch(id, merged);
54
62
  };
55
63
  factory.with = (name, more) => {
56
64
  const mergedTags = [...(defaults?.tags ?? []), ...(more.tags ?? [])];
@@ -71,13 +79,4 @@ export function createHttpFactory(dispatch, defaults) {
71
79
  export function createHttpRoot(dispatch) {
72
80
  return createHttpFactory(dispatch);
73
81
  }
74
- function applyInstanceMetadata(contract, instanceName, security) {
75
- // Mutate _projection to attach instanceName / security (not otherwise
76
- // available to adapter.project since it doesn't know the factory defaults)
77
- const proj = contract._projection;
78
- proj.instanceName = instanceName;
79
- if (security != null && proj.schemas) {
80
- proj.schemas.security = security;
81
- }
82
- }
83
82
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/contract-http/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/contract-http/factory.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,6 @@
12
12
  */
13
13
  export { httpAdapter } from "./adapter.js";
14
14
  export { createHttpFactory, createHttpRoot } from "./factory.js";
15
+ export { defineHttpCase } from "./types.js";
15
16
  export type { HttpContractSpec, HttpContractDefaults, HttpSecurityScheme, HttpContractRoot, HttpContractFactory, ContractCase, ContractExpect, ContractExample, NormalizedHeaders, ParamValue, RequestSpec, HttpPayloadSchemas, HttpSafeSchemas, HttpContractMeta, HttpParamSchema, HttpParamMeta, HttpFlowCaseOutput, InferHttpInputs, InferHttpOutput, } from "./types.js";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract-http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjE,YAAY,EAEV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,WAAW,EAEX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract-http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,YAAY,EAEV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,WAAW,EAEX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -12,4 +12,5 @@
12
12
  */
13
13
  export { httpAdapter } from "./adapter.js";
14
14
  export { createHttpFactory, createHttpRoot } from "./factory.js";
15
+ export { defineHttpCase } from "./types.js";
15
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract-http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract-http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -1,15 +1,64 @@
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
19
  import type { ExtractedContractProjection } from "../contract-types.js";
13
20
  import type { HttpContractMeta, HttpSafeSchemas } from "./types.js";
14
- export declare function buildOpenApiForHttp(projection: ExtractedContractProjection<HttpSafeSchemas, HttpContractMeta>): Record<string, unknown> | undefined;
21
+ export type OpenApiDocument = Record<string, unknown>;
22
+ export interface OpenApiOptions {
23
+ title?: string;
24
+ version?: string;
25
+ servers?: Array<{
26
+ url: string;
27
+ description?: string;
28
+ }>;
29
+ }
30
+ /**
31
+ * Build a partial OpenAPI document for a single HTTP contract.
32
+ *
33
+ * Returns an object containing only the fields this contract contributes:
34
+ * a single `paths[apiPath][method]` entry, the `tags` it references (from
35
+ * `feature`), and the `components.securitySchemes` entry it needs (if any).
36
+ * Cross-contract fields (`openapi`, `info`, full `tags` array, full
37
+ * `components`) are materialized by `mergeOpenApiParts`.
38
+ *
39
+ * Returns `null` for non-HTTP protocols or malformed targets; the render
40
+ * pipeline drops null parts.
41
+ */
42
+ export declare function buildOpenApiPartForHttp(projection: ExtractedContractProjection<HttpSafeSchemas, HttpContractMeta>): OpenApiDocument | null;
43
+ /**
44
+ * Combine per-contract partials into a full OpenAPI 3.1 document.
45
+ *
46
+ * - `paths`: deep-merge at 2 levels (same path, different methods combine)
47
+ * - `components.securitySchemes`: union by name (first wins on collision;
48
+ * name uniqueness is handled at part construction via `instanceName` suffix)
49
+ * - `tags`: dedupe by name across parts
50
+ * - `info`: built from options.title / options.version (defaults match MCP)
51
+ * - `servers`: from options, if present
52
+ *
53
+ * Null / non-contributing parts are filtered by the render pipeline before
54
+ * reaching here.
55
+ */
56
+ export declare function mergeOpenApiParts(parts: OpenApiDocument[], options?: OpenApiOptions): OpenApiDocument;
57
+ /**
58
+ * Empty OpenAPI 3.1 skeleton returned when no HTTP contract contributes a
59
+ * part (e.g. a project with only gRPC / GraphQL contracts, or an empty
60
+ * project). Used as `openapiArtifact.empty` so callers always receive a
61
+ * valid `OpenApiDocument`.
62
+ */
63
+ export declare const emptyOpenApiDocument: OpenApiDocument;
15
64
  //# sourceMappingURL=openapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/contract-http/openapi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,2BAA2B,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,2BAA2B,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACzE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA4BrC"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/contract-http/openapi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMpE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxD;AAyMD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,2BAA2B,CAAC,eAAe,EAAE,gBAAgB,CAAC,GACzE,eAAe,GAAG,IAAI,CA6QxB;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EAAE,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,eAAe,CA8DjB;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAIlC,CAAC"}
@@ -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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"}