gina 0.3.13-alpha.2 → 0.3.13

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 (420) hide show
  1. package/.playwright-mcp/console-2026-05-14T02-27-11-347Z.log +64 -0
  2. package/.playwright-mcp/d9-after-connector.png +0 -0
  3. package/.playwright-mcp/d9-after-service.png +0 -0
  4. package/.playwright-mcp/d9-before-connector-full.png +0 -0
  5. package/.playwright-mcp/d9-before-connector-leak.png +0 -0
  6. package/.playwright-mcp/d9-before-connector-top.png +0 -0
  7. package/.playwright-mcp/d9-before-connector-v2.png +0 -0
  8. package/.playwright-mcp/d9-before-connector.png +0 -0
  9. package/.playwright-mcp/page-2026-05-14T02-24-51-996Z.yml +1818 -0
  10. package/.playwright-mcp/page-2026-05-14T02-26-47-905Z.yml +2063 -0
  11. package/.playwright-mcp/page-2026-05-14T02-27-11-472Z.yml +406 -0
  12. package/.playwright-mcp/page-2026-05-14T02-28-37-939Z.yml +2061 -0
  13. package/.playwright-mcp/page-2026-05-14T02-29-01-333Z.yml +404 -0
  14. package/CHANGELOG.md +29 -0
  15. package/README.md +11 -1
  16. package/ROADMAP.md +16 -6
  17. package/framework/v0.3.13/VERSION +1 -0
  18. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.js +21 -6
  19. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +47 -46
  20. package/framework/v0.3.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  21. package/framework/v0.3.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  22. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/config.js +13 -0
  23. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/csrf/src/main.js +32 -9
  24. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/validator/src/form-validator.js +11 -1
  25. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/validator/src/main.js +4 -2
  26. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/server.isaac.js +56 -11
  27. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/settings.server.json +3 -1
  28. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/index.js +14 -4
  29. package/framework/v0.3.13/core/template/boilerplate/bundle_public/manifest.webmanifest +17 -0
  30. package/framework/v0.3.13/core/template/boilerplate/bundle_public/readme.md +20 -0
  31. package/framework/v0.3.13/core/template/boilerplate/bundle_public/sw.js +122 -0
  32. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/layouts/main.html +14 -0
  33. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/settings.json +11 -4
  34. package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/src/main.js +38 -22
  35. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/mcp-start.js +18 -2
  36. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/index.js +5 -0
  37. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/file/index.js +1 -4
  38. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/mq/index.js +1 -4
  39. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/main.js +1 -4
  40. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/merge/src/main.js +2 -1
  41. package/framework/v0.3.13/lib/secrets/package.json +17 -0
  42. package/framework/v0.3.13/lib/secrets/src/backends/env.js +60 -0
  43. package/framework/v0.3.13/lib/secrets/src/main.js +200 -0
  44. package/framework/{v0.3.13-alpha.2 → v0.3.13}/package.json +2 -2
  45. package/gna.js +4 -4
  46. package/llms.txt +17 -1
  47. package/package.json +3 -3
  48. package/framework/v0.3.13-alpha.2/VERSION +0 -1
  49. package/framework/v0.3.13-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  50. package/framework/v0.3.13-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  51. package/framework/v0.3.13-alpha.2/core/plugins/lib/file/package.json +0 -25
  52. package/framework/v0.3.13-alpha.2/core/plugins/lib/intl/package.json +0 -25
  53. package/framework/v0.3.13-alpha.2/core/plugins/lib/intl/src/main.js +0 -35
  54. package/framework/v0.3.13-alpha.2/core/template/boilerplate/bundle_public/readme.md +0 -1
  55. package/framework/v0.3.13-alpha.2/lib/collection/build.json +0 -0
  56. package/framework/v0.3.13-alpha.2/lib/routing/build.json +0 -0
  57. package/framework/v0.3.13-alpha.2/lib/swig-filters/README.md +0 -0
  58. package/framework/v0.3.13-alpha.2/lib/url/README.md +0 -0
  59. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/AUTHORS +0 -0
  60. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/LICENSE +0 -0
  61. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/html/nolayout.html +0 -0
  62. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/html/static.html +0 -0
  63. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/android-chrome-192x192.png +0 -0
  64. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/android-chrome-512x512.png +0 -0
  65. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/apple-touch-icon.png +0 -0
  66. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/favicon-16x16.png +0 -0
  67. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/favicon-32x32.png +0 -0
  68. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/favicon.ico +0 -0
  69. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/README.md +0 -0
  70. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  71. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  72. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  73. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  74. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  75. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  76. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  77. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  78. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  79. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  80. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  81. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  82. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  83. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  84. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  85. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  86. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  87. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/ai/index.js +0 -0
  88. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/ai/lib/connector.js +0 -0
  89. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/index.js +0 -0
  90. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.js +0 -0
  91. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  92. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  93. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  94. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/n1ql.js +0 -0
  95. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.js +0 -0
  96. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  97. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  98. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  99. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/index.js +0 -0
  100. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/lib/connector.js +0 -0
  101. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  102. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/lib/session-store.js +0 -0
  103. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mysql/index.js +0 -0
  104. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mysql/lib/connector.js +0 -0
  105. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/postgresql/index.js +0 -0
  106. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/postgresql/lib/connector.js +0 -0
  107. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/redis/index.js +0 -0
  108. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/redis/lib/session-store.js +0 -0
  109. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/scylladb/index.js +0 -0
  110. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/scylladb/lib/connector.js +0 -0
  111. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/scylladb/lib/session-store.js +0 -0
  112. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sql-parser.js +0 -0
  113. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sqlite/index.js +0 -0
  114. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sqlite/lib/connector.js +0 -0
  115. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sqlite/lib/session-store.js +0 -0
  116. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/content.encoding +0 -0
  117. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.framework.js +0 -0
  118. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.js +0 -0
  119. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-json.js +0 -0
  120. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-nunjucks.js +0 -0
  121. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-stream.js +0 -0
  122. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-swig.js +0 -0
  123. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-v1.js +0 -0
  124. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/index.js +0 -0
  125. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/LICENSE +0 -0
  126. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/README.md +0 -0
  127. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  128. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  129. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  130. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  131. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/package.json +0 -0
  132. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  133. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  134. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/streamsearch-1.1.0/package.json +0 -0
  135. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/index.js +0 -0
  136. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/lib/class.js +0 -0
  137. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/lib/factory.js +0 -0
  138. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/lib/tools.js +0 -0
  139. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/gna.js +0 -0
  140. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/README.md +0 -0
  141. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/currency.json +0 -0
  142. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/language/en.json +0 -0
  143. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/language/fr.json +0 -0
  144. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/region/en.json +0 -0
  145. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/region/fr.json +0 -0
  146. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/index.js +0 -0
  147. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/mime.types +0 -0
  148. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/entity.js +0 -0
  149. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/index.js +0 -0
  150. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/template/entityFactory.js +0 -0
  151. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/template/index.js +0 -0
  152. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/README.md +0 -0
  153. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/index.js +0 -0
  154. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/csrf/README.md +0 -0
  155. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/csrf/package.json +0 -0
  156. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/session/README.md +0 -0
  157. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/session/package.json +0 -0
  158. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/session/src/main.js +0 -0
  159. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/file → v0.3.13/core/plugins/lib/storage}/README.md +0 -0
  160. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/file → v0.3.13/core/plugins/lib/storage}/build.json +0 -0
  161. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/storage/package.json +0 -0
  162. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/storage/src/main.js +0 -0
  163. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/intl → v0.3.13/core/plugins/lib/validator}/README.md +0 -0
  164. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/intl → v0.3.13/core/plugins/lib/validator}/build.json +0 -0
  165. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/validator/package.json +0 -0
  166. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/router.js +0 -0
  167. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/server.express.js +0 -0
  168. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/server.js +0 -0
  169. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/status.codes +0 -0
  170. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/_gitignore +0 -0
  171. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/app.json +0 -0
  172. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  173. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/routing.json +0 -0
  174. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/settings.json +0 -0
  175. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/templates.json +0 -0
  176. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  177. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  178. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  179. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  180. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/locales/en.json +0 -0
  181. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  182. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  183. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  184. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  185. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  186. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  187. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  188. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  189. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  190. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  191. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/command/gina.bat.tpl +0 -0
  192. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/command/gina.tpl +0 -0
  193. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/env.json +0 -0
  194. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/manifest.json +0 -0
  195. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/package.json +0 -0
  196. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/statics.json +0 -0
  197. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/templates.json +0 -0
  198. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/client/json/401.json +0 -0
  199. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/client/json/403.json +0 -0
  200. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/client/json/404.json +0 -0
  201. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/server/html/50x.html +0 -0
  202. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/server/json/500.json +0 -0
  203. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/server/json/503.json +0 -0
  204. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/extensions/logger/config.json +0 -0
  205. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/console.js +0 -0
  206. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/context.js +0 -0
  207. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/LICENSE +0 -0
  208. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/README.md +0 -0
  209. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/package.json +0 -0
  210. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/src/main.js +0 -0
  211. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/dateFormat.js +0 -0
  212. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/index.js +0 -0
  213. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/LICENSE +0 -0
  214. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/README.md +0 -0
  215. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/package.json +0 -0
  216. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/path.js +0 -0
  217. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/README.md +0 -0
  218. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/package.json +0 -0
  219. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/src/api-error.js +0 -0
  220. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/src/main.js +0 -0
  221. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/prototypes.js +0 -0
  222. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/task.js +0 -0
  223. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/text.js +0 -0
  224. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/storage → v0.3.13/lib/archiver}/README.md +0 -0
  225. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/storage → v0.3.13/lib/archiver}/build.json +0 -0
  226. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/archiver/package.json +0 -0
  227. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/archiver/src/dep/jszip.min.js +0 -0
  228. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/archiver/src/main.js +0 -0
  229. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/async/package.json +0 -0
  230. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/async/src/main.js +0 -0
  231. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cache/README.md +0 -0
  232. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/validator → v0.3.13/lib/cache}/build.json +0 -0
  233. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cache/package.json +0 -0
  234. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cache/src/main.js +0 -0
  235. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/aliases.json +0 -0
  236. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/add.js +0 -0
  237. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/arguments.json +0 -0
  238. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/build.js +0 -0
  239. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/copy.js +0 -0
  240. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/cp.js +0 -0
  241. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/help.js +0 -0
  242. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/help.txt +0 -0
  243. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/list.js +0 -0
  244. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/mcp.js +0 -0
  245. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/oas.js +0 -0
  246. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/openapi.js +0 -0
  247. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/remove.js +0 -0
  248. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/rename.js +0 -0
  249. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/restart.js +0 -0
  250. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/rm.js +0 -0
  251. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/start.js +0 -0
  252. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/status.js +0 -0
  253. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/stop.js +0 -0
  254. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/cache/stats.js +0 -0
  255. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/add.js +0 -0
  256. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/arguments.json +0 -0
  257. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/help.js +0 -0
  258. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/help.txt +0 -0
  259. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/list.js +0 -0
  260. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/migrate.js +0 -0
  261. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/remove.js +0 -0
  262. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/rm.js +0 -0
  263. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/add.js +0 -0
  264. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/get.js +0 -0
  265. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/help.js +0 -0
  266. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/help.txt +0 -0
  267. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/link-dev.js +0 -0
  268. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/list.js +0 -0
  269. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/remove.js +0 -0
  270. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/rm.js +0 -0
  271. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/set.js +0 -0
  272. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/unset.js +0 -0
  273. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/use.js +0 -0
  274. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/arguments.json +0 -0
  275. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/build.js +0 -0
  276. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/dot.js +0 -0
  277. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/get.js +0 -0
  278. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/help.js +0 -0
  279. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/help.txt +0 -0
  280. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/init.js +0 -0
  281. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/link-node-modules.js +0 -0
  282. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/link.js +0 -0
  283. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/msg.json +0 -0
  284. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/open.js +0 -0
  285. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/restart.js +0 -0
  286. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/set.js +0 -0
  287. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/start.js +0 -0
  288. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/status.js +0 -0
  289. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/stop.js +0 -0
  290. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/tail.js +0 -0
  291. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/update.js +0 -0
  292. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/version.js +0 -0
  293. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/gina-dev.1.md +0 -0
  294. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/gina-framework.1.md +0 -0
  295. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/gina.1.md +0 -0
  296. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/helper.js +0 -0
  297. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/add.js +0 -0
  298. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/arguments.json +0 -0
  299. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/export.js +0 -0
  300. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/help.js +0 -0
  301. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/help.txt +0 -0
  302. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/import.js +0 -0
  303. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/scan.js +0 -0
  304. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/index.js +0 -0
  305. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/inspector/help.js +0 -0
  306. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/inspector/help.txt +0 -0
  307. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/inspector/open.js +0 -0
  308. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/minion/help.js +0 -0
  309. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/minion/help.txt +0 -0
  310. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/msg.json +0 -0
  311. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/help.js +0 -0
  312. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/help.txt +0 -0
  313. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/inc/scan.js +0 -0
  314. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/list.js +0 -0
  315. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/reset.js +0 -0
  316. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/set.js +0 -0
  317. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/add.js +0 -0
  318. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/arguments.json +0 -0
  319. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/build.js +0 -0
  320. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/help.js +0 -0
  321. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/help.txt +0 -0
  322. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/import.js +0 -0
  323. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/list.js +0 -0
  324. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/move.js +0 -0
  325. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/remove.js +0 -0
  326. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/rename.js +0 -0
  327. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/restart.js +0 -0
  328. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/rm.js +0 -0
  329. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/start.js +0 -0
  330. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/status.js +0 -0
  331. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/stop.js +0 -0
  332. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/help.js +0 -0
  333. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/help.txt +0 -0
  334. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/list.js +0 -0
  335. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/set.js +0 -0
  336. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/add.js +0 -0
  337. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/help.js +0 -0
  338. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/help.txt +0 -0
  339. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/link-local.js +0 -0
  340. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/link-production.js +0 -0
  341. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/list.js +0 -0
  342. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/remove.js +0 -0
  343. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/rm.js +0 -0
  344. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/use.js +0 -0
  345. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/service/help.js +0 -0
  346. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/service/help.txt +0 -0
  347. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/service/list.js +0 -0
  348. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/view/add.js +0 -0
  349. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/collection/README.md +0 -0
  350. /package/framework/{v0.3.13-alpha.2/lib/archiver → v0.3.13/lib/collection}/build.json +0 -0
  351. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/collection/package.json +0 -0
  352. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/collection/src/main.js +0 -0
  353. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/config.js +0 -0
  354. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/connector-registry/package.json +0 -0
  355. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/connector-registry/src/main.js +0 -0
  356. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cron/README.md +0 -0
  357. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cron/package.json +0 -0
  358. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cron/src/main.js +0 -0
  359. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/LICENSE +0 -0
  360. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/README.md +0 -0
  361. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/package.json +0 -0
  362. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/src/main.js +0 -0
  363. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/generator/index.js +0 -0
  364. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/i18n/package.json +0 -0
  365. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/i18n/src/main.js +0 -0
  366. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/LICENSE +0 -0
  367. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/README.md +0 -0
  368. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/package.json +0 -0
  369. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/src/main.js +0 -0
  370. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inspector-redact/package.json +0 -0
  371. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inspector-redact/src/main.js +0 -0
  372. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/README.md +0 -0
  373. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/package.json +0 -0
  374. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/default/index.js +0 -0
  375. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  376. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  377. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/mq/listener.js +0 -0
  378. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/mq/speaker.js +0 -0
  379. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/helper.js +0 -0
  380. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/math/index.js +0 -0
  381. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-dispatch/package.json +0 -0
  382. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-dispatch/src/main.js +0 -0
  383. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-http/package.json +0 -0
  384. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-http/src/main.js +0 -0
  385. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-server/package.json +0 -0
  386. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-server/src/main.js +0 -0
  387. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/merge/README.md +0 -0
  388. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/merge/package.json +0 -0
  389. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/metrics/package.json +0 -0
  390. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/metrics/src/main.js +0 -0
  391. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/model.js +0 -0
  392. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-filters/README.md +0 -0
  393. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-filters/package.json +0 -0
  394. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-filters/src/main.js +0 -0
  395. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-resolver/package.json +0 -0
  396. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-resolver/src/main.js +0 -0
  397. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/proc.js +0 -0
  398. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/validator → v0.3.13/lib/routing}/README.md +0 -0
  399. /package/framework/{v0.3.13-alpha.2/lib/cache → v0.3.13/lib/routing}/build.json +0 -0
  400. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing/package.json +0 -0
  401. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing/src/main.js +0 -0
  402. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing/src/radix.js +0 -0
  403. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing-introspect/package.json +0 -0
  404. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing-introspect/src/main.js +0 -0
  405. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/session-store.js +0 -0
  406. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/shell.js +0 -0
  407. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/state.js +0 -0
  408. /package/framework/{v0.3.13-alpha.2/lib/archiver → v0.3.13/lib/swig-filters}/README.md +0 -0
  409. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-filters/package.json +0 -0
  410. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-filters/src/main.js +0 -0
  411. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-resolver/package.json +0 -0
  412. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-resolver/src/main.js +0 -0
  413. /package/framework/{v0.3.13-alpha.2/lib/routing → v0.3.13/lib/url}/README.md +0 -0
  414. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/url/index.js +0 -0
  415. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/url/routing.json +0 -0
  416. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/uuid/package.json +0 -0
  417. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/uuid/src/main.js +0 -0
  418. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/validator.js +0 -0
  419. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/watcher/package.json +0 -0
  420. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/watcher/src/main.js +0 -0
