@autoview/cli 0.1.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 (297) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +407 -0
  3. package/lib/AutoViewAgent.d.ts +109 -0
  4. package/lib/AutoViewAgent.js +123 -0
  5. package/lib/AutoViewAgent.js.map +1 -0
  6. package/lib/agent/emitMcpServer.d.ts +15 -0
  7. package/lib/agent/emitMcpServer.js +157 -0
  8. package/lib/agent/emitMcpServer.js.map +1 -0
  9. package/lib/agent/emitReport.d.ts +14 -0
  10. package/lib/agent/emitReport.js +85 -0
  11. package/lib/agent/emitReport.js.map +1 -0
  12. package/lib/agent/toolSurface.d.ts +130 -0
  13. package/lib/agent/toolSurface.js +342 -0
  14. package/lib/agent/toolSurface.js.map +1 -0
  15. package/lib/agent/verifyAgentTasks.d.ts +87 -0
  16. package/lib/agent/verifyAgentTasks.js +126 -0
  17. package/lib/agent/verifyAgentTasks.js.map +1 -0
  18. package/lib/cli/main.d.ts +2 -0
  19. package/lib/cli/main.js +295 -0
  20. package/lib/cli/main.js.map +1 -0
  21. package/lib/compiler/AutoViewInterfaceCompiler.d.ts +27 -0
  22. package/lib/compiler/AutoViewInterfaceCompiler.js +68 -0
  23. package/lib/compiler/AutoViewInterfaceCompiler.js.map +1 -0
  24. package/lib/constants/AutoViewFrontendTemplate.d.ts +1 -0
  25. package/lib/constants/AutoViewFrontendTemplate.js +46 -0
  26. package/lib/constants/AutoViewFrontendTemplate.js.map +1 -0
  27. package/lib/constants/AutoViewSystemPromptConstant.d.ts +5 -0
  28. package/lib/constants/AutoViewSystemPromptConstant.js +4 -0
  29. package/lib/constants/AutoViewSystemPromptConstant.js.map +1 -0
  30. package/lib/context/IAutoViewAgentContext.d.ts +60 -0
  31. package/lib/context/IAutoViewAgentContext.js +3 -0
  32. package/lib/context/IAutoViewAgentContext.js.map +1 -0
  33. package/lib/fromSwagger.d.ts +53 -0
  34. package/lib/fromSwagger.js +513 -0
  35. package/lib/fromSwagger.js.map +1 -0
  36. package/lib/generateDeterministic.d.ts +26 -0
  37. package/lib/generateDeterministic.js +75 -0
  38. package/lib/generateDeterministic.js.map +1 -0
  39. package/lib/index.d.ts +15 -0
  40. package/lib/index.js +41 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/orchestrate/orchestrateAutoView.d.ts +17 -0
  43. package/lib/orchestrate/orchestrateAutoView.js +491 -0
  44. package/lib/orchestrate/orchestrateAutoView.js.map +1 -0
  45. package/lib/orchestrate/orchestrateAutoViewProductPlan.d.ts +37 -0
  46. package/lib/orchestrate/orchestrateAutoViewProductPlan.js +109 -0
  47. package/lib/orchestrate/orchestrateAutoViewProductPlan.js.map +1 -0
  48. package/lib/orchestrate/orchestrateAutoViewRender.d.ts +133 -0
  49. package/lib/orchestrate/orchestrateAutoViewRender.js +943 -0
  50. package/lib/orchestrate/orchestrateAutoViewRender.js.map +1 -0
  51. package/lib/orchestrate/orchestrateAutoViewRenderDeterministic.d.ts +24 -0
  52. package/lib/orchestrate/orchestrateAutoViewRenderDeterministic.js +92 -0
  53. package/lib/orchestrate/orchestrateAutoViewRenderDeterministic.js.map +1 -0
  54. package/lib/orchestrate/orchestrateAutoViewReview.d.ts +48 -0
  55. package/lib/orchestrate/orchestrateAutoViewReview.js +328 -0
  56. package/lib/orchestrate/orchestrateAutoViewReview.js.map +1 -0
  57. package/lib/orchestrate/orchestrateAutoViewScaffold.d.ts +45 -0
  58. package/lib/orchestrate/orchestrateAutoViewScaffold.js +586 -0
  59. package/lib/orchestrate/orchestrateAutoViewScaffold.js.map +1 -0
  60. package/lib/orchestrate/orchestrateAutoViewSdkStudy.d.ts +26 -0
  61. package/lib/orchestrate/orchestrateAutoViewSdkStudy.js +85 -0
  62. package/lib/orchestrate/orchestrateAutoViewSdkStudy.js.map +1 -0
  63. package/lib/orchestrate/structures/IAutoViewProductPlan.d.ts +96 -0
  64. package/lib/orchestrate/structures/IAutoViewProductPlan.js +3 -0
  65. package/lib/orchestrate/structures/IAutoViewProductPlan.js.map +1 -0
  66. package/lib/orchestrate/structures/IAutoViewProductPlanApplication.d.ts +38 -0
  67. package/lib/orchestrate/structures/IAutoViewProductPlanApplication.js +3 -0
  68. package/lib/orchestrate/structures/IAutoViewProductPlanApplication.js.map +1 -0
  69. package/lib/orchestrate/structures/IAutoViewRenderApplication.d.ts +38 -0
  70. package/lib/orchestrate/structures/IAutoViewRenderApplication.js +3 -0
  71. package/lib/orchestrate/structures/IAutoViewRenderApplication.js.map +1 -0
  72. package/lib/orchestrate/structures/IAutoViewReviewApplication.d.ts +40 -0
  73. package/lib/orchestrate/structures/IAutoViewReviewApplication.js +3 -0
  74. package/lib/orchestrate/structures/IAutoViewReviewApplication.js.map +1 -0
  75. package/lib/orchestrate/structures/IAutoViewSdkMap.d.ts +63 -0
  76. package/lib/orchestrate/structures/IAutoViewSdkMap.js +3 -0
  77. package/lib/orchestrate/structures/IAutoViewSdkMap.js.map +1 -0
  78. package/lib/orchestrate/structures/IAutoViewSdkStudyApplication.d.ts +37 -0
  79. package/lib/orchestrate/structures/IAutoViewSdkStudyApplication.js +3 -0
  80. package/lib/orchestrate/structures/IAutoViewSdkStudyApplication.js.map +1 -0
  81. package/lib/orchestrate/utils/HistoryMessage.d.ts +10 -0
  82. package/lib/orchestrate/utils/HistoryMessage.js +25 -0
  83. package/lib/orchestrate/utils/HistoryMessage.js.map +1 -0
  84. package/lib/orchestrate/utils/auditFrontendRuntime.d.ts +53 -0
  85. package/lib/orchestrate/utils/auditFrontendRuntime.js +362 -0
  86. package/lib/orchestrate/utils/auditFrontendRuntime.js.map +1 -0
  87. package/lib/orchestrate/utils/buildDeterministicPlan.d.ts +4 -0
  88. package/lib/orchestrate/utils/buildDeterministicPlan.js +233 -0
  89. package/lib/orchestrate/utils/buildDeterministicPlan.js.map +1 -0
  90. package/lib/orchestrate/utils/buildDeterministicSdkMap.d.ts +22 -0
  91. package/lib/orchestrate/utils/buildDeterministicSdkMap.js +154 -0
  92. package/lib/orchestrate/utils/buildDeterministicSdkMap.js.map +1 -0
  93. package/lib/orchestrate/utils/cacheNodeModules.d.ts +31 -0
  94. package/lib/orchestrate/utils/cacheNodeModules.js +134 -0
  95. package/lib/orchestrate/utils/cacheNodeModules.js.map +1 -0
  96. package/lib/orchestrate/utils/describeEndpointPropsShape.d.ts +37 -0
  97. package/lib/orchestrate/utils/describeEndpointPropsShape.js +192 -0
  98. package/lib/orchestrate/utils/describeEndpointPropsShape.js.map +1 -0
  99. package/lib/orchestrate/utils/describeEndpointRequestBodyShape.d.ts +22 -0
  100. package/lib/orchestrate/utils/describeEndpointRequestBodyShape.js +29 -0
  101. package/lib/orchestrate/utils/describeEndpointRequestBodyShape.js.map +1 -0
  102. package/lib/orchestrate/utils/describeEndpointResponseShape.d.ts +19 -0
  103. package/lib/orchestrate/utils/describeEndpointResponseShape.js +30 -0
  104. package/lib/orchestrate/utils/describeEndpointResponseShape.js.map +1 -0
  105. package/lib/orchestrate/utils/executeCachedBatch.d.ts +22 -0
  106. package/lib/orchestrate/utils/executeCachedBatch.js +64 -0
  107. package/lib/orchestrate/utils/executeCachedBatch.js.map +1 -0
  108. package/lib/orchestrate/utils/loadShoppingFixture.d.ts +33 -0
  109. package/lib/orchestrate/utils/loadShoppingFixture.js +17 -0
  110. package/lib/orchestrate/utils/loadShoppingFixture.js.map +1 -0
  111. package/lib/orchestrate/utils/normalizeProductPlanPaths.d.ts +24 -0
  112. package/lib/orchestrate/utils/normalizeProductPlanPaths.js +77 -0
  113. package/lib/orchestrate/utils/normalizeProductPlanPaths.js.map +1 -0
  114. package/lib/orchestrate/utils/renderJsonSchema.d.ts +23 -0
  115. package/lib/orchestrate/utils/renderJsonSchema.js +122 -0
  116. package/lib/orchestrate/utils/renderJsonSchema.js.map +1 -0
  117. package/lib/orchestrate/utils/renderResourcePage.d.ts +36 -0
  118. package/lib/orchestrate/utils/renderResourcePage.js +1415 -0
  119. package/lib/orchestrate/utils/renderResourcePage.js.map +1 -0
  120. package/lib/orchestrate/utils/validateFrontendTypecheck.d.ts +109 -0
  121. package/lib/orchestrate/utils/validateFrontendTypecheck.js +274 -0
  122. package/lib/orchestrate/utils/validateFrontendTypecheck.js.map +1 -0
  123. package/lib/preview/renderPreview.d.ts +22 -0
  124. package/lib/preview/renderPreview.js +198 -0
  125. package/lib/preview/renderPreview.js.map +1 -0
  126. package/lib/typings/compiler.d.ts +39 -0
  127. package/lib/typings/compiler.js +3 -0
  128. package/lib/typings/compiler.js.map +1 -0
  129. package/lib/typings/events.d.ts +106 -0
  130. package/lib/typings/events.js +3 -0
  131. package/lib/typings/events.js.map +1 -0
  132. package/lib/typings/index.d.ts +10 -0
  133. package/lib/typings/index.js +27 -0
  134. package/lib/typings/index.js.map +1 -0
  135. package/lib/typings/misc.d.ts +78 -0
  136. package/lib/typings/misc.js +3 -0
  137. package/lib/typings/misc.js.map +1 -0
  138. package/lib/utils/ArrayUtil.d.ts +8 -0
  139. package/lib/utils/ArrayUtil.js +30 -0
  140. package/lib/utils/ArrayUtil.js.map +1 -0
  141. package/lib/utils/StringUtil.d.ts +11 -0
  142. package/lib/utils/StringUtil.js +28 -0
  143. package/lib/utils/StringUtil.js.map +1 -0
  144. package/lib/utils/classifyEndpoints.d.ts +62 -0
  145. package/lib/utils/classifyEndpoints.js +216 -0
  146. package/lib/utils/classifyEndpoints.js.map +1 -0
  147. package/lib/utils/endpointFilter.d.ts +26 -0
  148. package/lib/utils/endpointFilter.js +0 -0
  149. package/lib/utils/endpointFilter.js.map +1 -0
  150. package/lib/utils/extractFields.d.ts +85 -0
  151. package/lib/utils/extractFields.js +231 -0
  152. package/lib/utils/extractFields.js.map +1 -0
  153. package/lib/utils/index.d.ts +13 -0
  154. package/lib/utils/index.js +30 -0
  155. package/lib/utils/index.js.map +1 -0
  156. package/lib/utils/normalizeForNestia.d.ts +34 -0
  157. package/lib/utils/normalizeForNestia.js +133 -0
  158. package/lib/utils/normalizeForNestia.js.map +1 -0
  159. package/lib/utils/resourcePlan.d.ts +39 -0
  160. package/lib/utils/resourcePlan.js +95 -0
  161. package/lib/utils/resourcePlan.js.map +1 -0
  162. package/lib/utils/sliceDocument.d.ts +17 -0
  163. package/lib/utils/sliceDocument.js +114 -0
  164. package/lib/utils/sliceDocument.js.map +1 -0
  165. package/lib/utils/toEndpoints.d.ts +90 -0
  166. package/lib/utils/toEndpoints.js +227 -0
  167. package/lib/utils/toEndpoints.js.map +1 -0
  168. package/lib/verify/runWorkflows.d.ts +25 -0
  169. package/lib/verify/runWorkflows.js +366 -0
  170. package/lib/verify/runWorkflows.js.map +1 -0
  171. package/lib/verify/workflows.d.ts +53 -0
  172. package/lib/verify/workflows.js +107 -0
  173. package/lib/verify/workflows.js.map +1 -0
  174. package/package.json +82 -0
  175. package/prompts/AUTOVIEW_RENDER.md +398 -0
  176. package/prompts/AUTOVIEW_REVIEW.md +60 -0
  177. package/prompts/AUTOVIEW_SDK_STUDY.md +89 -0
  178. package/src/AutoViewAgent.ts +222 -0
  179. package/src/agent/emitMcpServer.integration.test.ts +168 -0
  180. package/src/agent/emitMcpServer.test.ts +51 -0
  181. package/src/agent/emitMcpServer.ts +178 -0
  182. package/src/agent/emitReport.ts +117 -0
  183. package/src/agent/toolSurface.test.ts +243 -0
  184. package/src/agent/toolSurface.ts +501 -0
  185. package/src/agent/verifyAgentTasks.test.ts +106 -0
  186. package/src/agent/verifyAgentTasks.ts +171 -0
  187. package/src/cli/main.ts +363 -0
  188. package/src/compiler/AutoViewInterfaceCompiler.ts +69 -0
  189. package/src/constants/AutoViewFrontendTemplate.ts +42 -0
  190. package/src/constants/AutoViewSystemPromptConstant.ts +6 -0
  191. package/src/context/IAutoViewAgentContext.ts +84 -0
  192. package/src/fromSwagger.test.ts +269 -0
  193. package/src/fromSwagger.ts +500 -0
  194. package/src/generateDeterministic.test.ts +39 -0
  195. package/src/generateDeterministic.ts +77 -0
  196. package/src/index.ts +30 -0
  197. package/src/orchestrate/orchestrateAutoView.ts +590 -0
  198. package/src/orchestrate/orchestrateAutoViewProductPlan.ts +121 -0
  199. package/src/orchestrate/orchestrateAutoViewRender.ts +1117 -0
  200. package/src/orchestrate/orchestrateAutoViewRenderDeterministic.ts +101 -0
  201. package/src/orchestrate/orchestrateAutoViewReview.ts +272 -0
  202. package/src/orchestrate/orchestrateAutoViewScaffold.ts +627 -0
  203. package/src/orchestrate/orchestrateAutoViewSdkStudy.ts +90 -0
  204. package/src/orchestrate/renderNavTs.test.ts +74 -0
  205. package/src/orchestrate/structures/IAutoViewProductPlan.ts +119 -0
  206. package/src/orchestrate/structures/IAutoViewProductPlanApplication.ts +41 -0
  207. package/src/orchestrate/structures/IAutoViewRenderApplication.ts +40 -0
  208. package/src/orchestrate/structures/IAutoViewReviewApplication.ts +42 -0
  209. package/src/orchestrate/structures/IAutoViewSdkMap.ts +72 -0
  210. package/src/orchestrate/structures/IAutoViewSdkStudyApplication.ts +40 -0
  211. package/src/orchestrate/utils/HistoryMessage.ts +41 -0
  212. package/src/orchestrate/utils/auditFrontendRuntime.test.ts +18 -0
  213. package/src/orchestrate/utils/auditFrontendRuntime.ts +454 -0
  214. package/src/orchestrate/utils/buildDeterministicPlan.test.ts +170 -0
  215. package/src/orchestrate/utils/buildDeterministicPlan.ts +289 -0
  216. package/src/orchestrate/utils/buildDeterministicSdkMap.test.ts +90 -0
  217. package/src/orchestrate/utils/buildDeterministicSdkMap.ts +169 -0
  218. package/src/orchestrate/utils/cacheNodeModules.ts +136 -0
  219. package/src/orchestrate/utils/describeEndpointPropsShape.test.ts +86 -0
  220. package/src/orchestrate/utils/describeEndpointPropsShape.ts +202 -0
  221. package/src/orchestrate/utils/describeEndpointRequestBodyShape.test.ts +87 -0
  222. package/src/orchestrate/utils/describeEndpointRequestBodyShape.ts +31 -0
  223. package/src/orchestrate/utils/describeEndpointResponseShape.test.ts +70 -0
  224. package/src/orchestrate/utils/describeEndpointResponseShape.ts +32 -0
  225. package/src/orchestrate/utils/executeCachedBatch.ts +59 -0
  226. package/src/orchestrate/utils/loadShoppingFixture.ts +52 -0
  227. package/src/orchestrate/utils/normalizeProductPlanPaths.ts +92 -0
  228. package/src/orchestrate/utils/renderJsonSchema.test.ts +162 -0
  229. package/src/orchestrate/utils/renderJsonSchema.ts +133 -0
  230. package/src/orchestrate/utils/renderResourcePage.test.ts +468 -0
  231. package/src/orchestrate/utils/renderResourcePage.ts +1624 -0
  232. package/src/orchestrate/utils/validateFrontendTypecheck.test.ts +32 -0
  233. package/src/orchestrate/utils/validateFrontendTypecheck.ts +335 -0
  234. package/src/preview/renderPreview.ts +273 -0
  235. package/src/typings/compiler.ts +47 -0
  236. package/src/typings/events.ts +155 -0
  237. package/src/typings/index.ts +10 -0
  238. package/src/typings/misc.ts +93 -0
  239. package/src/utils/ArrayUtil.ts +16 -0
  240. package/src/utils/StringUtil.ts +29 -0
  241. package/src/utils/classifyEndpoints.test.ts +86 -0
  242. package/src/utils/classifyEndpoints.ts +291 -0
  243. package/src/utils/endpointFilter.test.ts +50 -0
  244. package/src/utils/endpointFilter.ts +0 -0
  245. package/src/utils/extractFields.test.ts +82 -0
  246. package/src/utils/extractFields.ts +306 -0
  247. package/src/utils/index.ts +13 -0
  248. package/src/utils/normalizeForNestia.test.ts +93 -0
  249. package/src/utils/normalizeForNestia.ts +139 -0
  250. package/src/utils/resourcePlan.test.ts +104 -0
  251. package/src/utils/resourcePlan.ts +180 -0
  252. package/src/utils/sliceDocument.test.ts +85 -0
  253. package/src/utils/sliceDocument.ts +119 -0
  254. package/src/utils/toEndpoints.test.ts +251 -0
  255. package/src/utils/toEndpoints.ts +343 -0
  256. package/src/verify/runWorkflows.ts +403 -0
  257. package/src/verify/workflows.test.ts +117 -0
  258. package/src/verify/workflows.ts +154 -0
  259. package/template/CLAUDE.md +140 -0
  260. package/template/Dockerfile +31 -0
  261. package/template/PROMPT.md +80 -0
  262. package/template/SANDBOX.md +70 -0
  263. package/template/app/api/health/route.ts +10 -0
  264. package/template/app/globals.css +97 -0
  265. package/template/app/layout.tsx +30 -0
  266. package/template/app/page.tsx +19 -0
  267. package/template/components/AppShell.tsx +114 -0
  268. package/template/components/auto/CatalogGrid.tsx +159 -0
  269. package/template/components/auto/ConfirmButton.tsx +67 -0
  270. package/template/components/auto/EmbeddedCollection.tsx +144 -0
  271. package/template/components/auto/ResourceDashboard.tsx +104 -0
  272. package/template/components/auto/ResourceDetail.tsx +93 -0
  273. package/template/components/auto/ResourceForm.tsx +235 -0
  274. package/template/components/auto/ResourceIcon.tsx +88 -0
  275. package/template/components/auto/ResourceLanding.tsx +155 -0
  276. package/template/components/auto/ResourceTable.tsx +223 -0
  277. package/template/components/auto/formatValue.tsx +186 -0
  278. package/template/components/auto/types.ts +42 -0
  279. package/template/components/ui/badge.tsx +40 -0
  280. package/template/components/ui/button.tsx +57 -0
  281. package/template/components/ui/card.tsx +86 -0
  282. package/template/components/ui/dialog.tsx +119 -0
  283. package/template/components/ui/input.tsx +23 -0
  284. package/template/components/ui/label.tsx +24 -0
  285. package/template/components/ui/pagination.tsx +117 -0
  286. package/template/components/ui/select.tsx +92 -0
  287. package/template/components/ui/sheet.tsx +135 -0
  288. package/template/components/ui/skeleton.tsx +15 -0
  289. package/template/components/ui/table.tsx +120 -0
  290. package/template/components/ui/tabs.tsx +55 -0
  291. package/template/lib/utils.ts +35 -0
  292. package/template/next.config.mjs +52 -0
  293. package/template/package.json +46 -0
  294. package/template/postcss.config.js +6 -0
  295. package/template/scripts/start-shopping-backend.sh +56 -0
  296. package/template/tailwind.config.ts +96 -0
  297. package/template/tsconfig.json +29 -0
