gina 0.5.10 → 0.5.11

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 (506) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +3 -2
  3. package/ROADMAP.md +2 -0
  4. package/bin/cli +1 -0
  5. package/framework/v0.5.11/VERSION +1 -0
  6. package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.js +12 -6
  7. package/framework/{v0.5.10 → v0.5.11}/lib/cmd/gina.1.md +1 -0
  8. package/framework/v0.5.11/lib/cmd/image/arguments.json +11 -0
  9. package/framework/v0.5.11/lib/cmd/image/build.js +516 -0
  10. package/framework/v0.5.11/lib/cmd/image/help.js +46 -0
  11. package/framework/v0.5.11/lib/cmd/image/help.txt +72 -0
  12. package/framework/v0.5.11/lib/cmd/image/man.js +6 -0
  13. package/framework/v0.5.11/lib/image-build/package.json +17 -0
  14. package/framework/v0.5.11/lib/image-build/src/main.js +721 -0
  15. package/framework/{v0.5.10 → v0.5.11}/lib/index.js +6 -0
  16. package/framework/{v0.5.10 → v0.5.11}/package.json +1 -1
  17. package/gna.js +4 -4
  18. package/llms.txt +1 -1
  19. package/package.json +3 -3
  20. package/framework/v0.5.10/VERSION +0 -1
  21. /package/framework/{v0.5.10 → v0.5.11}/AUTHORS +0 -0
  22. /package/framework/{v0.5.10 → v0.5.11}/LICENSE +0 -0
  23. /package/framework/{v0.5.10 → v0.5.11}/core/asset/html/nolayout.html +0 -0
  24. /package/framework/{v0.5.10 → v0.5.11}/core/asset/html/static.html +0 -0
  25. /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/android-chrome-192x192.png +0 -0
  26. /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/android-chrome-512x512.png +0 -0
  27. /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/apple-touch-icon.png +0 -0
  28. /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/favicon-16x16.png +0 -0
  29. /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/favicon-32x32.png +0 -0
  30. /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/favicon.ico +0 -0
  31. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/README.md +0 -0
  32. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  33. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  34. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  35. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  36. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  37. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  38. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  39. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  40. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  41. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  42. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  43. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  44. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  45. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  46. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
  47. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  48. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  49. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  50. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  51. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  52. /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  53. /package/framework/{v0.5.10 → v0.5.11}/core/config.js +0 -0
  54. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/ai/index.js +0 -0
  55. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/ai/lib/connector.js +0 -0
  56. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/index.js +0 -0
  57. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/connector.js +0 -0
  58. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  59. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  60. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/n1ql.js +0 -0
  61. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/session-store.js +0 -0
  62. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  63. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  64. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/index.js +0 -0
  65. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/connector.js +0 -0
  66. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/job-store.js +0 -0
  67. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  68. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/session-store.js +0 -0
  69. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mysql/index.js +0 -0
  70. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mysql/lib/connector.js +0 -0
  71. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/postgresql/index.js +0 -0
  72. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/postgresql/lib/connector.js +0 -0
  73. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/index.js +0 -0
  74. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/lib/connector.js +0 -0
  75. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/lib/job-store.js +0 -0
  76. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/lib/session-store.js +0 -0
  77. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/scylladb/index.js +0 -0
  78. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/scylladb/lib/connector.js +0 -0
  79. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/scylladb/lib/session-store.js +0 -0
  80. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sql-parser.js +0 -0
  81. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/index.js +0 -0
  82. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/lib/connector.js +0 -0
  83. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/lib/job-store.js +0 -0
  84. /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/lib/session-store.js +0 -0
  85. /package/framework/{v0.5.10 → v0.5.11}/core/content.encoding +0 -0
  86. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.framework.js +0 -0
  87. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-json.js +0 -0
  88. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-nunjucks-async.js +0 -0
  89. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-nunjucks.js +0 -0
  90. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-stream.js +0 -0
  91. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-swig-async.js +0 -0
  92. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-swig.js +0 -0
  93. /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-v1.js +0 -0
  94. /package/framework/{v0.5.10 → v0.5.11}/core/controller/index.js +0 -0
  95. /package/framework/{v0.5.10 → v0.5.11}/core/controller/inspector-window-emit.js +0 -0
  96. /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/LICENSE +0 -0
  97. /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/README.md +0 -0
  98. /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  99. /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  100. /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  101. /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  102. /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/package.json +0 -0
  103. /package/framework/{v0.5.10 → v0.5.11}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  104. /package/framework/{v0.5.10 → v0.5.11}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  105. /package/framework/{v0.5.10 → v0.5.11}/core/deps/streamsearch-1.1.0/package.json +0 -0
  106. /package/framework/{v0.5.10 → v0.5.11}/core/dev/index.js +0 -0
  107. /package/framework/{v0.5.10 → v0.5.11}/core/dev/lib/class.js +0 -0
  108. /package/framework/{v0.5.10 → v0.5.11}/core/dev/lib/factory.js +0 -0
  109. /package/framework/{v0.5.10 → v0.5.11}/core/dev/lib/tools.js +0 -0
  110. /package/framework/{v0.5.10 → v0.5.11}/core/gna.js +0 -0
  111. /package/framework/{v0.5.10 → v0.5.11}/core/locales/README.md +0 -0
  112. /package/framework/{v0.5.10 → v0.5.11}/core/locales/currency.json +0 -0
  113. /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/language/en.json +0 -0
  114. /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/language/fr.json +0 -0
  115. /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/region/en.json +0 -0
  116. /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/region/fr.json +0 -0
  117. /package/framework/{v0.5.10 → v0.5.11}/core/locales/index.js +0 -0
  118. /package/framework/{v0.5.10 → v0.5.11}/core/mime.types +0 -0
  119. /package/framework/{v0.5.10 → v0.5.11}/core/model/entity.js +0 -0
  120. /package/framework/{v0.5.10 → v0.5.11}/core/model/index.js +0 -0
  121. /package/framework/{v0.5.10 → v0.5.11}/core/model/template/entityFactory.js +0 -0
  122. /package/framework/{v0.5.10 → v0.5.11}/core/model/template/index.js +0 -0
  123. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/README.md +0 -0
  124. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/index.js +0 -0
  125. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/csrf/README.md +0 -0
  126. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/csrf/package.json +0 -0
  127. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/csrf/src/main.js +0 -0
  128. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/README.md +0 -0
  129. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coep/README.md +0 -0
  130. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coep/package.json +0 -0
  131. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  132. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coop/README.md +0 -0
  133. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coop/package.json +0 -0
  134. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  135. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/corp/README.md +0 -0
  136. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/corp/package.json +0 -0
  137. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  138. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/csp/README.md +0 -0
  139. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/csp/package.json +0 -0
  140. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  141. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  142. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  143. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  144. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  145. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  146. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  147. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  148. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  149. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  150. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/package.json +0 -0
  151. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  152. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  153. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  154. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/src/main.js +0 -0
  155. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  156. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  157. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  158. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  159. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  160. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  161. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  162. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  163. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  164. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  165. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  166. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  167. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  168. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  169. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  170. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  171. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  172. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  173. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/session/README.md +0 -0
  174. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/session/package.json +0 -0
  175. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/session/src/main.js +0 -0
  176. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/README.md +0 -0
  177. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/build.json +0 -0
  178. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/package.json +0 -0
  179. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/src/main.js +0 -0
  180. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/README.md +0 -0
  181. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/build.json +0 -0
  182. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/package.json +0 -0
  183. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/src/form-validator.js +0 -0
  184. /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/src/main.js +0 -0
  185. /package/framework/{v0.5.10 → v0.5.11}/core/router.js +0 -0
  186. /package/framework/{v0.5.10 → v0.5.11}/core/server.express.js +0 -0
  187. /package/framework/{v0.5.10 → v0.5.11}/core/server.isaac.js +0 -0
  188. /package/framework/{v0.5.10 → v0.5.11}/core/server.js +0 -0
  189. /package/framework/{v0.5.10 → v0.5.11}/core/status.codes +0 -0
  190. /package/framework/{v0.5.10 → v0.5.11}/core/template/_gitignore +0 -0
  191. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/app.json +0 -0
  192. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  193. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/routing.json +0 -0
  194. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/settings.json +0 -0
  195. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  196. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/templates.json +0 -0
  197. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  198. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  199. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  200. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  201. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/index.js +0 -0
  202. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/locales/en.json +0 -0
  203. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  204. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  205. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  206. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  207. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  208. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  209. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  210. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/readme.md +0 -0
  211. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/sw.js +0 -0
  212. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  213. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  214. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  215. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  216. /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  217. /package/framework/{v0.5.10 → v0.5.11}/core/template/command/gina.bat.tpl +0 -0
  218. /package/framework/{v0.5.10 → v0.5.11}/core/template/command/gina.tpl +0 -0
  219. /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/env.json +0 -0
  220. /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/manifest.json +0 -0
  221. /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/package.json +0 -0
  222. /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/settings.json +0 -0
  223. /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/statics.json +0 -0
  224. /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/templates.json +0 -0
  225. /package/framework/{v0.5.10 → v0.5.11}/core/template/error/client/json/401.json +0 -0
  226. /package/framework/{v0.5.10 → v0.5.11}/core/template/error/client/json/403.json +0 -0
  227. /package/framework/{v0.5.10 → v0.5.11}/core/template/error/client/json/404.json +0 -0
  228. /package/framework/{v0.5.10 → v0.5.11}/core/template/error/server/html/50x.html +0 -0
  229. /package/framework/{v0.5.10 → v0.5.11}/core/template/error/server/json/500.json +0 -0
  230. /package/framework/{v0.5.10 → v0.5.11}/core/template/error/server/json/503.json +0 -0
  231. /package/framework/{v0.5.10 → v0.5.11}/core/template/extensions/logger/config.json +0 -0
  232. /package/framework/{v0.5.10 → v0.5.11}/helpers/console.js +0 -0
  233. /package/framework/{v0.5.10 → v0.5.11}/helpers/context.js +0 -0
  234. /package/framework/{v0.5.10 → v0.5.11}/helpers/data/LICENSE +0 -0
  235. /package/framework/{v0.5.10 → v0.5.11}/helpers/data/README.md +0 -0
  236. /package/framework/{v0.5.10 → v0.5.11}/helpers/data/package.json +0 -0
  237. /package/framework/{v0.5.10 → v0.5.11}/helpers/data/src/main.js +0 -0
  238. /package/framework/{v0.5.10 → v0.5.11}/helpers/dateFormat.js +0 -0
  239. /package/framework/{v0.5.10 → v0.5.11}/helpers/index.js +0 -0
  240. /package/framework/{v0.5.10 → v0.5.11}/helpers/json/LICENSE +0 -0
  241. /package/framework/{v0.5.10 → v0.5.11}/helpers/json/README.md +0 -0
  242. /package/framework/{v0.5.10 → v0.5.11}/helpers/json/package.json +0 -0
  243. /package/framework/{v0.5.10 → v0.5.11}/helpers/json/src/main.js +0 -0
  244. /package/framework/{v0.5.10 → v0.5.11}/helpers/path.js +0 -0
  245. /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/README.md +0 -0
  246. /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/package.json +0 -0
  247. /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/src/api-error.js +0 -0
  248. /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/src/main.js +0 -0
  249. /package/framework/{v0.5.10 → v0.5.11}/helpers/prototypes.js +0 -0
  250. /package/framework/{v0.5.10 → v0.5.11}/helpers/task.js +0 -0
  251. /package/framework/{v0.5.10 → v0.5.11}/helpers/text.js +0 -0
  252. /package/framework/{v0.5.10 → v0.5.11}/lib/admin/package.json +0 -0
  253. /package/framework/{v0.5.10 → v0.5.11}/lib/admin/src/main.js +0 -0
  254. /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/README.md +0 -0
  255. /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/build.json +0 -0
  256. /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/package.json +0 -0
  257. /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/src/dep/jszip.min.js +0 -0
  258. /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/src/main.js +0 -0
  259. /package/framework/{v0.5.10 → v0.5.11}/lib/async/package.json +0 -0
  260. /package/framework/{v0.5.10 → v0.5.11}/lib/async/src/main.js +0 -0
  261. /package/framework/{v0.5.10 → v0.5.11}/lib/cache/README.md +0 -0
  262. /package/framework/{v0.5.10 → v0.5.11}/lib/cache/build.json +0 -0
  263. /package/framework/{v0.5.10 → v0.5.11}/lib/cache/package.json +0 -0
  264. /package/framework/{v0.5.10 → v0.5.11}/lib/cache/src/main.js +0 -0
  265. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/aliases.json +0 -0
  266. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/add.js +0 -0
  267. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/arguments.json +0 -0
  268. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/build.js +0 -0
  269. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/copy.js +0 -0
  270. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/cp.js +0 -0
  271. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/help.js +0 -0
  272. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/help.txt +0 -0
  273. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  274. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/list.js +0 -0
  275. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/man.js +0 -0
  276. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/mcp-start.js +0 -0
  277. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/mcp.js +0 -0
  278. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/oas.js +0 -0
  279. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/openapi.js +0 -0
  280. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/remove.js +0 -0
  281. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/rename.js +0 -0
  282. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/restart.js +0 -0
  283. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/rm.js +0 -0
  284. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/start.js +0 -0
  285. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/status.js +0 -0
  286. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/stop.js +0 -0
  287. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/cache/stats.js +0 -0
  288. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/add.js +0 -0
  289. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/arguments.json +0 -0
  290. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/help.js +0 -0
  291. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/help.txt +0 -0
  292. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/infer.js +0 -0
  293. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/list.js +0 -0
  294. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/migrate.js +0 -0
  295. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/models.js +0 -0
  296. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/remove.js +0 -0
  297. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/rm.js +0 -0
  298. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/test.js +0 -0
  299. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/add.js +0 -0
  300. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/get.js +0 -0
  301. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/help.js +0 -0
  302. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/help.txt +0 -0
  303. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/link-dev.js +0 -0
  304. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/list.js +0 -0
  305. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/remove.js +0 -0
  306. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/rm.js +0 -0
  307. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/set.js +0 -0
  308. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/unset.js +0 -0
  309. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/use.js +0 -0
  310. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/add.js +0 -0
  311. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/arguments.json +0 -0
  312. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/build.js +0 -0
  313. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/dot.js +0 -0
  314. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/get.js +0 -0
  315. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/help.js +0 -0
  316. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/help.txt +0 -0
  317. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/init.js +0 -0
  318. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/link-node-modules.js +0 -0
  319. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/link.js +0 -0
  320. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/list.js +0 -0
  321. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/man.js +0 -0
  322. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/msg.json +0 -0
  323. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/open.js +0 -0
  324. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/remove.js +0 -0
  325. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/reset.js +0 -0
  326. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/restart.js +0 -0
  327. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/set.js +0 -0
  328. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/start.js +0 -0
  329. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/status.js +0 -0
  330. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/stop.js +0 -0
  331. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/tail.js +0 -0
  332. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/update.js +0 -0
  333. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/version.js +0 -0
  334. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/gina-dev.1.md +0 -0
  335. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/gina-framework.1.md +0 -0
  336. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/helper.js +0 -0
  337. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/add.js +0 -0
  338. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/arguments.json +0 -0
  339. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/export.js +0 -0
  340. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/help.js +0 -0
  341. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/help.txt +0 -0
  342. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/import.js +0 -0
  343. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/scan.js +0 -0
  344. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/index.js +0 -0
  345. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/inspector/help.js +0 -0
  346. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/inspector/help.txt +0 -0
  347. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/inspector/open.js +0 -0
  348. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/man-render.js +0 -0
  349. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/arguments.json +0 -0
  350. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/help.js +0 -0
  351. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/help.txt +0 -0
  352. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/kill.js +0 -0
  353. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/list.js +0 -0
  354. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/msg.json +0 -0
  355. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/help.js +0 -0
  356. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/help.txt +0 -0
  357. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/inc/scan.js +0 -0
  358. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/list.js +0 -0
  359. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/reset.js +0 -0
  360. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/set.js +0 -0
  361. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/add.js +0 -0
  362. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/arguments.json +0 -0
  363. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/backup.js +0 -0
  364. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/build.js +0 -0
  365. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/help.js +0 -0
  366. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/help.txt +0 -0
  367. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/import.js +0 -0
  368. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/list.js +0 -0
  369. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/man.js +0 -0
  370. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/move.js +0 -0
  371. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/remove.js +0 -0
  372. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/rename.js +0 -0
  373. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/restart.js +0 -0
  374. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/restore.js +0 -0
  375. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/rm.js +0 -0
  376. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/start.js +0 -0
  377. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/status.js +0 -0
  378. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/stop.js +0 -0
  379. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/arguments.json +0 -0
  380. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/help.js +0 -0
  381. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/help.txt +0 -0
  382. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/list.js +0 -0
  383. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/remove.js +0 -0
  384. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/set.js +0 -0
  385. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/add.js +0 -0
  386. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/help.js +0 -0
  387. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/help.txt +0 -0
  388. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/link-local.js +0 -0
  389. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/link-production.js +0 -0
  390. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/list.js +0 -0
  391. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/remove.js +0 -0
  392. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/rm.js +0 -0
  393. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/use.js +0 -0
  394. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/arguments.json +0 -0
  395. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/check.js +0 -0
  396. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/help.js +0 -0
  397. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/help.txt +0 -0
  398. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/scan.js +0 -0
  399. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/help.js +0 -0
  400. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/help.txt +0 -0
  401. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/list.js +0 -0
  402. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/man.js +0 -0
  403. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/start.js +0 -0
  404. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/view/add.js +0 -0
  405. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd-status-format/package.json +0 -0
  406. /package/framework/{v0.5.10 → v0.5.11}/lib/cmd-status-format/src/main.js +0 -0
  407. /package/framework/{v0.5.10 → v0.5.11}/lib/collection/README.md +0 -0
  408. /package/framework/{v0.5.10 → v0.5.11}/lib/collection/build.json +0 -0
  409. /package/framework/{v0.5.10 → v0.5.11}/lib/collection/package.json +0 -0
  410. /package/framework/{v0.5.10 → v0.5.11}/lib/collection/src/main.js +0 -0
  411. /package/framework/{v0.5.10 → v0.5.11}/lib/config.js +0 -0
  412. /package/framework/{v0.5.10 → v0.5.11}/lib/connector-config/package.json +0 -0
  413. /package/framework/{v0.5.10 → v0.5.11}/lib/connector-config/src/main.js +0 -0
  414. /package/framework/{v0.5.10 → v0.5.11}/lib/connector-registry/package.json +0 -0
  415. /package/framework/{v0.5.10 → v0.5.11}/lib/connector-registry/src/main.js +0 -0
  416. /package/framework/{v0.5.10 → v0.5.11}/lib/cron/README.md +0 -0
  417. /package/framework/{v0.5.10 → v0.5.11}/lib/cron/package.json +0 -0
  418. /package/framework/{v0.5.10 → v0.5.11}/lib/cron/src/main.js +0 -0
  419. /package/framework/{v0.5.10 → v0.5.11}/lib/domain/LICENSE +0 -0
  420. /package/framework/{v0.5.10 → v0.5.11}/lib/domain/README.md +0 -0
  421. /package/framework/{v0.5.10 → v0.5.11}/lib/domain/package.json +0 -0
  422. /package/framework/{v0.5.10 → v0.5.11}/lib/domain/src/main.js +0 -0
  423. /package/framework/{v0.5.10 → v0.5.11}/lib/generator/index.js +0 -0
  424. /package/framework/{v0.5.10 → v0.5.11}/lib/i18n/package.json +0 -0
  425. /package/framework/{v0.5.10 → v0.5.11}/lib/i18n/src/main.js +0 -0
  426. /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/LICENSE +0 -0
  427. /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/README.md +0 -0
  428. /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/package.json +0 -0
  429. /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/src/main.js +0 -0
  430. /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-events/package.json +0 -0
  431. /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-events/src/main.js +0 -0
  432. /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-redact/package.json +0 -0
  433. /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-redact/src/main.js +0 -0
  434. /package/framework/{v0.5.10 → v0.5.11}/lib/instrument/package.json +0 -0
  435. /package/framework/{v0.5.10 → v0.5.11}/lib/instrument/src/main.js +0 -0
  436. /package/framework/{v0.5.10 → v0.5.11}/lib/job/package.json +0 -0
  437. /package/framework/{v0.5.10 → v0.5.11}/lib/job/src/main.js +0 -0
  438. /package/framework/{v0.5.10 → v0.5.11}/lib/job-store.js +0 -0
  439. /package/framework/{v0.5.10 → v0.5.11}/lib/json-config-header/package.json +0 -0
  440. /package/framework/{v0.5.10 → v0.5.11}/lib/json-config-header/src/main.js +0 -0
  441. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/README.md +0 -0
  442. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/package.json +0 -0
  443. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/default/index.js +0 -0
  444. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/file/index.js +0 -0
  445. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  446. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  447. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/mq/index.js +0 -0
  448. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/mq/listener.js +0 -0
  449. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/mq/speaker.js +0 -0
  450. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/helper.js +0 -0
  451. /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/main.js +0 -0
  452. /package/framework/{v0.5.10 → v0.5.11}/lib/math/index.js +0 -0
  453. /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-dispatch/package.json +0 -0
  454. /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-dispatch/src/main.js +0 -0
  455. /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-http/package.json +0 -0
  456. /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-http/src/main.js +0 -0
  457. /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-server/package.json +0 -0
  458. /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-server/src/main.js +0 -0
  459. /package/framework/{v0.5.10 → v0.5.11}/lib/merge/README.md +0 -0
  460. /package/framework/{v0.5.10 → v0.5.11}/lib/merge/package.json +0 -0
  461. /package/framework/{v0.5.10 → v0.5.11}/lib/merge/src/main.js +0 -0
  462. /package/framework/{v0.5.10 → v0.5.11}/lib/metrics/package.json +0 -0
  463. /package/framework/{v0.5.10 → v0.5.11}/lib/metrics/src/main.js +0 -0
  464. /package/framework/{v0.5.10 → v0.5.11}/lib/model.js +0 -0
  465. /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-filters/README.md +0 -0
  466. /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-filters/package.json +0 -0
  467. /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-filters/src/main.js +0 -0
  468. /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-resolver/package.json +0 -0
  469. /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-resolver/src/main.js +0 -0
  470. /package/framework/{v0.5.10 → v0.5.11}/lib/proc.js +0 -0
  471. /package/framework/{v0.5.10 → v0.5.11}/lib/routing/README.md +0 -0
  472. /package/framework/{v0.5.10 → v0.5.11}/lib/routing/build.json +0 -0
  473. /package/framework/{v0.5.10 → v0.5.11}/lib/routing/package.json +0 -0
  474. /package/framework/{v0.5.10 → v0.5.11}/lib/routing/src/main.js +0 -0
  475. /package/framework/{v0.5.10 → v0.5.11}/lib/routing/src/radix.js +0 -0
  476. /package/framework/{v0.5.10 → v0.5.11}/lib/routing-introspect/package.json +0 -0
  477. /package/framework/{v0.5.10 → v0.5.11}/lib/routing-introspect/src/main.js +0 -0
  478. /package/framework/{v0.5.10 → v0.5.11}/lib/secrets/package.json +0 -0
  479. /package/framework/{v0.5.10 → v0.5.11}/lib/secrets/src/backends/env.js +0 -0
  480. /package/framework/{v0.5.10 → v0.5.11}/lib/secrets/src/main.js +0 -0
  481. /package/framework/{v0.5.10 → v0.5.11}/lib/session-store.js +0 -0
  482. /package/framework/{v0.5.10 → v0.5.11}/lib/shell.js +0 -0
  483. /package/framework/{v0.5.10 → v0.5.11}/lib/state.js +0 -0
  484. /package/framework/{v0.5.10 → v0.5.11}/lib/swig-filters/README.md +0 -0
  485. /package/framework/{v0.5.10 → v0.5.11}/lib/swig-filters/package.json +0 -0
  486. /package/framework/{v0.5.10 → v0.5.11}/lib/swig-filters/src/main.js +0 -0
  487. /package/framework/{v0.5.10 → v0.5.11}/lib/swig-resolver/package.json +0 -0
  488. /package/framework/{v0.5.10 → v0.5.11}/lib/swig-resolver/src/main.js +0 -0
  489. /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/package.json +0 -0
  490. /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/src/loaders/http.js +0 -0
  491. /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/src/loaders/memory.js +0 -0
  492. /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/src/main.js +0 -0
  493. /package/framework/{v0.5.10 → v0.5.11}/lib/url/README.md +0 -0
  494. /package/framework/{v0.5.10 → v0.5.11}/lib/url/index.js +0 -0
  495. /package/framework/{v0.5.10 → v0.5.11}/lib/url/routing.json +0 -0
  496. /package/framework/{v0.5.10 → v0.5.11}/lib/uuid/package.json +0 -0
  497. /package/framework/{v0.5.10 → v0.5.11}/lib/uuid/src/main.js +0 -0
  498. /package/framework/{v0.5.10 → v0.5.11}/lib/validator.js +0 -0
  499. /package/framework/{v0.5.10 → v0.5.11}/lib/watcher/package.json +0 -0
  500. /package/framework/{v0.5.10 → v0.5.11}/lib/watcher/src/main.js +0 -0
  501. /package/framework/{v0.5.10 → v0.5.11}/lib/ws-framing/package.json +0 -0
  502. /package/framework/{v0.5.10 → v0.5.11}/lib/ws-framing/src/main.js +0 -0
  503. /package/framework/{v0.5.10 → v0.5.11}/lib/ws-query/package.json +0 -0
  504. /package/framework/{v0.5.10 → v0.5.11}/lib/ws-query/src/main.js +0 -0
  505. /package/framework/{v0.5.10 → v0.5.11}/lib/ws-session/package.json +0 -0
  506. /package/framework/{v0.5.10 → v0.5.11}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