@@ -64,15 +64,28 @@ var refreshCore = function() {
64
64
  }
65
65
  }
66
66
 
67
- // Update lib & helpers
68
- delete require.cache[require.resolve(_(libPath +'/index.js', true))];
69
- require.cache[_(libPath +'/index.js', true)] = require( _(libPath +'/index.js', true) );
70
- require.cache[_(corePath + '/gna.js', true)].exports.lib = require.cache[_(libPath +'/index.js', true)];
71
-
72
- // Update plugins
73
- delete require.cache[require.resolve(_(corePath +'/plugins/index.js', true))];
74
- require.cache[_(corePath +'/plugins/index.js', true)] = require( _(corePath +'/plugins/index.js', true) );
75
- require.cache[_(corePath + '/gna.js', true)].exports.plugins = require.cache[_(corePath +'/plugins/index.js', true)];
67
+ // Update lib & helpers.
68
+ //
69
+ // `require.cache[<path>] = require(<path>)` would overwrite the cache entry
70
+ // which Node expects to be a `Module` instance with an `.exports` property
71
+ // — with the lib registry's *exports object* directly. Subsequent plain
72
+ // `require('../../lib')` calls then read `require.cache[<path>].exports` and
73
+ // get `undefined` (the registry object has no `.exports` key), surfacing as
74
+ // `Cannot read properties of undefined (reading 'Collection')` / `(reading
75
+ // 'Cache')` etc. in the controller render delegates after a dev-mode hot
76
+ // reload. Fix: delete the entry and let the next require() rebuild a proper
77
+ // Module, then point gna.js's captured `.lib` at the fresh exports — the
78
+ // same `.exports`-preserving shape the loop above already uses.
79
+ var libIndexPath = _(libPath +'/index.js', true);
80
+ delete require.cache[require.resolve(libIndexPath)];
81
+ var freshLib = require( libIndexPath );
82
+ require.cache[_(corePath + '/gna.js', true)].exports.lib = freshLib;
83
+
84
+ // Update plugins — same fix as above.
85
+ var pluginsIndexPath = _(corePath +'/plugins/index.js', true);
86
+ delete require.cache[require.resolve(pluginsIndexPath)];
87
+ var freshPlugins = require( pluginsIndexPath );
88
+ require.cache[_(corePath + '/gna.js', true)].exports.plugins = freshPlugins;
76
89
  }
