micro-contracts 0.16.3 → 0.17.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 (183) hide show
  1. package/cli-contract.yaml +0 -32
  2. package/dist/micro-contracts.bundle.mjs +4682 -0
  3. package/dist/micro-contracts.bundle.mjs.map +7 -0
  4. package/docs/cli-reference.md +0 -28
  5. package/package.json +20 -23
  6. package/dist/agents/context-builder.d.ts +0 -5
  7. package/dist/agents/context-builder.d.ts.map +0 -1
  8. package/dist/agents/context-builder.js +0 -239
  9. package/dist/agents/context-builder.js.map +0 -1
  10. package/dist/agents/formatter.d.ts +0 -9
  11. package/dist/agents/formatter.d.ts.map +0 -1
  12. package/dist/agents/formatter.js +0 -124
  13. package/dist/agents/formatter.js.map +0 -1
  14. package/dist/agents/index.d.ts +0 -5
  15. package/dist/agents/index.d.ts.map +0 -1
  16. package/dist/agents/index.js +0 -3
  17. package/dist/agents/index.js.map +0 -1
  18. package/dist/agents/orchestrator.d.ts +0 -5
  19. package/dist/agents/orchestrator.d.ts.map +0 -1
  20. package/dist/agents/orchestrator.js +0 -105
  21. package/dist/agents/orchestrator.js.map +0 -1
  22. package/dist/agents/types.d.ts +0 -21
  23. package/dist/agents/types.d.ts.map +0 -1
  24. package/dist/agents/types.js +0 -2
  25. package/dist/agents/types.js.map +0 -1
  26. package/dist/cli/templates.d.ts +0 -22
  27. package/dist/cli/templates.d.ts.map +0 -1
  28. package/dist/cli/templates.js +0 -445
  29. package/dist/cli/templates.js.map +0 -1
  30. package/dist/cli.d.ts +0 -3
  31. package/dist/cli.d.ts.map +0 -1
  32. package/dist/cli.js +0 -1142
  33. package/dist/cli.js.map +0 -1
  34. package/dist/commands/audit-guardrails.d.ts +0 -13
  35. package/dist/commands/audit-guardrails.d.ts.map +0 -1
  36. package/dist/commands/audit-guardrails.js +0 -32
  37. package/dist/commands/audit-guardrails.js.map +0 -1
  38. package/dist/commands/audit-openapi.d.ts +0 -13
  39. package/dist/commands/audit-openapi.d.ts.map +0 -1
  40. package/dist/commands/audit-openapi.js +0 -32
  41. package/dist/commands/audit-openapi.js.map +0 -1
  42. package/dist/commands/propose-overlays.d.ts +0 -13
  43. package/dist/commands/propose-overlays.d.ts.map +0 -1
  44. package/dist/commands/propose-overlays.js +0 -32
  45. package/dist/commands/propose-overlays.js.map +0 -1
  46. package/dist/commands/review-published.d.ts +0 -13
  47. package/dist/commands/review-published.d.ts.map +0 -1
  48. package/dist/commands/review-published.js +0 -32
  49. package/dist/commands/review-published.js.map +0 -1
  50. package/dist/generated/commands.d.ts +0 -2
  51. package/dist/generated/commands.d.ts.map +0 -1
  52. package/dist/generated/commands.js +0 -2
  53. package/dist/generated/commands.js.map +0 -1
  54. package/dist/generated/dsl/agents.d.ts +0 -34
  55. package/dist/generated/dsl/agents.d.ts.map +0 -1
  56. package/dist/generated/dsl/agents.js +0 -98
  57. package/dist/generated/dsl/agents.js.map +0 -1
  58. package/dist/generated/dsl/handoffs.d.ts +0 -457
  59. package/dist/generated/dsl/handoffs.d.ts.map +0 -1
  60. package/dist/generated/dsl/handoffs.js +0 -205
  61. package/dist/generated/dsl/handoffs.js.map +0 -1
  62. package/dist/generated/dsl/index.d.ts +0 -13
  63. package/dist/generated/dsl/index.d.ts.map +0 -1
  64. package/dist/generated/dsl/index.js +0 -10
  65. package/dist/generated/dsl/index.js.map +0 -1
  66. package/dist/generated/dsl/tasks.d.ts +0 -26
  67. package/dist/generated/dsl/tasks.d.ts.map +0 -1
  68. package/dist/generated/dsl/tasks.js +0 -133
  69. package/dist/generated/dsl/tasks.js.map +0 -1
  70. package/dist/generated/dsl/workflows.d.ts +0 -34
  71. package/dist/generated/dsl/workflows.d.ts.map +0 -1
  72. package/dist/generated/dsl/workflows.js +0 -84
  73. package/dist/generated/dsl/workflows.js.map +0 -1
  74. package/dist/generated/index.d.ts +0 -7
  75. package/dist/generated/index.d.ts.map +0 -1
  76. package/dist/generated/index.js +0 -7
  77. package/dist/generated/index.js.map +0 -1
  78. package/dist/generated/policy-runtime.d.ts +0 -114
  79. package/dist/generated/policy-runtime.d.ts.map +0 -1
  80. package/dist/generated/policy-runtime.js +0 -195
  81. package/dist/generated/policy-runtime.js.map +0 -1
  82. package/dist/generated/policy.d.ts +0 -619
  83. package/dist/generated/policy.d.ts.map +0 -1
  84. package/dist/generated/policy.js +0 -802
  85. package/dist/generated/policy.js.map +0 -1
  86. package/dist/generated/program.d.ts +0 -112
  87. package/dist/generated/program.d.ts.map +0 -1
  88. package/dist/generated/program.js +0 -266
  89. package/dist/generated/program.js.map +0 -1
  90. package/dist/generated/schemas.d.ts +0 -778
  91. package/dist/generated/schemas.d.ts.map +0 -1
  92. package/dist/generated/schemas.js +0 -1005
  93. package/dist/generated/schemas.js.map +0 -1
  94. package/dist/generated/types.d.ts +0 -395
  95. package/dist/generated/types.d.ts.map +0 -1
  96. package/dist/generated/types.js +0 -3
  97. package/dist/generated/types.js.map +0 -1
  98. package/dist/generator/dependencyGenerator.d.ts +0 -43
  99. package/dist/generator/dependencyGenerator.d.ts.map +0 -1
  100. package/dist/generator/dependencyGenerator.js +0 -159
  101. package/dist/generator/dependencyGenerator.js.map +0 -1
  102. package/dist/generator/index.d.ts +0 -39
  103. package/dist/generator/index.d.ts.map +0 -1
  104. package/dist/generator/index.js +0 -720
  105. package/dist/generator/index.js.map +0 -1
  106. package/dist/generator/inputHash.d.ts +0 -23
  107. package/dist/generator/inputHash.d.ts.map +0 -1
  108. package/dist/generator/inputHash.js +0 -145
  109. package/dist/generator/inputHash.js.map +0 -1
  110. package/dist/generator/linter.d.ts +0 -26
  111. package/dist/generator/linter.d.ts.map +0 -1
  112. package/dist/generator/linter.js +0 -352
  113. package/dist/generator/linter.js.map +0 -1
  114. package/dist/generator/overlayProcessor.d.ts +0 -90
  115. package/dist/generator/overlayProcessor.d.ts.map +0 -1
  116. package/dist/generator/overlayProcessor.js +0 -541
  117. package/dist/generator/overlayProcessor.js.map +0 -1
  118. package/dist/generator/schemaGenerator.d.ts +0 -10
  119. package/dist/generator/schemaGenerator.d.ts.map +0 -1
  120. package/dist/generator/schemaGenerator.js +0 -299
  121. package/dist/generator/schemaGenerator.js.map +0 -1
  122. package/dist/generator/serviceGenerator.d.ts +0 -41
  123. package/dist/generator/serviceGenerator.d.ts.map +0 -1
  124. package/dist/generator/serviceGenerator.js +0 -296
  125. package/dist/generator/serviceGenerator.js.map +0 -1
  126. package/dist/generator/templateProcessor.d.ts +0 -245
  127. package/dist/generator/templateProcessor.d.ts.map +0 -1
  128. package/dist/generator/templateProcessor.js +0 -821
  129. package/dist/generator/templateProcessor.js.map +0 -1
  130. package/dist/generator/typeGenerator.d.ts +0 -9
  131. package/dist/generator/typeGenerator.d.ts.map +0 -1
  132. package/dist/generator/typeGenerator.js +0 -424
  133. package/dist/generator/typeGenerator.js.map +0 -1
  134. package/dist/generator/typeGenerator.test.d.ts +0 -2
  135. package/dist/generator/typeGenerator.test.d.ts.map +0 -1
  136. package/dist/generator/typeGenerator.test.js +0 -122
  137. package/dist/generator/typeGenerator.test.js.map +0 -1
  138. package/dist/guardrails/allowlist.d.ts +0 -45
  139. package/dist/guardrails/allowlist.d.ts.map +0 -1
  140. package/dist/guardrails/allowlist.js +0 -261
  141. package/dist/guardrails/allowlist.js.map +0 -1
  142. package/dist/guardrails/config.d.ts +0 -40
  143. package/dist/guardrails/config.d.ts.map +0 -1
  144. package/dist/guardrails/config.js +0 -174
  145. package/dist/guardrails/config.js.map +0 -1
  146. package/dist/guardrails/docs.d.ts +0 -24
  147. package/dist/guardrails/docs.d.ts.map +0 -1
  148. package/dist/guardrails/docs.js +0 -138
  149. package/dist/guardrails/docs.js.map +0 -1
  150. package/dist/guardrails/drift.d.ts +0 -23
  151. package/dist/guardrails/drift.d.ts.map +0 -1
  152. package/dist/guardrails/drift.js +0 -127
  153. package/dist/guardrails/drift.js.map +0 -1
  154. package/dist/guardrails/index.d.ts +0 -19
  155. package/dist/guardrails/index.d.ts.map +0 -1
  156. package/dist/guardrails/index.js +0 -23
  157. package/dist/guardrails/index.js.map +0 -1
  158. package/dist/guardrails/lint.d.ts +0 -20
  159. package/dist/guardrails/lint.d.ts.map +0 -1
  160. package/dist/guardrails/lint.js +0 -274
  161. package/dist/guardrails/lint.js.map +0 -1
  162. package/dist/guardrails/manifest.d.ts +0 -63
  163. package/dist/guardrails/manifest.d.ts.map +0 -1
  164. package/dist/guardrails/manifest.js +0 -299
  165. package/dist/guardrails/manifest.js.map +0 -1
  166. package/dist/guardrails/runner.d.ts +0 -43
  167. package/dist/guardrails/runner.d.ts.map +0 -1
  168. package/dist/guardrails/runner.js +0 -365
  169. package/dist/guardrails/runner.js.map +0 -1
  170. package/dist/guardrails/typecheck.d.ts +0 -15
  171. package/dist/guardrails/typecheck.d.ts.map +0 -1
  172. package/dist/guardrails/typecheck.js +0 -104
  173. package/dist/guardrails/typecheck.js.map +0 -1
  174. package/dist/guardrails/types.d.ts +0 -202
  175. package/dist/guardrails/types.d.ts.map +0 -1
  176. package/dist/guardrails/types.js +0 -8
  177. package/dist/guardrails/types.js.map +0 -1
  178. package/dist/index.d.ts.map +0 -1
  179. package/dist/index.js.map +0 -1
  180. package/dist/types.d.ts +0 -583
  181. package/dist/types.d.ts.map +0 -1
  182. package/dist/types.js +0 -305
  183. package/dist/types.js.map +0 -1
