nodefony 7.0.2 → 10.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (903) hide show
  1. package/.ai/symbols.json +36135 -0
  2. package/LICENSE +544 -0
  3. package/README.md +316 -694
  4. package/bin/nodefony +2183 -85
  5. package/dist/client/Container.js +367 -0
  6. package/dist/client/Event.js +198 -0
  7. package/dist/client/Service.js +344 -0
  8. package/dist/client/Tools.js +162 -0
  9. package/dist/client/client/ClientKernel.js +276 -0
  10. package/dist/client/client/angular/index.js +352 -0
  11. package/dist/client/client/announce.js +212 -0
  12. package/dist/client/client/debugbar/DebugBar.js +1624 -0
  13. package/dist/client/client/debugbar/format.js +103 -0
  14. package/dist/client/client/debugbar/hmr.js +37 -0
  15. package/dist/client/client/debugbar/index.js +29 -0
  16. package/dist/client/client/debugbar/model.js +133 -0
  17. package/dist/client/client/debugbar/network.js +173 -0
  18. package/dist/client/client/debugbar/profile.js +114 -0
  19. package/dist/client/client/index.js +34 -0
  20. package/dist/client/client/react/index.js +268 -0
  21. package/dist/client/client/realtime/AdaptiveRate.js +240 -0
  22. package/dist/client/client/realtime/BrowserWsTransport.js +57 -0
  23. package/dist/client/client/realtime/RealtimeClient.js +898 -0
  24. package/dist/client/client/realtime/localEvents.js +56 -0
  25. package/dist/client/client/realtime/notice.js +125 -0
  26. package/dist/client/client/realtime/observe.js +280 -0
  27. package/dist/client/client/roles/index.js +3 -0
  28. package/dist/client/client/roles/registry.js +97 -0
  29. package/dist/client/client/roles/roles.js +91 -0
  30. package/dist/client/client/shim/events.js +88 -0
  31. package/dist/client/client/shim/util.js +20 -0
  32. package/dist/client/client/svelte/index.js +319 -0
  33. package/dist/client/client/syslog/context.js +122 -0
  34. package/dist/client/client/syslog/errors.js +49 -0
  35. package/dist/client/client/syslog/uplink.js +106 -0
  36. package/dist/client/client/vue/index.js +321 -0
  37. package/dist/client/colors.js +63 -0
  38. package/dist/client/debugbar.standalone.js +4274 -0
  39. package/dist/client/realtime/IRealtimeTransport.js +32 -0
  40. package/dist/client/realtime/JsonRpcPeer.js +251 -0
  41. package/dist/client/realtime/channelRate.js +39 -0
  42. package/dist/client/realtime/platformChannels.js +155 -0
  43. package/dist/client/syslog/Pdu.js +224 -0
  44. package/dist/client/syslog/Syslog.js +1159 -0
  45. package/dist/client/syslog/drivers/pduFlow.js +106 -0
  46. package/dist/client/syslog/drivers/pduProtocol.js +28 -0
  47. package/dist/client/syslog/logColor.js +80 -0
  48. package/dist/client/types/src/Container.d.ts +221 -0
  49. package/dist/client/types/src/Event.d.ts +171 -0
  50. package/dist/client/types/src/FileClass.d.ts +184 -0
  51. package/dist/client/types/src/Service.d.ts +165 -0
  52. package/dist/client/types/src/Tools.d.ts +116 -0
  53. package/dist/client/types/src/client/ClientKernel.d.ts +90 -0
  54. package/dist/client/types/src/client/IClientKernel.d.ts +195 -0
  55. package/dist/client/types/src/client/angular/index.d.ts +273 -0
  56. package/dist/client/types/src/client/announce.d.ts +74 -0
  57. package/dist/client/types/src/client/debugbar/DebugBar.d.ts +279 -0
  58. package/dist/client/types/src/client/debugbar/format.d.ts +48 -0
  59. package/dist/client/types/src/client/debugbar/hmr.d.ts +16 -0
  60. package/dist/client/types/src/client/debugbar/index.d.ts +30 -0
  61. package/dist/client/types/src/client/debugbar/model.d.ts +158 -0
  62. package/dist/client/types/src/client/debugbar/network.d.ts +55 -0
  63. package/dist/client/types/src/client/debugbar/profile.d.ts +99 -0
  64. package/dist/client/types/src/client/index.d.ts +47 -0
  65. package/dist/client/types/src/client/react/index.d.ts +207 -0
  66. package/dist/client/types/src/client/realtime/AdaptiveRate.d.ts +138 -0
  67. package/dist/client/types/src/client/realtime/BrowserWsTransport.d.ts +27 -0
  68. package/dist/client/types/src/client/realtime/RealtimeClient.d.ts +573 -0
  69. package/dist/client/types/src/client/realtime/localEvents.d.ts +53 -0
  70. package/dist/client/types/src/client/realtime/notice.d.ts +70 -0
  71. package/dist/client/types/src/client/realtime/observe.d.ts +284 -0
  72. package/dist/client/types/src/client/roles/index.d.ts +15 -0
  73. package/dist/client/types/src/client/roles/registry.d.ts +72 -0
  74. package/dist/client/types/src/client/roles/roles.d.ts +68 -0
  75. package/dist/client/types/src/client/shim/cli-color.d.ts +2 -0
  76. package/dist/client/types/src/client/shim/events.d.ts +39 -0
  77. package/dist/client/types/src/client/shim/util.d.ts +14 -0
  78. package/dist/client/types/src/client/svelte/index.d.ts +216 -0
  79. package/dist/client/types/src/client/syslog/context.d.ts +76 -0
  80. package/dist/client/types/src/client/syslog/errors.d.ts +46 -0
  81. package/dist/client/types/src/client/syslog/uplink.d.ts +89 -0
  82. package/dist/client/types/src/client/transport/websocket.d.ts +5 -0
  83. package/dist/client/types/src/client/vue/index.d.ts +234 -0
  84. package/dist/client/types/src/colors.d.ts +32 -0
  85. package/dist/client/types/src/config/infra.d.ts +171 -0
  86. package/dist/client/types/src/kernel/bootReport.d.ts +112 -0
  87. package/dist/client/types/src/kernel/readinessRegistry.d.ts +104 -0
  88. package/dist/client/types/src/realtime/IRealtimeSocket.d.ts +142 -0
  89. package/dist/client/types/src/realtime/IRealtimeTransport.d.ts +50 -0
  90. package/dist/client/types/src/realtime/JsonRpcPeer.d.ts +251 -0
  91. package/dist/client/types/src/realtime/RealtimeEventMap.d.ts +269 -0
  92. package/dist/client/types/src/realtime/channelRate.d.ts +55 -0
  93. package/dist/client/types/src/realtime/platformChannels.d.ts +147 -0
  94. package/dist/client/types/src/syslog/Pdu.d.ts +134 -0
  95. package/dist/client/types/src/syslog/Syslog.d.ts +482 -0
  96. package/dist/client/types/src/syslog/drivers/ILogDriver.d.ts +177 -0
  97. package/dist/client/types/src/syslog/drivers/pduFlow.d.ts +53 -0
  98. package/dist/client/types/src/syslog/drivers/pduProtocol.d.ts +20 -0
  99. package/dist/client/types/src/syslog/logColor.d.ts +59 -0
  100. package/dist/client/types/src/types/ICliKernel.d.ts +28 -0
  101. package/dist/client/types/src/types/ICommand.d.ts +14 -0
  102. package/dist/client/types/src/types/IContainer.d.ts +35 -0
  103. package/dist/client/types/src/types/IKernel.d.ts +138 -0
  104. package/dist/client/types/src/types/IMcpTool.d.ts +157 -0
  105. package/dist/client/types/src/types/IModule.d.ts +73 -0
  106. package/dist/client/types/src/types/IPage.d.ts +119 -0
  107. package/dist/client/types/src/types/IService.d.ts +62 -0
  108. package/dist/client/types/src/types/ISyslog.d.ts +58 -0
  109. package/dist/client/types/src/types/ITransport.d.ts +5 -0
  110. package/dist/client/types/src/types/globals.d.ts +47 -0
  111. package/dist/node/Cli.js +750 -0
  112. package/dist/node/Container.js +367 -0
  113. package/dist/node/Error.js +309 -0
  114. package/dist/node/Event.js +198 -0
  115. package/dist/node/FileClass.js +308 -0
  116. package/dist/node/Nodefony.js +78 -0
  117. package/dist/node/Service.js +344 -0
  118. package/dist/node/Tools.js +205 -0
  119. package/dist/node/bin/resolveLocalCli.js +10 -0
  120. package/dist/node/bundler/index.js +103 -0
  121. package/dist/node/cli/agentTargets.js +461 -0
  122. package/dist/node/cli/aiMcp.js +553 -0
  123. package/dist/node/cli/aiMcpReport.js +129 -0
  124. package/dist/node/cli/aiSync.js +323 -0
  125. package/dist/node/cli/aiSyncReport.js +142 -0
  126. package/dist/node/cli/card.js +186 -0
  127. package/dist/node/cli/cardReport.js +110 -0
  128. package/dist/node/cli/completion.js +415 -0
  129. package/dist/node/cli/create.js +805 -0
  130. package/dist/node/cli/env.js +332 -0
  131. package/dist/node/cli/envReport.js +159 -0
  132. package/dist/node/cli/execPortable.js +60 -0
  133. package/dist/node/cli/gitHooks.js +191 -0
  134. package/dist/node/cli/gitHooksReport.js +119 -0
  135. package/dist/node/cli/globalFlags.js +67 -0
  136. package/dist/node/cli/helpReport.js +288 -0
  137. package/dist/node/cli/manPage.js +165 -0
  138. package/dist/node/cli/nodefonyBin.js +61 -0
  139. package/dist/node/cli/outdated.js +144 -0
  140. package/dist/node/cli/progress.js +555 -0
  141. package/dist/node/cli/projectRoot.js +32 -0
  142. package/dist/node/cli/promptPassword.js +44 -0
  143. package/dist/node/cli/prompts.js +86 -0
  144. package/dist/node/cli/scaffold/destination.js +92 -0
  145. package/dist/node/cli/scaffold/engine.js +2156 -0
  146. package/dist/node/cli/scaffold/entityFields.js +589 -0
  147. package/dist/node/cli/scaffold/format.js +243 -0
  148. package/dist/node/cli/scaffold/interactive.js +124 -0
  149. package/dist/node/cli/scaffold/moduleLayout.js +38 -0
  150. package/dist/node/cli/scaffold/reservedEntities.js +74 -0
  151. package/dist/node/cli/scaffold/spec.js +704 -0
  152. package/dist/node/cli/scaffold/steps.js +40 -0
  153. package/dist/node/cli/scaffold/userContractSource.js +133 -0
  154. package/dist/node/cli/scaffold/versions.js +57 -0
  155. package/dist/node/cli/scaffold/writer.js +172 -0
  156. package/dist/node/cli/startMenu.js +496 -0
  157. package/dist/node/cli/symbols.js +205 -0
  158. package/dist/node/cli/sysexits.js +34 -0
  159. package/dist/node/cli/tableReport.js +184 -0
  160. package/dist/node/cli/usageReport.js +144 -0
  161. package/dist/node/colors.js +63 -0
  162. package/dist/node/command/Builder.js +153 -0
  163. package/dist/node/command/Command.js +348 -0
  164. package/dist/node/config/configProvenance.js +101 -0
  165. package/dist/node/config/defaults.js +39 -0
  166. package/dist/node/config/defineConfig.js +129 -0
  167. package/dist/node/config/defineEnv.js +264 -0
  168. package/dist/node/config/envExample.js +41 -0
  169. package/dist/node/config/envOverride.js +423 -0
  170. package/dist/node/config/infra.js +163 -0
  171. package/dist/node/config/reactivity.js +23 -0
  172. package/dist/node/config/reservedEnv.js +118 -0
  173. package/dist/node/config/schema.js +134 -0
  174. package/dist/node/config/use.js +24 -0
  175. package/dist/node/finder/File.js +49 -0
  176. package/dist/node/finder/FileResult.js +86 -0
  177. package/dist/node/finder/Finder.js +201 -0
  178. package/dist/node/finder/Result.js +45 -0
  179. package/dist/node/index.js +121 -0
  180. package/dist/node/kernel/BootConfigurationError.js +54 -0
  181. package/dist/node/kernel/CliKernel.js +630 -0
  182. package/dist/node/kernel/Kernel.js +2198 -0
  183. package/dist/node/kernel/Module.js +453 -0
  184. package/dist/node/kernel/adminPlane/adminCaller.js +98 -0
  185. package/dist/node/kernel/adminPlane/adminRbac.js +51 -0
  186. package/dist/node/kernel/adminPlane/catalog.js +158 -0
  187. package/dist/node/kernel/adminPlane/executeAdmin.js +78 -0
  188. package/dist/node/kernel/checks/deep.js +335 -0
  189. package/dist/node/kernel/checks/freshness.js +139 -0
  190. package/dist/node/kernel/checks/gating.js +231 -0
  191. package/dist/node/kernel/checks/guards.js +232 -0
  192. package/dist/node/kernel/checks/lastBoot.js +136 -0
  193. package/dist/node/kernel/checks/live.js +330 -0
  194. package/dist/node/kernel/checks/packageDeps.js +292 -0
  195. package/dist/node/kernel/checks/readiness.js +153 -0
  196. package/dist/node/kernel/checks/renderReport.js +780 -0
  197. package/dist/node/kernel/checks/report.js +421 -0
  198. package/dist/node/kernel/checks/runDoctor.js +731 -0
  199. package/dist/node/kernel/checks/surface.js +364 -0
  200. package/dist/node/kernel/checks/walk.js +100 -0
  201. package/dist/node/kernel/checks/wiring.js +450 -0
  202. package/dist/node/kernel/commands/AiMcpCommand.js +65 -0
  203. package/dist/node/kernel/commands/AiSyncCommand.js +48 -0
  204. package/dist/node/kernel/commands/BuildCommand.js +49 -0
  205. package/dist/node/kernel/commands/CardCommand.js +50 -0
  206. package/dist/node/kernel/commands/ClusterCommand.js +58 -0
  207. package/dist/node/kernel/commands/CompletionCommand.js +31 -0
  208. package/dist/node/kernel/commands/CreateCommand.js +45 -0
  209. package/dist/node/kernel/commands/DevCommand.js +99 -0
  210. package/dist/node/kernel/commands/DoctorCommand.js +115 -0
  211. package/dist/node/kernel/commands/EnvCommand.js +52 -0
  212. package/dist/node/kernel/commands/GitHooksCommand.js +47 -0
  213. package/dist/node/kernel/commands/InspectCommand.js +153 -0
  214. package/dist/node/kernel/commands/InstallCommand.js +20 -0
  215. package/dist/node/kernel/commands/MenuCommand.js +261 -0
  216. package/dist/node/kernel/commands/OutdatedCommand.js +164 -0
  217. package/dist/node/kernel/commands/ProdCommand.js +60 -0
  218. package/dist/node/kernel/commands/StatusCommand.js +30 -0
  219. package/dist/node/kernel/commands/StopCommand.js +35 -0
  220. package/dist/node/kernel/commands/SymbolsCommand.js +45 -0
  221. package/dist/node/kernel/commands/runtimeLauncher.js +95 -0
  222. package/dist/node/kernel/decorators/kernelDecorator.js +110 -0
  223. package/dist/node/kernel/injector/injector.js +137 -0
  224. package/dist/node/kernel/injector/serviceOrder.js +106 -0
  225. package/dist/node/kernel/inspect/adminSubjects.js +194 -0
  226. package/dist/node/kernel/inspect/docOutline.js +86 -0
  227. package/dist/node/kernel/lifecycleTags.js +76 -0
  228. package/dist/node/kernel/moduleConfig.js +75 -0
  229. package/dist/node/kernel/moduleGating.js +68 -0
  230. package/dist/node/kernel/readinessRegistry.js +98 -0
  231. package/dist/node/kernel/resolveModuleEntry.js +61 -0
  232. package/dist/node/mcp/caller.js +40 -0
  233. package/dist/node/mcp/guard.js +51 -0
  234. package/dist/node/mcp/protocol.js +157 -0
  235. package/dist/node/mcp/server.js +216 -0
  236. package/dist/node/mcp/tools.js +861 -0
  237. package/dist/node/oauth/authorizationServer.js +221 -0
  238. package/dist/node/oauth/protectedResource.js +293 -0
  239. package/dist/node/package.js +4 -0
  240. package/dist/node/realtime/IRealtimeTransport.js +32 -0
  241. package/dist/node/realtime/JsonRpcPeer.js +251 -0
  242. package/dist/node/realtime/RealtimeEventMap.js +15 -0
  243. package/dist/node/realtime/channelRate.js +39 -0
  244. package/dist/node/realtime/platformChannels.js +155 -0
  245. package/dist/node/runtime/GcScheduler.js +92 -0
  246. package/dist/node/runtime/RequestContext.js +76 -0
  247. package/dist/node/runtime/bearer.js +84 -0
  248. package/dist/node/runtime/engineEnvironment.js +79 -0
  249. package/dist/node/runtime/loadEnv.js +105 -0
  250. package/dist/node/runtime/pageFacets.js +85 -0
  251. package/dist/node/runtime/pageFilters.js +103 -0
  252. package/dist/node/runtime/pageGuard.js +84 -0
  253. package/dist/node/runtime/pageQuery.js +160 -0
  254. package/dist/node/runtime/pageSort.js +114 -0
  255. package/dist/node/runtime/redact.js +43 -0
  256. package/dist/node/runtime/withTimeout.js +71 -0
  257. package/dist/node/service/cluster/ClusterManager.js +202 -0
  258. package/dist/node/service/cluster/ClusterProbeAggregator.js +120 -0
  259. package/dist/node/service/cluster/ClusterRelay.js +74 -0
  260. package/dist/node/service/cluster/clusterMaster.js +65 -0
  261. package/dist/node/service/cluster/clusterMessage.js +70 -0
  262. package/dist/node/service/cluster/cpuQuota.js +59 -0
  263. package/dist/node/service/cluster/instanceProbe.js +52 -0
  264. package/dist/node/service/cluster/podEnvironment.js +48 -0
  265. package/dist/node/service/cluster/processProbe.js +70 -0
  266. package/dist/node/service/cluster/richProcessProbe.js +115 -0
  267. package/dist/node/service/cluster/topology.js +71 -0
  268. package/dist/node/service/dev/BootReporter.js +490 -0
  269. package/dist/node/service/dev/DevSupervisor.js +1004 -0
  270. package/dist/node/service/dev/bootVerdict.js +158 -0
  271. package/dist/node/service/dev/detachedStart.js +372 -0
  272. package/dist/node/service/dev/devProcess.js +1137 -0
  273. package/dist/node/service/dev/devProjects.js +138 -0
  274. package/dist/node/service/dev/devStatusReport.js +395 -0
  275. package/dist/node/service/dev/devStop.js +263 -0
  276. package/dist/node/service/fetchService.js +35 -0
  277. package/dist/node/service/gitService.js +62 -0
  278. package/dist/node/syslog/Pdu.js +224 -0
  279. package/dist/node/syslog/Syslog.js +1159 -0
  280. package/dist/node/syslog/drivers/ClusterFileLogDriver.js +114 -0
  281. package/dist/node/syslog/drivers/FileLogDriver.js +127 -0
  282. package/dist/node/syslog/drivers/ILogDriver.js +26 -0
  283. package/dist/node/syslog/drivers/LokiLogDriver.js +144 -0
  284. package/dist/node/syslog/drivers/MemoryLogDriver.js +33 -0
  285. package/dist/node/syslog/drivers/OpenSearchLogDriver.js +159 -0
  286. package/dist/node/syslog/drivers/builtinLogDrivers.js +114 -0
  287. package/dist/node/syslog/drivers/filterPdus.js +71 -0
  288. package/dist/node/syslog/drivers/logDriverRegistry.js +83 -0
  289. package/dist/node/syslog/drivers/opensearchShared.js +17 -0
  290. package/dist/node/syslog/drivers/pduFlow.js +106 -0
  291. package/dist/node/syslog/drivers/pduProtocol.js +28 -0
  292. package/dist/node/syslog/httpFetch.js +43 -0
  293. package/dist/node/syslog/logColor.js +80 -0
  294. package/dist/node/syslog/sinks/FileSink.js +142 -0
  295. package/dist/node/syslog/transports/BatchingHttpTransport.js +98 -0
  296. package/dist/node/syslog/transports/ConsoleTransport.js +14 -0
  297. package/dist/node/syslog/transports/FileTransport.js +17 -0
  298. package/dist/node/syslog/transports/HttpTransport.js +44 -0
  299. package/dist/node/syslog/transports/LokiTransport.js +80 -0
  300. package/dist/node/syslog/transports/OpenSearchTransport.js +53 -0
  301. package/dist/node/syslog/transports/SyslogTransport.js +13 -0
  302. package/dist/node/syslog/transports/index.js +8 -0
  303. package/dist/node/testing/index.js +190 -0
  304. package/dist/types/Cli.d.ts +177 -0
  305. package/dist/types/Container.d.ts +221 -0
  306. package/dist/types/Error.d.ts +162 -0
  307. package/dist/types/Event.d.ts +171 -0
  308. package/dist/types/FileClass.d.ts +184 -0
  309. package/dist/types/Nodefony.d.ts +66 -0
  310. package/dist/types/Service.d.ts +165 -0
  311. package/dist/types/Tools.d.ts +116 -0
  312. package/dist/types/bin/resolveLocalCli.d.ts +49 -0
  313. package/dist/types/bundler/index.d.ts +66 -0
  314. package/dist/types/cli/agentTargets.d.ts +378 -0
  315. package/dist/types/cli/aiMcp.d.ts +239 -0
  316. package/dist/types/cli/aiMcpReport.d.ts +113 -0
  317. package/dist/types/cli/aiSync.d.ts +68 -0
  318. package/dist/types/cli/aiSyncReport.d.ts +149 -0
  319. package/dist/types/cli/card.d.ts +49 -0
  320. package/dist/types/cli/cardReport.d.ts +127 -0
  321. package/dist/types/cli/completion.d.ts +154 -0
  322. package/dist/types/cli/create.d.ts +177 -0
  323. package/dist/types/cli/env.d.ts +103 -0
  324. package/dist/types/cli/envReport.d.ts +153 -0
  325. package/dist/types/cli/execPortable.d.ts +54 -0
  326. package/dist/types/cli/gitHooks.d.ts +48 -0
  327. package/dist/types/cli/gitHooksReport.d.ts +101 -0
  328. package/dist/types/cli/globalFlags.d.ts +48 -0
  329. package/dist/types/cli/helpReport.d.ts +110 -0
  330. package/dist/types/cli/manPage.d.ts +21 -0
  331. package/dist/types/cli/nodefonyBin.d.ts +45 -0
  332. package/dist/types/cli/outdated.d.ts +119 -0
  333. package/dist/types/cli/progress.d.ts +349 -0
  334. package/dist/types/cli/projectRoot.d.ts +19 -0
  335. package/dist/types/cli/promptPassword.d.ts +22 -0
  336. package/dist/types/cli/prompts.d.ts +102 -0
  337. package/dist/types/cli/scaffold/destination.d.ts +70 -0
  338. package/dist/types/cli/scaffold/engine.d.ts +545 -0
  339. package/dist/types/cli/scaffold/entityFields.d.ts +238 -0
  340. package/dist/types/cli/scaffold/format.d.ts +78 -0
  341. package/dist/types/cli/scaffold/interactive.d.ts +11 -0
  342. package/dist/types/cli/scaffold/moduleLayout.d.ts +69 -0
  343. package/dist/types/cli/scaffold/reservedEntities.d.ts +49 -0
  344. package/dist/types/cli/scaffold/spec.d.ts +159 -0
  345. package/dist/types/cli/scaffold/steps.d.ts +24 -0
  346. package/dist/types/cli/scaffold/userContractSource.d.ts +86 -0
  347. package/dist/types/cli/scaffold/versions.d.ts +14 -0
  348. package/dist/types/cli/scaffold/writer.d.ts +100 -0
  349. package/dist/types/cli/startMenu.d.ts +195 -0
  350. package/dist/types/cli/symbols.d.ts +84 -0
  351. package/dist/types/cli/sysexits.d.ts +31 -0
  352. package/dist/types/cli/tableReport.d.ts +44 -0
  353. package/dist/types/cli/usageReport.d.ts +108 -0
  354. package/dist/types/client/ClientKernel.d.ts +90 -0
  355. package/dist/types/client/IClientKernel.d.ts +195 -0
  356. package/dist/types/client/angular/index.d.ts +273 -0
  357. package/dist/types/client/announce.d.ts +74 -0
  358. package/dist/types/client/debugbar/DebugBar.d.ts +279 -0
  359. package/dist/types/client/debugbar/format.d.ts +48 -0
  360. package/dist/types/client/debugbar/hmr.d.ts +16 -0
  361. package/dist/types/client/debugbar/index.d.ts +30 -0
  362. package/dist/types/client/debugbar/model.d.ts +158 -0
  363. package/dist/types/client/debugbar/network.d.ts +55 -0
  364. package/dist/types/client/debugbar/profile.d.ts +99 -0
  365. package/dist/types/client/index.d.ts +47 -0
  366. package/dist/types/client/react/index.d.ts +207 -0
  367. package/dist/types/client/realtime/AdaptiveRate.d.ts +138 -0
  368. package/dist/types/client/realtime/BrowserWsTransport.d.ts +27 -0
  369. package/dist/types/client/realtime/RealtimeClient.d.ts +573 -0
  370. package/dist/types/client/realtime/localEvents.d.ts +53 -0
  371. package/dist/types/client/realtime/notice.d.ts +70 -0
  372. package/dist/types/client/realtime/observe.d.ts +284 -0
  373. package/dist/types/client/roles/index.d.ts +15 -0
  374. package/dist/types/client/roles/registry.d.ts +72 -0
  375. package/dist/types/client/roles/roles.d.ts +68 -0
  376. package/dist/types/client/shim/cli-color.d.ts +2 -0
  377. package/dist/types/client/shim/events.d.ts +39 -0
  378. package/dist/types/client/shim/util.d.ts +14 -0
  379. package/dist/types/client/svelte/index.d.ts +216 -0
  380. package/dist/types/client/syslog/context.d.ts +76 -0
  381. package/dist/types/client/syslog/errors.d.ts +46 -0
  382. package/dist/types/client/syslog/uplink.d.ts +89 -0
  383. package/dist/types/client/transport/websocket.d.ts +5 -0
  384. package/dist/types/client/vue/index.d.ts +234 -0
  385. package/dist/types/colors.d.ts +32 -0
  386. package/dist/types/command/Builder.d.ts +47 -0
  387. package/dist/types/command/Command.d.ts +268 -0
  388. package/dist/types/config/configMeta.d.ts +53 -0
  389. package/dist/types/config/configProvenance.d.ts +58 -0
  390. package/dist/types/config/defaults.d.ts +33 -0
  391. package/dist/types/config/defineConfig.d.ts +70 -0
  392. package/dist/types/config/defineEnv.d.ts +170 -0
  393. package/dist/types/config/envExample.d.ts +23 -0
  394. package/dist/types/config/envOverride.d.ts +236 -0
  395. package/dist/types/config/index.d.ts +23 -0
  396. package/dist/types/config/infra.d.ts +171 -0
  397. package/dist/types/config/reactivity.d.ts +36 -0
  398. package/dist/types/config/reservedEnv.d.ts +145 -0
  399. package/dist/types/config/schema.d.ts +113 -0
  400. package/dist/types/config/types.d.ts +374 -0
  401. package/dist/types/config/use.d.ts +80 -0
  402. package/dist/types/finder/File.d.ts +26 -0
  403. package/dist/types/finder/FileResult.d.ts +14 -0
  404. package/dist/types/finder/Finder.d.ts +51 -0
  405. package/dist/types/finder/Result.d.ts +10 -0
  406. package/dist/types/index.d.ts +205 -0
  407. package/dist/types/kernel/BootConfigurationError.d.ts +50 -0
  408. package/dist/types/kernel/CliKernel.d.ts +289 -0
  409. package/dist/types/kernel/Kernel.d.ts +1255 -0
  410. package/dist/types/kernel/Module.d.ts +326 -0
  411. package/dist/types/kernel/adminPlane/adminCaller.d.ts +105 -0
  412. package/dist/types/kernel/adminPlane/adminRbac.d.ts +44 -0
  413. package/dist/types/kernel/adminPlane/catalog.d.ts +122 -0
  414. package/dist/types/kernel/adminPlane/executeAdmin.d.ts +99 -0
  415. package/dist/types/kernel/bootReport.d.ts +112 -0
  416. package/dist/types/kernel/checks/deep.d.ts +122 -0
  417. package/dist/types/kernel/checks/freshness.d.ts +49 -0
  418. package/dist/types/kernel/checks/gating.d.ts +134 -0
  419. package/dist/types/kernel/checks/guards.d.ts +57 -0
  420. package/dist/types/kernel/checks/lastBoot.d.ts +189 -0
  421. package/dist/types/kernel/checks/live.d.ts +110 -0
  422. package/dist/types/kernel/checks/packageDeps.d.ts +44 -0
  423. package/dist/types/kernel/checks/readiness.d.ts +97 -0
  424. package/dist/types/kernel/checks/renderReport.d.ts +107 -0
  425. package/dist/types/kernel/checks/report.d.ts +414 -0
  426. package/dist/types/kernel/checks/runDoctor.d.ts +361 -0
  427. package/dist/types/kernel/checks/surface.d.ts +148 -0
  428. package/dist/types/kernel/checks/walk.d.ts +45 -0
  429. package/dist/types/kernel/checks/wiring.d.ts +54 -0
  430. package/dist/types/kernel/commands/AiMcpCommand.d.ts +39 -0
  431. package/dist/types/kernel/commands/AiSyncCommand.d.ts +28 -0
  432. package/dist/types/kernel/commands/BuildCommand.d.ts +13 -0
  433. package/dist/types/kernel/commands/CardCommand.d.ts +34 -0
  434. package/dist/types/kernel/commands/ClusterCommand.d.ts +29 -0
  435. package/dist/types/kernel/commands/CompletionCommand.d.ts +17 -0
  436. package/dist/types/kernel/commands/CreateCommand.d.ts +16 -0
  437. package/dist/types/kernel/commands/DevCommand.d.ts +40 -0
  438. package/dist/types/kernel/commands/DoctorCommand.d.ts +55 -0
  439. package/dist/types/kernel/commands/EnvCommand.d.ts +35 -0
  440. package/dist/types/kernel/commands/GitHooksCommand.d.ts +27 -0
  441. package/dist/types/kernel/commands/InspectCommand.d.ts +59 -0
  442. package/dist/types/kernel/commands/InstallCommand.d.ts +7 -0
  443. package/dist/types/kernel/commands/MenuCommand.d.ts +58 -0
  444. package/dist/types/kernel/commands/OutdatedCommand.d.ts +47 -0
  445. package/dist/types/kernel/commands/ProdCommand.d.ts +29 -0
  446. package/dist/types/kernel/commands/StatusCommand.d.ts +17 -0
  447. package/dist/types/kernel/commands/StopCommand.d.ts +17 -0
  448. package/dist/types/kernel/commands/SymbolsCommand.d.ts +29 -0
  449. package/dist/types/kernel/commands/runtimeLauncher.d.ts +76 -0
  450. package/dist/types/kernel/decorators/kernelDecorator.d.ts +76 -0
  451. package/dist/types/kernel/injector/injector.d.ts +47 -0
  452. package/dist/types/kernel/injector/serviceOrder.d.ts +29 -0
  453. package/dist/types/kernel/inspect/adminSubjects.d.ts +169 -0
  454. package/dist/types/kernel/inspect/docOutline.d.ts +53 -0
  455. package/dist/types/kernel/lifecycleTags.d.ts +79 -0
  456. package/dist/types/kernel/moduleConfig.d.ts +35 -0
  457. package/dist/types/kernel/moduleGating.d.ts +78 -0
  458. package/dist/types/kernel/readinessRegistry.d.ts +104 -0
  459. package/dist/types/kernel/resolveModuleEntry.d.ts +46 -0
  460. package/dist/types/mcp/caller.d.ts +55 -0
  461. package/dist/types/mcp/guard.d.ts +66 -0
  462. package/dist/types/mcp/protocol.d.ts +163 -0
  463. package/dist/types/mcp/server.d.ts +70 -0
  464. package/dist/types/mcp/tools.d.ts +209 -0
  465. package/dist/types/oauth/authorizationServer.d.ts +204 -0
  466. package/dist/types/oauth/protectedResource.d.ts +339 -0
  467. package/dist/types/realtime/IRealtimeSocket.d.ts +142 -0
  468. package/dist/types/realtime/IRealtimeTransport.d.ts +50 -0
  469. package/dist/types/realtime/JsonRpcPeer.d.ts +251 -0
  470. package/dist/types/realtime/RealtimeEventMap.d.ts +269 -0
  471. package/dist/types/realtime/channelRate.d.ts +55 -0
  472. package/dist/types/realtime/platformChannels.d.ts +147 -0
  473. package/dist/types/runtime/GcScheduler.d.ts +96 -0
  474. package/dist/types/runtime/RequestContext.d.ts +152 -0
  475. package/dist/types/runtime/bearer.d.ts +88 -0
  476. package/dist/types/runtime/engineEnvironment.d.ts +115 -0
  477. package/dist/types/runtime/loadEnv.d.ts +86 -0
  478. package/dist/types/runtime/pageFacets.d.ts +104 -0
  479. package/dist/types/runtime/pageFilters.d.ts +139 -0
  480. package/dist/types/runtime/pageGuard.d.ts +78 -0
  481. package/dist/types/runtime/pageQuery.d.ts +138 -0
  482. package/dist/types/runtime/pageSort.d.ts +86 -0
  483. package/dist/types/runtime/redact.d.ts +27 -0
  484. package/dist/types/runtime/withTimeout.d.ts +51 -0
  485. package/dist/types/service/cluster/ClusterManager.d.ts +112 -0
  486. package/dist/types/service/cluster/ClusterProbeAggregator.d.ts +68 -0
  487. package/dist/types/service/cluster/ClusterRelay.d.ts +57 -0
  488. package/dist/types/service/cluster/clusterMaster.d.ts +40 -0
  489. package/dist/types/service/cluster/clusterMessage.d.ts +94 -0
  490. package/dist/types/service/cluster/cpuQuota.d.ts +37 -0
  491. package/dist/types/service/cluster/instanceProbe.d.ts +82 -0
  492. package/dist/types/service/cluster/podEnvironment.d.ts +35 -0
  493. package/dist/types/service/cluster/processProbe.d.ts +53 -0
  494. package/dist/types/service/cluster/richProcessProbe.d.ts +77 -0
  495. package/dist/types/service/cluster/topology.d.ts +64 -0
  496. package/dist/types/service/dev/BootReporter.d.ts +67 -0
  497. package/dist/types/service/dev/DevSupervisor.d.ts +117 -0
  498. package/dist/types/service/dev/bootVerdict.d.ts +99 -0
  499. package/dist/types/service/dev/detachedStart.d.ts +164 -0
  500. package/dist/types/service/dev/devProcess.d.ts +638 -0
  501. package/dist/types/service/dev/devProjects.d.ts +121 -0
  502. package/dist/types/service/dev/devStatusReport.d.ts +141 -0
  503. package/dist/types/service/dev/devStop.d.ts +57 -0
  504. package/dist/types/service/fetchService.d.ts +29 -0
  505. package/dist/types/service/gitService.d.ts +24 -0
  506. package/dist/types/syslog/Pdu.d.ts +134 -0
  507. package/dist/types/syslog/Syslog.d.ts +482 -0
  508. package/dist/types/syslog/drivers/ClusterFileLogDriver.d.ts +40 -0
  509. package/dist/types/syslog/drivers/FileLogDriver.d.ts +55 -0
  510. package/dist/types/syslog/drivers/ILogDriver.d.ts +177 -0
  511. package/dist/types/syslog/drivers/LokiLogDriver.d.ts +44 -0
  512. package/dist/types/syslog/drivers/MemoryLogDriver.d.ts +20 -0
  513. package/dist/types/syslog/drivers/OpenSearchLogDriver.d.ts +40 -0
  514. package/dist/types/syslog/drivers/builtinLogDrivers.d.ts +43 -0
  515. package/dist/types/syslog/drivers/filterPdus.d.ts +21 -0
  516. package/dist/types/syslog/drivers/logDriverRegistry.d.ts +100 -0
  517. package/dist/types/syslog/drivers/opensearchShared.d.ts +11 -0
  518. package/dist/types/syslog/drivers/pduFlow.d.ts +53 -0
  519. package/dist/types/syslog/drivers/pduProtocol.d.ts +20 -0
  520. package/dist/types/syslog/httpFetch.d.ts +48 -0
  521. package/dist/types/syslog/logColor.d.ts +59 -0
  522. package/dist/types/syslog/sinks/FileSink.d.ts +78 -0
  523. package/dist/types/syslog/transports/BatchingHttpTransport.d.ts +59 -0
  524. package/dist/types/syslog/transports/ConsoleTransport.d.ts +8 -0
  525. package/dist/types/syslog/transports/FileTransport.d.ts +13 -0
  526. package/dist/types/syslog/transports/HttpTransport.d.ts +15 -0
  527. package/dist/types/syslog/transports/LokiTransport.d.ts +45 -0
  528. package/dist/types/syslog/transports/OpenSearchTransport.d.ts +40 -0
  529. package/dist/types/syslog/transports/SyslogTransport.d.ts +9 -0
  530. package/dist/types/syslog/transports/index.d.ts +12 -0
  531. package/dist/types/testing/index.d.ts +197 -0
  532. package/dist/types/types/IAdminApi.d.ts +246 -0
  533. package/dist/types/types/ICliKernel.d.ts +28 -0
  534. package/dist/types/types/ICommand.d.ts +14 -0
  535. package/dist/types/types/IContainer.d.ts +35 -0
  536. package/dist/types/types/IIdempotencyStore.d.ts +159 -0
  537. package/dist/types/types/IKernel.d.ts +138 -0
  538. package/dist/types/types/IMcpTool.d.ts +157 -0
  539. package/dist/types/types/IModule.d.ts +73 -0
  540. package/dist/types/types/IModuleManifest.d.ts +49 -0
  541. package/dist/types/types/IPage.d.ts +119 -0
  542. package/dist/types/types/IService.d.ts +62 -0
  543. package/dist/types/types/ISyslog.d.ts +58 -0
  544. package/dist/types/types/ITransport.d.ts +5 -0
  545. package/dist/types/types/globals.d.ts +47 -0
  546. package/docs/angular-services.md +318 -0
  547. package/docs/catalogue.md +184 -0
  548. package/docs/cli.md +369 -0
  549. package/docs/client.md +616 -0
  550. package/docs/debugbar.md +218 -0
  551. package/docs/environnement.md +308 -0
  552. package/docs/index.md +388 -0
  553. package/docs/kernel.md +670 -0
  554. package/docs/progression.md +228 -0
  555. package/docs/react-hooks.md +686 -0
  556. package/docs/request-context.md +507 -0
  557. package/docs/service.md +590 -0
  558. package/docs/svelte-reactivite.md +293 -0
  559. package/docs/syslog.md +848 -0
  560. package/docs/testing.md +203 -0
  561. package/docs/vue-composables.md +255 -0
  562. package/man/nodefony.1 +152 -0
  563. package/package.json +163 -83
  564. package/templates/app/agents/AGENTS.md.tpl +967 -0
  565. package/templates/app/agents/POINTEUR.md.tpl +12 -0
  566. package/templates/app/base/Dockerfile.tpl +104 -0
  567. package/templates/app/base/README.md.tpl +314 -0
  568. package/templates/app/base/dockerignore.tpl +28 -0
  569. package/templates/app/base/env.ts.tpl +130 -0
  570. package/templates/app/base/gitattributes.tpl +28 -0
  571. package/templates/app/base/github/workflows/ci.yml.tpl +91 -0
  572. package/templates/app/base/gitignore.tpl +46 -0
  573. package/templates/app/base/gitlab-ci.yml.tpl +42 -0
  574. package/templates/app/base/index.ts.tpl +69 -0
  575. package/templates/app/base/nodefony.config.ts.tpl +342 -0
  576. package/templates/app/base/oxlintrc.json.tpl +127 -0
  577. package/templates/app/base/package.json.tpl +75 -0
  578. package/templates/app/base/prettierignore.tpl +24 -0
  579. package/templates/app/base/prettierrc.json.tpl +12 -0
  580. package/templates/app/base/rolldown.config.ts.tpl +8 -0
  581. package/templates/app/base/tests/config.test.ts.tpl +29 -0
  582. package/templates/app/base/tests/e2e.setup.ts.tpl +181 -0
  583. package/templates/app/base/tests/e2e.test.ts.tpl +105 -0
  584. package/templates/app/base/tests/migrations.e2e.test.ts.tpl +579 -0
  585. package/templates/app/base/tsconfig.json.tpl +47 -0
  586. package/templates/app/base/vitest.config.ts.tpl +88 -0
  587. package/templates/app/base/vitest.e2e.config.ts.tpl +39 -0
  588. package/templates/app/complete/compose.yaml.tpl +328 -0
  589. package/templates/app/complete/deploy/migrate-job.yaml.tpl +100 -0
  590. package/templates/app/complete/docker/db/init-nodefony-e2e.sql.tpl +30 -0
  591. package/templates/app/complete/docker/grafana/provisioning/datasources/loki.yaml.tpl +15 -0
  592. package/templates/app/complete/env.local.tpl +11 -0
  593. package/templates/app/complete/env.tpl +53 -0
  594. package/templates/app/complete/nodefony/entity/User.ts.tpl +69 -0
  595. package/templates/app/complete/nodefony/security/provisionUsers.ts.tpl +124 -0
  596. package/templates/app/complete/nodefony/service/AppBannerService.ts.tpl +98 -0
  597. package/templates/app/complete/nodefony/service/AppInfoService.ts.tpl +85 -0
  598. package/templates/app/frontend/angular/frontend/src/accent.css.tpl +34 -0
  599. package/templates/app/frontend/angular/frontend/src/app/app.component.ts.tpl +400 -0
  600. package/templates/app/frontend/react/frontend/src/App.tsx.tpl +421 -0
  601. package/templates/app/frontend/react/frontend/src/accent.css.tpl +30 -0
  602. package/templates/app/frontend/shared/frontend/src/brand.ts.tpl +3 -0
  603. package/templates/app/frontend/shared/frontend/src/showcase.css.tpl +224 -0
  604. package/templates/app/frontend/shared/nodefony/controllers/AppController.ts.tpl +45 -0
  605. package/templates/app/frontend/svelte/frontend/src/App.svelte.tpl +371 -0
  606. package/templates/app/frontend/svelte/frontend/src/accent.css.tpl +34 -0
  607. package/templates/app/frontend/vue/frontend/src/App.vue.tpl +367 -0
  608. package/templates/app/frontend/vue/frontend/src/accent.css.tpl +34 -0
  609. package/templates/app/home/nodefony/controllers/HomeController.ts.tpl +38 -0
  610. package/templates/command/nodefony/command/__NAME__.ts.tpl +132 -0
  611. package/templates/controller/duplex/nodefony/controllers/__NAME__.ts.tpl +188 -0
  612. package/templates/controller/example/nodefony/controllers/__NAME__.ts.tpl +348 -0
  613. package/templates/controller/hello/nodefony/controllers/__NAME__.ts.tpl +143 -0
  614. package/templates/controller/realtime/nodefony/controllers/__NAME__.ts.tpl +153 -0
  615. package/templates/controller/realtime/tests/__KEBAB__-realtime.test.ts.tpl +79 -0
  616. package/templates/controller/rest/nodefony/controllers/__NAME__.ts.tpl +159 -0
  617. package/templates/entity/base/nodefony/entity/__PASCAL__.schema.ts.tpl +31 -0
  618. package/templates/entity/base/nodefony/entity/__PASCAL__.ts.tpl +68 -0
  619. package/templates/entity/controller/nodefony/controllers/__PASCAL__Controller.ts.tpl +335 -0
  620. package/templates/entity/service/nodefony/service/__PASCAL__Service.ts.tpl +126 -0
  621. package/templates/entity/tests/tests/__KEBAB__.e2e.test.ts.tpl +358 -0
  622. package/templates/entity/tests/tests/__KEBAB__.test.ts.tpl +87 -0
  623. package/templates/front/angular/frontend/src/app/app.component.ts.tpl +30 -0
  624. package/templates/front/base/nodefony/controllers/__NAME__.ts.tpl +60 -0
  625. package/templates/front/react/frontend/src/App.tsx.tpl +26 -0
  626. package/templates/front/svelte/frontend/src/App.svelte.tpl +19 -0
  627. package/templates/front/vue/frontend/src/App.vue.tpl +23 -0
  628. package/templates/module/ai/AGENTS.md.tpl +71 -0
  629. package/templates/module/base/README.md.tpl +62 -0
  630. package/templates/module/base/docs/index.md.tpl +55 -0
  631. package/templates/module/base/index.ts.tpl +50 -0
  632. package/templates/module/base/nodefony/config/config.ts.tpl +60 -0
  633. package/templates/module/base/nodefony/config/defineModuleConfig.ts.tpl +55 -0
  634. package/templates/module/base/nodefony/src/errors/__PASCAL__Error.ts.tpl +20 -0
  635. package/templates/module/base/package.json.tpl +53 -0
  636. package/templates/module/base/rolldown.config.ts.tpl +14 -0
  637. package/templates/module/base/tests/__KEBAB__.test.ts.tpl +39 -0
  638. package/templates/module/base/tsconfig.json.tpl +42 -0
  639. package/templates/module/base/vitest.config.ts.tpl +27 -0
  640. package/templates/module/packages/CLAUDE.md.tpl +51 -0
  641. package/templates/module/packages/MEMORY.md.tpl +39 -0
  642. package/templates/module/packages/tsconfig.declarations.json.tpl +19 -0
  643. package/templates/module/packages/tsconfig.tests.json.tpl +11 -0
  644. package/templates/module/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +14 -0
  645. package/templates/module/service/nodefony/interfaces/index.ts.tpl +1 -0
  646. package/templates/module/service/nodefony/service/__PASCAL__Service.ts.tpl +116 -0
  647. package/templates/service/nodefony/interfaces/I__PASCAL__Service.ts.tpl +19 -0
  648. package/templates/service/nodefony/service/__PASCAL__Service.ts.tpl +136 -0
  649. package/templates/service/tests/__PASCAL__Service.test.ts.tpl +53 -0
  650. package/templates/shared/front-entry/angular/frontend/src/main.ts.tpl +17 -0
  651. package/templates/shared/front-entry/react/frontend/src/main.tsx.tpl +11 -0
  652. package/templates/shared/front-entry/svelte/frontend/src/main.ts.tpl +13 -0
  653. package/templates/shared/front-entry/vue/frontend/src/main.ts.tpl +12 -0
  654. package/templates/shared/front-registrar/nodefony/frontend/register__PASCAL__Entry.ts.tpl +40 -0
  655. package/templates/shared/front-shell/frontend/index.html.tpl +39 -0
  656. package/templates/shared/ng-app-tsconfig/frontend/tsconfig.app.json.tpl +18 -0
  657. package/templates/shared/svelte-shim/frontend/src/env.d.ts.tpl +12 -0
  658. package/templates/shared/vue-shim/frontend/src/env.d.ts.tpl +15 -0
  659. package/.yarnclean +0 -45
  660. package/CHANGELOG.md +0 -406
  661. package/autoloader.es6 +0 -253
  662. package/builder.es6 +0 -366
  663. package/cli/builder/bundles/bundle.js +0 -328
  664. package/cli/builder/bundles/controller.js +0 -73
  665. package/cli/builder/bundles/users-bundle/.yarnclean +0 -45
  666. package/cli/builder/bundles/users-bundle/Command/fixtureTask.js +0 -47
  667. package/cli/builder/bundles/users-bundle/Command/usersCommand.js +0 -105
  668. package/cli/builder/bundles/users-bundle/Entity/mongoose/userEntity.js +0 -168
  669. package/cli/builder/bundles/users-bundle/Entity/sequelize/userEntity.js +0 -231
  670. package/cli/builder/bundles/users-bundle/Fixtures/users.js +0 -117
  671. package/cli/builder/bundles/users-bundle/Fixtures/usersFixtures.js +0 -114
  672. package/cli/builder/bundles/users-bundle/Resources/config/config.js +0 -90
  673. package/cli/builder/bundles/users-bundle/Resources/config/routing.js +0 -17
  674. package/cli/builder/bundles/users-bundle/Resources/config/security.js +0 -96
  675. package/cli/builder/bundles/users-bundle/Resources/config/services.js +0 -7
  676. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.dev.config.js +0 -13
  677. package/cli/builder/bundles/users-bundle/Resources/config/webpack/webpack.prod.config.js +0 -31
  678. package/cli/builder/bundles/users-bundle/Resources/config/webpack.config.js +0 -146
  679. package/cli/builder/bundles/users-bundle/Resources/js/users.js +0 -153
  680. package/cli/builder/bundles/users-bundle/Resources/public/favicon.ico +0 -0
  681. package/cli/builder/bundles/users-bundle/Resources/public/images/users-logo.png +0 -0
  682. package/cli/builder/bundles/users-bundle/Resources/scss/awesome/font-awesome.config.js +0 -11
  683. package/cli/builder/bundles/users-bundle/Resources/scss/custom.scss +0 -23
  684. package/cli/builder/bundles/users-bundle/Resources/scss/users.scss +0 -59
  685. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/login.js +0 -235
  686. package/cli/builder/bundles/users-bundle/Resources/swagger/openapi/users.js +0 -232
  687. package/cli/builder/bundles/users-bundle/Resources/translations/login.en_en.yml +0 -14
  688. package/cli/builder/bundles/users-bundle/Resources/translations/login.fr_fr.yml +0 -14
  689. package/cli/builder/bundles/users-bundle/Resources/translations/users.en_en.yml +0 -35
  690. package/cli/builder/bundles/users-bundle/Resources/translations/users.fr_fr.yml +0 -36
  691. package/cli/builder/bundles/users-bundle/Resources/views/base.html.twig +0 -32
  692. package/cli/builder/bundles/users-bundle/Resources/views/footer.html.twig +0 -7
  693. package/cli/builder/bundles/users-bundle/Resources/views/header.html.twig +0 -90
  694. package/cli/builder/bundles/users-bundle/Resources/views/login/login.html.twig +0 -43
  695. package/cli/builder/bundles/users-bundle/Resources/views/users/createUser.html.twig +0 -296
  696. package/cli/builder/bundles/users-bundle/Resources/views/users/readUsers.html.twig +0 -94
  697. package/cli/builder/bundles/users-bundle/controller/api/graphql/graphqlController.js +0 -56
  698. package/cli/builder/bundles/users-bundle/controller/api/graphql/userResolver.js +0 -121
  699. package/cli/builder/bundles/users-bundle/controller/api/graphql/usertype.js +0 -58
  700. package/cli/builder/bundles/users-bundle/controller/api/openapi/loginApiController.js +0 -210
  701. package/cli/builder/bundles/users-bundle/controller/api/openapi/restUserController.js +0 -244
  702. package/cli/builder/bundles/users-bundle/controller/loginController.js +0 -91
  703. package/cli/builder/bundles/users-bundle/controller/usersController.js +0 -332
  704. package/cli/builder/bundles/users-bundle/package.json +0 -58
  705. package/cli/builder/bundles/users-bundle/readme.md +0 -360
  706. package/cli/builder/bundles/users-bundle/services/usersService.js +0 -411
  707. package/cli/builder/bundles/users-bundle/src/providers/mongoose/userProvider.js +0 -47
  708. package/cli/builder/bundles/users-bundle/src/providers/sequelize/userProvider.js +0 -48
  709. package/cli/builder/bundles/users-bundle/tests/loginTest.js +0 -182
  710. package/cli/builder/bundles/users-bundle/usersBundle.js +0 -26
  711. package/cli/builder/microService/microService.js +0 -261
  712. package/cli/builder/microService/skeletons/.editorconfig +0 -18
  713. package/cli/builder/microService/skeletons/.env-cmdrc.js +0 -32
  714. package/cli/builder/microService/skeletons/.jshintrc +0 -37
  715. package/cli/builder/microService/skeletons/README.md +0 -117
  716. package/cli/builder/microService/skeletons/bin/bash/hello.sh +0 -5
  717. package/cli/builder/microService/skeletons/bin/cli +0 -13
  718. package/cli/builder/microService/skeletons/bin/python/hello.py +0 -20
  719. package/cli/builder/microService/skeletons/config/config.js +0 -29
  720. package/cli/builder/microService/skeletons/config/pm2.config.js +0 -72
  721. package/cli/builder/microService/skeletons/config/webpack/webpack.config.dev.js +0 -8
  722. package/cli/builder/microService/skeletons/config/webpack/webpack.config.prod.js +0 -25
  723. package/cli/builder/microService/skeletons/config/webpack.config.js +0 -114
  724. package/cli/builder/microService/skeletons/package.json +0 -76
  725. package/cli/builder/microService/skeletons/src/browser/index.css +0 -3
  726. package/cli/builder/microService/skeletons/src/browser/index.js +0 -16
  727. package/cli/builder/microService/skeletons/src/browser/socketio.js +0 -46
  728. package/cli/builder/microService/skeletons/src/cli/cli.js +0 -224
  729. package/cli/builder/microService/skeletons/src/cli/menu.js +0 -28
  730. package/cli/builder/microService/skeletons/src/n-api/README.md +0 -1
  731. package/cli/builder/microService/skeletons/src/n-api/binding.gyp +0 -14
  732. package/cli/builder/microService/skeletons/src/n-api/hello.cc +0 -14
  733. package/cli/builder/microService/skeletons/src/n-api/hello.js +0 -23
  734. package/cli/builder/microService/skeletons/src/n-api/package.json +0 -15
  735. package/cli/builder/microService/skeletons/src/node/examples/index.js +0 -120
  736. package/cli/builder/microService/skeletons/src/node/index.js +0 -102
  737. package/cli/builder/microService/skeletons/src/node/services/markdown/markdown.js +0 -27
  738. package/cli/builder/microService/skeletons/src/node/services/servers/http.js +0 -45
  739. package/cli/builder/microService/skeletons/src/node/services/servers/https.js +0 -44
  740. package/cli/builder/microService/skeletons/src/node/services/socketio/socketio.js +0 -46
  741. package/cli/builder/microService/skeletons/src/node/services/syscall/syscall.js +0 -111
  742. package/cli/builder/microService/skeletons/src/node/services/worker/thread.js +0 -59
  743. package/cli/builder/microService/skeletons/src/node/services/worker/worker.js +0 -60
  744. package/cli/builder/microService/skeletons/src/templates/base.html +0 -12
  745. package/cli/builder/microService/skeletons/src/templates/socket.html +0 -23
  746. package/cli/builder/microService/skeletons/tests/unit/serviceTest.js +0 -30
  747. package/cli/builder/project/project.js +0 -474
  748. package/cli/builder/project/skeletons/README.md +0 -778
  749. package/cli/builder/project/skeletons/bin/dev-deploy.sh +0 -5
  750. package/cli/builder/project/skeletons/bin/generateCertificates.sh.skeleton +0 -180
  751. package/cli/builder/project/skeletons/bin/prod-deploy.sh +0 -3
  752. package/cli/builder/project/skeletons/config/config.js.skeleton +0 -178
  753. package/cli/builder/project/skeletons/config/openssl/ca/openssl.cnf.skeleton +0 -150
  754. package/cli/builder/project/skeletons/config/openssl/ca_intermediate/openssl.cnf.skeleton +0 -152
  755. package/cli/builder/project/skeletons/config/pm2.config.js.skeleton +0 -62
  756. package/cli/builder/project/skeletons/documentation.html.twig +0 -24
  757. package/cli/builder/project/skeletons/editorconfig.skeleton +0 -18
  758. package/cli/builder/project/skeletons/eslintignore.skeleton +0 -15
  759. package/cli/builder/project/skeletons/eslintrc.js.skeleton +0 -97
  760. package/cli/builder/project/skeletons/gitignore.skeleton +0 -32
  761. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.37.entity-user.js +0 -137
  762. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.38.entity-session.js +0 -97
  763. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.39.entity-requests.js +0 -115
  764. package/cli/builder/project/skeletons/migrations/2022.12.25T17.37.40.entity-jwts.js +0 -97
  765. package/cli/builder/project/skeletons/migrations/migrations.skeleton.js +0 -101
  766. package/cli/builder/project/skeletons/package.json.twig +0 -71
  767. package/cli/builder/react/reactBuilder.js +0 -224
  768. package/cli/builder/react/skeletons/app/Resources/databases/nodefony.db +0 -0
  769. package/cli/builder/react/skeletons/app/Resources/translations/messages.en_en.yml +0 -5
  770. package/cli/builder/react/skeletons/app/Resources/translations/messages.fr_fr.yml +0 -5
  771. package/cli/builder/react/skeletons/app/Resources/views/base.html.twig +0 -33
  772. package/cli/builder/react/skeletons/app/config/config.js +0 -392
  773. package/cli/builder/react/skeletons/app/config/routing.js +0 -10
  774. package/cli/builder/react/skeletons/app/config/security.js +0 -74
  775. package/cli/builder/react/skeletons/app/controller/appController.js +0 -22
  776. package/cli/builder/sandbox/sandBoxBuilder.js +0 -610
  777. package/cli/builder/sandbox/skeletons/Resources/css/entry.css +0 -48
  778. package/cli/builder/sandbox/skeletons/Resources/js/entry.js +0 -60
  779. package/cli/builder/sandbox/skeletons/Resources/public/manifest.json +0 -32
  780. package/cli/builder/sandbox/skeletons/Resources/translations/messages.en_en.yml +0 -5
  781. package/cli/builder/sandbox/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
  782. package/cli/builder/sandbox/skeletons/Resources/views/base.html.twig +0 -46
  783. package/cli/builder/sandbox/skeletons/Resources/views/index.html.twig +0 -34
  784. package/cli/builder/sandbox/skeletons/bootstrap/custom.scss +0 -27
  785. package/cli/builder/sandbox/skeletons/bootstrap/entry.scss +0 -60
  786. package/cli/builder/sandbox/skeletons/workbox/templates/index.html.twig +0 -32
  787. package/cli/builder/sandbox/skeletons/workbox/workers/service-worker.js +0 -196
  788. package/cli/builder/skeletons/Resources/public/favicon.ico +0 -0
  789. package/cli/builder/skeletons/Resources/public/images/app-logo.png +0 -0
  790. package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.html.twig +0 -1
  791. package/cli/builder/skeletons/Resources/views/framework-bundle/views/401.json.twig +0 -24
  792. package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.html.twig +0 -1
  793. package/cli/builder/skeletons/Resources/views/framework-bundle/views/403.json.twig +0 -20
  794. package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.html.twig +0 -1
  795. package/cli/builder/skeletons/Resources/views/framework-bundle/views/404.json.twig +0 -20
  796. package/cli/builder/skeletons/Resources/views/framework-bundle/views/500.html.twig +0 -1
  797. package/cli/builder/skeletons/Resources/views/framework-bundle/views/base.html.twig +0 -30
  798. package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.html.twig +0 -1
  799. package/cli/builder/skeletons/Resources/views/framework-bundle/views/exception.json.twig +0 -24
  800. package/cli/builder/skeletons/Resources/views/framework-bundle/views/footer.html.twig +0 -33
  801. package/cli/builder/skeletons/Resources/views/framework-bundle/views/header.html.twig +0 -6
  802. package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.html.twig +0 -6
  803. package/cli/builder/skeletons/Resources/views/framework-bundle/views/index.json.twig +0 -1
  804. package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.html.twig +0 -125
  805. package/cli/builder/skeletons/Resources/views/framework-bundle/views/layout.json.twig +0 -5
  806. package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.html.twig +0 -1
  807. package/cli/builder/skeletons/Resources/views/framework-bundle/views/timeout.json.twig +0 -24
  808. package/cli/builder/skeletons/app/appKernel.js +0 -133
  809. package/cli/builder/skeletons/binding/binding.cc +0 -26
  810. package/cli/builder/skeletons/binding/binding.skeleton +0 -8
  811. package/cli/builder/skeletons/bundle/bundleClass.js +0 -37
  812. package/cli/builder/skeletons/command/commandClass.js +0 -11
  813. package/cli/builder/skeletons/command/taskClass.js +0 -20
  814. package/cli/builder/skeletons/config/config.js +0 -138
  815. package/cli/builder/skeletons/config/nodefony/elastic-bundle.js +0 -37
  816. package/cli/builder/skeletons/config/nodefony/framework-bundle.js +0 -22
  817. package/cli/builder/skeletons/config/nodefony/http-bundle.js +0 -104
  818. package/cli/builder/skeletons/config/nodefony/mail-bundle.js +0 -44
  819. package/cli/builder/skeletons/config/nodefony/mongoose-bundle.js +0 -51
  820. package/cli/builder/skeletons/config/nodefony/monitoring-bundle.js +0 -34
  821. package/cli/builder/skeletons/config/nodefony/realtime-bundle.js +0 -15
  822. package/cli/builder/skeletons/config/nodefony/redis-bundle.js +0 -44
  823. package/cli/builder/skeletons/config/nodefony/security-bundle.js +0 -25
  824. package/cli/builder/skeletons/config/nodefony/sequelize-bundle.js +0 -156
  825. package/cli/builder/skeletons/config/routing.js +0 -55
  826. package/cli/builder/skeletons/config/security.js +0 -102
  827. package/cli/builder/skeletons/config/services.js +0 -1
  828. package/cli/builder/skeletons/config/webpack/webpack.dev.config.js +0 -13
  829. package/cli/builder/skeletons/config/webpack/webpack.prod.config.js +0 -20
  830. package/cli/builder/skeletons/config/webpack.config.js +0 -148
  831. package/cli/builder/skeletons/controller/controllerClass.js +0 -75
  832. package/cli/builder/skeletons/package.json.twig +0 -57
  833. package/cli/builder/skeletons/unittest/testFile.js +0 -46
  834. package/cli/builder/vue/skeletons/Resources/public/images/app-logo.png +0 -0
  835. package/cli/builder/vue/skeletons/Resources/translations/messages.en_en.yml +0 -5
  836. package/cli/builder/vue/skeletons/Resources/translations/messages.fr_fr.yml +0 -5
  837. package/cli/builder/vue/skeletons/vue.config.js +0 -129
  838. package/cli/builder/vue/vueBuilder.js +0 -410
  839. package/cli/generate/generate.es6 +0 -103
  840. package/cli/install/install.js +0 -190
  841. package/cli/sequelize/sequelize.js +0 -94
  842. package/cli/start.js +0 -702
  843. package/cli/tools/pm2.es6 +0 -112
  844. package/cli/tools/tools.es6 +0 -97
  845. package/cli.es6 +0 -925
  846. package/container.es6 +0 -272
  847. package/error.es6 +0 -293
  848. package/fileClass.es6 +0 -242
  849. package/finder/file.es6 +0 -33
  850. package/finder/fileResult.es6 +0 -138
  851. package/finder/finder2.es6 +0 -275
  852. package/finder.es6 +0 -427
  853. package/kernel/annotations/annotations.es6 +0 -286
  854. package/kernel/api/api.es6 +0 -61
  855. package/kernel/api/graphqlApi.es6 +0 -107
  856. package/kernel/api/jsonApi.es6 +0 -177
  857. package/kernel/api/openApi.es6 +0 -139
  858. package/kernel/api/schemas/openApiSchema.js +0 -394
  859. package/kernel/babylon.es6 +0 -162
  860. package/kernel/bundle.es6 +0 -1200
  861. package/kernel/cliKernel.es6 +0 -869
  862. package/kernel/command.es6 +0 -78
  863. package/kernel/commands/nodefonyCommand.es6 +0 -247
  864. package/kernel/commands/tasks/bundlesTask.es6 +0 -59
  865. package/kernel/controllers/controller.es6 +0 -791
  866. package/kernel/fixture.es6 +0 -19
  867. package/kernel/injections/injections.es6 +0 -424
  868. package/kernel/kernel.es6 +0 -1960
  869. package/kernel/kernelWatcher.es6 +0 -387
  870. package/kernel/orm/entity.es6 +0 -59
  871. package/kernel/orm/orm.es6 +0 -139
  872. package/kernel/reader.es6 +0 -290
  873. package/kernel/security/encoder.es6 +0 -17
  874. package/kernel/security/factories/factory.es6 +0 -111
  875. package/kernel/security/factories/passeportFactory.es6 +0 -61
  876. package/kernel/security/provider.es6 +0 -58
  877. package/kernel/security/providers/chainProvider.es6 +0 -99
  878. package/kernel/security/providers/memoryProvider.es6 +0 -55
  879. package/kernel/security/providers/providerManager.es6 +0 -67
  880. package/kernel/security/providers/userEntityProvider.es6 +0 -50
  881. package/kernel/security/role.es6 +0 -12
  882. package/kernel/security/secureArea.es6 +0 -431
  883. package/kernel/security/tokens/token.es6 +0 -171
  884. package/kernel/security/user.es6 +0 -106
  885. package/kernel/serviceRealTime.es6 +0 -21
  886. package/kernel/services/connectionsService.es6 +0 -93
  887. package/kernel/services/cron/cronService.es6 +0 -123
  888. package/kernel/task.es6 +0 -80
  889. package/kernel/templates.es6 +0 -22
  890. package/kernel/templating/twig.es6 +0 -218
  891. package/kernel/tests/cliTest.js +0 -59
  892. package/kernel/tests/containerTest.js +0 -232
  893. package/kernel/tests/kernelTest.js +0 -39
  894. package/nodefony.es6 +0 -1084
  895. package/notificationsCenter.es6 +0 -118
  896. package/protocol.es6 +0 -86
  897. package/protocols/bayeux.es6 +0 -174
  898. package/protocols/jsonRpc/jsonrpc.es6 +0 -56
  899. package/result.es6 +0 -99
  900. package/service.es6 +0 -288
  901. package/syslog/pdu.es6 +0 -141
  902. package/syslog/syslog.es6 +0 -754
  903. package/watcher.es6 +0 -113