77
90
 
78
91
  // Express compatibility
@@ -325,6 +338,12 @@ function ServerEngineClass(options) {
325
338
  // #H3 — CONTINUATION flood defense (CVE-2024-27316, CVE-2024-27983)
326
339
  // #H7 — configurable via settings.json http2Options.maxSessionInvalidFrames (default 1000)
327
340
  http2Options.maxSessionInvalidFrames = _h2Opts.maxSessionInvalidFrames || 1000;
341
+ // #H9 — rapid-reset rate limit: max new streams accepted per session per
342
+ // rolling 1s window before the session is GOAWAY'd + closed. Defends against
343
+ // CVE-2023-44487-style rapid-reset floods (open then immediately RST streams
344
+ // faster than maxConcurrentStreams alone can throttle). Configurable via
345
+ // settings.json http2Options.maxStreamsPerSecond (default 200).
346
+ var _maxStreamsPerSec = _h2Opts.maxStreamsPerSecond || 200;
328
347
  var http2 = require('http2');
329
348
  switch (options.scheme) {
330
349
  case 'http':
@@ -345,7 +364,8 @@ function ServerEngineClass(options) {
345
364
  activeSessions : 0,
346
365
  totalStreams : 0,
347
366
  goawayCount : 0,
348
- rstCount : 0
367
+ rstCount : 0,
368
+ rapidResetBlocked : 0
349
369
  };
350
370
  server._h2Metrics = _h2Metrics;
351
371
 
@@ -369,6 +389,30 @@ function ServerEngineClass(options) {
369
389
 
370
390
  session.on('stream', (stream) => {
371
391
  _h2Metrics.totalStreams++;
392
+
393
+ // #H9 — rapid-reset rate limit. Count new streams in a rolling 1s
394
+ // window per session; on breach send GOAWAY(ENHANCE_YOUR_CALM) and
395
+ // close the session so a flood cannot exhaust the worker.
396
+ var _now = Date.now();
397
+ if (typeof session._streamWindowStart === 'undefined' || (_now - session._streamWindowStart) >= 1000) {
398
+ session._streamWindowStart = _now;
399
+ session._streamWindowCount = 0;
400
+ }
401
+ session._streamWindowCount++;
402
+ if (session._streamWindowCount > _maxStreamsPerSec) {
403
+ _h2Metrics.rapidResetBlocked++;
404
+ console.warn('[ SERVER ] HTTP/2 rapid-reset rate limit exceeded — ' + session._streamWindowCount + ' streams in <1s (limit ' + _maxStreamsPerSec + '); sending GOAWAY + closing session');
405
+ session.goaway(http2.constants.NGHTTP2_ENHANCE_YOUR_CALM);
406
+ session.close();
407
+ // Deliberately return before registering the per-stream
408
+ // `rstCode` listener below: the session is being torn down,
409
+ // so the breaching stream needs no per-stream accounting.
410
+ // Breached streams are counted by `rapidResetBlocked`, not
411
+ // `rstCount` — the two metrics stay cleanly separated
412
+ // (proactive block vs. observed client RST_STREAM).
413
+ return;
414
+ }
415
+
372
416
  stream.on('rstCode', (code) => {
373
417
  if (code !== 0) _h2Metrics.rstCount++;
374
418
  });
@@ -630,7 +674,8 @@ function ServerEngineClass(options) {
630
674
  activeSessions : server._h2Metrics.activeSessions,
631
675
  totalStreams : server._h2Metrics.totalStreams,
632
676
  goawayCount : server._h2Metrics.goawayCount,
633
- rstCount : server._h2Metrics.rstCount
677
+ rstCount : server._h2Metrics.rstCount,
678
+ rapidResetBlocked : server._h2Metrics.rapidResetBlocked
634
679
  };
635
680
  }
636
681
  const infoStatus = JSON.stringify(infoPayload);
@@ -21,12 +21,14 @@
21
21
  * initialWindowSize : flow-control window in bytes (default: 655350 = 10× Node default)
22
22
  * maxSessionRejectedStreams : RST flood defense — CVE-2019-9514, CVE-2023-44487 (default: 100)
23
23
  * maxSessionInvalidFrames : CONTINUATION flood defense — CVE-2024-27316, CVE-2024-27983 (default: 1000)
24
+ * maxStreamsPerSecond : rapid-reset rate limit — max new streams per session per rolling 1s window before GOAWAY + close — CVE-2023-44487 (default: 200)
24
25
  */
25
26
  // "http2Options": {
26
27
  // "maxConcurrentStreams": 256,
27
28
  // "initialWindowSize": 655350,
28
29
  // "maxSessionRejectedStreams": 100,
29
- // "maxSessionInvalidFrames": 1000
30
+ // "maxSessionInvalidFrames": 1000,
31
+ // "maxStreamsPerSecond": 200
30
32
  // },
31
33
 
32
34
  /**
@@ -40,23 +40,33 @@ var ${bundle} = require('gina');
40
40
  // // expressSession.name = 'myDb';
41
41
  // //
42
42
  // // var StoreClass = new SessionStore(expressSession); // returns connector-specific Store class
43
+ // //
44
+ // // Recommended: keep the session secret out of tracked source via the
45
+ // // ${secret:KEY} placeholder pattern. Put it in bundle/config/session.json:
46
+ // // { "secret": "${secret:SESSION_SECRET}" }
47
+ // // then read via self.getConfig('session').secret. lib/secrets fills
48
+ // // the placeholder from process.env.SESSION_SECRET at config-load time.
49
+ // // See https://gina.io/docs/guides/secrets for details.
50
+ // //
43
51
  // // app.use(session({
44
- // // secret : process.env.SESSION_SECRET || 'changeme',
52
+ // // secret : self.getConfig('session').secret, // ${secret:SESSION_SECRET}
45
53
  // // resave : false,
46
54
  // // saveUninitialized: false,
47
55
  // // store : new StoreClass(),
48
56
  // // cookie : { maxAge: 86400000 }
49
57
  // // }));
50
58
  // //
51
- // // #CSRF2 — signed double-submit token middleware. Reads
52
- // // process.env.GINA_CSRF_SECRET (generate with `openssl rand -base64 64`).
59
+ // // #CSRF2 — signed double-submit token middleware. Reads its HMAC secret
60
+ // // from settings.json > csrf.secret (recommended; supports ${secret:KEY}
61
+ // // placeholders), or falls back to process.env.GINA_CSRF_SECRET
62
+ // // (back-compat). Generate the secret once with `openssl rand -base64 64`.
53
63
  // // MUST be registered AFTER the session middleware. Per-route opt-out
54
64
  // // for webhook receivers via `routing.json > "csrfExempt": true`.
55
65
  // // var csrf = ${bundle}.plugins.Csrf();
56
66
  // // app.use(csrf);
57
67
  //
58
68
  // // you can also use express middleware components directly (no #CSRF1 hardening)
59
- // // eg.: app.use( expressSession({secret: '1234567890QWERTY'}) );
69
+ // // eg.: app.use( expressSession({secret: process.env.SESSION_SECRET}) );
60
70
  //
61
71
  // //then notify the server that startup sequence can be resumed
62
72
  // event.emit('complete', app);// this is important !
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "Gina Bundle",
3
+ "short_name": "Gina",
4
+ "description": "A Gina bundle — edit this manifest to describe your app.",
5
+ "start_url": "/",
6
+ "scope": "/",
7
+ "display": "standalone",
8
+ "theme_color": "#2b2b2b",
9
+ "background_color": "#ffffff",
10
+ "icons": [
11
+ {
12
+ "src": "/favicon.ico",
13
+ "sizes": "any",
14
+ "type": "image/x-icon"
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,20 @@
1
+ `public` is the public directory.
2
+
3
+ ## Progressive Web App (PWA)
4
+
5
+ This bundle is scaffolded with a starter PWA setup:
6
+
7
+ - `manifest.webmanifest` — the web app manifest (name, theme colour, icons, ...). Edit it to describe your app.
8
+ - `sw.js` — a service worker with a basic cache-first strategy. Edit `CACHE_NAME` and the precache list for your app.
9
+
10
+ The default layout (`templates/html/layouts/main.html`) already links the manifest and registers the service worker.
11
+
12
+ ### Icons
13
+
14
+ No icon binaries ship with the scaffold — drop your own PNGs into this directory:
15
+
16
+ - `icon-192.png` — 192x192
17
+ - `icon-512.png` — 512x512
18
+ - `apple-touch-icon.png` — 180x180, used by `main.html` for the iOS home-screen icon
19
+
20
+ `favicon.ico` is the baseline icon already wired into `manifest.webmanifest`. Once you add the PNGs above, extend the `icons` array in `manifest.webmanifest` to point at them.
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Service worker for a Gina bundle — basic cache-first strategy.
3
+ *
4
+ * Starting point only: it pre-caches a small app shell on install and serves
5
+ * cached responses first, falling back to the network. Edit CACHE_NAME and
6
+ * PRECACHE_URLS for your app, and extend the fetch strategy as needed
7
+ * (network-first for APIs, stale-while-revalidate for assets, ...).
8
+ *
9
+ * Registered by the default layout (templates/html/layouts/main.html). Served
10
+ * at /sw.js: a service worker's scope is the directory it is served from, so
11
+ * keeping it at the public root gives it whole-origin scope.
12
+ */
13
+
14
+ 'use strict';
15
+
16
+ /**
17
+ * Cache bucket name. Bump the version suffix whenever the precache list or any
18
+ * cached asset changes — the activate handler purges every other bucket.
19
+ *
20
+ * @constant {string}
21
+ */
22
+ var CACHE_NAME = 'gina-bundle-cache-v1';
23
+
24
+ /**
25
+ * App-shell URLs pre-cached at install time. Keep this list short — just the
26
+ * entry points needed to render the first screen offline.
27
+ *
28
+ * @constant {string[]}
29
+ */
30
+ var PRECACHE_URLS = [
31
+ '/',
32
+ '/manifest.webmanifest'
33
+ ];
34
+
35
+ /**
36
+ * Install handler — opens the cache bucket, pre-caches the app shell, then
37
+ * activates this worker immediately instead of waiting for open clients to
38
+ * close.
39
+ *
40
+ * @param {ExtendableEvent} event - The service worker `install` event.
41
+ * @returns {void}
42
+ *
43
+ * @example
44
+ * // Fired automatically by the browser after registration.
45
+ */
46
+ self.addEventListener('install', function (event) {
47
+ event.waitUntil(
48
+ caches.open(CACHE_NAME).then(function (cache) {
49
+ return cache.addAll(PRECACHE_URLS);
50
+ })
51
+ );
52
+ self.skipWaiting();
53
+ });
54
+
55
+ /**
56
+ * Activate handler — purges cache buckets left over from previous versions,
57
+ * then takes control of open clients without waiting for a reload.
58
+ *
59
+ * @param {ExtendableEvent} event - The service worker `activate` event.
60
+ * @returns {void}
61
+ *
62
+ * @example
63
+ * // Fired automatically by the browser once the new worker takes over.
64
+ */
65
+ self.addEventListener('activate', function (event) {
66
+ event.waitUntil(
67
+ caches.keys().then(function (keys) {
68
+ return Promise.all(keys.map(function (key) {
69
+ return (key === CACHE_NAME) ? null : caches.delete(key);
70
+ }));
71
+ })
72
+ );
73
+ self.clients.claim();
74
+ });
75
+
76
+ /**
77
+ * Fetch handler — cache-first. Returns the cached response when one exists,
78
+ * otherwise fetches from the network and caches a copy of successful
79
+ * same-origin GET responses for next time. When the network is unreachable
80
+ * and nothing is cached, navigations fall back to the precached app shell.
81
+ *
82
+ * @param {FetchEvent} event - The service worker `fetch` event.
83
+ * @returns {void}
84
+ *
85
+ * @example
86
+ * // Fired automatically by the browser for every same-scope request.
87
+ */
88
+ self.addEventListener('fetch', function (event) {
89
+ // Only GET requests are cacheable — let the browser handle the rest.
90
+ if (event.request.method !== 'GET') {
91
+ return;
92
+ }
93
+
94
+ event.respondWith(
95
+ caches.match(event.request).then(function (cached) {
96
+ if (cached) {
97
+ return cached;
98
+ }
99
+
100
+ return fetch(event.request).then(function (response) {
101
+ // Only cache valid, basic (same-origin) responses.
102
+ if (!response || response.status !== 200 || response.type !== 'basic') {
103
+ return response;
104
+ }
105
+
106
+ var copy = response.clone();
107
+ caches.open(CACHE_NAME).then(function (cache) {
108
+ cache.put(event.request, copy);
109
+ });
110
+
111
+ return response;
112
+ }).catch(function () {
113
+ // Offline with no cached copy — fall back to the precached app
114
+ // shell for navigations so the page still renders; other
115
+ // requests surface the network error as they normally would.
116
+ if (event.request.mode === 'navigate') {
117
+ return caches.match('/');
118
+ }
119
+ });
120
+ })
121
+ );
122
+ });
@@ -9,6 +9,20 @@
9
9
  <meta name="robots" content="index, follow, noarchive">
10
10
  <meta name="distribution" content="global">
11
11
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
12
+ <link rel="manifest" href="/manifest.webmanifest">
13
+ <meta name="theme-color" content="#2b2b2b">
14
+ <link rel="apple-touch-icon" href="/apple-touch-icon.png">
15
+ <script>
16
+ // Progressive Web App — register the service worker (see public/sw.js).
17
+ // Edit or remove this block to change PWA behaviour.
18
+ if ('serviceWorker' in navigator) {
19
+ window.addEventListener('load', function () {
20
+ navigator.serviceWorker.register('/sw.js').catch(function (err) {
21
+ console.warn('Service worker registration failed:', err);
22
+ });
23
+ });
24
+ }
25
+ </script>
12
26
  </head>
13
27
  <body>
14
28
  <div class="outer-wrap">
@@ -31,11 +31,13 @@
31
31
  // initialWindowSize : flow-control window in bytes (Node default: 65535, Gina default: 655350 = 10×).
32
32
  // maxSessionRejectedStreams : RST flood defense — CVE-2019-9514, CVE-2023-44487 (default: 100).
33
33
  // maxSessionInvalidFrames : CONTINUATION flood defense — CVE-2024-27316, CVE-2024-27983 (default: 1000).
34
+ // maxStreamsPerSecond : rapid-reset rate limit — max new streams per session per rolling 1s window before GOAWAY + close — CVE-2023-44487 (default: 200).
34
35
  "http2Options": {
35
36
  "maxConcurrentStreams": 256,
36
37
  "initialWindowSize": 655350,
37
38
  "maxSessionRejectedStreams": 100,
38
- "maxSessionInvalidFrames": 1000
39
+ "maxSessionInvalidFrames": 1000,
40
+ "maxStreamsPerSecond": 200
39
41
  },
40
42
  // Compare with core/content.encoding
41
43
  // This is the prefered order when it comes to respond with compressed content
@@ -83,9 +85,14 @@
83
85
  }
84
86
  },
85
87
  // #CSRF2 / #CSRF3 — signed double-submit token middleware + Origin/Referer
86
- // pre-filter applied by gina.plugins.Csrf(). The secret lives in
87
- // `process.env.GINA_CSRF_SECRET` (NOT in this file) — generate with
88
- // `openssl rand -base64 64` and store in env.json or your shell profile.
88
+ // pre-filter applied by gina.plugins.Csrf(). Generate the HMAC secret with
89
+ // `openssl rand -base64 64`.
90
+ //
91
+ // secret — HMAC signing key. Supports ${secret:KEY} placeholders
92
+ // (lib/secrets fills them from process.env at config-load
93
+ // time). Falls back to process.env.GINA_CSRF_SECRET when
94
+ // this field is empty or absent (back-compat). Example:
95
+ // "secret": "${secret:MY_CSRF_KEY}".
89
96
  // cookieName — cookie name issued on safe methods
90
97
  // headerName — request header read on mutating methods
91
98
  // fieldName — form field read on mutating methods
@@ -21,21 +21,35 @@ module.exports = function(){
21
21
  // `JSON.clone()` is a prototype defined in `GINA_DIR//lib/prototypes.json_clone`
22
22
 
23
23
  /**
24
- * Load a json file and removing comments if found
24
+ * Load a JSON file, stripping JS-style block (`/* ... *\/`) and line (`// ...`)
25
+ * comments before parsing. Trailing commas before `}`/`]` are tolerated with
26
+ * a warning. Line-comment stripping is per-line on the leftmost `//`: when
27
+ * that `//` is preceded by `:` (URL protocol), `"` (inside a string value),
28
+ * or `\` (escape), the entire line is treated as data and left alone — so
29
+ * values like `"http://host//:rest"` round-trip unchanged.
25
30
  *
26
- * @param {string} filename - path to json content
31
+ * On a real syntax error the helper logs via `console.emerg` and exits with
32
+ * code 1; on unexpected I/O failure it rethrows.
27
33
  *
28
- * @return {object} jsonObject
34
+ * @param {string} filename - absolute or relative path to the JSON-with-comments file
35
+ *
36
+ * @return {object} parsed JSON object
37
+ *
38
+ * @example
39
+ * // file: app.json
40
+ * // {
41
+ * // "url": "https://example.com/foo",
42
+ * // // a bare line-comment separator
43
+ * // "value": 1
44
+ * // }
45
+ * var config = requireJSON(__dirname + '/app.json');
46
+ * // → { url: 'https://example.com/foo', value: 1 }
29
47
  * */
30
48
  requireJSON = function(filename){
31
49
 
32
50
  //console.debug('[ Helpers ][ requireJSON ] ', filename);
33
51
 
34
- var i = null
35
- , len = null
36
- , commentsWithSlashes = null
37
- , jsonStr = null
38
- ;
52
+ var jsonStr = null;
39
53
 
40
54
  try {
41
55
  if (
@@ -60,22 +74,24 @@ module.exports = function(){
60
74
  jsonStr = jsonStr.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)/g, '');
61
75
  }
62
76
 
63
- // line style comments
64
- commentsWithSlashes = jsonStr.match(/\/\/(.*)?/g);
65
-
66
- len = ( commentsWithSlashes) ? commentsWithSlashes.length : 0;
67
- if (commentsWithSlashes && len > 0) {
68
- i = 0;
69
- for(; i< len; ++i) {
70
- // ignore urls
71
- // if ( /(\:|\")/.test( jsonStr.substring(jsonStr.indexOf(commentsWithSlashes[i])-1,1) ) ) {
72
- if ( /(\:|\")/.test( jsonStr.substr(jsonStr.indexOf(commentsWithSlashes[i])-1,1) ) ) {
73
- continue;
77
+ // line style comments — per-line, leftmost `//` only. When the leftmost
78
+ // `//` on a line is preceded by `:` (URL protocol), `"` (inside a string
79
+ // value), or `\` (escape), the entire line is treated as data and left
80
+ // alone mirrors the original greedy-from-first-match heuristic so
81
+ // values like "http://host//:rest" round-trip unchanged.
82
+ jsonStr = jsonStr.split('\n').map(function(line) {
83
+ var idx = line.indexOf('//');
84
+ if (idx === -1) {
85
+ return line;
86
+ }
87
+ if (idx > 0) {
88
+ var prev = line.charAt(idx - 1);
89
+ if (prev === ':' || prev === '"' || prev === '\\') {
90
+ return line;
74
91
  }
75
-
76
- jsonStr = jsonStr.replace(commentsWithSlashes[i], '');
77
92
  }
78
- }
93
+ return line.substring(0, idx);
94
+ }).join('\n');
79
95
 
80
96
  try {
81
97
  return JSON.parse(jsonStr)
@@ -4,6 +4,7 @@ var console = lib.logger;
4
4
  var mcpServer = lib.mcpServer;
5
5
  var mcpDispatch = lib.mcpDispatch;
6
6
  var mcpHttp = lib.mcpHttp;
7
+ var secrets = lib.secrets;
7
8
 
8
9
  /**
9
10
  * @module gina/lib/cmd/bundle/mcp-start
@@ -136,6 +137,19 @@ function MCPStart(opt, cmd) {
136
137
  return end( new Error(mcpPath +' is not a valid MCP manifest (missing `tools` array)') );
137
138
  }
138
139
 
140
+ // ${secret:KEY} placeholder substitution. The cmd handler loads mcp.json
141
+ // directly (it is not part of the bundle-config tree walked by
142
+ // core/config.js::loadBundleConfig), so the resolver hook on bundle
143
+ // start does NOT see this document. Run resolve() here so that
144
+ // `server.authToken` (and any other future placeholder field in
145
+ // mcp.json) gets filled from process.env before downstream readers
146
+ // pick it up.
147
+ try {
148
+ secrets.resolve(mcpDoc);
149
+ } catch (secretErr) {
150
+ return end( new Error('Failed to resolve secrets in '+ mcpPath +': '+ secretErr.message) );
151
+ }
152
+
139
153
  var baseUrl = buildBaseUrl(bundle, mcpDoc);
140
154
 
141
155
  // Loud, one-time notice about the tools that look session-scoped.
@@ -399,8 +413,10 @@ function MCPStart(opt, cmd) {
399
413
  /**
400
414
  * Resolves the static bearer token. Precedence:
401
415
  * 1. `--auth-token=<token>` CLI flag
402
- * 2. `mcp.json > server > authToken`
403
- * 3. `process.env.GINA_MCP_AUTH_TOKEN`
416
+ * 2. `mcp.json > server > authToken` — supports `${secret:KEY}` placeholders
417
+ * (resolved at handler entry by `lib/secrets` against `process.env`).
418
+ * 3. `process.env.GINA_MCP_AUTH_TOKEN` — direct fallback when neither the
419
+ * CLI flag nor the mcp.json field is set.
404
420
  * 4. `null` (no auth; loopback bind is the security boundary)
405
421
  *
406
422
  * @private
@@ -128,6 +128,11 @@ function Lib() {
128
128
  // instance with an HTTP endpoint (POST, JSON/SSE negotiation, batch,
129
129
  // Mcp-Session-Id lifecycle). Auth / Origin checks land in Phase 2b S2.
130
130
  mcpHttp : _require('./mcp-http'),
131
+ // ${secret:KEY} placeholder resolver for bundle JSON configs. Walks
132
+ // the merged config object in place at config-load time (per-bundle,
133
+ // inside loadBundleConfig). Default backend reads process.env[KEY];
134
+ // fail-closed on unset/empty values. See lib/secrets/src/main.js.
135
+ secrets : _require('./secrets'),
131
136
  };
132
137
 
133
138
  /**
@@ -10,11 +10,8 @@ const net = require('net');
10
10
 
11
11
  var helpers = null;
12
12
 
13
+ // #M22 — merge-eval fallback removed (sister fix to lib/merge/src/main.js direct json_clone require)
13
14
  var merge = require(__dirname + '/../../../../merge');
14
- if ( typeof(merge) != 'function' ) {
15
- // if needed for unit tests
16
- merge = eval(fs.readFileSync(__dirname +'/../../../../merge/src/main.js').toString())
17
- }
18
15
 
19
16
  function FileContainer(opt, loggers) {
20
17
  var self = {
@@ -4,11 +4,8 @@ const fs = require('fs');
4
4
  const net = require('net');
5
5
  const util = require('util');
6
6
  const promisify = util.promisify;
7
+ // #M22 — merge-eval fallback removed (sister fix to lib/merge/src/main.js direct json_clone require)
7
8
  var merge = require(__dirname +'/../../../../merge');
8
- if ( typeof(merge) != 'function' ) {
9
- // if needed for unit tests
10
- merge = eval(fs.readFileSync(__dirname +'/../../../../merge/src/main.js').toString())
11
- }
12
9
  function MqContainer(opt, loggers) {
13
10
  var self = {
14
11
  // flow or container name/id
@@ -63,11 +63,8 @@ var merge = require('../../merge');
63
63
  var inherits = require('../../inherits');
64
64
  var helpers = require('../../../helpers');
65
65
 
66
+ // #M22 — merge-eval fallback removed; the circular chain that produced a partial merge was broken at the merge.js side (direct require of utils/prototypes.json_clone instead of helpers/index.js's for-loop loader, which transitively required lib/logger).
66
67
  // BO - publishing hack
67
- if ( typeof(merge) != 'function' ) {
68
- // if needed for unit tests
69
- merge = eval(fs.readFileSync(__dirname +'/../../merge/src/main.js').toString())
70
- }
71
68
  if ( typeof(JSON.clone) == 'undefined' ) {
72
69
  require(__dirname +'/../../../helpers/prototypes')()
73
70
  }
@@ -583,7 +583,8 @@ function Merge() {
583
583
  if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
584
584
  // for unit tests
585
585
  if ( typeof(JSON.clone) == 'undefined' ) {
586
- require('../../../helpers');
586
+ // #M22 — direct require of the clone primitive instead of helpers/index.js's for-loop loader (which transitively requires lib/logger and returns a partial merge under circular load)
587
+ JSON.clone = require(__dirname + '/../../../../../utils/prototypes.json_clone');
587
588
  }
588
589
  // Publish as node.js module
589
590
  module.exports = Merge()
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "gina-lib-secrets",
3
+ "version": "1.0.0",
4
+ "description": "Resolver for ${secret:KEY} placeholders in bundle JSON configs. Substituted at config-load time from a pluggable backend (default: process.env).",
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,60 @@
1
+ 'use strict';
2
+ /*
3
+ * This file is part of the gina package.
4
+ * Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
9
+
10
+ /**
11
+ * @module lib/secrets/backends/env
12
+ * @description `process.env`-backed resolver for `${secret:KEY}` placeholders.
13
+ * Reads the raw value from `process.env[key]`. Throws the generic
14
+ * `'Secret resolution failed'` Error when the env var is unset or empty —
15
+ * the user-facing message intentionally omits the key name. The key is
16
+ * attached non-enumerably to the thrown Error as `_ginaSecretKey` so
17
+ * callers can log it at debug level without leaking it through `toString()`.
18
+ */
19
+
20
+ /**
21
+ * Resolve a secret key against `process.env`.
22
+ *
23
+ * @memberof module:lib/secrets/backends/env
24
+ * @function resolve
25
+ * @param {string} key - Placeholder key, e.g. `'DB_PASSWORD'`
26
+ * @returns {string} Non-empty env-var value
27
+ * @throws {Error} `'Secret resolution failed'` when `process.env[key]` is unset or empty
28
+ *
29
+ * @example
30
+ * var env = require('./backends/env');
31
+ * process.env.DB_PASSWORD = 's3cret';
32
+ * env.resolve('DB_PASSWORD'); // → 's3cret'
33
+ *
34
+ * @example
35
+ * delete process.env.MISSING;
36
+ * try {
37
+ * env.resolve('MISSING');
38
+ * } catch (e) {
39
+ * e.message; // 'Secret resolution failed' ← no key name
40
+ * e._ginaSecretKey; // 'MISSING' ← non-enumerable, for debug logging
41
+ * }
42
+ */
43
+ function resolve(key) {
44
+ var value = process.env[key];
45
+ if (typeof value !== 'string' || value === '') {
46
+ var err = new Error('Secret resolution failed');
47
+ Object.defineProperty(err, '_ginaSecretKey', {
48
+ value: key,
49
+ enumerable: false,
50
+ configurable: true,
51
+ writable: true
52
+ });
53
+ throw err;
54
+ }
55
+ return value;
56
+ }
57
+
58
+ module.exports = {
59
+ resolve: resolve
60
+ };