package/dist/types.js DELETED
@@ -1,305 +0,0 @@
1
- /**
2
- * OpenAPI specification types for code generation
3
- */
4
- /**
5
- * Parse dependency reference string
6
- */
7
- export function parseDependencyRef(ref) {
8
- const parts = ref.split('.');
9
- if (parts.length !== 3)
10
- return null;
11
- return {
12
- module: parts[0],
13
- service: parts[1],
14
- method: parts[2],
15
- raw: ref,
16
- };
17
- }
18
- // =============================================================================
19
- // Config Utilities
20
- // =============================================================================
21
- /**
22
- * Check if config is multi-module format
23
- */
24
- export function isMultiModuleConfig(config) {
25
- return typeof config === 'object' && config !== null && 'modules' in config;
26
- }
27
- /**
28
- * Expand placeholders in a string
29
- */
30
- export function expandPlaceholders(template, moduleName) {
31
- const pascalCase = moduleName.charAt(0).toUpperCase() + moduleName.slice(1);
32
- const upperSnake = moduleName.toUpperCase().replace(/-/g, '_');
33
- return template
34
- .replace(/\{module\}/g, moduleName)
35
- .replace(/\{Module\}/g, pascalCase)
36
- .replace(/\{MODULE\}/g, upperSnake);
37
- }
38
- /**
39
- * Resolve outputs configuration
40
- */
41
- function resolveOutputs(moduleName, moduleConfig, defaults) {
42
- const expand = (s) => expandPlaceholders(s, moduleName);
43
- const resolvedOutputs = [];
44
- // Merge default outputs with module overrides
45
- const defaultOutputs = defaults.outputs || {};
46
- const moduleOutputs = moduleConfig.outputs || {};
47
- const allOutputIds = new Set([
48
- ...Object.keys(defaultOutputs),
49
- ...Object.keys(moduleOutputs),
50
- ]);
51
- for (const id of allOutputIds) {
52
- const defaultConfig = defaultOutputs[id];
53
- const moduleOverride = moduleOutputs[id];
54
- // Skip if explicitly disabled
55
- if (moduleOverride?.enabled === false)
56
- continue;
57
- // Need at least default config
58
- if (!defaultConfig && !moduleOverride?.output)
59
- continue;
60
- const output = expand(moduleOverride?.output ?? defaultConfig?.output ?? '');
61
- const template = moduleOverride?.template ?? defaultConfig?.template ?? '';
62
- if (!output || !template)
63
- continue;
64
- resolvedOutputs.push({
65
- id,
66
- output,
67
- template,
68
- overwrite: moduleOverride?.overwrite ?? defaultConfig?.overwrite ?? true,
69
- condition: moduleOverride?.condition ?? defaultConfig?.condition ?? 'always',
70
- enabled: moduleOverride?.enabled ?? defaultConfig?.enabled ?? true,
71
- config: {
72
- ...(defaultConfig?.config || {}),
73
- ...(moduleOverride?.config || {}),
74
- },
75
- });
76
- }
77
- return resolvedOutputs;
78
- }
79
- /**
80
- * Resolve module config by applying defaults and expanding placeholders
81
- */
82
- export function resolveModuleConfig(moduleName, moduleConfig, defaults = {}) {
83
- const expand = (s) => expandPlaceholders(s, moduleName);
84
- // Contract output
85
- const contractOutput = expand(moduleConfig.contract?.output ??
86
- defaults.contract?.output ??
87
- `packages/contract/${moduleName}`);
88
- // Public contract output
89
- const contractPublicOutput = expand(moduleConfig.contractPublic?.output ??
90
- defaults.contractPublic?.output ??
91
- `packages/contract-published/${moduleName}`);
92
- // Service template (module overrides defaults)
93
- const serviceTemplate = moduleConfig.contract?.serviceTemplate ?? defaults.contract?.serviceTemplate;
94
- // Server config (legacy)
95
- const serverEnabled = moduleConfig.server?.enabled !== false;
96
- const server = serverEnabled ? {
97
- output: expand(moduleConfig.server?.output ??
98
- defaults.server?.output ??
99
- `server/src/${moduleName}`),
100
- routes: moduleConfig.server?.routes ?? defaults.server?.routes ?? 'routes.generated.ts',
101
- servicesPath: expand(moduleConfig.server?.servicesPath ??
102
- defaults.server?.servicesPath ??
103
- `fastify.services.${moduleName}`),
104
- } : null;
105
- // Frontend config (legacy)
106
- const frontendEnabled = moduleConfig.frontend?.enabled !== false;
107
- const frontendDefaults = defaults.frontend;
108
- const frontendOverride = moduleConfig.frontend;
109
- let frontendShared = null;
110
- if (frontendEnabled) {
111
- const sharedConfig = frontendOverride?.shared ?? frontendDefaults?.shared;
112
- if (sharedConfig) {
113
- frontendShared = {
114
- output: expand(sharedConfig.output ?? 'frontend/src/shared'),
115
- client: expand(sharedConfig.client ?? `${moduleName}.api.generated.ts`),
116
- };
117
- }
118
- }
119
- const frontend = frontendEnabled ? {
120
- output: expand(frontendOverride?.output ??
121
- frontendDefaults?.output ??
122
- `frontend/src/${moduleName}`),
123
- client: frontendOverride?.client ?? frontendDefaults?.client ?? 'api.generated.ts',
124
- service: frontendOverride?.service ?? frontendDefaults?.service ?? 'service.generated.ts',
125
- shared: frontendShared,
126
- } : null;
127
- // Docs config
128
- const docs = {
129
- enabled: moduleConfig.docs?.enabled ?? defaults.docs?.enabled ?? true,
130
- template: moduleConfig.docs?.template ?? defaults.docs?.template ?? 'default',
131
- };
132
- // Overlays (shared + module-specific)
133
- const overlays = [
134
- ...(defaults.overlays?.shared || []),
135
- ...(moduleConfig.overlays || []),
136
- ];
137
- const overlayCollision = defaults.overlays?.collision || 'error';
138
- // Templates (module overrides defaults) - legacy
139
- const serverWithTemplate = server ? {
140
- ...server,
141
- template: moduleConfig.templates?.server ?? defaults.templates?.server,
142
- } : null;
143
- // Also check for services template
144
- if (serverWithTemplate && !serverWithTemplate.template) {
145
- serverWithTemplate.template = moduleConfig.templates?.services ?? defaults.templates?.services;
146
- }
147
- const frontendWithTemplate = frontend ? {
148
- ...frontend,
149
- template: moduleConfig.templates?.frontend ?? defaults.templates?.frontend,
150
- } : null;
151
- // New outputs system
152
- const outputs = resolveOutputs(moduleName, moduleConfig, defaults);
153
- return {
154
- name: moduleName,
155
- openapi: moduleConfig.openapi,
156
- screen: moduleConfig.screen === true,
157
- contractOutput,
158
- contractPublicOutput,
159
- serviceTemplate,
160
- server: serverWithTemplate,
161
- frontend: frontendWithTemplate,
162
- docs,
163
- overlays,
164
- overlayCollision,
165
- outputs,
166
- spectral: moduleConfig.spectral,
167
- dependsOn: moduleConfig.dependsOn,
168
- };
169
- }
170
- // Helper to check if object is a reference
171
- export function isReference(obj) {
172
- return typeof obj === 'object' && obj !== null && '$ref' in obj;
173
- }
174
- // Extract schema name from $ref
175
- export function getRefName(ref) {
176
- // "#/components/schemas/EntryListResponse" -> "EntryListResponse"
177
- const parts = ref.split('/');
178
- return parts[parts.length - 1];
179
- }
180
- /**
181
- * Extract dependencies from OpenAPI spec
182
- */
183
- export function extractDependencies(spec) {
184
- const moduleLevelDeps = [];
185
- const operationLevelDeps = new Map();
186
- const allDepsSet = new Set();
187
- // Module-level dependencies
188
- const moduleDepRefs = spec.info['x-micro-contracts-depend-on'] || [];
189
- for (const ref of moduleDepRefs) {
190
- const parsed = parseDependencyRef(ref);
191
- if (parsed) {
192
- moduleLevelDeps.push(parsed);
193
- allDepsSet.add(ref);
194
- }
195
- }
196
- // Operation-level dependencies
197
- for (const [, pathItem] of Object.entries(spec.paths)) {
198
- for (const method of ['get', 'post', 'put', 'patch', 'delete']) {
199
- const operation = pathItem[method];
200
- if (!operation)
201
- continue;
202
- const opId = operation.operationId || '';
203
- const opDepRefs = operation['x-micro-contracts-depend-on'] || [];
204
- if (opDepRefs.length > 0) {
205
- const parsedDeps = [];
206
- for (const ref of opDepRefs) {
207
- const parsed = parseDependencyRef(ref);
208
- if (parsed) {
209
- parsedDeps.push(parsed);
210
- allDepsSet.add(ref);
211
- }
212
- }
213
- if (parsedDeps.length > 0) {
214
- operationLevelDeps.set(opId, parsedDeps);
215
- }
216
- }
217
- }
218
- }
219
- // All unique deps
220
- const allDeps = [];
221
- for (const ref of allDepsSet) {
222
- const parsed = parseDependencyRef(ref);
223
- if (parsed)
224
- allDeps.push(parsed);
225
- }
226
- return { moduleLevelDeps, operationLevelDeps, allDeps };
227
- }
228
- /**
229
- * Get canonical extension value (supports both short and long forms)
230
- */
231
- export function getExtensionValue(obj, shortName, longName) {
232
- return (obj[longName] ?? obj[shortName]);
233
- }
234
- // Check if a schema contains x-private properties
235
- export function hasPrivateProperties(schema, spec, visited = new Set()) {
236
- if (isReference(schema)) {
237
- const refName = getRefName(schema.$ref);
238
- if (visited.has(refName))
239
- return false;
240
- visited.add(refName);
241
- const resolved = spec.components?.schemas?.[refName];
242
- if (!resolved)
243
- return false;
244
- return hasPrivateProperties(resolved, spec, visited);
245
- }
246
- // Check if schema itself is private
247
- if (schema['x-private'])
248
- return true;
249
- // Check properties
250
- if (schema.properties) {
251
- for (const propSchema of Object.values(schema.properties)) {
252
- if (hasPrivateProperties(propSchema, spec, visited))
253
- return true;
254
- }
255
- }
256
- // Check array items
257
- if (schema.items) {
258
- if (hasPrivateProperties(schema.items, spec, visited))
259
- return true;
260
- }
261
- // Check allOf/oneOf/anyOf
262
- for (const composite of [schema.allOf, schema.oneOf, schema.anyOf]) {
263
- if (composite) {
264
- for (const s of composite) {
265
- if (hasPrivateProperties(s, spec, visited))
266
- return true;
267
- }
268
- }
269
- }
270
- return false;
271
- }
272
- // Collect all schemas referenced by a schema
273
- export function collectReferencedSchemas(schema, spec, result = new Set()) {
274
- if (isReference(schema)) {
275
- const refName = getRefName(schema.$ref);
276
- if (result.has(refName))
277
- return result;
278
- result.add(refName);
279
- const resolved = spec.components?.schemas?.[refName];
280
- if (resolved) {
281
- collectReferencedSchemas(resolved, spec, result);
282
- }
283
- return result;
284
- }
285
- if (schema.properties) {
286
- for (const propSchema of Object.values(schema.properties)) {
287
- collectReferencedSchemas(propSchema, spec, result);
288
- }
289
- }
290
- if (schema.items) {
291
- collectReferencedSchemas(schema.items, spec, result);
292
- }
293
- for (const composite of [schema.allOf, schema.oneOf, schema.anyOf]) {
294
- if (composite) {
295
- for (const s of composite) {
296
- collectReferencedSchemas(s, spec, result);
297
- }
298
- }
299
- }
300
- if (schema.additionalProperties && typeof schema.additionalProperties !== 'boolean') {
301
- collectReferencedSchemas(schema.additionalProperties, spec, result);
302
- }
303
- return result;
304
- }
305
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}