gina 0.5.26 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +34 -22
  3. package/ROADMAP.md +43 -16
  4. package/bin/cli +12 -1
  5. package/bin/gina-init +15 -1
  6. package/framework/v0.6.0/VERSION +1 -0
  7. package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.js +36 -1
  8. package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js +601 -0
  9. package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  10. package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  11. package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/session-store.v3.js +52 -84
  12. package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/session-store.v4.js +58 -84
  13. package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/session-store.js +5 -2
  14. package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/session-store.js +5 -2
  15. package/framework/{v0.5.26 → v0.6.0}/core/connectors/scylladb/lib/session-store.js +5 -2
  16. package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/lib/session-store.js +17 -3
  17. package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/session/src/main.js +142 -9
  18. package/framework/{v0.5.26 → v0.6.0}/core/router.js +101 -11
  19. package/framework/{v0.5.26 → v0.6.0}/core/server.js +91 -1
  20. package/framework/{v0.5.26 → v0.6.0}/core/template/conf/settings.json +3 -0
  21. package/framework/v0.6.0/lib/audit/src/main.js +916 -0
  22. package/framework/v0.6.0/lib/authn/package.json +7 -0
  23. package/framework/v0.6.0/lib/authn/src/lockout.js +615 -0
  24. package/framework/v0.6.0/lib/authn/src/main.js +899 -0
  25. package/framework/v0.6.0/lib/authn/src/totp.js +418 -0
  26. package/framework/v0.6.0/lib/cmd/audit/arguments.json +5 -0
  27. package/framework/v0.6.0/lib/cmd/audit/help.txt +50 -0
  28. package/framework/v0.6.0/lib/cmd/audit/verify.js +294 -0
  29. package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/init.js +11 -0
  30. package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/tail.js +5 -1
  31. package/framework/{v0.5.26 → v0.6.0}/lib/cmd/gina.1.md +1 -0
  32. package/framework/{v0.5.26 → v0.6.0}/lib/index.js +13 -0
  33. package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/file/index.js +11 -1
  34. package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/mq/speaker.js +8 -1
  35. package/framework/v0.6.0/lib/net-locality/package.json +17 -0
  36. package/framework/v0.6.0/lib/net-locality/src/main.js +174 -0
  37. package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-filters/src/main.js +13 -0
  38. package/framework/{v0.5.26 → v0.6.0}/lib/routing/src/main.js +36 -1
  39. package/framework/{v0.5.26 → v0.6.0}/lib/swig-filters/src/main.js +13 -0
  40. package/framework/{v0.5.26 → v0.6.0}/package.json +1 -1
  41. package/gna.js +4 -4
  42. package/llms.txt +19 -2
  43. package/package.json +3 -3
  44. package/schema/connectors.json +2 -3
  45. package/schema/settings.json +101 -0
  46. package/types/index.d.ts +4 -0
  47. package/framework/v0.5.26/VERSION +0 -1
  48. package/framework/v0.5.26/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -599
  49. package/framework/v0.5.26/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  50. package/framework/v0.5.26/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  51. package/framework/v0.5.26/lib/audit/src/main.js +0 -456
  52. /package/framework/{v0.5.26 → v0.6.0}/AUTHORS +0 -0
  53. /package/framework/{v0.5.26 → v0.6.0}/LICENSE +0 -0
  54. /package/framework/{v0.5.26 → v0.6.0}/core/asset/html/nolayout.html +0 -0
  55. /package/framework/{v0.5.26 → v0.6.0}/core/asset/html/static.html +0 -0
  56. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/android-chrome-192x192.png +0 -0
  57. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/android-chrome-512x512.png +0 -0
  58. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/apple-touch-icon.png +0 -0
  59. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/favicon-16x16.png +0 -0
  60. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/favicon-32x32.png +0 -0
  61. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/favicon.ico +0 -0
  62. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/README.md +0 -0
  63. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  64. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  65. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  66. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  67. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  68. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  69. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  70. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  71. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  72. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  73. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  74. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  75. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  76. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  77. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  78. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  79. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  80. /package/framework/{v0.5.26 → v0.6.0}/core/config.js +0 -0
  81. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/ai/index.js +0 -0
  82. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/ai/lib/connector.js +0 -0
  83. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/index.js +0 -0
  84. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/connector.js +0 -0
  85. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  86. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  87. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/n1ql.js +0 -0
  88. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/session-store.js +0 -0
  89. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/index.js +0 -0
  90. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/connector.js +0 -0
  91. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/job-store.js +0 -0
  92. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  93. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mysql/index.js +0 -0
  94. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mysql/lib/connector.js +0 -0
  95. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/postgresql/index.js +0 -0
  96. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/postgresql/lib/connector.js +0 -0
  97. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/index.js +0 -0
  98. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/connector.js +0 -0
  99. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/job-store.js +0 -0
  100. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/render-cache-store.js +0 -0
  101. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/scylladb/index.js +0 -0
  102. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/scylladb/lib/connector.js +0 -0
  103. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sql-parser.js +0 -0
  104. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/index.js +0 -0
  105. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/lib/connector.js +0 -0
  106. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/lib/job-store.js +0 -0
  107. /package/framework/{v0.5.26 → v0.6.0}/core/content.encoding +0 -0
  108. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.framework.js +0 -0
  109. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.js +0 -0
  110. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-json.js +0 -0
  111. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-nunjucks-async.js +0 -0
  112. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-nunjucks.js +0 -0
  113. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-stream.js +0 -0
  114. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-swig-async.js +0 -0
  115. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-swig.js +0 -0
  116. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-v1.js +0 -0
  117. /package/framework/{v0.5.26 → v0.6.0}/core/controller/index.js +0 -0
  118. /package/framework/{v0.5.26 → v0.6.0}/core/controller/inspector-window-emit.js +0 -0
  119. /package/framework/{v0.5.26 → v0.6.0}/core/controller/release-banner.js +0 -0
  120. /package/framework/{v0.5.26 → v0.6.0}/core/dev/index.js +0 -0
  121. /package/framework/{v0.5.26 → v0.6.0}/core/dev/lib/class.js +0 -0
  122. /package/framework/{v0.5.26 → v0.6.0}/core/dev/lib/factory.js +0 -0
  123. /package/framework/{v0.5.26 → v0.6.0}/core/dev/lib/tools.js +0 -0
  124. /package/framework/{v0.5.26 → v0.6.0}/core/gna.js +0 -0
  125. /package/framework/{v0.5.26 → v0.6.0}/core/locales/README.md +0 -0
  126. /package/framework/{v0.5.26 → v0.6.0}/core/locales/currency.json +0 -0
  127. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/language/en.json +0 -0
  128. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/language/fr.json +0 -0
  129. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/region/en.json +0 -0
  130. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/region/fr.json +0 -0
  131. /package/framework/{v0.5.26 → v0.6.0}/core/locales/index.js +0 -0
  132. /package/framework/{v0.5.26 → v0.6.0}/core/mime.types +0 -0
  133. /package/framework/{v0.5.26 → v0.6.0}/core/model/entity.js +0 -0
  134. /package/framework/{v0.5.26 → v0.6.0}/core/model/index.js +0 -0
  135. /package/framework/{v0.5.26 → v0.6.0}/core/model/template/entityFactory.js +0 -0
  136. /package/framework/{v0.5.26 → v0.6.0}/core/model/template/index.js +0 -0
  137. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/README.md +0 -0
  138. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/index.js +0 -0
  139. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/csrf/README.md +0 -0
  140. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/csrf/package.json +0 -0
  141. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/csrf/src/main.js +0 -0
  142. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/README.md +0 -0
  143. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coep/README.md +0 -0
  144. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coep/package.json +0 -0
  145. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  146. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coop/README.md +0 -0
  147. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coop/package.json +0 -0
  148. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  149. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/corp/README.md +0 -0
  150. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/corp/package.json +0 -0
  151. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  152. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/csp/README.md +0 -0
  153. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/csp/package.json +0 -0
  154. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  155. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  156. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  157. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  158. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  159. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  160. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  161. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  162. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  163. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  164. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/package.json +0 -0
  165. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  166. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  167. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  168. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/src/main.js +0 -0
  169. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  170. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  171. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  172. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  173. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  174. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  175. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  176. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  177. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  178. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  179. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  180. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  181. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  182. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  183. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  184. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  185. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  186. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  187. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/session/README.md +0 -0
  188. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/session/package.json +0 -0
  189. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/README.md +0 -0
  190. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/build.json +0 -0
  191. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/package.json +0 -0
  192. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/src/main.js +0 -0
  193. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/README.md +0 -0
  194. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/build.json +0 -0
  195. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/package.json +0 -0
  196. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/src/form-validator.js +0 -0
  197. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/src/main.js +0 -0
  198. /package/framework/{v0.5.26 → v0.6.0}/core/server.express.js +0 -0
  199. /package/framework/{v0.5.26 → v0.6.0}/core/server.isaac.js +0 -0
  200. /package/framework/{v0.5.26 → v0.6.0}/core/status.codes +0 -0
  201. /package/framework/{v0.5.26 → v0.6.0}/core/template/_gitignore +0 -0
  202. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/app.json +0 -0
  203. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  204. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/routing.json +0 -0
  205. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/settings.json +0 -0
  206. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  207. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/templates.json +0 -0
  208. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  209. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  210. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  211. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  212. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/index.js +0 -0
  213. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/locales/en.json +0 -0
  214. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  215. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  216. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  217. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  218. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  219. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  220. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  221. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  222. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/readme.md +0 -0
  223. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/sw.js +0 -0
  224. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  225. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  226. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  227. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  228. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  229. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  230. /package/framework/{v0.5.26 → v0.6.0}/core/template/command/gina.bat.tpl +0 -0
  231. /package/framework/{v0.5.26 → v0.6.0}/core/template/command/gina.tpl +0 -0
  232. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/env.json +0 -0
  233. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/manifest.json +0 -0
  234. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/package.json +0 -0
  235. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/statics.json +0 -0
  236. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/templates.json +0 -0
  237. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/client/json/401.json +0 -0
  238. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/client/json/403.json +0 -0
  239. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/client/json/404.json +0 -0
  240. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/server/html/50x.html +0 -0
  241. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/server/json/500.json +0 -0
  242. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/server/json/503.json +0 -0
  243. /package/framework/{v0.5.26 → v0.6.0}/core/template/extensions/logger/config.json +0 -0
  244. /package/framework/{v0.5.26 → v0.6.0}/helpers/console.js +0 -0
  245. /package/framework/{v0.5.26 → v0.6.0}/helpers/context.js +0 -0
  246. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/LICENSE +0 -0
  247. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/README.md +0 -0
  248. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/package.json +0 -0
  249. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/src/main.js +0 -0
  250. /package/framework/{v0.5.26 → v0.6.0}/helpers/dateFormat.js +0 -0
  251. /package/framework/{v0.5.26 → v0.6.0}/helpers/index.js +0 -0
  252. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/LICENSE +0 -0
  253. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/README.md +0 -0
  254. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/package.json +0 -0
  255. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/src/main.js +0 -0
  256. /package/framework/{v0.5.26 → v0.6.0}/helpers/path.js +0 -0
  257. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/README.md +0 -0
  258. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/package.json +0 -0
  259. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/src/api-error.js +0 -0
  260. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/src/main.js +0 -0
  261. /package/framework/{v0.5.26 → v0.6.0}/helpers/prototypes.js +0 -0
  262. /package/framework/{v0.5.26 → v0.6.0}/helpers/task.js +0 -0
  263. /package/framework/{v0.5.26 → v0.6.0}/helpers/text.js +0 -0
  264. /package/framework/{v0.5.26 → v0.6.0}/lib/admin/package.json +0 -0
  265. /package/framework/{v0.5.26 → v0.6.0}/lib/admin/src/main.js +0 -0
  266. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/README.md +0 -0
  267. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/build.json +0 -0
  268. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/package.json +0 -0
  269. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/src/dep/jszip.min.js +0 -0
  270. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/src/main.js +0 -0
  271. /package/framework/{v0.5.26 → v0.6.0}/lib/async/package.json +0 -0
  272. /package/framework/{v0.5.26 → v0.6.0}/lib/async/src/main.js +0 -0
  273. /package/framework/{v0.5.26 → v0.6.0}/lib/audit/package.json +0 -0
  274. /package/framework/{v0.5.26 → v0.6.0}/lib/audit-store.js +0 -0
  275. /package/framework/{v0.5.26 → v0.6.0}/lib/authz-gate/package.json +0 -0
  276. /package/framework/{v0.5.26 → v0.6.0}/lib/authz-gate/src/main.js +0 -0
  277. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/README.md +0 -0
  278. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/build.json +0 -0
  279. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/package.json +0 -0
  280. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/src/main.js +0 -0
  281. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/aliases.json +0 -0
  282. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/add.js +0 -0
  283. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/arguments.json +0 -0
  284. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/build.js +0 -0
  285. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/copy.js +0 -0
  286. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/cp.js +0 -0
  287. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/help.js +0 -0
  288. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/help.txt +0 -0
  289. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  290. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/list.js +0 -0
  291. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/man.js +0 -0
  292. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/mcp-start.js +0 -0
  293. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/mcp.js +0 -0
  294. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/oas.js +0 -0
  295. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/openapi.js +0 -0
  296. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/remove.js +0 -0
  297. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/rename.js +0 -0
  298. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/restart.js +0 -0
  299. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/rm.js +0 -0
  300. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/start.js +0 -0
  301. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/status.js +0 -0
  302. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/stop.js +0 -0
  303. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/types.js +0 -0
  304. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/arguments.json +0 -0
  305. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/clear.js +0 -0
  306. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/help.txt +0 -0
  307. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/stats.js +0 -0
  308. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/add.js +0 -0
  309. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/arguments.json +0 -0
  310. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/help.js +0 -0
  311. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/help.txt +0 -0
  312. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/infer.js +0 -0
  313. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/list.js +0 -0
  314. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/migrate.js +0 -0
  315. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/models.js +0 -0
  316. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/remove.js +0 -0
  317. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/rm.js +0 -0
  318. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/test.js +0 -0
  319. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/arguments.json +0 -0
  320. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/help.js +0 -0
  321. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/help.txt +0 -0
  322. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/man.js +0 -0
  323. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/ps.js +0 -0
  324. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/stop.js +0 -0
  325. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/add.js +0 -0
  326. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/arguments.json +0 -0
  327. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/help.txt +0 -0
  328. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/args.js +0 -0
  329. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/namespace.js +0 -0
  330. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  331. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/reference-scan.js +0 -0
  332. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/scaffold.js +0 -0
  333. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/remove.js +0 -0
  334. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/rename.js +0 -0
  335. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/rm.js +0 -0
  336. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/add.js +0 -0
  337. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/get.js +0 -0
  338. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/help.js +0 -0
  339. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/help.txt +0 -0
  340. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/link-dev.js +0 -0
  341. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/list.js +0 -0
  342. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/remove.js +0 -0
  343. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/rm.js +0 -0
  344. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/set.js +0 -0
  345. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/unset.js +0 -0
  346. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/use.js +0 -0
  347. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/add.js +0 -0
  348. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/arguments.json +0 -0
  349. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/build.js +0 -0
  350. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/dot.js +0 -0
  351. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/get.js +0 -0
  352. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/help.js +0 -0
  353. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/help.txt +0 -0
  354. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/link-node-modules.js +0 -0
  355. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/link.js +0 -0
  356. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/list.js +0 -0
  357. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/man.js +0 -0
  358. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/msg.json +0 -0
  359. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/open.js +0 -0
  360. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/remove.js +0 -0
  361. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/reset.js +0 -0
  362. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/restart.js +0 -0
  363. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/set.js +0 -0
  364. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/start.js +0 -0
  365. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/status.js +0 -0
  366. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/stop.js +0 -0
  367. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/update.js +0 -0
  368. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/version.js +0 -0
  369. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/gina-dev.1.md +0 -0
  370. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/gina-framework.1.md +0 -0
  371. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/helper.js +0 -0
  372. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/add.js +0 -0
  373. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/arguments.json +0 -0
  374. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/export.js +0 -0
  375. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/help.js +0 -0
  376. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/help.txt +0 -0
  377. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/import.js +0 -0
  378. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/scan.js +0 -0
  379. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/_host.js +0 -0
  380. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/arguments.json +0 -0
  381. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/build.js +0 -0
  382. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/help.js +0 -0
  383. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/help.txt +0 -0
  384. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/list.js +0 -0
  385. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/man.js +0 -0
  386. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/rm.js +0 -0
  387. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/run.js +0 -0
  388. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/index.js +0 -0
  389. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/inspector/help.js +0 -0
  390. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/inspector/help.txt +0 -0
  391. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/inspector/open.js +0 -0
  392. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/man-render.js +0 -0
  393. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/arguments.json +0 -0
  394. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/help.js +0 -0
  395. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/help.txt +0 -0
  396. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/kill.js +0 -0
  397. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/list.js +0 -0
  398. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/msg.json +0 -0
  399. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/help.js +0 -0
  400. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/help.txt +0 -0
  401. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/inc/scan.js +0 -0
  402. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/list.js +0 -0
  403. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/reset.js +0 -0
  404. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/set.js +0 -0
  405. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/add.js +0 -0
  406. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/arguments.json +0 -0
  407. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/backup.js +0 -0
  408. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/build.js +0 -0
  409. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/help.js +0 -0
  410. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/help.txt +0 -0
  411. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/import.js +0 -0
  412. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/list.js +0 -0
  413. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/man.js +0 -0
  414. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/move.js +0 -0
  415. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/remove.js +0 -0
  416. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/rename.js +0 -0
  417. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/restart.js +0 -0
  418. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/restore.js +0 -0
  419. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/rm.js +0 -0
  420. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/start.js +0 -0
  421. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/status.js +0 -0
  422. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/stop.js +0 -0
  423. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/arguments.json +0 -0
  424. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/help.js +0 -0
  425. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/help.txt +0 -0
  426. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/list.js +0 -0
  427. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/remove.js +0 -0
  428. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/set.js +0 -0
  429. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/add.js +0 -0
  430. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/help.js +0 -0
  431. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/help.txt +0 -0
  432. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/link-local.js +0 -0
  433. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/link-production.js +0 -0
  434. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/list.js +0 -0
  435. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/remove.js +0 -0
  436. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/rm.js +0 -0
  437. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/use.js +0 -0
  438. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/arguments.json +0 -0
  439. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/check.js +0 -0
  440. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/help.js +0 -0
  441. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/help.txt +0 -0
  442. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/scan.js +0 -0
  443. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/help.js +0 -0
  444. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/help.txt +0 -0
  445. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/list.js +0 -0
  446. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/man.js +0 -0
  447. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/start.js +0 -0
  448. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/view/add.js +0 -0
  449. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd-status-format/package.json +0 -0
  450. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd-status-format/src/main.js +0 -0
  451. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/README.md +0 -0
  452. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/build.json +0 -0
  453. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/package.json +0 -0
  454. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/src/main.js +0 -0
  455. /package/framework/{v0.5.26 → v0.6.0}/lib/config.js +0 -0
  456. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-config/package.json +0 -0
  457. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-config/src/main.js +0 -0
  458. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-error/package.json +0 -0
  459. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-error/src/main.js +0 -0
  460. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-registry/package.json +0 -0
  461. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-registry/src/main.js +0 -0
  462. /package/framework/{v0.5.26 → v0.6.0}/lib/cron/README.md +0 -0
  463. /package/framework/{v0.5.26 → v0.6.0}/lib/cron/package.json +0 -0
  464. /package/framework/{v0.5.26 → v0.6.0}/lib/cron/src/main.js +0 -0
  465. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/LICENSE +0 -0
  466. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/README.md +0 -0
  467. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/package.json +0 -0
  468. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/src/main.js +0 -0
  469. /package/framework/{v0.5.26 → v0.6.0}/lib/dto/package.json +0 -0
  470. /package/framework/{v0.5.26 → v0.6.0}/lib/dto/src/main.js +0 -0
  471. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-pipe/package.json +0 -0
  472. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-pipe/src/main.js +0 -0
  473. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-types/package.json +0 -0
  474. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-types/src/main.js +0 -0
  475. /package/framework/{v0.5.26 → v0.6.0}/lib/generator/index.js +0 -0
  476. /package/framework/{v0.5.26 → v0.6.0}/lib/i18n/package.json +0 -0
  477. /package/framework/{v0.5.26 → v0.6.0}/lib/i18n/src/main.js +0 -0
  478. /package/framework/{v0.5.26 → v0.6.0}/lib/image-build/package.json +0 -0
  479. /package/framework/{v0.5.26 → v0.6.0}/lib/image-build/src/main.js +0 -0
  480. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/LICENSE +0 -0
  481. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/README.md +0 -0
  482. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/package.json +0 -0
  483. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/src/main.js +0 -0
  484. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-events/package.json +0 -0
  485. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-events/src/main.js +0 -0
  486. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-redact/package.json +0 -0
  487. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-redact/src/main.js +0 -0
  488. /package/framework/{v0.5.26 → v0.6.0}/lib/instrument/package.json +0 -0
  489. /package/framework/{v0.5.26 → v0.6.0}/lib/instrument/src/main.js +0 -0
  490. /package/framework/{v0.5.26 → v0.6.0}/lib/job/package.json +0 -0
  491. /package/framework/{v0.5.26 → v0.6.0}/lib/job/src/main.js +0 -0
  492. /package/framework/{v0.5.26 → v0.6.0}/lib/job-store.js +0 -0
  493. /package/framework/{v0.5.26 → v0.6.0}/lib/json-config-header/package.json +0 -0
  494. /package/framework/{v0.5.26 → v0.6.0}/lib/json-config-header/src/main.js +0 -0
  495. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/README.md +0 -0
  496. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/package.json +0 -0
  497. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/default/index.js +0 -0
  498. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  499. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  500. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/mq/index.js +0 -0
  501. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/mq/listener.js +0 -0
  502. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/helper.js +0 -0
  503. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/main.js +0 -0
  504. /package/framework/{v0.5.26 → v0.6.0}/lib/math/index.js +0 -0
  505. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-dispatch/package.json +0 -0
  506. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-dispatch/src/main.js +0 -0
  507. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-http/package.json +0 -0
  508. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-http/src/main.js +0 -0
  509. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-server/package.json +0 -0
  510. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-server/src/main.js +0 -0
  511. /package/framework/{v0.5.26 → v0.6.0}/lib/merge/README.md +0 -0
  512. /package/framework/{v0.5.26 → v0.6.0}/lib/merge/package.json +0 -0
  513. /package/framework/{v0.5.26 → v0.6.0}/lib/merge/src/main.js +0 -0
  514. /package/framework/{v0.5.26 → v0.6.0}/lib/metrics/package.json +0 -0
  515. /package/framework/{v0.5.26 → v0.6.0}/lib/metrics/src/main.js +0 -0
  516. /package/framework/{v0.5.26 → v0.6.0}/lib/model.js +0 -0
  517. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-filters/README.md +0 -0
  518. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-filters/package.json +0 -0
  519. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-resolver/package.json +0 -0
  520. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-resolver/src/main.js +0 -0
  521. /package/framework/{v0.5.26 → v0.6.0}/lib/proc.js +0 -0
  522. /package/framework/{v0.5.26 → v0.6.0}/lib/release-watch/package.json +0 -0
  523. /package/framework/{v0.5.26 → v0.6.0}/lib/release-watch/src/main.js +0 -0
  524. /package/framework/{v0.5.26 → v0.6.0}/lib/render-cache/package.json +0 -0
  525. /package/framework/{v0.5.26 → v0.6.0}/lib/render-cache/src/main.js +0 -0
  526. /package/framework/{v0.5.26 → v0.6.0}/lib/render-cache-store.js +0 -0
  527. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/README.md +0 -0
  528. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/build.json +0 -0
  529. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/package.json +0 -0
  530. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/src/radix.js +0 -0
  531. /package/framework/{v0.5.26 → v0.6.0}/lib/routing-introspect/package.json +0 -0
  532. /package/framework/{v0.5.26 → v0.6.0}/lib/routing-introspect/src/main.js +0 -0
  533. /package/framework/{v0.5.26 → v0.6.0}/lib/secrets/package.json +0 -0
  534. /package/framework/{v0.5.26 → v0.6.0}/lib/secrets/src/backends/env.js +0 -0
  535. /package/framework/{v0.5.26 → v0.6.0}/lib/secrets/src/main.js +0 -0
  536. /package/framework/{v0.5.26 → v0.6.0}/lib/session-store.js +0 -0
  537. /package/framework/{v0.5.26 → v0.6.0}/lib/shell.js +0 -0
  538. /package/framework/{v0.5.26 → v0.6.0}/lib/state.js +0 -0
  539. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-filters/README.md +0 -0
  540. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-filters/package.json +0 -0
  541. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-resolver/package.json +0 -0
  542. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-resolver/src/main.js +0 -0
  543. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/package.json +0 -0
  544. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/src/loaders/http.js +0 -0
  545. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/src/loaders/memory.js +0 -0
  546. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/src/main.js +0 -0
  547. /package/framework/{v0.5.26 → v0.6.0}/lib/url/README.md +0 -0
  548. /package/framework/{v0.5.26 → v0.6.0}/lib/url/index.js +0 -0
  549. /package/framework/{v0.5.26 → v0.6.0}/lib/url/routing.json +0 -0
  550. /package/framework/{v0.5.26 → v0.6.0}/lib/uuid/package.json +0 -0
  551. /package/framework/{v0.5.26 → v0.6.0}/lib/uuid/src/main.js +0 -0
  552. /package/framework/{v0.5.26 → v0.6.0}/lib/validator.js +0 -0
  553. /package/framework/{v0.5.26 → v0.6.0}/lib/watcher/package.json +0 -0
  554. /package/framework/{v0.5.26 → v0.6.0}/lib/watcher/src/main.js +0 -0
  555. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-framing/package.json +0 -0
  556. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-framing/src/main.js +0 -0
  557. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-query/package.json +0 -0
  558. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-query/src/main.js +0 -0
  559. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-session/package.json +0 -0
  560. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-session/src/main.js +0 -0