6
6
  and is generated by [Changie](https://github.com/miniscruff/changie).
7
7
 
8
8
 
9
+ ## 0.5.11 - 2026-07-05
10
+ ### Added
11
+ * New `image:build` command — first-class OCI packaging: `gina image:build [<bundle>] @<project>` synthesizes a Containerfile + build context from the project's registered state (bundles, entry, ports, env model, node floor) and executes the build with buildah, natively on Linux or on a container host reached over ssh. Host resolution precedence: `GINA_CONTAINER_HOST=ssh://[user@]host[:port]` env override, then native buildah, then `container.host` in `~/.gina/<shortVersion>/settings.json`; with none available the command fails naming both surfaces. The selected `--env` bakes dev/prod parity — a non-dev env ships the release tree built in-image by `gina bundle:build`, with `GINA_DEV_ENV` kept distinct so the container never runs dev-mode hot-reload; the image boots via `gina-init` + `gina-container` (SIGTERM drain) and the `EXPOSE` port is computed deterministically from the `gina-init` allocator. `${secret:KEY}` config placeholders ride byte-verbatim and resolve from the container environment at runtime — no secret value is ever read or baked at build time. Wire contract: `--emit` prints the synthesized Containerfile + entrypoint + context manifest and builds nothing (`--emit --format=json` emits `{ project, bundle, env, scope, image, tag, exposedPort, containerfile, entrypoint, context }`); `--format=json` one-shot emits `{ project, bundle, image, tag, imageId?, durationMs, host, exposedPort }` on stdout, exit 0; `--stream` emits NDJSON frames — `start` then `step` then `log` lines then a terminal `done` (carrying the one-shot shape) or `error` frame; failures exit 1 with the reason on stdout. Flags: `--env`, `--scope`, `--tag=<ref>` (default `<project>/<bundle>:<env>`), `--platform=linux/arm64|linux/amd64` (default build-host native), `--start-port-from` (default 3100), `--gina-version` (default: the project's registered framework version, installed from the npm registry).
12
+ ### Fixed
13
+ * Framework-emitted redirects (controller redirect calls and route-declared redirect controls) now carry Cache-Control: no-cache, no-store, must-revalidate plus Pragma and Expires whenever the request is classified as reverse-proxied, matching the existing dev-mode behavior. A proxied redirect target host is derived from proxy context, so a browser-cacheable 301 could permanently pin a transient value in client caches; the no-store set also rides the inter-bundle query 3xx forward path now.
14
+
9
15
  ## 0.5.10 - 2026-07-05