@@ -0,0 +1,513 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.fromSwagger = fromSwagger;
16
+ exports.fromSwaggerFile = fromSwaggerFile;
17
+ exports.extractBackendFromSwagger = extractBackendFromSwagger;
18
+ exports.extractBackendFromSwaggerFile = extractBackendFromSwaggerFile;
19
+ const utils_1 = require("@typia/utils");
20
+ const promises_1 = __importDefault(require("fs/promises"));
21
+ /**
22
+ * Normalize a raw OpenAPI / Swagger payload into a standard
23
+ * {@link OpenApi.IDocument} — the swagger-native shape the AutoView
24
+ * orchestrators now consume directly (via {@link toEndpoints}).
25
+ *
26
+ * Accepts both an in-memory JSON object and a file path; the latter is
27
+ * convenient for the CLI binary. `OpenApiConverter.upgradeDocument` upgrades
28
+ * Swagger 2.0 / OpenAPI 3.0 / 3.1 to a single normalized 3.1 document, so
29
+ * every endpoint — query-string endpoints included — is preserved. (The old
30
+ * `invertOpenApiDocument` route through the AutoBE AST silently dropped
31
+ * query-string endpoints.)
32
+ */
33
+ function fromSwagger(swagger) {
34
+ resolveParameterRefs(swagger);
35
+ resolvePathRefs(swagger);
36
+ stripPathRefAllOf(swagger, 0);
37
+ flattenAllOf(swagger);
38
+ promoteInlineBodies(swagger);
39
+ dropUnroutablePaths(swagger);
40
+ return utils_1.OpenApiConverter.upgradeDocument(swagger);
41
+ }
42
+ /**
43
+ * Resolve `$ref`s that are a JSON Pointer INTO another operation's inline
44
+ * schema (`#/paths/~1v2~1bandwidth/get/responses/...`) by replacing the `$ref`
45
+ * node with a deep clone of the pointer's target. DigitalOcean DRYs whole
46
+ * response schemas this way — at the schema root (`/v2/monitoring/metrics/*`
47
+ * all alias one bandwidth schema) and inside properties
48
+ * (`POST /v2/apps` → `{ app: $ref → GET /v2/apps …items }`). Standard tooling
49
+ * only chases `#/components/...` refs; nestia emits `Response = any` for these,
50
+ * which turns every simulate-mode screen of the resource into a silent empty
51
+ * state.
52
+ *
53
+ * Cycle-safe: a pointer actively being expanded is left verbatim (the later
54
+ * allOf-stripping pass treats the leftover as noise). Depth-guarded against
55
+ * pathological nesting. Mutates `raw` in place.
56
+ */
57
+ function resolvePathRefs(raw) {
58
+ /**
59
+ * Follow an escaped JSON Pointer from the root. Being a URI fragment, parts
60
+ * are percent-decoded first (`%7B` → `{` — DO encodes `{app_id}` segments),
61
+ * then pointer-unescaped (`~1` → `/`, `~0` → `~`), per RFC 6901.
62
+ */
63
+ const lookup = (pointer) => {
64
+ let node = raw;
65
+ for (const part of pointer.slice(2).split("/")) {
66
+ let key = part;
67
+ try {
68
+ key = decodeURIComponent(key);
69
+ }
70
+ catch (_a) {
71
+ // not percent-encoded — use the raw part
72
+ }
73
+ key = key.replace(/~1/g, "/").replace(/~0/g, "~");
74
+ if (typeof node !== "object" || node === null)
75
+ return undefined;
76
+ node = node[key];
77
+ }
78
+ return node;
79
+ };
80
+ const active = new Set();
81
+ const walk = (node, depth) => {
82
+ if (depth > 64 || typeof node !== "object" || node === null)
83
+ return;
84
+ if (Array.isArray(node)) {
85
+ for (const v of node)
86
+ walk(v, depth + 1);
87
+ return;
88
+ }
89
+ const obj = node;
90
+ const ref = obj.$ref;
91
+ if (typeof ref === "string" && ref.startsWith("#/paths/")) {
92
+ if (!active.has(ref)) {
93
+ const target = lookup(ref);
94
+ if (typeof target === "object" && target !== null) {
95
+ active.add(ref);
96
+ // The target may itself hold path-pointers — resolve before cloning.
97
+ walk(target, depth + 1);
98
+ active.delete(ref);
99
+ delete obj.$ref;
100
+ Object.assign(obj, structuredClone(target));
101
+ }
102
+ }
103
+ return; // a (possibly unresolved) ref node has nothing else to walk
104
+ }
105
+ for (const v of Object.values(obj))
106
+ walk(v, depth + 1);
107
+ };
108
+ walk(raw, 0);
109
+ }
110
+ /**
111
+ * Promote every INLINE OBJECT request/response body into a uniquely named
112
+ * component schema (replacing it with a `$ref`) BEFORE nestia sees the document.
113
+ *
114
+ * nestia promotes inline bodies itself, but derives the component name from the
115
+ * path with `{param}` segments DROPPED — so a parent list and its child detail
116
+ * (`/v2/droplets` vs `/v2/droplets/{droplet_id}`) both claim
117
+ * `IApiV2Droplets.GetResponse`. The loser's SDK function is emitted as
118
+ * `Response = any`; `typia.random<any>()` then yields nothing, and the
119
+ * simulate-mode screen for that resource renders empty forever — silently. On
120
+ * DigitalOcean (every body inline) this gutted 38 of 148 SDK files.
121
+ *
122
+ * Naming here keeps the param segments (`ApiV2DropletsDropletIdGetResponse`), so
123
+ * names cannot collide across sibling paths; an unexpected clash falls back to a
124
+ * numeric suffix. Only plain OBJECT schemas are hoisted: an inline ARRAY must
125
+ * stay inline so the READ layer still sees `Array<$ref>` and derives the list's
126
+ * element columns ({@link toEndpoints}'s `resolveBody`), and primitives gain
127
+ * nothing. Swagger 2.0 inputs are skipped — they have no `components` section
128
+ * for the refs to land in (the upgrade builds it later). Mutates `raw` in place.
129
+ */
130
+ function promoteInlineBodies(raw) {
131
+ var _a, _b, _c, _d, _e, _f;
132
+ var _g;
133
+ if (typeof raw !== "object" || raw === null)
134
+ return;
135
+ const doc = raw;
136
+ if (typeof doc.openapi !== "string" || doc.paths === undefined)
137
+ return;
138
+ (_a = doc.components) !== null && _a !== void 0 ? _a : (doc.components = {});
139
+ (_b = (_g = doc.components).schemas) !== null && _b !== void 0 ? _b : (_g.schemas = {});
140
+ const table = doc.components.schemas;
141
+ const pascal = (s) => s
142
+ .replace(/[{}]/g, "")
143
+ .split(/[^A-Za-z0-9]+/)
144
+ .filter(Boolean)
145
+ .map((w) => w[0].toUpperCase() + w.slice(1))
146
+ .join("");
147
+ const claim = (base) => {
148
+ let name = base;
149
+ for (let i = 2; table[name] !== undefined; i++)
150
+ name = `${base}${i}`;
151
+ return name;
152
+ };
153
+ const isInlineObject = (schema) => {
154
+ var _a;
155
+ return typeof schema === "object" &&
156
+ schema !== null &&
157
+ schema.$ref === undefined &&
158
+ (schema.type === "object" ||
159
+ typeof schema.properties === "object") &&
160
+ Object.keys(((_a = schema.properties) !== null && _a !== void 0 ? _a : {})).length > 0;
161
+ };
162
+ const hoist = (holder, baseName) => {
163
+ const h = holder;
164
+ if (h === undefined || !isInlineObject(h.schema))
165
+ return;
166
+ const name = claim(baseName);
167
+ table[name] = h.schema;
168
+ h.schema = { $ref: `#/components/schemas/${name}` };
169
+ };
170
+ for (const [path, item] of Object.entries(doc.paths)) {
171
+ if (typeof item !== "object" || item === null)
172
+ continue;
173
+ const pathName = path.split("/").filter(Boolean).map(pascal).join("");
174
+ for (const method of ["get", "post", "put", "patch", "delete", "head"]) {
175
+ const op = item[method];
176
+ if (op === undefined || typeof op !== "object")
177
+ continue;
178
+ const opName = `Api${pathName}${pascal(method)}`;
179
+ hoist((_d = (_c = op.requestBody) === null || _c === void 0 ? void 0 : _c.content) === null || _d === void 0 ? void 0 : _d["application/json"], `${opName}Body`);
180
+ for (const [status, response] of Object.entries((_e = op.responses) !== null && _e !== void 0 ? _e : {})) {
181
+ if (typeof response !== "object" || response === null)
182
+ continue;
183
+ hoist((_f = response.content) === null || _f === void 0 ? void 0 : _f["application/json"], `${opName}${pascal(status)}Response`);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ /**
189
+ * Strip `allOf` members that are an unresolvable JSON-Pointer `$ref` INTO another
190
+ * operation's inline schema (`#/paths/~1v2~1account~1keys/.../allOf/1`) — the way
191
+ * DigitalOcean DRYs up shared pagination/meta wrappers. `upgradeDocument` cannot
192
+ * chase a `#/paths/...` pointer, and when one sits alongside the real data member
193
+ * (`allOf: [{ properties: { droplets } }, <links-ref>, <meta-ref>]`) it discards
194
+ * the WHOLE `allOf` — so the list response comes out an empty schema, its table
195
+ * renders no columns, and its id producer is lost. Drop only the path-pointer
196
+ * members (pagination noise, not domain data); when a single data member with
197
+ * `properties` remains, hoist it to a plain object so the upgrade keeps it.
198
+ * Document-wide, depth-guarded, mutates in place.
199
+ */
200
+ function stripPathRefAllOf(node, depth) {
201
+ if (node === null || typeof node !== "object" || depth > 64)
202
+ return;
203
+ if (Array.isArray(node)) {
204
+ for (const v of node)
205
+ stripPathRefAllOf(v, depth + 1);
206
+ return;
207
+ }
208
+ const obj = node;
209
+ if (Array.isArray(obj.allOf)) {
210
+ const kept = obj.allOf.filter((m) => !(m !== null &&
211
+ typeof m === "object" &&
212
+ typeof m.$ref === "string" &&
213
+ (m.$ref).startsWith("#/paths/")));
214
+ if (kept.length !== obj.allOf.length) {
215
+ const only = kept[0];
216
+ if (kept.length === 1 && (only === null || only === void 0 ? void 0 : only.properties) !== undefined && only.$ref === undefined) {
217
+ obj.type = "object";
218
+ obj.properties = Object.assign(Object.assign({}, obj.properties), only.properties);
219
+ if (only.required !== undefined)
220
+ obj.required = only.required;
221
+ delete obj.allOf;
222
+ }
223
+ else if (kept.length === 0) {
224
+ delete obj.allOf;
225
+ }
226
+ else {
227
+ obj.allOf = kept;
228
+ }
229
+ }
230
+ }
231
+ for (const v of Object.values(obj))
232
+ stripPathRefAllOf(v, depth + 1);
233
+ }
234
+ /**
235
+ * Flatten `allOf` composition into plain `properties` BEFORE upgrading —
236
+ * document-wide, not just component schemas. Two real-world failure shapes:
237
+ *
238
+ * - `OpenApiConverter.upgradeDocument` drops `allOf` for some component shapes
239
+ * (Box's `CollaborationAllowlistEntries = allOf[Pagination, { entries }]`
240
+ * comes out an empty object), so the type would render zero fields.
241
+ * - An `allOf` INLINE in an operation response (DigitalOcean's
242
+ * `GET /v2/droplets` → `allOf:[{properties:{droplets}}, {$ref:Pagination}]`)
243
+ * defeats nestia's type emitter: the route's SDK function comes out
244
+ * `Response = any`, `typia.random<any>()` yields nothing, and every
245
+ * simulate-mode screen for that resource renders empty forever — silently
246
+ * (38 of DigitalOcean's 148 SDK files before this pass).
247
+ *
248
+ * Merge each member's properties (resolving `$ref` members recursively,
249
+ * depth-guarded) into the schema's own `properties` and remove the `allOf`, so
250
+ * the composed fields survive both the upgrade and SDK generation. Component
251
+ * schemas are flattened first (so `$ref` members resolve to already-flat
252
+ * shapes), then every remaining `allOf` anywhere in the document. Mutates `raw`
253
+ * in place.
254
+ */
255
+ function flattenAllOf(raw) {
256
+ var _a;
257
+ if (typeof raw !== "object" || raw === null)
258
+ return;
259
+ const schemas = (_a = raw.components) === null || _a === void 0 ? void 0 : _a.schemas;
260
+ const table = (typeof schemas === "object" && schemas !== null
261
+ ? schemas
262
+ : {});
263
+ const merge = (schema, depth, seen) => {
264
+ if (depth > 8 || typeof schema !== "object" || schema === null) {
265
+ return { properties: {}, required: [] };
266
+ }
267
+ const node = schema;
268
+ if (typeof node.$ref === "string") {
269
+ const name = node.$ref.split("/").pop();
270
+ if (seen.has(name) || table[name] === undefined) {
271
+ return { properties: {}, required: [] };
272
+ }
273
+ return merge(table[name], depth + 1, new Set([...seen, name]));
274
+ }
275
+ let properties = {};
276
+ let required = [];
277
+ if (Array.isArray(node.allOf)) {
278
+ for (const member of node.allOf) {
279
+ const sub = merge(member, depth + 1, seen);
280
+ properties = Object.assign(Object.assign({}, properties), sub.properties);
281
+ required = [...required, ...sub.required];
282
+ }
283
+ }
284
+ if (typeof node.properties === "object" && node.properties !== null) {
285
+ properties = Object.assign(Object.assign({}, properties), node.properties);
286
+ }
287
+ if (Array.isArray(node.required))
288
+ required = [...required, ...node.required];
289
+ return { properties, required: [...new Set(required)] };
290
+ };
291
+ const flattenInPlace = (schema, seen) => {
292
+ const merged = merge(schema, 0, seen);
293
+ if (Object.keys(merged.properties).length > 0) {
294
+ schema.properties = merged.properties;
295
+ schema.required = merged.required;
296
+ schema.type = "object";
297
+ delete schema.allOf;
298
+ }
299
+ };
300
+ // Pass 1 — component schemas, so a `$ref` member met later resolves flat.
301
+ for (const name of Object.keys(table)) {
302
+ const schema = table[name];
303
+ if (schema === undefined || !Array.isArray(schema.allOf))
304
+ continue;
305
+ flattenInPlace(schema, new Set([name]));
306
+ }
307
+ // Pass 2 — every remaining `allOf` anywhere in the document (inline response
308
+ // and request schemas, nested properties, array items …).
309
+ const walk = (node, depth) => {
310
+ if (depth > 64 || typeof node !== "object" || node === null)
311
+ return;
312
+ if (Array.isArray(node)) {
313
+ for (const v of node)
314
+ walk(v, depth + 1);
315
+ return;
316
+ }
317
+ const obj = node;
318
+ // Children first, so a nested allOf is flat before its parent merges it.
319
+ for (const v of Object.values(obj))
320
+ walk(v, depth + 1);
321
+ if (Array.isArray(obj.allOf))
322
+ flattenInPlace(obj, new Set());
323
+ };
324
+ walk(raw, 0);
325
+ }
326
+ /**
327
+ * Remove path keys a typed SDK cannot be generated from:
328
+ *
329
+ * 1. `#` fragments some swaggers (Box) use to disambiguate overloaded paths
330
+ * (`/shared_items#folders`) — nestia turns the `#` into an illegal JS
331
+ * accessor segment, and the generated SDK file fails to parse.
332
+ * 2. A path-template parameter whose NAME is not a valid identifier
333
+ * (`/teams/{enterprise-team}/...`, GitHub). nestia derives the SDK accessor
334
+ * from the param name and crashes (`Cannot read properties of undefined`)
335
+ * when the hyphenated name does not round-trip — taking the WHOLE generation
336
+ * down, not just that route.
337
+ *
338
+ * Dropping the handful of offending paths up front lets the rest of a large real
339
+ * swagger (GitHub's 1190 operations) generate. Mutates `raw` in place.
340
+ */
341
+ function dropUnroutablePaths(raw) {
342
+ if (typeof raw !== "object" || raw === null)
343
+ return;
344
+ const paths = raw.paths;
345
+ if (typeof paths !== "object" || paths === null)
346
+ return;
347
+ // Standard URL path characters only — letters, digits, `_-./`, and `{param}`.
348
+ const SAFE = /^[A-Za-z0-9_\-./{}]+$/;
349
+ // A `{param}` template name must be a valid JS identifier (no hyphens).
350
+ const IDENT_PARAM = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
351
+ for (const key of Object.keys(paths)) {
352
+ const paramNames = [...key.matchAll(/\{([^}]+)\}/g)].map((m) => m[1]);
353
+ if (!SAFE.test(key) || paramNames.some((p) => !IDENT_PARAM.test(p))) {
354
+ delete paths[key];
355
+ }
356
+ }
357
+ }
358
+ /**
359
+ * Resolve `$ref` parameters before upgrading. Real-world swaggers (DigitalOcean,
360
+ * Box, …) DRY up shared query/path parameters with a `$ref` — sometimes a
361
+ * standard `#/components/parameters/X`, sometimes a raw JSON Pointer into another
362
+ * operation (`#/paths/~1v2~1account~1keys/get/parameters/0`). `upgradeDocument`
363
+ * does not chase those pointers; it leaves the slot `null`, which then crashes
364
+ * `HttpMigration` with "Cannot read properties of undefined (reading 'in')".
365
+ *
366
+ * Walk every operation's (and path item's) `parameters`, dereference each `$ref`
367
+ * by generic JSON Pointer against the raw document — transitively, with a depth
368
+ * guard — and drop anything that does not resolve to a real `{ in, name }`
369
+ * parameter. Mutates the freshly-parsed payload in place (we own it; cloning a
370
+ * multi-MB document would be wasteful).
371
+ */
372
+ function resolveParameterRefs(raw) {
373
+ if (typeof raw !== "object" || raw === null)
374
+ return raw;
375
+ const doc = raw;
376
+ const paths = doc.paths;
377
+ if (typeof paths !== "object" || paths === null)
378
+ return raw;
379
+ const resolve = (node, depth) => {
380
+ if (depth > 16 || node === null || typeof node !== "object")
381
+ return undefined;
382
+ const ref = node.$ref;
383
+ if (typeof ref === "string")
384
+ return resolve(jsonPointer(doc, ref), depth + 1);
385
+ return "in" in node ? node : undefined;
386
+ };
387
+ const clean = (list) => {
388
+ if (!Array.isArray(list))
389
+ return undefined;
390
+ return list.map((p) => resolve(p, 0)).filter((p) => p !== undefined);
391
+ };
392
+ const METHODS = ["get", "post", "put", "patch", "delete", "options", "head"];
393
+ for (const key of Object.keys(paths)) {
394
+ const item = paths[key];
395
+ if (typeof item !== "object" || item === null)
396
+ continue;
397
+ const pathItem = item;
398
+ const shared = clean(pathItem.parameters);
399
+ if (shared !== undefined)
400
+ pathItem.parameters = shared;
401
+ for (const method of METHODS) {
402
+ const op = pathItem[method];
403
+ if (typeof op !== "object" || op === null)
404
+ continue;
405
+ const params = clean(op.parameters);
406
+ if (params !== undefined) {
407
+ op.parameters = params;
408
+ }
409
+ }
410
+ }
411
+ return raw;
412
+ }
413
+ /** Resolve a `#/...` JSON Pointer against a document. Returns `undefined` on miss. */
414
+ function jsonPointer(doc, pointer) {
415
+ if (!pointer.startsWith("#/"))
416
+ return undefined;
417
+ let current = doc;
418
+ for (const rawPart of pointer.slice(2).split("/")) {
419
+ const part = rawPart.replace(/~1/g, "/").replace(/~0/g, "~");
420
+ if (current === null || typeof current !== "object")
421
+ return undefined;
422
+ current = current[part];
423
+ }
424
+ return current;
425
+ }
426
+ /**
427
+ * File-path convenience: read `path` as UTF-8 JSON, parse, and run it through
428
+ * {@link fromSwagger}. Rejects with a helpful error message when the file is
429
+ * missing or not valid JSON.
430
+ */
431
+ function fromSwaggerFile(path) {
432
+ return __awaiter(this, void 0, void 0, function* () {
433
+ let raw;
434
+ try {
435
+ raw = yield promises_1.default.readFile(path, "utf-8");
436
+ }
437
+ catch (err) {
438
+ const message = err instanceof Error ? err.message : String(err);
439
+ throw new Error(`Failed to read swagger file at "${path}": ${message}`);
440
+ }
441
+ let parsed;
442
+ try {
443
+ parsed = JSON.parse(raw);
444
+ }
445
+ catch (err) {
446
+ const message = err instanceof Error ? err.message : String(err);
447
+ throw new Error(`Swagger file at "${path}" is not valid JSON: ${message}`);
448
+ }
449
+ return fromSwagger(parsed);
450
+ });
451
+ }
452
+ /**
453
+ * Pull the first non-empty `servers[].url` out of a raw OpenAPI payload, or
454
+ * `null` when none is present.
455
+ *
456
+ * `OpenApi.IDocument` (the shape AutoView's orchestrators consume) does
457
+ * not carry the OpenAPI `servers[]` field — it is dropped by
458
+ * `invertOpenApiDocument` because the AutoBE backend phases do not need it. The
459
+ * standalone CLI does need it, though: it is the difference between the
460
+ * generated frontend booting with `simulate: false` against the user's real
461
+ * backend (real data on first open) and the simulator default (typia-random
462
+ * gibberish). Read it directly off the raw swagger here so the CLI can pass the
463
+ * host into {@link AutoViewAgent} without parsing the swagger twice.
464
+ *
465
+ * Returns `null` when:
466
+ *
467
+ * - The payload is not an object, or
468
+ * - `servers` is missing / empty / not an array, or
469
+ * - No `servers[i].url` is a non-empty string.
470
+ */
471
+ function extractBackendFromSwagger(payload) {
472
+ if (typeof payload !== "object" || payload === null)
473
+ return null;
474
+ const servers = payload.servers;
475
+ if (!Array.isArray(servers))
476
+ return null;
477
+ for (const server of servers) {
478
+ if (typeof server !== "object" || server === null)
479
+ continue;
480
+ const url = server.url;
481
+ if (typeof url === "string" && url.length > 0) {
482
+ return { host: url };
483
+ }
484
+ }
485
+ return null;
486
+ }
487
+ /**
488
+ * File-path convenience for {@link extractBackendFromSwagger}: read `path` as
489
+ * UTF-8 JSON, parse, and run it through the extractor. Returns `null` on read
490
+ * or parse failure rather than throwing — the caller usually has a `--backend
491
+ * <url>` flag and a simulator fallback to lean on, and a missing file would
492
+ * already have failed louder via {@link fromSwaggerFile}.
493
+ */
494
+ function extractBackendFromSwaggerFile(path) {
495
+ return __awaiter(this, void 0, void 0, function* () {
496
+ let raw;
497
+ try {
498
+ raw = yield promises_1.default.readFile(path, "utf-8");
499
+ }
500
+ catch (_a) {
501
+ return null;
502
+ }
503
+ let parsed;
504
+ try {
505
+ parsed = JSON.parse(raw);
506
+ }
507
+ catch (_b) {
508
+ return null;
509
+ }
510
+ return extractBackendFromSwagger(parsed);
511
+ });
512
+ }
513
+ //# sourceMappingURL=fromSwagger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fromSwagger.js","sourceRoot":"","sources":["../src/fromSwagger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { OpenApi } from "@typia/interface";
2
+ import { IEndpointFilter } from "./utils/endpointFilter";
3
+ /**
4
+ * Generate the frontend with NO LLM and NO API key — the whole READ → MAP →
5
+ * RENDER pipeline is deterministic, so for the common case (a clean swagger that
6
+ * compiles) you do not need a model at all. This is the path the `--no-llm` CLI
7
+ * flag and any programmatic caller take.
8
+ *
9
+ * It runs exactly the deterministic phases of {@link orchestrateAutoView}:
10
+ *
11
+ * 1. slice the document to `include`/`exclude` (so a large ERP spec still fits),
12
+ * 2. derive the SDK map + product plan structurally,
13
+ * 3. scaffold the project + render every page deterministically.
14
+ *
15
+ * It deliberately skips the LLM phases the full agent runs — the typecheck-
16
+ * recovery rerender, the runtime audit, the UI review. The render is already
17
+ * typecheck-clean on real swaggers; without a key those polish passes simply do
18
+ * not run. Returns the flat `path → content` project map.
19
+ */
20
+ export declare function generateDeterministic(rawDocument: OpenApi.IDocument, options: {
21
+ backend: {
22
+ host: string | null;
23
+ };
24
+ filter?: IEndpointFilter;
25
+ semaphore?: number;
26
+ }): Promise<Record<string, string>>;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.generateDeterministic = generateDeterministic;
13
+ const AutoViewInterfaceCompiler_1 = require("./compiler/AutoViewInterfaceCompiler");
14
+ const orchestrateAutoViewRenderDeterministic_1 = require("./orchestrate/orchestrateAutoViewRenderDeterministic");
15
+ const orchestrateAutoViewScaffold_1 = require("./orchestrate/orchestrateAutoViewScaffold");
16
+ const buildDeterministicPlan_1 = require("./orchestrate/utils/buildDeterministicPlan");
17
+ const buildDeterministicSdkMap_1 = require("./orchestrate/utils/buildDeterministicSdkMap");
18
+ const normalizeProductPlanPaths_1 = require("./orchestrate/utils/normalizeProductPlanPaths");
19
+ const sliceDocument_1 = require("./utils/sliceDocument");
20
+ /**
21
+ * Generate the frontend with NO LLM and NO API key — the whole READ → MAP →
22
+ * RENDER pipeline is deterministic, so for the common case (a clean swagger that
23
+ * compiles) you do not need a model at all. This is the path the `--no-llm` CLI
24
+ * flag and any programmatic caller take.
25
+ *
26
+ * It runs exactly the deterministic phases of {@link orchestrateAutoView}:
27
+ *
28
+ * 1. slice the document to `include`/`exclude` (so a large ERP spec still fits),
29
+ * 2. derive the SDK map + product plan structurally,
30
+ * 3. scaffold the project + render every page deterministically.
31
+ *
32
+ * It deliberately skips the LLM phases the full agent runs — the typecheck-
33
+ * recovery rerender, the runtime audit, the UI review. The render is already
34
+ * typecheck-clean on real swaggers; without a key those polish passes simply do
35
+ * not run. Returns the flat `path → content` project map.
36
+ */
37
+ function generateDeterministic(rawDocument, options) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ var _a, _b, _c, _d, _e;
40
+ const document = (0, sliceDocument_1.sliceDocument)(rawDocument, (_a = options.filter) !== null && _a !== void 0 ? _a : {});
41
+ const sdkMap = (0, buildDeterministicSdkMap_1.buildDeterministicSdkMap)(document);
42
+ const actor = (_c = (_b = sdkMap.actors[0]) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : "user";
43
+ const productPlan = (0, normalizeProductPlanPaths_1.normalizeProductPlanPaths)((0, buildDeterministicPlan_1.buildDeterministicPlan)(document, actor, (_d = options.filter) !== null && _d !== void 0 ? _d : {}));
44
+ // A minimal context: the deterministic phases need only the interface compiler
45
+ // and a semaphore. `conversate` must never be reached on this path — if it is,
46
+ // that is a bug (an LLM call leaked into the deterministic pipeline).
47
+ const compiler = { interface: new AutoViewInterfaceCompiler_1.AutoViewInterfaceCompiler() };
48
+ const ctx = {
49
+ state: () => ({ interface: { document, step: 0 } }),
50
+ compiler: () => __awaiter(this, void 0, void 0, function* () { return compiler; }),
51
+ vendor: { semaphore: (_e = options.semaphore) !== null && _e !== void 0 ? _e : 8 },
52
+ dispatch: () => undefined,
53
+ conversate: () => __awaiter(this, void 0, void 0, function* () {
54
+ throw new Error("generateDeterministic reached an LLM call — the deterministic path must not.");
55
+ }),
56
+ // biome-ignore lint: a structural stub of IAutoViewAgentContext's deterministic surface
57
+ };
58
+ const scaffolded = yield (0, orchestrateAutoViewScaffold_1.orchestrateAutoViewScaffold)(ctx, {
59
+ document,
60
+ sdkMap,
61
+ sdkMapMarkdown: "# SDK Map\n\n_(deterministic)_\n",
62
+ productPlan,
63
+ productPlanMarkdown: "# Product Plan\n\n_(deterministic)_\n",
64
+ step: 0,
65
+ backend: options.backend,
66
+ });
67
+ const render = yield (0, orchestrateAutoViewRenderDeterministic_1.orchestrateAutoViewRenderDeterministic)(ctx, {
68
+ document,
69
+ productPlan,
70
+ step: 0,
71
+ });
72
+ return Object.assign(Object.assign({}, scaffolded), render.files);
73
+ });
74
+ }
75
+ //# sourceMappingURL=generateDeterministic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateDeterministic.js","sourceRoot":"","sources":["../src/generateDeterministic.ts"],"names":[],"mappings":";;;;;;;;;;;AA4BA,sDAgDC;AA1ED,oFAAiF;AACjF,iHAA8G;AAC9G,2FAAwF;AACxF,uFAAoF;AACpF,2FAAwF;AACxF,6FAA0F;AAE1F,yDAAsD;AAEtD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAsB,qBAAqB,CACzC,WAA8B,EAC9B,OAIC;;;QAED,MAAM,QAAQ,GAAG,IAAA,6BAAa,EAAC,WAAW,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAA,mDAAwB,EAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAA,MAAA,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,0CAAE,IAAI,mCAAI,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAA,qDAAyB,EAC3C,IAAA,+CAAsB,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,CAAC,CAC9D,CAAC;QAEF,+EAA+E;QAC/E,+EAA+E;QAC/E,sEAAsE;QACtE,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,IAAI,qDAAyB,EAAE,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,QAAQ,EAAE,GAAS,EAAE,gDAAC,OAAA,QAAQ,CAAA,GAAA;YAC9B,MAAM,EAAE,EAAE,SAAS,EAAE,MAAA,OAAO,CAAC,SAAS,mCAAI,CAAC,EAAE;YAC7C,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS;YACzB,UAAU,EAAE,GAAS,EAAE;gBACrB,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;YACJ,CAAC,CAAA;YACD,wFAAwF;SAChF,CAAC;QAEX,MAAM,UAAU,GAAG,MAAM,IAAA,yDAA2B,EAAC,GAAG,EAAE;YACxD,QAAQ;YACR,MAAM;YACN,cAAc,EAAE,kCAAkC;YAClD,WAAW;YACX,mBAAmB,EAAE,uCAAuC;YAC5D,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,+EAAsC,EAAC,GAAG,EAAE;YAC/D,QAAQ;YACR,WAAW;YACX,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,uCAAY,UAAU,GAAK,MAAM,CAAC,KAAK,EAAG;IAC5C,CAAC;CAAA"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ export * from "./AutoViewAgent";
2
+ export * from "./context/IAutoViewAgentContext";
3
+ export * from "./fromSwagger";
4
+ export * from "./orchestrate/orchestrateAutoView";
5
+ export { AutoViewFrontendTemplate } from "./constants/AutoViewFrontendTemplate";
6
+ export { describeEndpointPropsShape, describeRequestBodyHint, } from "./orchestrate/utils/describeEndpointPropsShape";
7
+ export { describeEndpointRequestBodyShape } from "./orchestrate/utils/describeEndpointRequestBodyShape";
8
+ export { describeEndpointResponseShape } from "./orchestrate/utils/describeEndpointResponseShape";
9
+ export { renderJsonSchema, renderNamedSchema, } from "./orchestrate/utils/renderJsonSchema";
10
+ export { hashFrontendDependencies, validateFrontendTypecheck, } from "./orchestrate/utils/validateFrontendTypecheck";
11
+ export type { ITypecheckDiagnostic, IValidateFrontendTypecheckResult, } from "./orchestrate/utils/validateFrontendTypecheck";
12
+ export { auditFrontendRuntime } from "./orchestrate/utils/auditFrontendRuntime";
13
+ export type { IAuditFrontendRuntimeResult, IRuntimeAuditDiagnostic, } from "./orchestrate/utils/auditFrontendRuntime";
14
+ export { loadShoppingFixture } from "./orchestrate/utils/loadShoppingFixture";
15
+ export type { IShoppingFixture } from "./orchestrate/utils/loadShoppingFixture";