@@ -0,0 +1,294 @@
1
+ var fs = require('fs');
2
+ var console = lib.logger;
3
+
4
+ var CmdHelper = require('./../helper');
5
+
6
+ /**
7
+ * @module gina/lib/cmd/audit/verify
8
+ */
9
+ /**
10
+ * Verifies the tamper-evidence hash chain of a bundle's audit trail
11
+ * (#COMPLY2 slice 3). Walks the JSONL file and recomputes every record's
12
+ * `hash` (`HMAC-SHA256(secret, prevHash + ':' + canonicalV1(record))`);
13
+ * reports the FIRST break with its line and reason, or the intact totals.
14
+ *
15
+ * Offline command — reads the trail file directly, no daemon and no running
16
+ * bundle needed. The chain engine is `lib.audit.verifyChain` (the single
17
+ * canonical implementation, shared with the tests); this handler only
18
+ * resolves WHICH file and WHICH key.
19
+ *
20
+ * File resolution: `--file=</abs/path>` wins; otherwise the bundle's
21
+ * `config/settings.json > audit.file` is replayed exactly like the boot does
22
+ * (absolute as-is; relative against the project root; absent → the default
23
+ * `<project>/logs/audit-<bundle>-<env>.jsonl`).
24
+ *
25
+ * Key resolution: `settings.json > audit.chain.secret` (a `${secret:VAR}`
26
+ * placeholder is resolved from `process.env[VAR]` — config-load substitution
27
+ * does not run offline, and `${secret:GINA_*}` names can never resolve
28
+ * because the CLI sweeps GINA_* out of process.env), then `GINA_AUDIT_SECRET`
29
+ * through the framework env reader.
30
+ *
31
+ * Exit codes: `0` chain intact (warnings, if any, are printed — read them) ·
32
+ * `1` chain BROKEN · `2` usage/config error (no trail file, no key, bad --env).
33
+ *
34
+ * Usage:
35
+ * gina audit:verify <bundle> @<project>
36
+ * gina audit:verify <bundle> @<project> --env=prod
37
+ * gina audit:verify <bundle> @<project> --file=/var/log/audit-web-prod.jsonl
38
+ * gina audit:verify <bundle> @<project> --format=json
39
+ *
40
+ * @class Verify
41
+ * @constructor
42
+ * @param {object} opt - Parsed command-line options
43
+ * @param {object} opt.client - Socket client for terminal output
44
+ * @param {string[]} opt.argv - Full argv array
45
+ * @param {number} [opt.debugPort] - Node.js inspector port
46
+ * @param {boolean} [opt.debugBrkEnabled] - True when --inspect-brk is active
47
+ * @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
48
+ *
49
+ * @example
50
+ * $ gina audit:verify web @myproject --env=prod
51
+ * [ audit:verify ] /srv/myproject/logs/audit-web-prod.jsonl
52
+ * OK — chain intact: 1042 chained record(s), 17 pre-chain record(s)
53
+ */
54
+ function Verify(opt, cmd) {
55
+ var self = {};
56
+ var local = { bundle: null, env: null, file: null, secret: null };
57
+
58
+ /**
59
+ * Wires CmdHelper, parses the bundle positional, resolves env / trail
60
+ * file / signing key, then runs the verification.
61
+ *
62
+ * @inner
63
+ * @private
64
+ */
65
+ var init = function() {
66
+
67
+ new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
68
+ if (!isCmdConfigured()) return false;
69
+
70
+ // ONE positional (the bundle). CmdHelper's positional cleanup only
71
+ // runs for `bundle:` tasks, so parse argv directly: everything after
72
+ // the task token that is neither `@<project>` nor a `--flag`.
73
+ var positionals = [];
74
+ for (var i = 3; i < opt.argv.length; ++i) {
75
+ if ( /^\@/.test(opt.argv[i]) || /^--/.test(opt.argv[i]) ) continue;
76
+ positionals.push(opt.argv[i]);
77
+ }
78
+ if ( positionals.length !== 1 ) {
79
+ console.error('audit:verify requires a bundle: gina audit:verify <bundle> @<project> [--env=<env>] [--file=</abs/path>] [--format=json]');
80
+ process.exit(2);
81
+ return;
82
+ }
83
+ local.bundle = positionals[0];
84
+
85
+ if ( self.projectName == null || typeof(self.projects[self.projectName]) == 'undefined' ) {
86
+ console.error('[ '+ self.projectName +' ] is not a registered project.');
87
+ process.exit(2);
88
+ return;
89
+ }
90
+
91
+ if ( !resolveEnv() || !resolveFile() || !resolveSecret() ) {
92
+ return; // each resolver exits with code 2 on failure
93
+ }
94
+
95
+ run();
96
+ };
97
+
98
+ /**
99
+ * Resolves the env: `--env` when given (validated against the project's
100
+ * env list — the CmdHelper `--env` override only fires for lifecycle
101
+ * tasks, so read `self.params` directly), else the project default.
102
+ *
103
+ * @inner
104
+ * @private
105
+ * @returns {boolean}
106
+ */
107
+ var resolveEnv = function() {
108
+ var p = self.params || {};
109
+ if ( typeof(p.env) != 'undefined' ) {
110
+ if ( !Array.isArray(self.envs) || self.envs.indexOf(p.env) < 0 ) {
111
+ console.error('Environment `'+ p.env +'` not found in your project [ '+ self.projectName +' ]');
112
+ process.exit(2);
113
+ return false;
114
+ }
115
+ local.env = p.env;
116
+ } else {
117
+ local.env = self.projects[self.projectName].def_env;
118
+ }
119
+ return true;
120
+ };
121
+
122
+ /**
123
+ * Resolves the trail file: `--file` (absolute) wins; otherwise replays the
124
+ * boot's derivation from the bundle's `config/settings.json > audit`.
125
+ *
126
+ * @inner
127
+ * @private
128
+ * @returns {boolean}
129
+ */
130
+ var resolveFile = function() {
131
+ var p = self.params || {};
132
+ if ( typeof(p.file) != 'undefined' ) {
133
+ if ( typeof(p.file) != 'string' || !/^\//.test(p.file) ) {
134
+ console.error('--file must be an absolute path.');
135
+ process.exit(2);
136
+ return false;
137
+ }
138
+ local.file = p.file;
139
+ return true;
140
+ }
141
+
142
+ var projectPath = self.projects[self.projectName].path;
143
+ var srcEntry = ( self.bundlesByProject && self.bundlesByProject[self.projectName] )
144
+ ? self.bundlesByProject[self.projectName][local.bundle]
145
+ : null;
146
+ if ( !srcEntry ) {
147
+ console.error('Bundle [ '+ local.bundle +' ] is not registered inside `@'+ self.projectName +'`.');
148
+ process.exit(2);
149
+ return false;
150
+ }
151
+
152
+ var auditSettings = readAuditSettings(projectPath, srcEntry.src);
153
+ if ( auditSettings && auditSettings.store ) {
154
+ console.error('Bundle [ '+ local.bundle +' ] uses the connector store backend (`audit.store`) — the chain requires the file backend, so there is no trail file to derive. Pass --file explicitly if a file trail exists elsewhere.');
155
+ process.exit(2);
156
+ return false;
157
+ }
158
+
159
+ var file = ( auditSettings && typeof(auditSettings.file) == 'string' && auditSettings.file ) ? auditSettings.file : null;
160
+ if ( !file || !/^\//.test(file) ) {
161
+ file = file
162
+ ? projectPath + '/' + file
163
+ : projectPath + '/logs/audit-'+ local.bundle +'-'+ local.env +'.jsonl';
164
+ }
165
+ local.file = _(file, true).toString();
166
+ return true;
167
+ };
168
+
169
+ /**
170
+ * Reads the bundle's `settings.json > audit` block — `requireJSON`, never
171
+ * `JSON.parse` (settings files routinely carry `//` comments). A missing
172
+ * or unreadable file falls through to `null` (the defaults still let the
173
+ * default trail path be derived).
174
+ *
175
+ * @inner
176
+ * @private
177
+ * @param {string} projectPath
178
+ * @param {string} srcRel - the bundle's `src` entry from manifest.json
179
+ * @returns {?object}
180
+ */
181
+ var readAuditSettings = function(projectPath, srcRel) {
182
+ try {
183
+ var settingsPath = _(projectPath + '/' + srcRel + '/config/settings.json', true);
184
+ if ( !fs.existsSync(settingsPath.toString()) ) return null;
185
+ var settings = requireJSON(settingsPath);
186
+ return ( settings && typeof(settings.audit) == 'object' && settings.audit ) ? settings.audit : null;
187
+ } catch (err) {
188
+ return null;
189
+ }
190
+ };
191
+
192
+ /**
193
+ * Resolves the signing key: `audit.chain.secret` (literal, or a
194
+ * `${secret:VAR}` placeholder resolved from `process.env[VAR]`), then
195
+ * `GINA_AUDIT_SECRET` through the framework env reader (direct
196
+ * `process.env` fallback for non-CLI contexts).
197
+ *
198
+ * @inner
199
+ * @private
200
+ * @returns {boolean}
201
+ */
202
+ var resolveSecret = function() {
203
+ var projectPath = self.projects[self.projectName].path;
204
+ var srcEntry = ( self.bundlesByProject && self.bundlesByProject[self.projectName] )
205
+ ? self.bundlesByProject[self.projectName][local.bundle]
206
+ : null;
207
+ var auditSettings = srcEntry ? readAuditSettings(projectPath, srcEntry.src) : null;
208
+
209
+ var secret = ( auditSettings && auditSettings.chain && typeof(auditSettings.chain.secret) == 'string' && auditSettings.chain.secret )
210
+ ? auditSettings.chain.secret
211
+ : null;
212
+ if ( secret ) {
213
+ var m = secret.match(/^\$\{secret:([^}]+)\}$/);
214
+ if ( m ) {
215
+ secret = process.env[m[1]] || null;
216
+ if ( !secret ) {
217
+ console.error('`audit.chain.secret` names `${secret:'+ m[1] +'}` but `'+ m[1] +'` is not set in this shell. Export it, or set GINA_AUDIT_SECRET. (Note: `${secret:GINA_*}` names can never resolve — the CLI sweeps GINA_* out of process.env.)');
218
+ process.exit(2);
219
+ return false;
220
+ }
221
+ }
222
+ }
223
+ if ( !secret ) {
224
+ secret = ( typeof(getEnvVar) == 'function' && getEnvVar('GINA_AUDIT_SECRET') ) || process.env.GINA_AUDIT_SECRET || null;
225
+ }
226
+ if ( !secret ) {
227
+ console.error('No signing key found — set `settings.json > audit.chain.secret` for [ '+ local.bundle +' ], or export GINA_AUDIT_SECRET.');
228
+ process.exit(2);
229
+ return false;
230
+ }
231
+ local.secret = secret;
232
+ return true;
233
+ };
234
+
235
+ /**
236
+ * Runs `lib.audit.verifyChain` and emits the report. Output goes through
237
+ * `fs.writeSync(1, ...)` — `process.exit` right after an async stdout
238
+ * write truncates on a pipe (the connector:infer lesson), and a verify
239
+ * verdict must never be lost mid-pipe.
240
+ *
241
+ * @inner
242
+ * @private
243
+ */
244
+ var run = function() {
245
+ if ( !fs.existsSync(local.file) ) {
246
+ console.error('No trail found at '+ local.file +' — nothing to verify. (A missing trail is NOT a pass.)');
247
+ process.exit(2);
248
+ return;
249
+ }
250
+
251
+ var result = lib.audit.verifyChain(local.file, local.secret);
252
+ var jsonMode = ( self.params && self.params.format === 'json' );
253
+ var out = '';
254
+
255
+ if ( jsonMode ) {
256
+ result.file = local.file;
257
+ out = JSON.stringify(result) + '\n';
258
+ } else {
259
+ out = '[ audit:verify ] '+ local.file +'\n';
260
+ if ( result.ok ) {
261
+ out += ( result.records === 0 && result.unchained === 0 )
262
+ ? 'OK — empty trail (0 records)\n'
263
+ : 'OK — chain intact: '+ result.records +' chained record(s), '+ result.unchained +' pre-chain record(s)\n';
264
+ } else {
265
+ out += 'FAIL — break at line '+ result.breakAt.line +': '+ result.breakAt.reason +'\n';
266
+ out += ' '+ result.records +' record(s) verified before the break. Remediation: investigate, then rotate the file aside to re-baseline the chain.\n';
267
+ }
268
+ for (var w = 0; w < result.warnings.length; ++w) {
269
+ out += ' warning — line '+ result.warnings[w].line +': '+ result.warnings[w].type +'\n';
270
+ }
271
+ }
272
+
273
+ fs.writeSync(1, out);
274
+ end(result.ok ? 0 : 1);
275
+ };
276
+
277
+ /**
278
+ * Terminates the command: closes the client socket when live, then exits.
279
+ *
280
+ * @inner
281
+ * @private
282
+ * @param {number} code
283
+ */
284
+ var end = function(code) {
285
+ if ( opt.client && typeof(opt.client.emit) == 'function' ) {
286
+ try { opt.client.emit('end'); } catch (err) { /* offline mode has no live socket */ }
287
+ }
288
+ process.exit(code);
289
+ };
290
+
291
+ init();
292
+ }
293
+
294
+ module.exports = Verify;
@@ -733,6 +733,17 @@ function Initialize(opt) {
733
733
  setEnvVar('GINA_HOST_V4', localUserSettings.host_v4);
734
734
  }