@@ -0,0 +1,450 @@
1
+ import { collectSources } from "./walk.js";
2
+ import { findReservedEntity } from "../../cli/scaffold/reservedEntities.js";
3
+ import { readFileSync, statSync } from "node:fs";
4
+ import path from "node:path";
5
+ //#region src/kernel/checks/wiring.ts
6
+ /**
7
+ * Contrôle de CÂBLAGE — une classe écrite, mais que rien ne déclare.
8
+ *
9
+ * Le générateur (`nodefony create entity|controller`) pose le fichier ET son
10
+ * câblage : l'entité entre dans `@entities([…])`, le controller dans
11
+ * `@controllers([…])`. Écrit à la main, le fichier arrive seul — il compile, les
12
+ * tests qui l'importent directement passent, et la panne n'apparaît qu'au
13
+ * démarrage suivant : une table qui n'est jamais créée, un repository qui lève
14
+ * « entité inconnue », une route qui répond 404 sans que rien ne l'explique.
15
+ *
16
+ * C'est le mode d'échec de la COPIE. Sur une application neuve, le générateur
17
+ * est le chemin le plus court ; dès qu'une entité existe, copier le voisin le
18
+ * devient — et personne ne peut garantir qu'un agent, ou un humain pressé,
19
+ * appellera la commande. On ne fait donc pas appeler le générateur : on fait
20
+ * échouer ce qui ne l'a pas appelé.
21
+ *
22
+ * Lecture PURE, comme le reste de `nodefony doctor` : aucun boot, aucun import du
23
+ * code analysé. Le contrôle doit répondre y compris sur une application qui ne
24
+ * démarre plus — c'est précisément là qu'on le consulte.
25
+ */
26
+ /**
27
+ * Ce qu'un code EXIGE d'avoir été déclaré, et que la compilation ne dit pas.
28
+ *
29
+ * Le générateur refuse d'écrire quand la brique manque — c'est une de ses
30
+ * gardes. Écrit à la main, le même code compile dès que le paquet traîne dans
31
+ * `node_modules` (hissé par une transitive), et la panne attend le démarrage :
32
+ * le module n'étant pas dans le manifeste, il n'est jamais chargé, donc le canal
33
+ * n'existe pas, l'entité n'est enregistrée nulle part, la garde ne garde rien.
34
+ *
35
+ * Le marqueur vise l'USAGE, jamais la définition : `extends RealtimeController`
36
+ * et non `class RealtimeController`, sans quoi le module qui fournit la brique
37
+ * s'accuserait lui-même.
38
+ */
39
+ const BRICKS = [
40
+ {
41
+ marker: /extends\s+RealtimeController\b|@RealtimeChannel\b/u,
42
+ packages: ["@nodefony/realtime"],
43
+ what: "un canal temps réel"
44
+ },
45
+ {
46
+ marker: /\bdefineEntity\s*\(/u,
47
+ packages: ["@nodefony/drizzle", "@nodefony/mongoose"],
48
+ what: "une entité"
49
+ },
50
+ {
51
+ marker: /@IsGranted\b/u,
52
+ packages: ["@nodefony/security"],
53
+ what: "une garde d'autorisation"
54
+ }
55
+ ];
56
+ /**
57
+ * `export const XEntity = defineEntity({` — le descripteur, pas la table.
58
+ *
59
+ * C'est LUI que `@entities([…])` doit nommer : la table Drizzle seule
60
+ * n'enregistre rien, et une application qui ne déclare que la table démarre
61
+ * sans sa propre entité.
62
+ */
63
+ const ENTITY_RE = /export\s+const\s+(\w+)\s*=\s*defineEntity\s*\(/gu;
64
+ /** `name: "Post"` du descripteur — ce que voit le registre ORM, qui est PLAT. */
65
+ const ENTITY_NAME_RE = /\bname\s*:\s*["'`](\w+)["'`]/u;
66
+ /** `export class XController` — décoré ou non, la déclaration est la même. */
67
+ const CONTROLLER_RE = /export\s+class\s+(\w*Controller)\b/gu;
68
+ /**
69
+ * `@injectable()` posé sur une classe — le marqueur, pas le dossier.
70
+ *
71
+ * Viser le décorateur plutôt qu'un emplacement (`nodefony/service`) évite
72
+ * d'imposer une convention que le framework n'impose pas : un service se
73
+ * reconnaît à ce qu'il déclare, et l'application le range où elle veut.
74
+ * Une classe `abstract` est exclue à la lecture — c'est une base, pas une
75
+ * instance à enregistrer.
76
+ */
77
+ const SERVICE_RE = /@injectable\s*\([\s\S]{0,160}?\)\s*(?:export\s+)?(?:default\s+)?(abstract\s+)?class\s+(\w+)/gu;
78
+ /** Contenu de chaque `@services([…])` — la liste, pas l'appel. */
79
+ const SERVICES_LIST_RE = /@services\s*\(\s*\[([\s\S]{0,2000}?)\]/gu;
80
+ /**
81
+ * Enregistrement IMPÉRATIF d'un service, la seconde voie légitime.
82
+ *
83
+ * La règle du contrôle est « quelqu'un te DÉCLARE », pas « tu passes par le
84
+ * décorateur » : les modules du framework posent une partie de leurs services à
85
+ * la main, souvent parce que l'instance dépend d'une valeur résolue au
86
+ * démarrage. Les tenir pour orphelins accuserait le cœur de ne pas suivre une
87
+ * convention dont il est l'auteur.
88
+ */
89
+ const IMPERATIVE_RE = /(?:addService|container\.set|\.set)\s*\(\s*[^)]{0,120}?\b(\w+)\b/gu;
90
+ /**
91
+ * Un chemin de route Nodefony, tel qu'il est écrit — soit en premier argument
92
+ * d'un décorateur de méthode, soit sous la clé `path` D'UN `@route`.
93
+ *
94
+ * Les deux formes existent et se valent ; n'en lire qu'une rendrait le contrôle
95
+ * aveugle à l'autre, ce qui est pire que pas de contrôle du tout — on croirait
96
+ * la question posée.
97
+ *
98
+ * ⚠️ Le `path:` est borné au voisinage d'un `@route(` et NON lu partout : la
99
+ * clé est celle de react-router, où `:id` est la syntaxe JUSTE. Lu librement,
100
+ * le contrôle accusait les cinq routes du frontend de Studio — un contrôle qui
101
+ * accuse du code correct est un contrôle qu'on désactive, et il aurait fait
102
+ * « corriger » un routage qui marchait.
103
+ */
104
+ const ROUTE_PATH_RE = /@(?:Get|Post|Put|Patch|Delete|Head|Options|All)\s*\(\s*["'`]([^"'`\n]*)["'`]|@route\s*\([\s\S]{0,300}?\bpath\s*:\s*["'`]([^"'`\n]*)["'`]/gu;
105
+ /**
106
+ * Le segment variable écrit à la mode d'un AUTRE framework : `/:handle`.
107
+ *
108
+ * Nodefony écrit `{handle}` ; Express, Nest et Fastify écrivent `:handle`. La
109
+ * confusion ne produit ni erreur de compilation ni avertissement au démarrage :
110
+ * le chemin est monté comme un LITTÉRAL, la route apparaît dans
111
+ * `inspect routes`, et elle ne correspond à aucune URL réelle. Le symptôme est
112
+ * un 404 sur une route qu'on voit dans le code — le plus coûteux à diagnostiquer
113
+ * de tous, puisque tout a l'air juste.
114
+ *
115
+ * Le `/` exigé devant le `:` écarte ce qui n'est pas un segment : `http://`,
116
+ * `C:/`, une heure. Un deux-points ailleurs dans un chemin ne dit rien.
117
+ */
118
+ const COLON_SEGMENT_RE = /\/:(\w+)/u;
119
+ /** Une classe de ce fichier étend-elle `Controller` ? Sinon la réponse ne la concerne pas. */
120
+ const EXTENDS_CONTROLLER_RE = /\bclass\s+\w+\s+extends\s+Controller\b/u;
121
+ /**
122
+ * La réponse HTTP écrite À LA MAIN, alors qu'une façade la rend.
123
+ *
124
+ * Mesuré sur le banc de découvrabilité : servir une PAGE est le seul rendu dont
125
+ * aucun gabarit d'application sans frontend ne montre d'exemple, et l'
126
+ * `AGENTS.md` ne nommait aucune façade de réponse ordinaire. Deux agents sur
127
+ * trois ont donc bricolé — l'un en castant (`this.response as any`), l'autre en
128
+ * posant `Content-Type` lui-même. Les deux « marchent » à l'essai : c'est
129
+ * exactement pourquoi rien ne les signale.
130
+ *
131
+ * Ce qui se perd, et qu'aucun test de l'application ne voit : la négociation de
132
+ * contenu, l'encodage, le nonce CSP de la requête, et les hooks de fin de
133
+ * réponse (journal, profileur, métriques) que le pipeline attache autour de
134
+ * `render`. Écrire dans le socle court-circuite la couche qui les porte.
135
+ *
136
+ * Trois motifs, un seul manquement — chacun est une façon distincte de sortir
137
+ * du pipeline, et chacun a sa façade :
138
+ * `this.renderJson(obj)` · `this.setContextHtml()` + `this.render(html)` ·
139
+ * `this.streamFile(f)` / `renderMediaStream(f)` / `renderFileDownload(f)`.
140
+ *
141
+ * Poser un en-tête MÉTIER (`X-Total-Count`, `Cache-Control`) reste légitime et
142
+ * n'est pas visé : seul `Content-Type` l'est, parce que c'est la façade qui le
143
+ * décide, et parce que le poser deux fois produit une réponse que le client lit
144
+ * de travers.
145
+ */
146
+ const RESPONSE_CAST_RE = /\bthis\.response\s+as\s+(?:any|unknown)\b/u;
147
+ /** `setHeader("Content-Type", …)` ou `setHeaders({ "content-type": … })`, sur quoi que ce soit. */
148
+ const RESPONSE_CONTENT_TYPE_RE = /\.setHeaders?\s*\(\s*(?:\{\s*)?["'`]content-type["'`]/iu;
149
+ /** L'écriture directe dans le socle : `this.response.end(…)`, `writeHead(…)`. */
150
+ const RESPONSE_RAW_WRITE_RE = /\bthis\.response\s*\??\.\s*(?:end|writeHead)\s*\(/u;
151
+ /**
152
+ * Les TROIS hooks de cycle de vie qu'un module peut porter — la liste est
153
+ * fermée par le code, pas par une convention.
154
+ *
155
+ * `Module.setEvents()` (`Module.ts:222`) attache chacun sous un `if
156
+ * (this.onKernelX)`. Un nom voisin — `onKernelBooted`, `onBoot`,
157
+ * `onKernelStart` recopié d'une Command — n'entre dans aucun de ces `if` :
158
+ * la méthode est écrite, elle compile, elle s'affiche dans le fichier, et elle
159
+ * n'est JAMAIS appelée. Aucun test ne le voit non plus, sauf à démarrer le
160
+ * kernel entier ; le symptôme est une initialisation qui n'a pas lieu, très
161
+ * loin de sa cause.
162
+ */
163
+ const HOOKS_MODULE = /* @__PURE__ */ new Set([
164
+ "onKernelRegister",
165
+ "onKernelBoot",
166
+ "onKernelReady"
167
+ ]);
168
+ /**
169
+ * Une DÉCLARATION de méthode `onKernel…`, jamais un appel.
170
+ *
171
+ * L'ancrage en début de ligne (indentation d'un corps de classe) écarte
172
+ * `this.onKernelBoot()` et `module.onKernelReady()` : un appel au bon hook ne
173
+ * doit pas s'accuser lui-même.
174
+ */
175
+ const HOOK_DECL_RE = /^\s{2,}(?:public\s+|private\s+|protected\s+)?(?:override\s+)?(?:async\s+)?(onKernel\w+)\s*\(/gmu;
176
+ /** Une classe de ce fichier étend-elle `Module` ? Sinon les hooks ne la concernent pas. */
177
+ const EXTENDS_MODULE_RE = /\bclass\s+\w+\s+extends\s+Module\b/u;
178
+ /**
179
+ * Le bloc `areas: { … }` du manifeste, et lui seul.
180
+ *
181
+ * `pattern:` est un mot trop courant pour être lu partout — la clé existe dans
182
+ * une config de bundler, une règle de lint, un routeur front. Le contrôle ne
183
+ * doit accuser que ce qu'il comprend.
184
+ */
185
+ const AREAS_BLOCK_RE = /\bareas\s*:\s*\{([\s\S]{0,4000}?)\n\s{0,10}\}/u;
186
+ /** `pattern: "^/api/account"` — la valeur écrite, telle quelle. */
187
+ const AREA_PATTERN_RE = /\bpattern\s*:\s*["'`]([^"'`\n]+)["'`]/gu;
188
+ /**
189
+ * Les commentaires, ôtés AVANT toute analyse du manifeste.
190
+ *
191
+ * Sans quoi le contrôle mord sur le gabarit lui-même : le commentaire qui
192
+ * apprend à ne PAS énumérer cite le contre-exemple
193
+ * (`"^/api/account/(profile|invoices)"`), et toute application fraîche
194
+ * commencerait par un avertissement portant sur du texte explicatif. Un
195
+ * contrôle qui accuse sa propre documentation est un contrôle qu'on désactive.
196
+ */
197
+ function withoutComments(source) {
198
+ return source.replace(/\/\*[\s\S]*?\*\//gu, "").replace(/\/\/[^\n]*/gu, "");
199
+ }
200
+ /**
201
+ * La part LITTÉRALE d'un pattern — ce qu'il couvre à coup sûr.
202
+ *
203
+ * `^/api/account/(profile|invoices)` → `/api/account`. On coupe au premier
204
+ * métacaractère, puis au dernier `/` : un segment tronqué (`/api/acc`) ne
205
+ * désigne rien et ferait un conseil faux.
206
+ */
207
+ function prefixeLitteral(pattern) {
208
+ const withoutAnchor = pattern.replace(/^\^/u, "");
209
+ const coupe = withoutAnchor.search(/[([{|?*+$\\]/u);
210
+ const litteral = coupe === -1 ? withoutAnchor : withoutAnchor.slice(0, coupe);
211
+ const last = litteral.lastIndexOf("/");
212
+ return last > 0 ? litteral.slice(0, last) : litteral;
213
+ }
214
+ /**
215
+ * Une zone qui ÉNUMÈRE des routes au lieu de couvrir un espace.
216
+ *
217
+ * Le mode d'échec est mesuré, pas supposé : sommés de protéger deux routes d'un
218
+ * même espace, 3 agents sur 4 écrivent `^/api/account/(profile|invoices)`. Les
219
+ * deux routes refusent bien l'anonyme, les tests passent, la revue passe — et la
220
+ * TROISIÈME route de l'espace, ajoutée plus tard, est publique. Rien ne le
221
+ * signale : la zone existe et paraît couvrir l'espace.
222
+ *
223
+ * Le contrôle ne peut pas le voir en interrogeant les routes (elles n'existent
224
+ * pas encore — c'est tout le problème), donc il lit la FORME. Deux signaux, et
225
+ * aucun n'est une question de style :
226
+ *
227
+ * - une **ancre de fin** (`$`) — la zone ne couvre qu'un chemin exact, donc
228
+ * aucune route sœur, jamais ;
229
+ * - une **alternance** précédée d'au moins deux segments littéraux
230
+ * (`/api/account/(…|…)`) — l'alternance sert alors à lister des routes. En
231
+ * tête (`^/(api|admin)`) elle désigne au contraire deux espaces : légitime,
232
+ * et épargnée.
233
+ *
234
+ * @param pattern - la valeur écrite dans le manifeste.
235
+ * @returns le préfixe à employer, ou `null` si la zone est saine.
236
+ */
237
+ function zoneEnumere(pattern) {
238
+ const body = pattern.replace(/^\^/u, "");
239
+ const prefix = prefixeLitteral(pattern);
240
+ const segments = prefix.split("/").filter(Boolean).length;
241
+ if (/\$/u.test(body)) return prefix;
242
+ if (/\([^)]*\|/u.test(body) && segments >= 2) return prefix;
243
+ return null;
244
+ }
245
+ /**
246
+ * Où le câblage d'une cible peut vivre — et nulle part ailleurs.
247
+ *
248
+ * Borner n'est pas une optimisation : depuis la racine d'un dépôt, un parcours
249
+ * libre descend dans les décors jetables (`tmp/`), les applications d'exemple et
250
+ * les bases de développement, et rend des manquements qui n'appartiennent à
251
+ * personne. Un contrôle qui accuse le décor est un contrôle qu'on désactive.
252
+ */
253
+ const WIRING_DIRS = ["nodefony", "src"];
254
+ /**
255
+ * Sources qui CÂBLENT — les tests en sont exclus, et ce n'est pas un détail.
256
+ *
257
+ * Le test généré par `create entity` importe l'entité pour l'enregistrer sur une
258
+ * base en mémoire. Le compter comme une référence rendrait le contrôle aveugle
259
+ * exactement au cas qu'il cherche : un fichier écrit à la main, importé par son
260
+ * seul test, et absent du démarrage réel.
261
+ *
262
+ * Même filtre que les sources embarquées de `checkPackageDeps`, pour une raison
263
+ * différente — là-bas les tests ne partent pas dans le paquet, ici ils ne
264
+ * câblent pas l'application.
265
+ */
266
+ function wiringSources(dir) {
267
+ const found = [];
268
+ for (const name of ["index.ts", "index.tsx"]) {
269
+ const f = path.join(dir, name);
270
+ if (statSync(f, { throwIfNoEntry: false })) found.push(f);
271
+ }
272
+ found.push(...collectSources(dir, {
273
+ extensions: [".ts", ".tsx"],
274
+ subdirs: WIRING_DIRS
275
+ }));
276
+ return found;
277
+ }
278
+ /** Lit un fichier, ou rend la chaîne vide (un fichier illisible n'accuse personne). */
279
+ function read(file) {
280
+ try {
281
+ return readFileSync(file, "utf8");
282
+ } catch {
283
+ return "";
284
+ }
285
+ }
286
+ /** Le symbole est-il nommé quelque part AILLEURS que dans son propre fichier ? */
287
+ function referencedElsewhere(symbol, ownFile, sources) {
288
+ const re = new RegExp(`\\b${symbol}\\b`, "u");
289
+ for (const [file, content] of sources) {
290
+ if (file === ownFile) continue;
291
+ if (re.test(content)) return true;
292
+ }
293
+ return false;
294
+ }
295
+ /**
296
+ * Une cible plausible : un dossier qui porte `nodefony/entity` ou
297
+ * `nodefony/controllers`. Tout le reste n'a rien à câbler.
298
+ */
299
+ function isTarget(dir) {
300
+ return [
301
+ "entity",
302
+ "controllers",
303
+ "service",
304
+ "services"
305
+ ].some((sub) => statSync(path.join(dir, "nodefony", sub), { throwIfNoEntry: false }));
306
+ }
307
+ /**
308
+ * Contrôle le câblage d'une application et de ses modules locaux.
309
+ *
310
+ * Trois manquements, tous invisibles à la compilation :
311
+ *
312
+ * - **entité orpheline** — le descripteur n'est nommé nulle part, donc aucun
313
+ * `@entities([…])` ne l'enregistre : sa table ne sera pas créée ;
314
+ * - **controller orphelin** — la classe n'est nommée nulle part, donc aucune de
315
+ * ses routes n'est montée ;
316
+ * - **service orphelin** — la classe porte `@injectable` mais n'apparaît dans
317
+ * aucun `@services([…])` ni enregistrement impératif. Seul manquement dont
318
+ * le critère n'est PAS « quelqu'un te nomme » : un service non déclaré est
319
+ * presque toujours nommé — par le controller qui le reçoit en paramètre. Le
320
+ * framework l'auto-résout alors depuis le registre des classes, ce qui donne
321
+ * une application qui fonctionne et un service qui n'existe pour personne
322
+ * d'autre : hors ordre de démarrage, hors rapport de boot, hors politique
323
+ * d'erreur, hors introspection, construit à la première requête ;
324
+ * - **nom réservé** — l'entité porte le nom d'une entité d'un module du
325
+ * framework (`User`, `session`…). Le registre ORM est PLAT : l'homonyme
326
+ * dépossède le module, et l'application s'arrête au démarrage sur un message
327
+ * qui parle d'une colonne inconnue, jamais du doublon. Le registre est celui
328
+ * du scaffold ({@link findReservedEntity}), pas une seconde liste.
329
+ *
330
+ * @param options - cibles à explorer et racine d'affichage.
331
+ * @returns les manquements et le nombre de fichiers analysés.
332
+ */
333
+ function checkWiring(options) {
334
+ const { roots, cwd = process.cwd(), projectRoot } = options;
335
+ const findings = [];
336
+ let scanned = 0;
337
+ const manifestePath = projectRoot ? path.join(projectRoot, "nodefony.config.ts") : "";
338
+ const manifeste = manifestePath ? read(manifestePath) : "";
339
+ const declared = projectRoot ? [manifeste, read(path.join(projectRoot, "package.json"))].join("\n") : "";
340
+ const areasBlock = AREAS_BLOCK_RE.exec(withoutComments(manifeste))?.[1];
341
+ if (areasBlock) for (const [, pattern] of areasBlock.matchAll(AREA_PATTERN_RE)) {
342
+ const prefix = zoneEnumere(pattern);
343
+ if (!prefix) continue;
344
+ findings.push({
345
+ kind: "firewall-area-enumere",
346
+ file: path.relative(cwd, manifestePath),
347
+ message: `la zone "${pattern}" énumère des routes au lieu de couvrir un espace — écris pattern: "^${prefix}". Tel quel, les routes visées sont bien protégées et TOUTE route ajoutée ensuite sous ${prefix} naîtra publique, sans qu'aucun test ne le voie : la zone existe et paraît couvrir l'espace`
348
+ });
349
+ }
350
+ for (const root of roots) {
351
+ if (!statSync(root, { throwIfNoEntry: false }) || !isTarget(root)) continue;
352
+ const sources = /* @__PURE__ */ new Map();
353
+ for (const file of wiringSources(root)) sources.set(file, read(file));
354
+ const rel = (f) => path.relative(cwd, f);
355
+ const declaredServices = /* @__PURE__ */ new Set();
356
+ for (const content of sources.values()) {
357
+ for (const [, list] of content.matchAll(SERVICES_LIST_RE)) for (const [, name] of list.matchAll(/\b(\w+)\b/gu)) declaredServices.add(name);
358
+ for (const [, name] of content.matchAll(IMPERATIVE_RE)) declaredServices.add(name);
359
+ }
360
+ for (const [file, content] of sources) {
361
+ for (const [, isAbstract, symbol] of content.matchAll(SERVICE_RE)) {
362
+ if (isAbstract) continue;
363
+ scanned += 1;
364
+ if (declaredServices.has(symbol)) continue;
365
+ findings.push({
366
+ kind: "orphan-service",
367
+ file: rel(file),
368
+ message: `${symbol} porte @injectable mais n'est déclaré nulle part — sans @services([${symbol}]) sur le module, il n'entre pas dans l'ordre de démarrage, échappe au rapport de boot et à l'introspection, et n'est construit qu'à la première requête qui le réclame`
369
+ });
370
+ }
371
+ for (const m of content.matchAll(ROUTE_PATH_RE)) {
372
+ const routePath = m[1] ?? m[2] ?? "";
373
+ const colon = COLON_SEGMENT_RE.exec(routePath);
374
+ if (!colon) continue;
375
+ const corrected = routePath.replace(/\/:(\w+)/gu, "/{$1}");
376
+ findings.push({
377
+ kind: "route-colon-param",
378
+ file: rel(file),
379
+ message: `le chemin "${routePath}" déclare son segment variable à la mode d'un autre framework — Nodefony écrit "${corrected}". Tel quel, ":${colon[1]}" est monté comme un littéral : la route s'affiche dans inspect routes et répond 404 à toute URL réelle`
380
+ });
381
+ }
382
+ if (EXTENDS_CONTROLLER_RE.test(content)) {
383
+ const code = withoutComments(content);
384
+ const facades = "les façades : this.renderJson(obj) pour du JSON, this.setContextHtml() puis this.render(html) pour une page, this.streamFile(f) / renderMediaStream(f) / renderFileDownload(f) pour un fichier";
385
+ const manquements = [
386
+ [RESPONSE_CAST_RE, "this.response est casté en any — c'est le signal d'une façade ratée, et le cast fait taire le seul contrôle qui aurait nommé la bonne"],
387
+ [RESPONSE_CONTENT_TYPE_RE, "Content-Type est posé à la main — c'est la façade qui le décide, et le poser deux fois rend une réponse que le client lit de travers"],
388
+ [RESPONSE_RAW_WRITE_RE, "la réponse est écrite directement dans le socle (end/writeHead) — le body part sans passer par le pipeline"]
389
+ ];
390
+ for (const [pattern, quoi] of manquements) {
391
+ if (!pattern.test(code)) continue;
392
+ findings.push({
393
+ kind: "reponse-a-la-main",
394
+ file: rel(file),
395
+ message: `${quoi}. Court-circuitée ainsi, la réponse perd la négociation de contenu, l'encodage, le nonce CSP de la requête et les hooks de fin de réponse (journal, profileur) — tout cela sans qu'aucun test ne le voie, puisque le body arrive bien. Emploie ${facades}`
396
+ });
397
+ }
398
+ }
399
+ if (EXTENDS_MODULE_RE.test(content)) for (const [, hook] of content.matchAll(HOOK_DECL_RE)) {
400
+ if (HOOKS_MODULE.has(hook)) continue;
401
+ findings.push({
402
+ kind: "hook-lifecycle-inconnu",
403
+ file: rel(file),
404
+ message: `${hook}() n'est pas un hook de module — seuls ${[...HOOKS_MODULE].join(", ")} sont attachés au démarrage. Écrite ainsi, la méthode compile et n'est JAMAIS appelée : ce qu'elle initialise ne le sera pas, et rien ne le signalera`
405
+ });
406
+ }
407
+ const dir = path.dirname(file);
408
+ const inEntities = dir.endsWith(path.join("nodefony", "entity"));
409
+ const inControllers = dir.endsWith(path.join("nodefony", "controllers"));
410
+ if (!inEntities && !inControllers) continue;
411
+ scanned += 1;
412
+ if (declared) for (const brick of BRICKS) {
413
+ if (!brick.marker.test(content)) continue;
414
+ if (brick.packages.some((p) => declared.includes(p))) continue;
415
+ findings.push({
416
+ kind: "missing-brick",
417
+ file: rel(file),
418
+ message: `ce fichier déclare ${brick.what}, mais ${brick.packages.join(" ni ")} n'est déclaré par l'application — le module ne sera pas chargé, et le code compilera sans jamais s'exécuter`
419
+ });
420
+ }
421
+ if (inEntities) for (const [, symbol] of content.matchAll(ENTITY_RE)) {
422
+ if (!referencedElsewhere(symbol, file, sources)) findings.push({
423
+ kind: "orphan-entity",
424
+ file: rel(file),
425
+ message: `${symbol} n'est déclarée nulle part — sans @entities([${symbol}]) sur le module, sa table n'est pas créée au démarrage et le repository lèvera « entité inconnue »`
426
+ });
427
+ const entityName = ENTITY_NAME_RE.exec(content.slice(content.indexOf(symbol)))?.[1];
428
+ const reserved = entityName ? findReservedEntity(entityName) : void 0;
429
+ if (reserved && !reserved.appOwned) findings.push({
430
+ kind: "reserved-entity",
431
+ file: rel(file),
432
+ message: `${symbol} déclare name: "${entityName}", qui appartient au module « ${reserved.module} » — le registre ORM est plat, l'application ne démarrera plus.\n → ${reserved.advice}`
433
+ });
434
+ }
435
+ if (inControllers) {
436
+ for (const [, symbol] of content.matchAll(CONTROLLER_RE)) if (!referencedElsewhere(symbol, file, sources)) findings.push({
437
+ kind: "orphan-controller",
438
+ file: rel(file),
439
+ message: `${symbol} n'est déclaré nulle part — sans @controllers([${symbol}]) sur le module, aucune de ses routes n'est montée et elles répondront 404`
440
+ });
441
+ }
442
+ }
443
+ }
444
+ return {
445
+ findings,
446
+ scanned
447
+ };
448
+ }
449
+ //#endregion
450
+ export { checkWiring };
@@ -0,0 +1,65 @@
1
+ import Command from "../../command/Command.js";
2
+ import { runAiMcpCommand } from "../../cli/aiMcp.js";
3
+ //#region src/kernel/commands/AiMcpCommand.ts
4
+ const options = {
5
+ helpGroup: "AGENTS ET OUTILLAGE",
6
+ showBanner: false,
7
+ kernelEvent: "onRegister",
8
+ quietBoot: true
9
+ };
10
+ /**
11
+ * Commande `nodefony ai:mcp` — déclare le serveur MCP de cette application à
12
+ * l'agent (`.mcp.json`).
13
+ *
14
+ * **Exécutée en « standalone » (zéro boot).** L'enregistrement ici sert au help
15
+ * (`nodefony --help`) et à la complétion ; l'exécution réelle est interceptée
16
+ * par le fast-path de {@link CliKernel.start} — elle n'écrit qu'un fichier de
17
+ * câblage, le serveur MCP étant une ROUTE de l'application. Le `generate()`
18
+ * ci-dessous n'est qu'un FILET.
19
+ *
20
+ * @example
21
+ * ```bash
22
+ * nodefony ai:mcp # écrit/actualise .mcp.json
23
+ * nodefony ai:mcp --dry-run # le plan, sans rien écrire
24
+ * nodefony ai:mcp --auth # mode authentifié (en-tête ${NF_MCP_TOKEN})
25
+ * nodefony ai:mcp --agent gemini,codex # déclare AUSSI la porte via LEUR CLI
26
+ * nodefony ai:mcp --agent all --remove # la retire partout
27
+ * ```
28
+ *
29
+ * `--agent` accepte `none` — et en interactif, ne rien cocher revient au même :
30
+ * coder sans agent est un choix, pas un oubli qu'il faudrait rattraper.
31
+ */
32
+ var AiMcp = class extends Command {
33
+ constructor(cli) {
34
+ super("ai:mcp", "déclare le serveur MCP de l'app à ton agent", cli, options);
35
+ this.addOption("-a, --auth", "Mode authentifié : l'en-tête porte ${NF_MCP_TOKEN}, jamais le jeton");
36
+ this.addOption("--no-auth", "Retire l'en-tête d'autorisation (sans option, le mode en place est CONSERVÉ)");
37
+ this.addOption("--url <origine>", "Origine forcée (ex. https://localhost:5152)");
38
+ this.addOption("--agent <liste>", "Déclare AUSSI la porte chez ces agents via LEUR CLI (claude, gemini, vibe, codex, all, none)");
39
+ this.addOption("--remove", "Avec --agent : retire la déclaration au lieu de la poser");
40
+ this.addOption("--global", "Avec --agent : déclare dans TON foyer au lieu du projet (une seule app servie)");
41
+ this.addOption("--dry-run", "Le plan, sans rien écrire");
42
+ this.addOption("--json", "Sortie exploitable par un script");
43
+ this.addOption("--cwd <path>", "Point de départ (la racine de l'app est résolue en remontant)");
44
+ }
45
+ async generate(opts) {
46
+ const argv = [
47
+ "node",
48
+ "nodefony",
49
+ "ai:mcp"
50
+ ];
51
+ if (opts?.auth) argv.push("--auth");
52
+ if (opts?.noAuth) argv.push("--no-auth");
53
+ if (opts?.agent) argv.push("--agent", opts.agent);
54
+ if (opts?.remove) argv.push("--remove");
55
+ if (opts?.global) argv.push("--global");
56
+ if (opts?.url) argv.push("--url", opts.url);
57
+ if (opts?.dryRun) argv.push("--dry-run");
58
+ if (opts?.json) argv.push("--json");
59
+ if (opts?.cwd) argv.push("--cwd", opts.cwd);
60
+ await this.terminate(await runAiMcpCommand(argv));
61
+ return this;
62
+ }
63
+ };
64
+ //#endregion
65
+ export { AiMcp as default };
@@ -0,0 +1,48 @@
1
+ import Command from "../../command/Command.js";
2
+ import { runAiSyncCommand } from "../../cli/aiSync.js";
3
+ //#region src/kernel/commands/AiSyncCommand.ts
4
+ const options = {
5
+ helpGroup: "AGENTS ET OUTILLAGE",
6
+ quietBoot: true,
7
+ showBanner: false,
8
+ kernelEvent: "onRegister"
9
+ };
10
+ /**
11
+ * Commande `nodefony ai:sync` — pointeurs vers les skills d'agent livrés par
12
+ * les paquets installés.
13
+ *
14
+ * **Exécutée en « standalone » (zéro boot).** L'enregistrement ici sert au help
15
+ * (`nodefony --help`) et à la complétion ; l'exécution réelle est interceptée
16
+ * par le fast-path de {@link CliKernel.start} — portée par un module
17
+ * `policy: "dev"`, elle n'existerait pas dans un terminal sans `NODE_ENV`,
18
+ * et c'est exactement ce que le fast-path évite. Le `generate()` ci-dessous
19
+ * n'est qu'un FILET.
20
+ *
21
+ * @example
22
+ * ```bash
23
+ * nodefony ai:sync # pose/rafraîchit .agents/skills + miroir .claude/skills
24
+ * nodefony ai:sync --dry-run # le plan, sans rien écrire
25
+ * ```
26
+ */
27
+ var AiSync = class extends Command {
28
+ constructor(cli) {
29
+ super("ai:sync", "installe les skills d'agent des paquets présents", cli, options);
30
+ this.addOption("--dry-run", "Le plan, sans rien écrire");
31
+ this.addOption("--json", "Sortie exploitable par un script");
32
+ this.addOption("--cwd <path>", "Point de départ (la racine de l'app est résolue en remontant)");
33
+ }
34
+ async generate(opts) {
35
+ const argv = [
36
+ "node",
37
+ "nodefony",
38
+ "ai:sync"
39
+ ];
40
+ if (opts?.dryRun) argv.push("--dry-run");
41
+ if (opts?.json) argv.push("--json");
42
+ if (opts?.cwd) argv.push("--cwd", opts.cwd);
43
+ await this.terminate(runAiSyncCommand(argv));
44
+ return this;
45
+ }
46
+ };
47
+ //#endregion
48
+ export { AiSync as default };
@@ -0,0 +1,49 @@
1
+ import Command from "../../command/Command.js";
2
+ import { needsShell } from "../../cli/execPortable.js";
3
+ import { spawn } from "node:child_process";
4
+ //#region src/kernel/commands/BuildCommand.ts
5
+ const options = {
6
+ helpGroup: "GÉNÉRER ET CONSTRUIRE",
7
+ showBanner: false,
8
+ kernelEvent: "onRegister"
9
+ };
10
+ /**
11
+ * Commande `nodefony build` (alias `compile`) — délègue à la **toolchain CLI**
12
+ * (`turbo run build` → chaque `rollup.config.ts` de workspace), source UNIQUE du
13
+ * build. Ne build PLUS via un service rollup embarqué dans le process (retiré
14
+ * 2026-06-02 : doublon de config + import de la toolchain à chaque boot serveur).
15
+ */
16
+ var Build = class extends Command {
17
+ constructor(cli) {
18
+ super("build", "compile les modules puis l'application vers dist/", cli, options);
19
+ this.alias("compile");
20
+ this.addOption("-f, --force", "Ignore le cache turbo et reconstruit tout (--force)");
21
+ }
22
+ async generate(...args) {
23
+ const force = Boolean(args[0]?.force);
24
+ const turboArgs = [
25
+ "turbo",
26
+ "run",
27
+ "build"
28
+ ];
29
+ if (force) turboArgs.push("--force");
30
+ this.log(`build : npx ${turboArgs.join(" ")}`, "INFO");
31
+ const code = await new Promise((res) => {
32
+ const p = spawn("npx", turboArgs, {
33
+ cwd: process.cwd(),
34
+ stdio: "inherit",
35
+ shell: needsShell("npx")
36
+ });
37
+ p.once("exit", (c) => res(c ?? 1));
38
+ p.once("error", () => res(1));
39
+ });
40
+ if (code !== 0) {
41
+ this.log(`build échoué (turbo exit ${code})`, "ERROR");
42
+ throw new Error(`turbo build failed (${code})`);
43
+ }
44
+ this.log("build ok", "INFO");
45
+ return this;
46
+ }
47
+ };
48
+ //#endregion
49
+ export { Build as default };
@@ -0,0 +1,50 @@
1
+ import { version } from "../../package.js";
2
+ import Command from "../../command/Command.js";
3
+ import { runCardCommand } from "../../cli/card.js";
4
+ //#region src/kernel/commands/CardCommand.ts
5
+ const options = {
6
+ helpGroup: "COMPRENDRE",
7
+ quietBoot: true,
8
+ showBanner: false,
9
+ kernelEvent: "onRegister"
10
+ };
11
+ /**
12
+ * Commande `nodefony card` — la carte de visite de l'application : qui répond,
13
+ * où aller ensuite, quoi lancer.
14
+ *
15
+ * C'est la PREMIÈRE commande d'un agent (ou d'un humain) qui arrive dans une
16
+ * application qu'il ne connaît pas — donc la seule qui ne peut se permettre
17
+ * aucune condition d'accès.
18
+ *
19
+ * **Exécutée en « standalone » (zéro boot).** L'enregistrement ici sert au help
20
+ * (`nodefony --help`) ; l'exécution réelle est interceptée par le fast-path de
21
+ * {@link CliKernel.start}. Délibéré, et pour deux raisons mesurées : une
22
+ * application fraîchement générée n'est pas encore CONSTRUITE (tout ce qui exige
23
+ * un Kernel répond alors « lance npm run build »), et un terminal sans
24
+ * `NODE_ENV` faisait disparaître la carte avec le module `policy: "dev"` qui la
25
+ * portait (`unknown command`, sans piste).
26
+ *
27
+ * L'alias `devkit:card` reste reconnu — c'est le nom sous lequel la carte a
28
+ * d'abord existé, et il est écrit dans les `AGENTS.md` déjà générés.
29
+ *
30
+ * @example
31
+ * ```bash
32
+ * nodefony card # la carte, pour un humain ou un agent qui lit un terminal
33
+ * nodefony card --json # la même, pour un programme
34
+ * ```
35
+ */
36
+ var Card = class extends Command {
37
+ constructor(cli) {
38
+ super("card", "carte de visite : où l'on est, quoi lancer", cli, options);
39
+ this.alias("devkit:card");
40
+ this.addOption("-j, --json", "sortie JSON (scriptable)");
41
+ this.addOption("--cwd <path>", "Point de départ (la racine de l'app est résolue en remontant)");
42
+ }
43
+ async generate(opts) {
44
+ const code = runCardCommand(opts?.json ? ["card", "--json"] : ["card"], version);
45
+ await this.terminate(code);
46
+ return this;
47
+ }
48
+ };
49
+ //#endregion
50
+ export { Card as default };