10
16
  ### Fixed
11
17
  * Fixed a cross-bundle `getRoute(...).toUrl()` link resolving to an unreachable internal host with a doubled web root on reverse-proxied deployments; a proxied request now resolves the public host for both the Isaac and Express engines.
package/README.md CHANGED
@@ -42,9 +42,10 @@ open https://localhost:3100
42
42
 
43
43
  > **npm 12+** blocks install scripts by default, and gina's post-install bootstraps `~/.gina` and the framework dependencies. Install with `npm install -g gina@latest --allow-scripts=gina`, or allow it once for all global installs with `npm config set allow-scripts=gina --location=user`. (Not needed on npm ≤ 11.)
44
44
 
45
- ## What's in 0.5.10
45
+ ## What's in 0.5.11
46
46
 
47
- - **Fixedserver-side cross-bundle `getRoute('route@bundle').toUrl()` now resolves the public host on reverse-proxied deployments (#B67).** A controller building a cross-bundle URL server-side e.g. `self.redirect(getRoute('<route>@<otherBundle>').toUrl())` could emit an unreachable internal host with a doubled web root on a proxied request; it now resolves the public host for both the Isaac and Express engines. This completes the `0.5.9` client-side cross-bundle URL fix (#B66) on the server side. Single-public-host-per-worker deployments are otherwise unchanged.
47
+ - **Added`gina image:build`: first-class OCI packaging.** Package a project bundle as a standard OCI image with one command: it synthesizes a `Containerfile` + build context from the project's registered state (bundles, entry, ports, env model, Node engine floor) and executes the build with buildah — natively on Linux, or on a container host reached over ssh (`GINA_CONTAINER_HOST=ssh://[user@]host[:port]` env override native buildah `container.host` in `~/.gina/<shortVersion>/settings.json`). A non-dev `--env` ships the release tree built in-image by `gina bundle:build`, so a production image never runs dev-mode hot-reload; the image boots via `gina-init` + `gina-container` (SIGTERM drain) and the `EXPOSE`d port is computed deterministically from the port allocator. `${secret:KEY}` placeholders ride byte-verbatim and resolve from the container environment at runtime — never baked. `--emit` prints the synthesized artifact without building; `--format=json` emits a one-shot machine-readable result; `--stream` emits NDJSON progress frames for CI/GUI consumers.
48
+ - **Fixed — proxied redirects now carry no-store cache headers (#B68).** Framework-emitted redirects on requests classified as reverse-proxied now include `Cache-Control: no-cache, no-store, must-revalidate` (+ `Pragma` / `Expires`), so a browser never caches a proxy-context-derived redirect; the inter-bundle query 3xx forward path inherits the set. Direct production redirects are byte-identical, and the `301` default and route-declared `param.code` are untouched.
48
49
 
49
50
  See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
50
51
 
package/ROADMAP.md CHANGED
@@ -35,6 +35,7 @@ This roadmap covers planned features, architectural improvements, new connectors
35
35
  | **Q3 2026** | `0.5.8` ✅ | `connector:models` — list a configured AI connector's provider models (the read sibling of `connector:test --connect`) · per-group `gina help [<group>]` · **Fixed**: reverse-proxy host context request-scoped — `PROXY_HOST` / `PROXY_HOSTNAME` no longer freeze at the first proxied request (single-hop and multi-hop `X-Forwarded-Host` both handled; raw `host:port` unchanged) · CLI help polish (per-group help output, clean message for an unknown action, em-dash flag typos) |
36
36
  | **Q3 2026** | `0.5.9` ✅ | **Security**: reverse-proxied deployments no longer disclose a bundle's internal `scheme://host:port` to the browser — the client `gina.config.hostname` and the fetched `/_gina/assets/routing.json` serve a public host-only origin and a host-stripped routing map to proxied clients (direct `host:port` access byte-identical), also fixing cross-bundle client `getRoute(...).toUrl()` which previously resolved to the unreachable internal host (#B66) · **Fixed**: the server-side URL / redirect / config resolvers request-scope the proxy host, so a worker serving mixed proxied + direct traffic (or several public hosts) no longer inherits a stale proxied host (#B66 S2b) · **Fixed**: `connector:add` / `connector:rm` / `connector:migrate --fix` no longer corrupt a comment-headed `connectors.json` · **Fixed**: a latent `ReferenceError` in server-side URL resolution for redirect-flagged routes |
37
37
  | **Q3 2026** | `0.5.10` ✅ | **Fixed**: server-side cross-bundle `getRoute('route@bundle').toUrl()` now resolves the public host on reverse-proxied deployments — a controller building a cross-bundle URL server-side (e.g. via `self.redirect`) could emit an unreachable internal host with a doubled web root on a proxied request; it now resolves the public host for both the Isaac and Express engines. Completes the `0.5.9` client-side cross-bundle URL fix on the server side (#B67) |
38
+ | **Q3 2026** | `0.5.11` ✅ | `image:build` — first-class OCI packaging: synthesizes a Containerfile + build context from the project's registered state (bundles, entry, ports, env model, node floor) and builds with buildah, natively on Linux or on a container host over ssh (env override → native → `container.host` settings fallback); dev/prod parity (a non-dev env ships the release tree built in-image), deterministic `EXPOSE`, `${secret:KEY}` placeholders never baked; `--emit` / `--format=json` / `--stream` NDJSON for CI and GUI consumers · **Fixed**: framework-emitted redirects on proxied requests carry no-store cache headers, so a browser never caches a proxy-context-derived redirect (the inter-bundle query 3xx forward path inherits the set; direct production redirects unchanged) |
38
39
  | **Q1 2027** | `0.5.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
39
40
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
40
41
 
@@ -92,6 +93,7 @@ Stub commands confirmed in source — handler files exist but are empty or comme
92
93
  | ✅ | **`framework:reset`** — Factory reset: clears `~/.gina` (settings, project registry, env config, port allocations) so the framework rebuilds to clean defaults on the next command — the runtime, package-manager-agnostic equivalent of a fresh install (works identically on Node and Bun, unlike the npm install-flag form). Project source files are never touched. Refuses while the daemon or any bundle is running (`framework:init`'s `process.kill`-based pidfile prune keeps the guard reliable even on `ps`-less images); `--force` overrides. Shorthand: `gina reset`. | `0.5.5-alpha.2` | 2026-06-21 |
93
94
  | ✅ | **`project:backup` / `project:restore`** — Archive a project's source tree to a `.zip` (`backup`, symlinks skipped), and rebuild + re-register a project from a backup `.zip` so it is immediately startable (`restore`). | `0.5.5-alpha.2` | 2026-06-19 |
94
95
  | ✅ | **`framework:man` / `project:man` / `bundle:man` / `service:man`** — Inline CLI manual pages. Runtime-renders the group's ronn `.1.md` (substituting `{version}`/`{year}`) when it exists (`framework` today), else falls back to that group's `help.txt`. No build step or markdown/man dependency. | `0.5.5-alpha.2` | 2026-06-20 |
96
+ | ✅ | **`image:build` — first-class OCI packaging** — Packages a project bundle as a standard OCI image: synthesizes a Containerfile + build context from the project's registered state (bundles, entry, ports, env model, node floor) and executes the build with buildah — natively on Linux, or on a container host reached over ssh (`GINA_CONTAINER_HOST=ssh://[user@]host[:port]` env override → native buildah → `container.host` settings fallback). The selected `--env` bakes dev/prod parity: a non-dev env ships the release tree built in-image by `gina bundle:build` (never dev-mode hot-reload); the image boots via `gina-init` + `gina-container` (SIGTERM drain) and `EXPOSE` is computed deterministically from the `gina-init` port allocator. `${secret:KEY}` config placeholders ride byte-verbatim and resolve from the container environment at runtime — never baked. `--emit` prints the Containerfile + context manifest without building; `--format=json` emits a one-shot `{ project, bundle, image, tag, imageId?, durationMs, host, exposedPort }`; `--stream` emits NDJSON progress frames (`start` → `step` → `log` → `done` \| `error`); failures exit 1 with the reason on stdout. | `0.5.11-alpha.2` | 2026-07-05 |
95
97
 
96
98
  ---
97
99
 
package/bin/cli CHANGED
@@ -344,6 +344,7 @@ async function onExec() {
344
344
  'dev:',
345
345
  'env:',
346
346
  'i18n:',
347
+ 'image:',
347
348
  'inspector:',
348
349
  'scope:',
349
350
  'framework:',
@@ -0,0 +1 @@
1
+ 0.5.11
@@ -2063,7 +2063,9 @@ function SuperController(options) {
2063
2063
  * And Where `ignoreWebRoot` is an optional parameter used to ignore web root settings (Standalone mode or user set web root)
2064
2064
  * `ignoreWebRoot` behaves the like set to `false` by default
2065
2065
  *
2066
- * N.B.: Gina will tell browsers not to cache redirections if you are using `dev` environement
2066
+ * N.B.: Gina will tell browsers not to cache redirections when running in the `dev` environment
2067
+ * OR when the request is classified as reverse-proxied — a proxied redirect's target host is
2068
+ * composed from proxy context, so a browser-cacheable 301 would freeze a transient value
2067
2069
  *
2068
2070
  * Trobleshouting:
2069
2071
  * ---------------
@@ -2411,15 +2413,19 @@ function SuperController(options) {
2411
2413
  'location': path
2412
2414
  };
2413
2415
 
2414
- if (self.isCacheless()) {
2415
- res.writeHead(code, merge(headInfos, {
2416
+ // A proxied request's redirect target is composed from proxy context (see the
2417
+ // `hostname` pick above): a browser-cacheable 301 would freeze a transient value
2418
+ // permanently. Folded into `headInfos` — not the writeHead call — so the
2419
+ // inter-bundle query 3xx intercepts, which replay `{ status, headers }`
2420
+ // verbatim, inherit the no-store set too.
2421
+ if (self.isCacheless() || isProxyHost) {
2422
+ headInfos = merge(headInfos, {
2416
2423
  'cache-control': 'no-cache, no-store, must-revalidate', // preventing browsers from using cache
2417
2424
  'pragma': 'no-cache',
2418
2425
  'expires': '0'
2419
- }))
2420
- } else {
2421
- res.writeHead(code, headInfos)
2426
+ });
2422
2427
  }
2428
+ res.writeHead(code, headInfos);
2423
2429
  // in case of query from another bundle waiting for a response
2424
2430
  var redirectObject = JSON.stringify({ status: code, headers: headInfos });
2425
2431
 
@@ -23,6 +23,7 @@ framework
23
23
  project
24
24
  bundle
25
25
  connector
26
+ image
26
27
  model
27
28
  dev
28
29
  view
@@ -0,0 +1,11 @@
1
+ [
2
+ "--env",
3
+ "--scope",
4
+ "--emit",
5
+ "--format",
6
+ "--stream",
7
+ "--tag",
8
+ "--platform",
9
+ "--start-port-from",
10
+ "--gina-version"
11
+ ]
@@ -0,0 +1,516 @@
1
+ var fs = require('fs');
2
+ var os = require('os');
3
+ var nodePath = require('path');
4
+ var spawn = require('child_process').spawn;
5
+ var spawnSync = require('child_process').spawnSync;
6
+
7
+ var CmdHelper = require('./../helper');
8
+ var console = lib.logger;
9
+
10
+ /**
11
+ * @module gina/lib/cmd/image/build
12
+ */
13
+ /**
14
+ * Packages a registered project bundle as a standard OCI image: synthesizes a
15
+ * Containerfile + build context from what the framework already knows about
16
+ * the project (bundles, entry, ports, env model, node floor), then executes
17
+ * the build with buildah — natively on a Linux host, or on a configurable
18
+ * container host reached over ssh.
19
+ *
20
+ * The synthesized artifact reuses the framework's own container mechanics:
21
+ * `gina-init` (idempotent env-var-driven `~/.gina` bootstrap) + `gina-container`
22
+ * (foreground bundle launcher, SIGTERM drain) as the entrypoint, and — when the
23
+ * selected env is not the dev env — an in-image `gina bundle:build` producing
24
+ * the release tree the launcher resolves (dev/prod parity, built by the
25
+ * framework itself). The `EXPOSE` port is computed with an exact replica of
26
+ * the `gina-init` allocator, so it always matches the port the bundle binds.
27
+ *
28
+ * `${secret:KEY}` config placeholders are NEVER resolved or baked: context
29
+ * files are copied byte-verbatim and this command never invokes the secrets
30
+ * resolver — references resolve from the container's environment at runtime.
31
+ *
32
+ * Container-host resolution precedence: the `GINA_CONTAINER_HOST` env var
33
+ * (explicit `ssh://[user@]host[:port]` override) wins; then a Linux host with
34
+ * buildah on PATH builds natively; then the `container.host` key of
35
+ * `~/.gina/<shortVersion>/settings.json`; otherwise the command fails with an
36
+ * actionable error naming both surfaces (exit 1). The remote path streams the
37
+ * context as a tarball over ssh stdin into a remote temp dir (buildah accepts
38
+ * only a directory context) and never opens any listening socket.
39
+ *
40
+ * Usage:
41
+ * gina image:build @<project> # single-bundle project
42
+ * gina image:build <bundle> @<project> --env=prod # explicit bundle + env
43
+ * gina image:build @<project> --emit # print Containerfile + context manifest, build nothing
44
+ * gina image:build @<project> --format=json # machine-readable one-shot result
45
+ * gina image:build @<project> --stream # NDJSON progress frames
46
+ *
47
+ * Output contract:
48
+ * - `--emit` prints the synthesized Containerfile, the entrypoint script and
49
+ * the context manifest (text), or `{ project, bundle, env, scope, image,
50
+ * tag, exposedPort, containerfile, entrypoint, context }` with
51
+ * `--format=json`. Nothing is built or staged.
52
+ * - `--format=json` (one-shot): `{ project, bundle, image, tag, imageId?,
53
+ * durationMs, host, exposedPort }` on stdout, exit 0.
54
+ * - `--stream`: NDJSON frames, one per line — `start` → `step` → `log`* →
55
+ * `done` | `error`; `done` carries the one-shot shape. All frames are
56
+ * written with synchronous `fs.writeSync` so `process.exit()` cannot
57
+ * truncate them on a pipe.
58
+ * - failures: the reason on stdout, exit 1 (an `error` frame in stream mode).
59
+ *
60
+ * Exit codes: 0 on success or a completed `--emit`; 1 on any usage error,
61
+ * unresolvable plan, missing container host, transfer failure or build failure.
62
+ *
63
+ * @class Build
64
+ * @constructor
65
+ * @param {object} opt - Parsed command-line options
66
+ * @param {object} opt.client - Socket client for terminal output
67
+ * @param {string[]} opt.argv - Full argv array
68
+ * @param {number} [opt.debugPort] - Node.js inspector port
69
+ * @param {boolean} [opt.debugBrkEnabled] - True when --inspect-brk is active
70
+ * @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
71
+ *
72
+ * @example
73
+ * // Inspect what would be built (nothing is executed).
74
+ * // $ gina image:build @myproject --emit
75
+ *
76
+ * @example
77
+ * // Build a production image and capture the result.
78
+ * // $ gina image:build demo @myproject --env=prod --format=json | jq .imageId
79
+ */
80
+ function Build(opt, cmd) {
81
+
82
+ var self = { format: 'text', emit: false, stream: false };
83
+
84
+ /**
85
+ * Pure OCI packaging primitives — synthesis, staging, port computation,
86
+ * descriptor resolution. See `lib/image-build/src/main.js`.
87
+ *
88
+ * @inner
89
+ * @constant
90
+ */
91
+ var imageBuild = lib.imageBuild;
92
+
93
+ /**
94
+ * Writes one NDJSON frame to stdout. Synchronous `fs.writeSync` (fd 1) so
95
+ * the frame survives the `process.exit()` that follows the terminal
96
+ * frames when stdout is a pipe. Mirrors `connector:infer`.
97
+ *
98
+ * @inner
99
+ * @private
100
+ * @param {object} frame - The frame (`type` plus payload fields)
101
+ * @returns {void}
102
+ */
103
+ var emitFrame = function (frame) {
104
+ fs.writeSync(1, JSON.stringify(frame) + '\n');
105
+ };
106
+
107
+ /**
108
+ * Emits a `step` progress frame in stream mode (no-op otherwise).
109
+ *
110
+ * @inner
111
+ * @private
112
+ * @param {string} name - Step name: synthesize | stage | connect | build
113
+ * @returns {void}
114
+ */
115
+ var emitStep = function (name) {
116
+ if (self.stream) emitFrame({ type: 'step', name: name });
117
+ };
118
+
119
+ /**
120
+ * Terminal failure: the reason goes to stdout (an `error` frame in stream
121
+ * mode, plain text otherwise — the family convention consumers already
122
+ * ANSI-strip), then exit 1.
123
+ *
124
+ * @inner
125
+ * @private
126
+ * @param {string} reason - User-facing failure reason
127
+ * @returns {void}
128
+ */
129
+ var fail = function (reason) {
130
+ if (self.stream) {
131
+ emitFrame({ type: 'error', error: { message: reason } });
132
+ } else {
133
+ console.error(reason);
134
+ }
135
+ process.exit(1);
136
+ };
137
+
138
+ /**
139
+ * Extracts positional arguments (neither `--flags` nor `@project`) from
140
+ * argv after the task name. For `image:build` the only positional is the
141
+ * optional bundle name.
142
+ *
143
+ * @inner
144
+ * @private
145
+ * @param {string[]} argv - process.argv
146
+ * @returns {string[]} Positional tokens in order
147
+ */
148
+ var extractPositionals = function (argv) {
149
+ var out = [];
150
+ for (var i = 3, len = argv.length; i < len; i++) {
151
+ var t = argv[i];
152
+ if (/^\-/.test(t)) continue;
153
+ if (/^@/.test(t)) continue;
154
+ out.push(t);
155
+ }
156
+ return out;
157
+ };
158
+
159
+ /**
160
+ * Parse flags, resolve the project + build plan, then route to `--emit`
161
+ * or the real build.
162
+ *
163
+ * @inner
164
+ * @private
165
+ */
166
+ var init = function () {
167
+
168
+ new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
169
+ if ( !isCmdConfigured() ) return false;
170
+
171
+ var p = self.params || {};
172
+ self.emit = !!p['emit'];
173
+ self.stream = !!p['stream'];
174
+
175
+ // Value flags — argv walk with a first-`=` split (values may not be
176
+ // re-split on later `=` chars), mirroring connector:infer.
177
+ for (var i = 3, len = process.argv.length; i < len; i++) {
178
+ var arg = process.argv[i];
179
+ var eq = arg.indexOf('=');
180
+ if (!/^\-\-/.test(arg) || eq < 0) continue;
181
+ var key = arg.substring(2, eq);
182
+ var val = arg.substring(eq + 1);
183
+ if (key === 'format') self.format = val || 'text';
184
+ if (key === 'tag') self.tagRef = val;
185
+ if (key === 'platform') self.platform = val;
186
+ if (key === 'start-port-from') self.portStart = val;
187
+ if (key === 'gina-version') self.ginaVersion = val;
188
+ if (key === 'env') self.env = val;
189
+ if (key === 'scope') self.scope = val;
190
+ }
191
+
192
+ if (['text', 'json'].indexOf(self.format) < 0) {
193
+ return fail('unsupported --format `' + self.format + '` — use `text` or `json`');
194
+ }
195
+
196
+ var positionals = extractPositionals(process.argv);
197
+ var bundleName = positionals[0] || null;
198
+
199
+ if ( typeof(self.projectName) == 'undefined' || self.projectName == null ) {
200
+ return fail('`image:build` requires `@<project>` (or run it from inside a registered project). Usage: gina image:build [<bundle>] @<project> [--env=<env>] [--emit|--format=json|--stream]');
201
+ }
202
+ if ( typeof(self.projects[self.projectName]) == 'undefined' ) {
203
+ return fail('project @' + self.projectName + ' is not registered — run `gina project:list`, or register it with `gina project:import @' + self.projectName + ' --path=<project_path>`');
204
+ }
205
+
206
+ var projectEntry = self.projects[self.projectName];
207
+ var projectPath = projectEntry.path;
208
+
209
+ var manifest = null;
210
+ try {
211
+ manifest = requireJSON(_(projectPath + '/manifest.json', true));
212
+ } catch (e) {
213
+ return fail('could not read ' + projectPath + '/manifest.json — ' + (e.message || e));
214
+ }
215
+
216
+ var hasDependencies = false;
217
+ try {
218
+ var projectPkg = requireJSON(_(projectPath + '/package.json', true));
219
+ hasDependencies = !!(projectPkg.dependencies && Object.keys(projectPkg.dependencies).length > 0);
220
+ } catch (e) {
221
+ hasDependencies = false; // no package.json → nothing to install
222
+ }
223
+ var hasLockfile = fs.existsSync(projectPath + '/package-lock.json');
224
+
225
+ // The framework's own engine range — the node floor for the base image.
226
+ var ginaPkg = require(__dirname + '/../../../../../package.json');
227
+
228
+ var plan = null;
229
+ try {
230
+ plan = imageBuild.resolveBuildPlan({
231
+ projectName : self.projectName,
232
+ projectEntry : projectEntry,
233
+ manifest : manifest,
234
+ bundleName : bundleName,
235
+ env : self.env,
236
+ scope : self.scope,
237
+ portStart : self.portStart,
238
+ tag : self.tagRef,
239
+ ginaVersion : self.ginaVersion,
240
+ platform : self.platform,
241
+ nodeEngine : (ginaPkg.engine && ginaPkg.engine.node) || null,
242
+ hasDependencies : hasDependencies,
243
+ hasLockfile : hasLockfile
244
+ });
245
+ } catch (e) {
246
+ return fail(e.message || String(e));
247
+ }
248
+
249
+ if (self.emit) {
250
+ return doEmit(plan, projectPath);
251
+ }
252
+ return doBuild(plan, projectPath);
253
+ };
254
+
255
+ /**
256
+ * `--emit`: print the synthesized Containerfile, entrypoint and context
257
+ * manifest — the expert-inspectable form. Builds and stages NOTHING.
258
+ *
259
+ * @inner
260
+ * @private
261
+ * @param {object} plan - The resolved build plan
262
+ * @param {string} projectPath - Project root on disk
263
+ * @returns {void}
264
+ */
265
+ var doEmit = function (plan, projectPath) {
266
+ var containerfile = imageBuild.renderContainerfile(plan);
267
+ var entrypoint = imageBuild.renderEntrypoint();
268
+ var context = imageBuild.listContext(plan, projectPath);
269
+
270
+ if (self.format === 'json') {
271
+ fs.writeSync(1, JSON.stringify({
272
+ project : plan.projectName,
273
+ bundle : plan.bundleName,
274
+ env : plan.env,
275
+ scope : plan.scope,
276
+ image : plan.image,
277
+ tag : plan.tag,
278
+ exposedPort : plan.exposedPort,
279
+ containerfile : containerfile,
280
+ entrypoint : entrypoint,
281
+ context : context
282
+ }) + '\n');
283
+ } else {
284
+ fs.writeSync(1,
285
+ containerfile +
286
+ '\n# --- gina-entrypoint.sh ---\n\n' + entrypoint +
287
+ '\n# --- context manifest (' + context.length + ' files) ---\n\n' +
288
+ context.join('\n') + '\n'
289
+ );
290
+ }
291
+ process.exit(0);
292
+ };
293
+
294
+ /**
295
+ * Reads the machine-level container-host fallback from
296
+ * `~/.gina/<shortVersion>/settings.json` (`container.host`). Absent or
297
+ * unreadable settings resolve to null — resolution then falls through to
298
+ * the native/error branches.
299
+ *
300
+ * @inner
301
+ * @private
302
+ * @returns {string|null} The configured descriptor, or null
303
+ */
304
+ var getSettingsContainerHost = function () {
305
+ try {
306
+ var version = getEnvVar('GINA_VERSION') || require(__dirname + '/../../../../../package.json').version;
307
+ var short = version.split('.').slice(0, 2).join('.');
308
+ var raw = fs.readFileSync(GINA_HOMEDIR + '/' + short + '/settings.json', 'utf8');
309
+ var parsed = JSON.parse(raw);
310
+ return (parsed.container && parsed.container.host) ? String(parsed.container.host) : null;
311
+ } catch (e) {
312
+ return null;
313
+ }
314
+ };
315
+
316
+ /**
317
+ * Builds the remote shell command for the ssh path. buildah accepts only
318
+ * a DIRECTORY context (no stdin-tar form), so the context tarball is
319
+ * streamed over ssh stdin into a remote temp dir, built there, and the
320
+ * image id is echoed back behind a parseable marker. Every interpolated
321
+ * token (tag, platform) is regex-validated by the plan resolver — no
322
+ * user-controlled free text reaches the command line.
323
+ *
324
+ * @inner
325
+ * @private
326
+ * @param {object} plan - The resolved build plan
327
+ * @returns {string} The remote command (single ssh argv element)
328
+ */
329
+ var buildRemoteCommand = function (plan) {
330
+ var platformOpt = plan.platform ? ' --platform ' + plan.platform : '';
331
+ return 'sh -c \'set -e; D=$(mktemp -d); trap "rm -rf \\"$D\\"" EXIT; tar -xf - -C "$D"; ' +
332
+ 'buildah build --format oci -f "$D/Containerfile" -t ' + plan.tag + platformOpt +
333
+ ' --iidfile "$D/.gina-iid" "$D" 2>&1; ' +
334
+ 'echo "__GINA_IID__$(cat "$D/.gina-iid")"\'';
335
+ };
336
+
337
+ /**
338
+ * Stages the context, resolves the container host, executes the buildah
339
+ * build (native or over ssh), and emits the one-shot result / stream
340
+ * frames. All stdout writes are synchronous.
341
+ *
342
+ * @inner
343
+ * @private
344
+ * @param {object} plan - The resolved build plan
345
+ * @param {string} projectPath - Project root on disk
346
+ * @returns {void}
347
+ */
348
+ var doBuild = function (plan, projectPath) {
349
+ var t0 = Date.now();
350
+
351
+ var hasBuildah = false;
352
+ if (process.platform === 'linux') {
353
+ try {
354
+ hasBuildah = (spawnSync('buildah', ['--version']).status === 0);
355
+ } catch (e) {
356
+ hasBuildah = false;
357
+ }
358
+ }
359
+
360
+ // The CLI bootstrap sweeps every GINA_* OS env var into process.gina
361
+ // and DELETES it from process.env (utils/helper.js `filterArgs`), so
362
+ // the override must be read through the injected getEnvVar global;
363
+ // the process.env fallback covers contexts where the sweep never ran.
364
+ var envHost = getEnvVar('GINA_CONTAINER_HOST') || process.env.GINA_CONTAINER_HOST || null;
365
+
366
+ var host = null;
367
+ try {
368
+ host = imageBuild.resolveContainerHost({
369
+ envValue : envHost,
370
+ settingsValue : getSettingsContainerHost(),
371
+ platform : process.platform,
372
+ hasBuildah : hasBuildah
373
+ });
374
+ } catch (e) {
375
+ return fail(e.message || String(e));
376
+ }
377
+ if (host.mode === 'error') {
378
+ return fail(host.reason);
379
+ }
380
+ var hostLabel = (host.mode === 'native') ? 'native' : host.descriptor;
381
+
382
+ if (self.stream) {
383
+ emitFrame({
384
+ type : 'start',
385
+ project : plan.projectName,
386
+ bundle : plan.bundleName,
387
+ env : plan.env,
388
+ scope : plan.scope,
389
+ image : plan.image,
390
+ tag : plan.tag,
391
+ host : hostLabel,
392
+ exposedPort : plan.exposedPort
393
+ });
394
+ } else if (self.format === 'text') {
395
+ fs.writeSync(1, '[image:build] building ' + plan.tag + ' (' + plan.bundleName + '@' + plan.projectName + ', env: ' + plan.env + ') on ' + hostLabel + '\n');
396
+ }
397
+
398
+ emitStep('stage');
399
+ var stagingDir = nodePath.join(os.tmpdir(), 'gina-image-build-' + plan.projectName + '-' + plan.bundleName + '-' + Date.now());
400
+ try {
401
+ imageBuild.stageContext(plan, projectPath, stagingDir);
402
+ } catch (e) {
403
+ return fail('context staging failed: ' + (e.message || e));
404
+ }
405
+
406
+ emitStep('build');
407
+ var child = null;
408
+ var tarProc = null;
409
+ if (host.mode === 'native') {
410
+ var args = ['build', '--format', 'oci', '-f', stagingDir + '/Containerfile', '-t', plan.tag, '--iidfile', stagingDir + '/.gina-iid'];
411
+ if (plan.platform) { args.push('--platform', plan.platform); }
412
+ args.push(stagingDir);
413
+ child = spawn('buildah', args);
414
+ } else {
415
+ // -p only when the descriptor names a port explicitly — a bare
416
+ // ssh://host must let the user's ssh config decide (host aliases
417
+ // may define their own Port/ProxyCommand).
418
+ var sshArgs = ['-o', 'BatchMode=yes', '-o', 'ConnectTimeout=10'];
419
+ if (host.parsed.port) { sshArgs.push('-p', String(host.parsed.port)); }
420
+ sshArgs.push(host.parsed.sshTarget, buildRemoteCommand(plan));
421
+ child = spawn('ssh', sshArgs);
422
+ tarProc = spawn('tar', ['-cf', '-', '-C', stagingDir, '.']);
423
+ tarProc.on('error', function (err) {
424
+ fail('context transfer failed — could not run tar: ' + (err.message || err));
425
+ });
426
+ tarProc.stdout.pipe(child.stdin);
427
+ child.stdin.on('error', function () { /* remote closed early — surfaced via exit code */ });
428
+ }
429
+
430
+ var imageId = null;
431
+ var logTail = [];
432
+ var pending = '';
433
+
434
+ /**
435
+ * Line-buffers a child stream chunk: captures the image-id marker,
436
+ * keeps a short tail for failure reporting, and forwards each line
437
+ * (stream mode → `log` frames; text mode → passthrough).
438
+ *
439
+ * @inner
440
+ * @private
441
+ * @param {Buffer|string} chunk - Raw child output
442
+ * @returns {void}
443
+ */
444
+ var onChunk = function (chunk) {
445
+ pending += chunk.toString();
446
+ var idx;
447
+ while ((idx = pending.indexOf('\n')) > -1) {
448
+ var line = pending.substring(0, idx);
449
+ pending = pending.substring(idx + 1);
450
+ var m = line.match(/^__GINA_IID__(sha256:[0-9a-f]+|[0-9a-f]+)\s*$/);
451
+ if (m) { imageId = m[1]; continue; }
452
+ logTail.push(line);
453
+ if (logTail.length > 20) logTail.shift();
454
+ if (self.stream) {
455
+ emitFrame({ type: 'log', line: line });
456
+ } else if (self.format === 'text') {
457
+ fs.writeSync(1, line + '\n');
458
+ }
459
+ }
460
+ };
461
+
462
+ child.stdout.on('data', onChunk);
463
+ child.stderr.on('data', onChunk);
464
+ child.on('error', function (err) {
465
+ fail((host.mode === 'native' ? '`buildah`' : '`ssh`') + ' could not be spawned: ' + (err.message || err));
466
+ });
467
+
468
+ child.on('close', function (code) {
469
+ if (host.mode === 'native' && imageId === null) {
470
+ try {
471
+ imageId = fs.readFileSync(stagingDir + '/.gina-iid', 'utf8').trim() || null;
472
+ } catch (e) { /* build failed before the iidfile was written */ }
473
+ }
474
+
475
+ if (code === 0 && imageId) {
476
+ try { fs.rmSync(stagingDir, { recursive: true, force: true }); } catch (e) { /* best effort */ }
477
+ var oneShot = imageBuild.buildOneShot(plan, {
478
+ imageId : imageId,
479
+ durationMs : Date.now() - t0,
480
+ host : hostLabel
481
+ });
482
+ if (self.stream) {
483
+ oneShot.type = 'done';
484
+ emitFrame(oneShot);
485
+ } else if (self.format === 'json') {
486
+ fs.writeSync(1, JSON.stringify(oneShot) + '\n');
487
+ } else {
488
+ fs.writeSync(1, '[image:build] built ' + plan.tag + ' (' + imageId + ') on ' + hostLabel + ' in ' + oneShot.durationMs + ' ms\n');
489
+ }
490
+ process.exit(0);
491
+ }
492
+
493
+ // Failure — staging dir kept for inspection.
494
+ var reason = 'build failed (exit ' + code + ') on ' + hostLabel;
495
+ if (/exec format error/.test(logTail.join('\n'))) {
496
+ reason += ' — the build host lacks qemu/binfmt emulation for ' + (plan.platform || 'the requested platform');
497
+ }
498
+ if (host.mode === 'ssh' && /Host key verification failed/.test(logTail.join('\n'))) {
499
+ reason += ' — the host key is not trusted yet: run `ssh ' + host.parsed.sshTarget + '` once to accept it, then retry';
500
+ }
501
+ if (code === 0 && !imageId) {
502
+ reason = 'build reported success but no image id was captured on ' + hostLabel;
503
+ }
504
+ if (self.format !== 'text' || self.stream) {
505
+ var tail = logTail.slice(-5).join(' | ');
506
+ if (tail) reason += ' — last output: ' + tail;
507
+ }
508
+ reason += ' (context kept at ' + stagingDir + ')';
509
+ fail(reason);
510
+ });
511
+ };
512
+
513
+ init();
514
+ }
515
+
516
+ module.exports = Build;