735
735
  }
736
+ // #B161 — bind_host was the only connection key WITHOUT a disk -> env
737
+ // read-back here, so the regeneration below (dic + createFileFromDataSync)
738
+ // reverted a value written by `gina framework:set --bind-host=` to the
739
+ // default on the very next CLI invocation. Mirror the host_v4 block
740
+ // above so the persisted value survives. The `${` guard skips the
741
+ // unresolved template placeholder a fresh/broken install may carry.
742
+ if ( !getEnvVar('GINA_BIND_HOST') && targetObj.existsSync() ) {
743
+ if ( typeof(localUserSettings.bind_host) != 'undefined' && String(localUserSettings.bind_host).indexOf('${') < 0 ) {
744
+ setEnvVar('GINA_BIND_HOST', localUserSettings.bind_host);
745
+ }
746
+ }
736
747
  if ( !getEnvVar('GINA_HOSTNAME') && targetObj.existsSync() ) {
737
748
  if ( typeof(localUserSettings.hostname) != 'undefined' ) {
738
749
  setEnvVar('GINA_HOSTNAME', localUserSettings.hostname);
@@ -9,6 +9,8 @@ var EventEmitter = require('events').EventEmitter;
9
9
  var e = new EventEmitter();
10
10
 
11
11
  var CmdHelper = require('./../helper');
12
+ // #B160 — control-plane dial-host resolution (pure, no framework globals)
13
+ var netLocality = require(__dirname + '/../../net-locality');
12
14
  var console = lib.logger;
13
15
  var LoggerHelper = require( _(GINA_FRAMEWORK_DIR + '/lib/logger/src/helper.js', true) );
14
16
  /**
@@ -99,7 +101,9 @@ function Tail(opt, cmd) {
99
101
  var tail = function(opt, cmd, isResuming) {
100
102
 
101
103
  var port = opt.mqPort || GINA_MQ_PORT || 8125;
102
- var host = opt.hostV4 || GINA_HOST_V4 || '127.0.0.1';
104
+ // #B160 — the MQ listener binds `bind_host` (loopback by default):
105
+ // dial it when host_v4 is one of this machine's own addresses.
106
+ var host = netLocality.resolveDialHost(opt.hostV4 || GINA_HOST_V4 || '127.0.0.1', getEnvVar('GINA_BIND_HOST'));
103
107
  var clientOptions = {
104
108
  host : host,
105
109
  port : port,
@@ -29,6 +29,7 @@ model
29
29
  dev
30
30
  view
31
31
  service
32
+ audit
32
33
 
33
34
  ## ENVIRONMENT
34
35
 
@@ -173,6 +173,13 @@ function Lib() {
173
173
  // per-request require() can never grow a dead-`children` tail (#B32-residual).
174
174
  // It also keeps a security gate out of the dev-mode hot-reload path entirely.
175
175
  authzGate : require('./authz-gate'),
176
+ // #COMPLY3 — authentication hardening primitives (password hashing +
177
+ // verification, password policy, lockout, TOTP). require() — NOT _require —
178
+ // for the authzGate reason above: a security primitive stays out of the
179
+ // dev-mode hot-reload path entirely. It also holds module-scope state the
180
+ // hot-reload would discard on every dev request: the scrypt concurrency
181
+ // gauge and its FIFO queue (a discarded queue strands in-flight logins).
182
+ authn : require('./authn'),
176
183
  // #COMPLY2 — the audit-trail primitive behind self.audit() and the authz
177
184
  // auto-events. Holds the boot-adopted store (an open O_APPEND fd for the
178
185
  // default file backend), the serialized write queue and the written/dropped
@@ -198,6 +205,12 @@ function Lib() {
198
205
  // readPidfile) for the bundle:list / service:list / bundle:status /
199
206
  // project:status CLI handlers. Pure (same contract as routing-introspect).
200
207
  cmdStatusFormat : _require('./cmd-status-format'),
208
+ // #B160 — control-plane dial-host resolution: is host_v4 one of this
209
+ // machine's own interfaces, and which address should a CLI-side client
210
+ // dial (`bind_host` vs `host_v4`)? Pure + stateless (only reads
211
+ // os.networkInterfaces()), so the dev-mode-hot-reloadable _require is
212
+ // safe — same contract as routing-introspect above.
213
+ netLocality : _require('./net-locality'),
201
214
  // Single source of truth for the connector driver → npm package + semver
202
215
  // range mapping. Consumed by the connector:* CLI handlers (connector:add
203
216
  // install hint + connector:add --install range resolution + connector:list
@@ -12,6 +12,8 @@ var helpers = null;
12
12
 
13
13
  // #M22 — merge-eval fallback removed (sister fix to lib/merge/src/main.js direct json_clone require)
14
14
  var merge = require(__dirname + '/../../../../merge');
15
+ // #B160 — control-plane dial-host resolution (pure, no framework globals)
16
+ var netLocality = require(__dirname + '/../../../../net-locality');
15
17
 
16
18
  function FileContainer(opt, loggers) {
17
19
  var self = {
@@ -55,6 +57,9 @@ function FileContainer(opt, loggers) {
55
57
 
56
58
  opt.mqPort = settings.mq_port;
57
59
  opt.hostV4 = settings.host_v4;
60
+ // #B160 — carry the daemon's bind address for the dial-host
61
+ // resolution in onPayload().
62
+ opt.bindHost = settings.bind_host;
58
63
  // ---------- EO - hack for early calls
59
64
 
60
65
  // handle server not started yet or server exited
@@ -153,7 +158,12 @@ function FileContainer(opt, loggers) {
153
158
  function onPayload(opt, isResuming) {
154
159
  // console.debug('mqFile options: ', JSON.stringify(opt, null, 2));
155
160
  var port = opt.mqPort || getEnvVar('GINA_MQ_PORT') || 8125;// jshint ignore:line
156
- var host = opt.hostV4 || getEnvVar('GINA_HOST_V4') || '127.0.0.1';// jshint ignore:line
161
+ // #B160 — the MQ listener binds `bind_host` (loopback by default):
162
+ // dial it when host_v4 is one of this machine's own addresses.
163
+ var host = netLocality.resolveDialHost(
164
+ opt.hostV4 || getEnvVar('GINA_HOST_V4') || '127.0.0.1',
165
+ opt.bindHost || getEnvVar('GINA_BIND_HOST')
166
+ );// jshint ignore:line
157
167
  var clientOptions = {
158
168
  host : host,
159
169
  port : port,
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
  // Imports
3
3
  const net = require('net');
4
+ // #B160 — control-plane dial-host resolution (pure, no framework globals)
5
+ var netLocality = require(__dirname + '/../../../../net-locality');
4
6
  // var fs = require('fs');
5
7
  // var util = require('util');
6
8
 
@@ -42,6 +44,9 @@ function MQSpeaker(opt, loggers, cb) {
42
44
  var _mqPort = ~~settings.mq_port;
43
45
  opt.mqPort = (_mqPort > 0 && _mqPort < 65536) ? _mqPort : 8125;
44
46
  opt.hostV4 = settings.host_v4;
47
+ // #B160 — carry the daemon's bind address so startMQSpeaker() can
48
+ // dial locally when host_v4 names one of this machine's interfaces.
49
+ opt.bindHost = settings.bind_host;
45
50
  // ---------- EO - hack for early calls
46
51
 
47
52
  return startMQSpeaker(opt, cb);
@@ -50,7 +55,9 @@ function MQSpeaker(opt, loggers, cb) {
50
55
 
51
56
  function startMQSpeaker(opt, cb) {
52
57
  var port = opt.mqPort || 8125;// jshint ignore:line
53
- var host = opt.hostV4 || '127.0.0.1';// jshint ignore:line
58
+ // #B160 — the MQ listener binds `bind_host` (loopback by default):
59
+ // dial it when host_v4 is one of this machine's own addresses.
60
+ var host = netLocality.resolveDialHost(opt.hostV4 || '127.0.0.1', opt.bindHost);// jshint ignore:line
54
61
  var clientOptions = {
55
62
  host : host,
56
63
  port : port,
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "gina-lib-net-locality",
3
+ "version": "1.0.0",
4
+ "description": "Control-plane dial-host resolution: decides whether `host_v4` names one of this machine's own interfaces and which address a CLI-side client should dial (`bind_host` vs `host_v4`).",
5
+ "authors": [
6
+ {
7
+ "name": "Martin-Luther ETOUMAN",
8
+ "email": "contact@gina.io"
9
+ }
10
+ ],
11
+ "copyright": "Copyright (c) 2009-2026 Rhinostone <contact@gina.io>",
12
+ "engines": {
13
+ "node": ">=0.10.22"
14
+ },
15
+ "main": "src/main",
16
+ "license": "MIT"
17
+ }
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Gina — net-locality helpers (control-plane dial-host resolution).
3
+ *
4
+ * The framework daemon binds its control sockets — the command socket (8124)
5
+ * and the MQ listener (8125) — to `bind_host`, loopback by default, while
6
+ * `host_v4` is the address EXTERNAL clients use to reach this machine. The
7
+ * CLI-side clients (command socket dial, MQ speaker, MQ file container,
8
+ * `gina tail`) historically dialled `host_v4` — so whenever `host_v4` was set
9
+ * to a non-loopback address of this very machine (the common containerized
10
+ * shape, where it carries the container/LAN IP so siblings can reach the
11
+ * bundles), the co-located client dialled an address the daemon does not
12
+ * bind, and the control plane was unreachable from its own host.
13
+ *
14
+ * The resolution deliberately stays on the DIAL side: when `host_v4` names
15
+ * one of this machine's own interfaces, the daemon being dialled is local,
16
+ * so the client dials the address the daemon actually binds. The BIND side
17
+ * stays untouched — widening it remains a deliberate opt-in.
18
+ *
19
+ * Pure module: no framework globals, no state. `os.networkInterfaces()` is
20
+ * the only system dependency and is injectable for deterministic tests.
21
+ *
22
+ * @module gina/lib/net-locality
23
+ */
24
+ 'use strict';
25
+
26
+ var os = require('os');
27
+
28
+ /**
29
+ * Normalizes an address for comparison: trims, lowercases, strips an
30
+ * IPv4-mapped IPv6 prefix (`::ffff:1.2.3.4` → `1.2.3.4`) and an IPv6 zone
31
+ * suffix (`fe80::1%en0` → `fe80::1`).
32
+ *
33
+ * @inner
34
+ * @private
35
+ * @param {string} host - Raw host string
36
+ * @returns {string} Normalized host
37
+ */
38
+ var normalizeHost = function(host) {
39
+ var h = String(host).trim().toLowerCase();
40
+ if (h.indexOf('::ffff:') === 0 && h.indexOf('.') > -1) {
41
+ h = h.substring(7);
42
+ }
43
+ var zone = h.indexOf('%');
44
+ if (zone > -1) {
45
+ h = h.substring(0, zone);
46
+ }
47
+ return h;
48
+ };
49
+
50
+ /**
51
+ * True when the (normalized) host is a loopback name or address:
52
+ * `localhost`, anything in `127.0.0.0/8`, or `::1`.
53
+ *
54
+ * @inner
55
+ * @private
56
+ * @param {string} h - Normalized host (see `normalizeHost`)
57
+ * @returns {boolean}
58
+ */
59
+ var isLoopback = function(h) {
60
+ return ( h === 'localhost' || h === '::1' || /^127\./.test(h) );
61
+ };
62
+
63
+ /**
64
+ * True when the (normalized) host is a wildcard bind address (`0.0.0.0` or
65
+ * `::`) — an address that can be listened on but never meaningfully dialled.
66
+ *
67
+ * @inner
68
+ * @private
69
+ * @param {string} h - Normalized host (see `normalizeHost`)
70
+ * @returns {boolean}
71
+ */
72
+ var isWildcard = function(h) {
73
+ return ( h === '0.0.0.0' || h === '::' );
74
+ };
75
+
76
+ /**
77
+ * Tells whether `host` is an address assigned to one of this machine's own
78
+ * network interfaces (exact match after normalization). Loopback always
79
+ * qualifies. A hostname never matches — only literal addresses are compared,
80
+ * so `my-host.local` falls through to `false` by design. Any enumeration
81
+ * failure also returns `false` (fail-safe: callers keep today's unmodified
82
+ * dial behaviour).
83
+ *
84
+ * @param {string} host - Literal IP address to test
85
+ * @param {object} [interfaces] - `os.networkInterfaces()`-shaped map; used by
86
+ * tests for determinism. Defaults to the live `os.networkInterfaces()`.
87
+ * @returns {boolean} True when the address belongs to this machine
88
+ *
89
+ * @example
90
+ * isLocalAddress('127.0.0.1'); // true
91
+ * isLocalAddress('192.0.2.1'); // false (TEST-NET, not a local iface)
92
+ * isLocalAddress('my-host.local'); // false (hostname, not an address)
93
+ */
94
+ var isLocalAddress = function(host, interfaces) {
95
+ if ( typeof(host) !== 'string' || host === '' ) {
96
+ return false;
97
+ }
98
+ var h = normalizeHost(host);
99
+ if ( isLoopback(h) ) {
100
+ return true;
101
+ }
102
+ try {
103
+ var ifaces = interfaces || os.networkInterfaces();
104
+ for (var name in ifaces) {
105
+ var addrs = ifaces[name];
106
+ if ( !Array.isArray(addrs) ) {
107
+ continue;
108
+ }
109
+ for (var i = 0, len = addrs.length; i < len; i++) {
110
+ var a = addrs[i] && addrs[i].address;
111
+ if ( typeof(a) === 'string' && normalizeHost(a) === h ) {
112
+ return true;
113
+ }
114
+ }
115
+ }
116
+ } catch (err) {
117
+ return false;
118
+ }
119
+ return false;
120
+ };
121
+
122
+ /**
123
+ * Resolves the host a control-plane CLIENT should dial.
124
+ *
125
+ * Rules, in order:
126
+ * 1. No usable `hostV4` → `127.0.0.1` (the historical fallback).
127
+ * 2. `hostV4` is loopback → returned unchanged (already dial-safe).
128
+ * 3. `hostV4` does NOT name one of this machine's interfaces (a hostname, a
129
+ * genuinely remote address, or interface enumeration failed) → returned
130
+ * unchanged: remote administration keeps working exactly as before.
131
+ * 4. `hostV4` names a local interface → the daemon is local, so dial what it
132
+ * binds: `bindHost` when it is a concrete non-wildcard address,
133
+ * `127.0.0.1` otherwise (a wildcard bind includes loopback).
134
+ *
135
+ * @param {string} hostV4 - The resolved client-facing host (`host_v4`)
136
+ * @param {string} [bindHost] - The daemon's `bind_host`, when known
137
+ * @param {object} [interfaces] - `os.networkInterfaces()`-shaped map; used by
138
+ * tests for determinism. Defaults to the live `os.networkInterfaces()`.
139
+ * @returns {string} The host to dial
140
+ *
141
+ * @example
142
+ * // co-located daemon, LAN-facing host_v4 (the containerized shape)
143
+ * resolveDialHost('192.168.1.20', '127.0.0.1'); // '127.0.0.1' (when local)
144
+ * // operator widened the bind to a concrete address
145
+ * resolveDialHost('192.168.1.20', '192.168.1.20'); // '192.168.1.20'
146
+ * // wildcard bind still dials loopback
147
+ * resolveDialHost('192.168.1.20', '0.0.0.0'); // '127.0.0.1' (when local)
148
+ * // remote daemon: unchanged
149
+ * resolveDialHost('203.0.113.7', '127.0.0.1'); // '203.0.113.7'
150
+ */
151
+ var resolveDialHost = function(hostV4, bindHost, interfaces) {
152
+ if ( typeof(hostV4) !== 'string' || hostV4 === '' ) {
153
+ return '127.0.0.1';
154
+ }
155
+ var h = normalizeHost(hostV4);
156
+ if ( isLoopback(h) ) {
157
+ return hostV4;
158
+ }
159
+ if ( !isLocalAddress(h, interfaces) ) {
160
+ return hostV4;
161
+ }
162
+ if ( typeof(bindHost) === 'string' && bindHost !== '' ) {
163
+ var b = normalizeHost(bindHost);
164
+ if ( !isWildcard(b) ) {
165
+ return bindHost;
166
+ }
167
+ }
168
+ return '127.0.0.1';
169
+ };
170
+
171
+ module.exports = {
172
+ isLocalAddress : isLocalAddress,
173
+ resolveDialHost : resolveDialHost
174
+ };
@@ -356,8 +356,21 @@ function NunjucksFilters(conf) {
356
356
  // latch/global, byte-identical.
357
357
  url.isProxyHost = isProxyHost;
358
358
  if (isProxyHost) {
359
+ // #B168 — hold getRoute's own resolution: with no per-request slot and
360
+ // no worker global, the override below must not replace a usable
361
+ // envConf-derived value with an unset one
362
+ var _routeProxyHostname = url.proxy_hostname;
359
363
  url.proxy_hostname = (isGFFCtx) ? window.location.protocol +'//'+ document.location.hostname : ( (ctx.req && ctx.req._ginaProxyHostname) || process.gina.PROXY_HOSTNAME );
360
364
  url.proxy_host = url.hostname.replace(/(https|http)\:\/\//, '');
365
+ if ( !url.proxy_hostname ) {
366
+ url.proxy_hostname = _routeProxyHostname;
367
+ if ( !url.proxy_hostname ) {
368
+ // #B168 — nothing resolvable anywhere: degrade to the route's
369
+ // direct hostname; toUrl() keys on isProxyHost, so leaving it
370
+ // true would stringify the unset value into the emitted URL
371
+ url.isProxyHost = false;
372
+ }
373
+ }
361
374
  }
362
375
  url = url.toUrl();
363
376