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
@@ -0,0 +1,404 @@
1
+ - generic [ref=e2]:
2
+ - region "Skip to main content":
3
+ - link "Skip to main content" [ref=e3] [cursor=pointer]:
4
+ - /url: "#__docusaurus_skipToContent_fallback"
5
+ - navigation "Main" [ref=e4]:
6
+ - generic [ref=e5]:
7
+ - generic [ref=e6]:
8
+ - link "Gina logo Gina" [ref=e7] [cursor=pointer]:
9
+ - /url: /docs/
10
+ - img "Gina logo" [ref=e9]
11
+ - generic [ref=e10]: Gina
12
+ - link "Docs" [ref=e11] [cursor=pointer]:
13
+ - /url: /docs/intro
14
+ - link "Tutorials" [ref=e12] [cursor=pointer]:
15
+ - /url: /docs/tutorials
16
+ - link "Templating" [ref=e13] [cursor=pointer]:
17
+ - /url: /docs/templating/
18
+ - link "Roadmap" [ref=e14] [cursor=pointer]:
19
+ - /url: /docs/roadmap
20
+ - generic [ref=e15]:
21
+ - generic [ref=e17]:
22
+ - link "Changelog" [ref=e18] [cursor=pointer]:
23
+ - /url: https://github.com/gina-io/gina/releases
24
+ - text: v0.3.12
25
+ - link "GitHub repository" [ref=e19] [cursor=pointer]:
26
+ - /url: https://github.com/gina-io/gina
27
+ - img [ref=e20]
28
+ - link "npm package (stable)" [ref=e22] [cursor=pointer]:
29
+ - /url: https://www.npmjs.com/package/gina/v/0.3.12
30
+ - img [ref=e23]
31
+ - generic "light mode" [ref=e26] [cursor=pointer]:
32
+ - checkbox "Switch between dark and light mode (currently light mode)" [disabled]
33
+ - generic [ref=e27]:
34
+ - generic [ref=e28]: ☾
35
+ - generic [ref=e29]: ☀
36
+ - textbox "Search" [ref=e32]
37
+ - generic [ref=e35]:
38
+ - complementary [ref=e36]:
39
+ - navigation "Docs sidebar" [ref=e39]:
40
+ - list [ref=e40]:
41
+ - listitem [ref=e41]:
42
+ - link "What is Gina?" [ref=e42] [cursor=pointer]:
43
+ - /url: /docs/intro
44
+ - img [ref=e44]
45
+ - generic "What is Gina?" [ref=e46]
46
+ - listitem [ref=e47]:
47
+ - generic [ref=e48]:
48
+ - link "Getting Started" [ref=e49] [cursor=pointer]:
49
+ - /url: /docs/getting-started
50
+ - img [ref=e51]
51
+ - generic "Getting Started" [ref=e56]
52
+ - button "Expand sidebar category 'Getting Started'" [ref=e57] [cursor=pointer]
53
+ - listitem [ref=e58]:
54
+ - generic [ref=e59]:
55
+ - link "Concepts" [ref=e60] [cursor=pointer]:
56
+ - /url: /docs/concepts
57
+ - img [ref=e62]
58
+ - generic "Concepts" [ref=e64]
59
+ - button "Expand sidebar category 'Concepts'" [ref=e65] [cursor=pointer]
60
+ - listitem [ref=e66]:
61
+ - generic [ref=e67]:
62
+ - link "Guides" [ref=e68] [cursor=pointer]:
63
+ - /url: /docs/guides
64
+ - img [ref=e70]
65
+ - generic "Guides" [ref=e73]
66
+ - button "Expand sidebar category 'Guides'" [ref=e74] [cursor=pointer]
67
+ - listitem [ref=e75]:
68
+ - generic [ref=e76]:
69
+ - link "CLI Reference" [ref=e77] [cursor=pointer]:
70
+ - /url: /docs/cli
71
+ - img [ref=e79]
72
+ - generic "CLI Reference" [ref=e81]
73
+ - button "Collapse sidebar category 'CLI Reference'" [expanded] [ref=e82] [cursor=pointer]
74
+ - list [ref=e83]:
75
+ - listitem [ref=e84]:
76
+ - link "bundle" [ref=e85] [cursor=pointer]:
77
+ - /url: /docs/cli/cli-bundle
78
+ - generic "bundle" [ref=e86]
79
+ - listitem [ref=e87]:
80
+ - link "project" [ref=e88] [cursor=pointer]:
81
+ - /url: /docs/cli/cli-project
82
+ - generic "project" [ref=e89]
83
+ - listitem [ref=e90]:
84
+ - link "framework" [ref=e91] [cursor=pointer]:
85
+ - /url: /docs/cli/cli-framework
86
+ - generic "framework" [ref=e92]
87
+ - listitem [ref=e93]:
88
+ - link "env" [ref=e94] [cursor=pointer]:
89
+ - /url: /docs/cli/cli-env
90
+ - generic "env" [ref=e95]
91
+ - listitem [ref=e96]:
92
+ - link "port" [ref=e97] [cursor=pointer]:
93
+ - /url: /docs/cli/cli-port
94
+ - generic "port" [ref=e98]
95
+ - listitem [ref=e99]:
96
+ - link "scope" [ref=e100] [cursor=pointer]:
97
+ - /url: /docs/cli/cli-scope
98
+ - generic "scope" [ref=e101]
99
+ - listitem [ref=e102]:
100
+ - link "view" [ref=e103] [cursor=pointer]:
101
+ - /url: /docs/cli/cli-view
102
+ - generic "view" [ref=e104]
103
+ - listitem [ref=e105]:
104
+ - link "cache" [ref=e106] [cursor=pointer]:
105
+ - /url: /docs/cli/cli-cache
106
+ - generic "cache" [ref=e107]
107
+ - listitem [ref=e108]:
108
+ - link "protocol" [ref=e109] [cursor=pointer]:
109
+ - /url: /docs/cli/cli-protocol
110
+ - generic "protocol" [ref=e110]
111
+ - listitem [ref=e111]:
112
+ - link "service" [ref=e112] [cursor=pointer]:
113
+ - /url: /docs/cli/cli-service
114
+ - generic "service" [ref=e113]
115
+ - listitem [ref=e114]:
116
+ - link "connector" [ref=e115] [cursor=pointer]:
117
+ - /url: /docs/cli/cli-connector
118
+ - generic "connector" [ref=e116]
119
+ - listitem [ref=e117]:
120
+ - generic [ref=e118]:
121
+ - link "Configuration Reference" [ref=e119] [cursor=pointer]:
122
+ - /url: /docs/reference/
123
+ - img [ref=e121]
124
+ - generic "Configuration Reference" [ref=e122]
125
+ - button "Expand sidebar category 'Configuration Reference'" [ref=e123] [cursor=pointer]
126
+ - listitem [ref=e124]:
127
+ - generic [ref=e125]:
128
+ - link "API Reference" [ref=e126] [cursor=pointer]:
129
+ - /url: /docs/api
130
+ - img [ref=e128]
131
+ - generic "API Reference" [ref=e131]
132
+ - button "Expand sidebar category 'API Reference'" [ref=e132] [cursor=pointer]
133
+ - listitem [ref=e133]:
134
+ - generic [ref=e134]:
135
+ - link "Globals" [ref=e135] [cursor=pointer]:
136
+ - /url: /docs/globals
137
+ - img [ref=e137]
138
+ - generic "Globals" [ref=e140]
139
+ - button "Expand sidebar category 'Globals'" [ref=e141] [cursor=pointer]
140
+ - listitem [ref=e142]:
141
+ - link "Security" [ref=e143] [cursor=pointer]:
142
+ - /url: /docs/security
143
+ - img [ref=e145]
144
+ - generic "Security" [ref=e147]
145
+ - listitem [ref=e148]:
146
+ - link "Migration Guide" [ref=e149] [cursor=pointer]:
147
+ - /url: /docs/migration
148
+ - img [ref=e151]
149
+ - generic "Migration Guide" [ref=e153]
150
+ - main [ref=e154]:
151
+ - generic [ref=e156]:
152
+ - generic [ref=e158]:
153
+ - article [ref=e159]:
154
+ - navigation "Breadcrumbs" [ref=e160]:
155
+ - list [ref=e161]:
156
+ - listitem [ref=e162]:
157
+ - link "Home page" [ref=e163] [cursor=pointer]:
158
+ - /url: /docs/
159
+ - img [ref=e164]
160
+ - listitem [ref=e166]:
161
+ - link "CLI Reference" [ref=e167] [cursor=pointer]:
162
+ - /url: /docs/cli
163
+ - listitem [ref=e168]:
164
+ - generic [ref=e169]: service
165
+ - generic [ref=e170]:
166
+ - heading "service" [level=1] [ref=e172]
167
+ - generic [ref=e173]:
168
+ - generic [ref=e174]:
169
+ - generic [ref=e175]:
170
+ - img [ref=e176]
171
+ - text: 1 min read
172
+ - generic [ref=e179]: Intermediate
173
+ - generic [ref=e180]:
174
+ - generic [ref=e181]: Prerequisites
175
+ - list [ref=e182]:
176
+ - listitem [ref=e183]:
177
+ - link "Gina installed globally" [ref=e184] [cursor=pointer]:
178
+ - /url: /docs/getting-started/installation
179
+ - listitem [ref=e185]:
180
+ - link "CLI bundle reference" [ref=e186] [cursor=pointer]:
181
+ - /url: /docs/cli/cli-bundle
182
+ - paragraph [ref=e187]:
183
+ - text: The
184
+ - code [ref=e188]: service
185
+ - text: command group lists
186
+ - strong [ref=e189]: framework-internal services
187
+ - text: — bundles that ship alongside gina and run as companion processes (currently
188
+ - code [ref=e190]: proxy
189
+ - text: and
190
+ - code [ref=e191]: inspector
191
+ - text: ). These services are registered under the reserved
192
+ - code [ref=e192]: "@gina"
193
+ - text: project.
194
+ - generic [ref=e193]:
195
+ - generic [ref=e194]:
196
+ - img [ref=e196]
197
+ - text: Gina-internal surface
198
+ - paragraph [ref=e199]:
199
+ - code [ref=e200]: service:list
200
+ - text: currently rejects any project other than
201
+ - code [ref=e201]: "@gina"
202
+ - text: . User-defined services are not a surface yet — use
203
+ - link "bundle:list" [ref=e202] [cursor=pointer]:
204
+ - /url: /docs/cli/cli-bundle#bundlelist
205
+ - code [ref=e203]: bundle:list
206
+ - text: for bundles in user projects.
207
+ - separator [ref=e204]
208
+ - heading "service:listDirect link to servicelist" [level=2] [ref=e205]:
209
+ - code [ref=e206]: service:list
210
+ - link "Direct link to servicelist" [ref=e207] [cursor=pointer]:
211
+ - /url: "#servicelist"
212
+ - text: "#"
213
+ - paragraph [ref=e208]:
214
+ - emphasis [ref=e209]: New in 0.3.7-alpha.2
215
+ - paragraph [ref=e210]: List framework-internal services with src-existence, preferred-port summary, and host-side running state.
216
+ - code [ref=e214]:
217
+ - generic [ref=e215]: gina service:list
218
+ - code [ref=e219]:
219
+ - generic [ref=e220]: gina service:list @gina
220
+ - paragraph [ref=e221]:
221
+ - strong [ref=e222]: Flags
222
+ - table [ref=e223]:
223
+ - rowgroup [ref=e224]:
224
+ - row "Flag Description" [ref=e225]:
225
+ - columnheader "Flag" [ref=e226]
226
+ - columnheader "Description" [ref=e227]
227
+ - rowgroup [ref=e228]:
228
+ - row "--format=json Emit a JSON payload instead of the human-readable text table" [ref=e229]:
229
+ - cell "--format=json" [ref=e230]:
230
+ - code [ref=e231]: "--format=json"
231
+ - cell "Emit a JSON payload instead of the human-readable text table" [ref=e232]
232
+ - heading "OutputDirect link to Output" [level=3] [ref=e233]:
233
+ - text: Output
234
+ - link "Direct link to Output" [ref=e234] [cursor=pointer]:
235
+ - /url: "#output"
236
+ - text: "#"
237
+ - code [ref=e238]:
238
+ - generic [ref=e239]: "[ running ] inspector http/2.0 dev https 4208 pid 27007"
239
+ - generic [ref=e240]: "[ running ] proxy http/2.0 dev https 4210 pid 15346"
240
+ - list [ref=e241]:
241
+ - listitem [ref=e242]:
242
+ - strong [ref=e243]:
243
+ - code [ref=e244]: "[ running ]"
244
+ - text: /
245
+ - code [ref=e245]: "[ stopped ]"
246
+ - text: /
247
+ - code [ref=e246]: "[ ?! ]"
248
+ - text: — running state (probed from
249
+ - code [ref=e247]: ~/.gina/run/<service>@gina.pid
250
+ - text: with
251
+ - code [ref=e248]: process.kill(pid, 0)
252
+ - text: ) or src-existence when the source directory is missing.
253
+ - listitem [ref=e249]:
254
+ - strong [ref=e250]:
255
+ - code [ref=e251]: http/2.0 dev https 4208
256
+ - text: — preferred port. Read from
257
+ - code [ref=e252]: ~/.gina/ports.reverse.json
258
+ - text: ". Precedence:"
259
+ - code [ref=e253]: http/2.0 https
260
+ - text: →
261
+ - code [ref=e254]: http/1.1 https
262
+ - text: →
263
+ - code [ref=e255]: http/1.1 http
264
+ - text: ;
265
+ - code [ref=e256]: dev
266
+ - text: env is preferred when present, otherwise the first environment in the record. Services with no allocated port render as
267
+ - code [ref=e257]: (no port)
268
+ - text: .
269
+ - listitem [ref=e258]:
270
+ - strong [ref=e259]:
271
+ - code [ref=e260]: pid 27007
272
+ - text: — process id when running.
273
+ - paragraph [ref=e261]:
274
+ - text: With
275
+ - code [ref=e262]: "--format=json"
276
+ - text: ", each service object carries:"
277
+ - code [ref=e266]:
278
+ - generic [ref=e267]: "{"
279
+ - generic [ref=e268]: "\"service\": \"inspector\","
280
+ - generic [ref=e269]: "\"path\": \"src/inspector\","
281
+ - generic [ref=e270]: "\"status\": \"ok\","
282
+ - generic [ref=e271]: "\"ports\": {"
283
+ - generic [ref=e272]: "\"dev\": { \"http/1.1\": { \"http\": 4200, \"https\": 4204 }, \"http/2.0\": { \"https\": 4208 } },"
284
+ - generic [ref=e273]: "\"prod\": { \"http/1.1\": { \"http\": 4201, \"https\": 4205 }, \"http/2.0\": { \"https\": 4209 } }"
285
+ - generic [ref=e274]: "},"
286
+ - generic [ref=e275]: "\"running\": true,"
287
+ - generic [ref=e276]: "\"pid\": 27007"
288
+ - generic [ref=e277]: "}"
289
+ - paragraph [ref=e278]:
290
+ - text: A missing or malformed
291
+ - code [ref=e279]: ports.reverse.json
292
+ - text: is tolerated — the command still renders with every service showing
293
+ - code [ref=e280]: (no port)
294
+ - text: /
295
+ - code [ref=e281]: "ports: null"
296
+ - text: . A stale pidfile (process exited) reports
297
+ - code [ref=e282]: (stopped)
298
+ - text: without being deleted; pidfile clean-up stays with
299
+ - link "bundle:stop" [ref=e283] [cursor=pointer]:
300
+ - /url: /docs/cli/cli-bundle#bundlestop
301
+ - code [ref=e284]: bundle:stop
302
+ - text: .
303
+ - generic [ref=e285]:
304
+ - generic [ref=e286]:
305
+ - img [ref=e288]
306
+ - text: Docker bundles
307
+ - paragraph [ref=e291]:
308
+ - text: Services running inside a Docker container write their pidfile inside the container, not on the host
309
+ - code [ref=e292]: ~/.gina/run/
310
+ - text: directory. Running
311
+ - code [ref=e293]: service:list
312
+ - text: from a host shell will report them as
313
+ - code [ref=e294]: (stopped)
314
+ - text: even when the container is up — use
315
+ - code [ref=e295]: docker ps
316
+ - text: or
317
+ - code [ref=e296]: docker exec <container> gina service:list
318
+ - text: for the container-side view.
319
+ - separator [ref=e297]
320
+ - heading "service:helpDirect link to servicehelp" [level=2] [ref=e298]:
321
+ - code [ref=e299]: service:help
322
+ - link "Direct link to servicehelp" [ref=e300] [cursor=pointer]:
323
+ - /url: "#servicehelp"
324
+ - text: "#"
325
+ - paragraph [ref=e301]:
326
+ - text: Print the usage summary for the
327
+ - code [ref=e302]: service
328
+ - text: command group.
329
+ - code [ref=e306]:
330
+ - generic [ref=e307]: gina service:help
331
+ - code [ref=e311]:
332
+ - generic [ref=e312]: gina service
333
+ - generic [ref=e313]:
334
+ - generic [ref=e314]:
335
+ - generic [ref=e315]: Was this page helpful?
336
+ - generic [ref=e316]:
337
+ - button "Yes, this was helpful" [ref=e317] [cursor=pointer]:
338
+ - generic [ref=e318]: 👍
339
+ - generic [ref=e319]: –
340
+ - button "No, this was not helpful" [ref=e320] [cursor=pointer]:
341
+ - generic [ref=e321]: 👎
342
+ - generic [ref=e322]: –
343
+ - link "Edit this page" [ref=e326] [cursor=pointer]:
344
+ - /url: https://github.com/gina-io/docs/tree/main/docs/cli/service.md
345
+ - img [ref=e327]
346
+ - text: Edit this page
347
+ - navigation "Docs pages" [ref=e331]:
348
+ - link "Previous « protocol" [ref=e332] [cursor=pointer]:
349
+ - /url: /docs/cli/cli-protocol
350
+ - generic [ref=e333]: Previous
351
+ - generic [ref=e334]: « protocol
352
+ - link "Next connector »" [ref=e335] [cursor=pointer]:
353
+ - /url: /docs/cli/cli-connector
354
+ - generic [ref=e336]: Next
355
+ - generic [ref=e337]: connector »
356
+ - list [ref=e341]:
357
+ - listitem [ref=e342]:
358
+ - link "service:list" [ref=e343] [cursor=pointer]:
359
+ - /url: "#servicelist"
360
+ - code [ref=e344]: service:list
361
+ - list [ref=e345]:
362
+ - listitem [ref=e346]:
363
+ - link "Output" [ref=e347] [cursor=pointer]:
364
+ - /url: "#output"
365
+ - listitem [ref=e348]:
366
+ - link "service:help" [ref=e349] [cursor=pointer]:
367
+ - /url: "#servicehelp"
368
+ - code [ref=e350]: service:help
369
+ - contentinfo [ref=e351]:
370
+ - generic [ref=e352]:
371
+ - generic [ref=e353]:
372
+ - generic [ref=e354]:
373
+ - generic [ref=e355]: Docs
374
+ - list [ref=e356]:
375
+ - listitem [ref=e357]:
376
+ - link "Getting Started" [ref=e358] [cursor=pointer]:
377
+ - /url: /docs/intro
378
+ - generic [ref=e359]:
379
+ - generic [ref=e360]: Community
380
+ - list [ref=e361]:
381
+ - listitem [ref=e362]:
382
+ - link "GitHub Issues(opens in new tab)" [ref=e363] [cursor=pointer]:
383
+ - /url: https://github.com/gina-io/gina/issues
384
+ - text: GitHub Issues
385
+ - img "(opens in new tab)" [ref=e364]
386
+ - listitem [ref=e366]:
387
+ - link "GitHub Discussions(opens in new tab)" [ref=e367] [cursor=pointer]:
388
+ - /url: https://github.com/gina-io/gina/discussions
389
+ - text: GitHub Discussions
390
+ - img "(opens in new tab)" [ref=e368]
391
+ - listitem [ref=e370]:
392
+ - link "Support Gina" [ref=e371] [cursor=pointer]:
393
+ - /url: /docs/support
394
+ - generic [ref=e372]:
395
+ - generic [ref=e373]: More
396
+ - list [ref=e374]:
397
+ - listitem [ref=e375]:
398
+ - link "npm(opens in new tab)" [ref=e376] [cursor=pointer]:
399
+ - /url: https://www.npmjs.com/package/gina
400
+ - text: npm
401
+ - img "(opens in new tab)" [ref=e377]
402
+ - generic [ref=e380]: Copyright © 2009-2026 Gina I/O.
403
+ - button "Collapse sidebar" [ref=e382] [cursor=pointer]:
404
+ - img [ref=e383]
package/CHANGELOG.md CHANGED
@@ -6,6 +6,35 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
6
6
  and is generated by [Changie](https://github.com/miniscruff/changie).
7
7
 
8
8
 
9
+ ## 0.3.13 - 2026-05-14
10
+ ### Added
11
+ * Released `0.3.13` — cumulative stable of the `0.3.13-alpha` cycle. Alpha-cycle headline tracks (detailed under `0.3.13-alpha.3` in the changelog): **`${secret:KEY}` config-placeholder resolver** (#SECRETS1) — `lib/secrets` substitutes `${secret:KEY}` placeholders embedded in bundle JSON configs (`settings.json`, `app.json`, `connectors.json`, `mcp.json`) from `process.env[KEY]` at config-load time, fail-closed on an unset/empty var; ships with a `settings.csrf.secret` slot for `gina.plugins.Csrf()` and `mcp.json` placeholder support for `gina bundle:mcp-start`. **Eval-safety campaign completed** (#M20–#M22) — validator nested-key rule construction refactored off `eval` (#M20); the four HTML event-callback `eval` sites and the conditional-binding evaluator fallback dropped (#M21a, #M21b); the Pattern B user-defined-validator `eval` documented as load-bearing public API with an invariant test (#M21c); the logger ↔ merge circular-require restructured so the three `eval(fs.readFileSync(...))` fallbacks are removed (#M22) — Phase 3c complete, one load-bearing framework `eval` remains by design. Plus the #M1 async-race retrofit follow-up (render-nunjucks terminal-exit closure nulling) and a `requireJSON` line-comment / URL-collision fix. The entries below are the post-alpha-cycle changes that complete the release.
12
+ * Bundle scaffolding now includes a starter Progressive Web App setup. Running view:add adds a manifest.webmanifest and a cache-first service-worker stub (sw.js) to the bundle public directory, and the default HTML layout links the manifest, declares a theme colour, and registers the service worker. Add your own icon PNGs and edit the manifest to describe the app.
13
+ * The Isaac HTTP/2 server now rate-limits rapid-reset stream floods. When a single connection opens more than maxStreamsPerSecond new streams within a rolling one-second window (default 200), the server sends a GOAWAY and closes that session — a targeted, application-level defense against CVE-2023-44487-style attacks on top of the OS-level fix in modern Node.js. Configurable via settings.json http2Options.maxStreamsPerSecond. The /_gina/info endpoint exposes a new rapidResetBlocked counter.
14
+ ### Changed
15
+ * Bumped the @rhinostone/swig dependency floor from ^2.2.0 to ^2.3.0 in framework/v*/package.json. Version 2.3.0 drops yargs and terser from the published package production dependencies — CLI argument parsing is now a built-in zero-dependency parser, and terser (used only by swig compile --minify) moved to devDependencies and loads lazily. A library install of @rhinostone/swig now pulls in only @rhinostone/swig-core, so installing gina has a smaller transitive dependency tree. No template-engine API or behavior change; swigResolver DEFAULT_MIN stays at 2.0.0 since the framework does not depend on any new 2.3.0 API.
16
+ ### Removed
17
+ * Removed two dormant plugin directories (`core/plugins/lib/file/` and `core/plugins/lib/intl/`) that had no consumers in any known bundle. Slightly smaller npm tarball; no functional change.
18
+ ### Fixed
19
+ * Fixed a dev-mode hot-reload crash: refreshCore() overwrote the lib and plugins require.cache entries with their exports objects instead of Module instances, so the controller render delegates threw "Cannot read properties of undefined" after a hot reload.
20
+
21
+ ## 0.3.13-alpha.3 - 2026-05-14 (npm only — no git tag)
22
+ ### Added
23
+ * `${secret:KEY}` placeholder syntax in bundle JSON configs. Substituted at getConfig() time from process.env[KEY]. Fails closed if the env var is unset or empty. Resolution happens once per config-load cycle (cached). Pluggable-backend support is reserved for a future iteration; only the env-var backend ships in this alpha.
24
+ * `settings.json > csrf.secret` config slot in `gina.plugins.Csrf()` — flows through the `lib/secrets` resolver, so `${secret:KEY}` placeholders work for the Csrf HMAC secret. Precedence is `opts.secret` (test override) > `settings.csrf.secret` > `process.env.GINA_CSRF_SECRET` (back-compat); existing bundles that set `GINA_CSRF_SECRET` keep working unchanged.
25
+ * `${secret:KEY}` placeholder support in `mcp.json` for `gina bundle:mcp-start`. The cmd handler now calls `lib/secrets` on the parsed manifest immediately after `requireJSON()`, so `server.authToken` (and any other future placeholder field in mcp.json) gets filled from `process.env[KEY]` before downstream readers pick it up. Existing bundles that set `process.env.GINA_MCP_AUTH_TOKEN` directly keep working unchanged — that fallback is the last step of the precedence chain.
26
+ ### Changed
27
+ * Added terminal-exit closure nulling to render-nunjucks for early per-request memory release, matching render-swig pattern (#M1 retrofit follow-up).
28
+ * Bundle scaffolding (project add / bundle add) now shows the `${secret:KEY}` placeholder pattern as the recommended shape for session and CSRF secrets. `core/template/conf/settings.json` documents the new `settings.csrf.secret` slot (placeholder-compatible) alongside the existing GINA_CSRF_SECRET env-var fallback; `core/template/boilerplate/bundle/index.js` shows `self.getConfig('session').secret` (with bundle/config/session.json holding a `${secret:SESSION_SECRET}` placeholder) as the recommended session-secret wiring, keeping the direct `process.env.SESSION_SECRET` shape as a back-compat note.
29
+ ### Fixed
30
+ * `requireJSON` line-comment stripping no longer fails when a bundle config combines a URL string with a bare `//` line-comment separator. The previous `indexOf`-into-greedy-match pass collided on the URL `://` and silently skipped the real separator, leaving `JSON.parse` to throw `Expected double-quoted property name`. The pass is now per-line on the leftmost `//`, matching the prior heuristic without the substring collision.
31
+ ### Security
32
+ * Replaced eval() in validator nested-key rule construction (Socket #SCS campaign cluster M20).
33
+ * Removing eval() from 4 HTML event-callback sites in the browser bundle (events.js + validator/main.js). The function-call shape `data-gina-...-event-on-*="fn(args)"` is no longer supported — register the handler on window and use the bare-identifier shape `="fn"`; a deprecation warning is logged at runtime if a function-call shape is encountered. Clears 4 of the 9 remaining Socket `Uses eval` flag sites (#M21a).
34
+ * Removing eval() from the conditional binding evaluator fallback in form-validator.js. Form `condition` strings that previously hit the eval escape-hatch now throw with an explicit message listing the four supported shapes (binary comparison `a OP b`, RegExp instance, boolean, /regex/flags literal). Regex-literal strings still pass through. Clears 1 of the 5 remaining Socket `Uses eval` flag sites (#M21b).
35
+ * Documenting the Pattern B eval surface at form-validator.js (user-defined validator function bodies registered on `gina.forms.validators` from disk-loaded `bundle/validators/<name>/main.js` files at framework boot). The eval is load-bearing public API and stays — no behavior change. Adds an in-source trust-model comment block and pins the invariant with `test/lib/validator-scs1i.test.js` (zero writes to `gina.forms.validators` in framework source; zero request-time identifiers around the userValidator source chain). Closes the M21 cluster (#M21c).
36
+ * Restructuring the logger ↔ merge circular-require so the eval fallbacks at lib/logger/src/main.js + the two logger containers are no longer needed and have been removed. Root cause was merge.js requiring `helpers/index.js` (the for-loop helper loader) at module-load to populate `JSON.clone`, which transitively required `lib/logger` via several helpers and produced a partial-module return under circular load. Fix swaps that for a direct require of `utils/prototypes.json_clone` (a 100-line standalone primitive with zero top-level requires) — same JSON.clone population, no circular trigger. Clears the final 3 server-side Socket `Uses eval` sites (#M22). Phase 3c complete: 1 live framework eval site remains (the load-bearing Pattern B at form-validator.js:1886 / #M21c trust model).
37
+
9
38
  ## 0.3.12 - 2026-05-12
10
39
  ### Changed
11
40
  * Bumped @rhinostone/swig dependency floor from ^2.0.1 to ^2.1.0 in framework/v*/package.json. Version 2.1.0 introduces a multi-flavor architecture splitting the runtime into a shared @rhinostone/swig-core package plus per-flavor frontends (@rhinostone/swig native syntax, @rhinostone/swig-twig Twig-syntax frontend); the native @rhinostone/swig package remains drop-in compatible with the @rhinostone/swig@1.x and 2.0.x API surface gina depends on (swig.compile, swig.setFilter, swig.setTag, swig.renderFile). swigResolver DEFAULT_MIN stays at 2.0.0 since the framework does not depend on any new 2.1.0-only API. Resolves the version-currency drift surfaced by 'npm view @rhinostone/swig version' returning 2.1.0 against the current ^2.0.1 floor.
package/README.md CHANGED
@@ -22,7 +22,7 @@ Node.js MVC framework with built-in HTTP/2, multi-bundle architecture, and scope
22
22
  | ORM / entities | EventEmitter-based entity system; SQL files auto-wired to entity methods |
23
23
  | Connectors | Couchbase, MongoDB, ScyllaDB / Cassandra, MySQL, PostgreSQL, Redis, SQLite, AI (LLM) — loaded from project `node_modules` |
24
24
  | AI connector | Any LLM provider via named protocol (`anthropic://`, `openai://`, `ollama://`, …) |
25
- | Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.2.0 — maintained fork with CVE-2023-25345 patched; streaming SSE/chunked via `renderStream()`. Nunjucks supported as opt-in via `render.engine = "nunjucks"` |
25
+ | Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.3.0 — maintained fork with CVE-2023-25345 patched; streaming SSE/chunked via `renderStream()`. Nunjucks supported as opt-in via `render.engine = "nunjucks"` |
26
26
  | Internationalisation | Per-bundle JSON catalogs, `t()` helper, swig + nunjucks `t` filter, CLDR plurals, ICU MessageFormat opt-in via `t.icu()` |
27
27
  | Observability | Built-in `/_gina/metrics` Prometheus endpoint (opt-in, IP-allowlisted) — Node.js process metrics + HTTP counter / duration histogram with cardinality-safe route labels |
28
28
  | Hot reload | WatcherService evicts `require.cache` only on file change — zero per-request overhead in dev |
@@ -39,6 +39,16 @@ gina bundle:start api @myproject
39
39
  open https://localhost:3100
40
40
  ```
41
41
 
42
+ ## What's in 0.3.13
43
+
44
+ - **`${secret:KEY}` placeholder substitution** (#SECRETS1) — bundle JSON configs (`settings.json`, `app.json`, `connectors.json`, `mcp.json`, …) can embed `${secret:KEY}` placeholders that the framework resolves from `process.env[KEY]` at config-load time, before the merged config reaches `getConfig()` or any plugin factory. Anchored to whole-string values; fails closed on an unset/empty var. `gina.plugins.Csrf()` reads `settings.csrf.secret` through it, and `gina bundle:mcp-start` resolves `mcp.json` placeholders such as `server.authToken`. Pluggable-backend interface reserved for a future iteration; only the `process.env` backend ships now.
45
+ - **Progressive Web App scaffold** (#R6) — `gina view:add` now drops a `manifest.webmanifest` and a cache-first service-worker stub (`sw.js`) into the bundle's `public/` directory, and wires the manifest `<link>`, a `theme-color` `<meta>`, an apple-touch-icon `<link>`, and an inline service-worker registration into the default layout. Zero runtime dependency — static files plus layout tags.
46
+ - **HTTP/2 rapid-reset rate limiter** (#H9) — the Isaac engine now bounds new-stream creation per session in a rolling one-second window; over `maxStreamsPerSecond` (default 200) it sends a `GOAWAY` and closes the session. An application-level layer over the OS-level CVE-2023-44487 mitigation in modern Node.js, complementing `maxSessionRejectedStreams` (which counts refused, not created, streams). Configurable via `settings.json` `http2Options.maxStreamsPerSecond`; `/_gina/info` exposes a `rapidResetBlocked` counter.
47
+ - **Eval-safety campaign completed** (#M20–#M22) — the multi-release effort to remove `eval` / `new Function` call sites from the published tarball is finished. The validator plugin's `makeObjectFromArgs` was refactored to a segments-array path build; the HTML-event-callback evals and the conditional-binding fallback were dropped; and the logger's circular-require `eval(fs.readFileSync(...))` fallbacks were eliminated by fixing the `merge → helpers → logger` cycle at its source. The one remaining eval is a load-bearing public-API site (user-defined form validators), kept by design with a documented trust model and an invariant test.
48
+ - **`@rhinostone/swig` floor bumped to `^2.3.0`** — `2.3.0` drops `yargs` and `terser` from the published package's production dependencies (CLI parsing is now a built-in zero-dependency parser; `terser` moved to `devDependencies`, loaded lazily), so a library install pulls in only `@rhinostone/swig-core` — a smaller transitive tree. No template-engine API or behaviour change.
49
+ - **`requireJSON` comment / URL fix** — `requireJSON` no longer mis-parses JSON config files that combine a `//` line comment with a URL string value (`"key": "https://…"`); the comment-stripping pass is now per-line on the leftmost `//`, so comment-bearing configs with URLs load cleanly.
50
+ - **Dev-mode hot-reload fix** — `refreshCore()` was rebuilding the `lib` / `plugins` `require.cache` entries with their exports objects instead of `Module` instances, crashing the controller render delegates with `Cannot read properties of undefined` after a hot reload; it now lets `require()` rebuild a proper `Module`. Also removed two dormant internal plugin directories (`core/plugins/lib/file/`, `core/plugins/lib/intl/`) with no known consumers — a slightly smaller npm tarball, no functional change.
51
+
42
52
  ## What's in 0.3.12
43
53
 
44
54
  - **Spec-correct `+` decoding in URL query strings and urlencoded bodies** — fixes two complementary parsers that didn't decode `+` to space per RFC 1866 / WHATWG URL. The Isaac engine's URL query-string parser had no `+` substitution at all in either of its two branches (multi-value `&` loop + single-key `=` no-`&` path); the body parser's `application/x-www-form-urlencoded` content-type test was inverted, leaving `+` literal in `req.post` / `req.put` / `req.patch` values. Both now correctly produce space. Express engine was already spec-correct via `qs` defaults. Closes #B17.
package/ROADMAP.md CHANGED
@@ -23,7 +23,7 @@ This roadmap covers planned features, architectural improvements, new connectors
23
23
  | **Q4 2026** | `0.3.8` ✅ | Patch: `npm install -g gina@latest` regression fix — `psl` + `@rhinostone/swig` promoted to top-level deps · install scripts decoupled from framework `lib` registry · helpers preload guarding `lib/logger` ↔ `framework/v*/helpers` circular dep |
24
24
  | **Q2 2026** | `0.3.9` ✅ | Consumer-feedback batch (11 framework patches): per-request middleware dispatch isolation · Couchbase 4.x JsonTranscoder · `length` filter null safety · `process.env` mirroring · 6 nunjucks render-pipeline patches (libRef fallback · namespace prefix drop · bundle filter wraps · top-level userData · `data.data` alias · ginaLoader placeholders) · `getAssets` mid-URL `{{ }}` strip-guard anchor |
25
25
  | **Q2 2026** | `0.3.10` ✅ | FormValidator HTML5 form-reassociation hardening trilogy (`HTMLFormControlsCollection`-based `bindForm` + `unbindForm` symmetry · radio mutual-exclusion + IDL/attribute reconciliation · `defaultChecked` cache for reset) · `X-Forwarded-Prefix` reverse-proxy path-prefix awareness |
26
- | **Q4 2026** | `0.4.0` | AI agents (MCP) · ScyllaDB connector · PWA scaffold · Advanced tutorial · Website redesign · Docs offline ZIP · Bun investigation · Couchbase v2 removal · HTTP/2 hardening · Trailer support · CLI Tier 2 (bundle/project status, rename, copy, protocol:remove, minions) |
26
+ | **Q4 2026** | `0.4.0` | AI agents (MCP) · ScyllaDB connector · Advanced tutorial · Website redesign · Docs offline ZIP · Bun investigation · Couchbase v2 removal · Trailer support · CLI Tier 2 (bundle/project status, rename, copy, protocol:remove, minions) |
27
27
  | **Q1 2027** | `0.5.0` | ESM support · Template engine migration · Structured logging · Alt-Svc · HTTP/2 priorities · WebSocket over HTTP/2 · Inspector Production · CLI Tier 3 (project:move, framework:update, backup/restore, man pages) |
28
28
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
29
29
 
@@ -37,7 +37,7 @@ This roadmap covers planned features, architectural improvements, new connectors
37
37
  | ✅ | **`watchers.json`** — First-class bundle config for file watchers. Declare watchers on config files with event-based notification (no polling). Foundation for the dev-mode hot-reload system. | `0.2.0` | 2026-03-29 |
38
38
  | ✅ | **i18n core** — Per-bundle message catalogs under `bundle/locales/<culture>.json` with a fallback chain (specific culture → base language → default). Server-side `t(key, [params], [culture])` global helper with parameter interpolation and CLDR pluralisation. Swig and Nunjucks filters with the same surface (`{{ "key"\|t }}`, `{{ "key"\|t({ name: x }) }}`). Per-request locale negotiation from URL prefix / cookie / `Accept-Language` / settings default. CLI: `gina i18n:scan` for missing-key coverage per culture, `i18n:add <culture>` to seed a new catalog, `i18n:export` / `i18n:import` for `.po` / `.csv` / `.json` round-trip with translators. Headless by design — the visual translation editor lands later as the first content feature in Beemaster (admin Phase 3). Runtime + filters + `req.culture` negotiation + full CLI all shipped on the `0.3.11-alpha` track. | `0.3.11-alpha` | 2026-05-08 |
39
39
  | ✅ | **i18n ICU MessageFormat** — Opt-in `t.icu(key, params, culture)` variant powered by `intl-messageformat`. Adds gender / select / nested combinators (`{count, plural, one {# item} other {# items}}`, `{gender, select, female {…} male {…} other {…}}`) on top of the i18n core. Existing `t()` shape unchanged — v1 catalogs continue to work. Covers grammars (Romance, Slavic) and select expressions the v1 `{name}` + plural-forms shape can't express. Exposed as `gna.t.icu()` (global), `self.t.icu()` (controller helper), and `tIcu` template filter (swig + nunjucks). Library loaded via dynamic `import()` from a module-level loader kicked off at bundle boot — sync API after first-call resolves. | `0.3.11-alpha` | 2026-05-08 |
40
- | 📋 | **PWA scaffold** — `gina bundle:add` drops `manifest.json`, a service worker stub (`sw.js`), and the required `<meta>` / `<link>` tags into the bundle boilerplate. Zero runtime dependency. Enables Gina apps to be installed on mobile as PWAs without additional tooling. | `0.4.0` | Q4 2026 |
40
+ | | **PWA scaffold** — `gina view:add` drops a `manifest.webmanifest` and a cache-first service worker stub (`sw.js`) into the bundle's `public/` directory, and adds the manifest `<link>`, a `theme-color` `<meta>`, an apple-touch-icon `<link>`, and an inline service-worker registration script to the default HTML layout. Zero runtime dependency — static files plus layout tags. Enables Gina apps to be installed on mobile as PWAs without additional tooling. | `0.3.13` | 2026-05-14 |
41
41
  | ✅ | **Per-bundle framework version** — Declare `"gina_version": "0.1.8"` on any bundle entry in `manifest.json` to pin that bundle to a specific installed framework version. The socket server continues running its own version; only the spawned bundle process uses the declared version. Validated against the tracked version list in `main.json` before start. `--gina-version=X.Y.Z` flag on `bundle:start` provides the same override without touching config files. | `0.3.0` | 2026-03-31 |
42
42
  | ✅ | **PATCH method** — `req.patch` populated with the parsed request body (JSON or form-encoded). `req.body` aliases `req.patch`. URI params merged. `"method": "PATCH"` valid in `routing.json`. Use PATCH for partial updates (only sent fields change) vs PUT which replaces the full resource. | `0.3.0` | 2026-03-31 |
43
43
  | ✅ | **HEAD method** — `req.head` populated with query-string and URI params. Full controller action runs so all response headers are set correctly; body is suppressed before writing to the wire. Both `render()` and `renderJSON()` honour HEAD. Routes declared as `GET` automatically accept HEAD — no extra routing rule needed. | `0.3.0` | 2026-03-31 |
@@ -134,13 +134,13 @@ Four focused follow-up sessions to close the deferred gap left by the `0.3.7-alp
134
134
 
135
135
  ### Eval safety
136
136
 
137
- Complete the removal of `eval` / `new Function` call sites from the published tarball. Four tranches shipped across `0.3.7-alpha.4` / `0.3.7-alpha.5` cleared 13 of 24 catalogued sites; 2 more were removed by deleting orphaned source during the toolbar cleanup (15 of 24 addressed). The validator structural refactor cleared 3 more on `0.3.13-alpha.2` (18 of 24). Two clusters remain, each needing a focused session.
137
+ Complete the removal of `eval` / `new Function` call sites from the published tarball. Four tranches shipped across `0.3.7-alpha.4` / `0.3.7-alpha.5` cleared 13 of 24 catalogued sites; 2 more were removed by deleting orphaned source during the toolbar cleanup (15 of 24 addressed). The validator structural refactor cleared 3 more on `0.3.13-alpha.2` (18 of 24). The two remaining clusters — the feature-intrinsic eval design pass and the logger circular-require refactor — completed the campaign in `0.3.13`. The single remaining eval is a load-bearing public-API site (user-defined form validators), kept by design with a documented trust model.
138
138
 
139
139
  | Status | Feature | Version | Target |
140
140
  | --- | --- | --- | --- |
141
141
  | ✅ | **Validator structural refactor** — Refactored `makeObjectFromArgs` in the validator plugin: the previous string-accumulator path-build + runtime evaluation is replaced by a segments-array threaded through the recursion plus a local safe setter. Cleared 3 eval sites. +27 parity tests in `test/lib/validator-scs1f.test.js`. Browser bundle rebuilt. | `0.3.13-alpha.2` | 2026-05-13 |
142
- | 📋 | **Feature-intrinsic eval design pass** — 6 sites eval user-supplied JS by design (user-defined form validators, HTML event callbacks on form data attributes). Decision pass: safe-eval sandbox via `vm.Script`, pre-parse to a restricted AST, or formalise "accept and document" with an explicit trust assumption. Outcome may include dropping unused placeholder features. | `0.3.8` | Q1 2027 |
143
- | 📋 | **Logger circular-require refactor** — 3 load-bearing `eval(fs.readFileSync(...))` fallbacks in the logger work around a circular `merge → helpers → logger` require chain. Restructure the chain so the fallback is no longer needed. Clears the final 3 sites of the campaign. Regression risk touches every logger-consuming test. | `0.3.8` | Q1 2027 |
142
+ | | **Feature-intrinsic eval design pass** — 6 sites that eval user-supplied JS by design, across 3 patterns (HTML event callbacks, user-defined form validators, conditional binding fallback). The design pass formalised the trust model; the coding slices dropped the HTML-event-callback evals and the conditional-binding fallback, and documented the user-defined-validator site as a load-bearing public API with an invariant test. | `0.3.13-alpha.3` | 2026-05-14 |
143
+ | | **Logger circular-require refactor** — 3 load-bearing `eval(fs.readFileSync(...))` fallbacks in the logger worked around a circular `merge → helpers → logger` require chain. Fixed at the source of the cycle: `merge.js` now requires the json-clone primitive directly instead of going through the helpers loader, so the circular chain never fires and the 3 eval fallbacks are unreachable and removed. | `0.3.13` | 2026-05-14 |
144
144
 
145
145
  ---
146
146
 
@@ -156,6 +156,16 @@ Cross-site request forgery protection. Three-phase defense-in-depth plan aligned
156
156
 
157
157
  ---
158
158
 
159
+ ## Secrets & Configuration
160
+
161
+ Secrets handling for bundle JSON configs without baking plaintext values into source. Pluggable-backend design with `process.env` as the default; the reserved API surface allows future Vault / SOPS / K8s Secrets backends to slot in without changing call sites or the placeholder syntax.
162
+
163
+ | Status | Feature | Version | Target |
164
+ | --- | --- | --- | --- |
165
+ | ✅ | **`${secret:KEY}` placeholder substitution** — `lib/secrets` resolves `${secret:KEY}` placeholders embedded in bundle JSON configs (`settings.json`, `app.json`, `connectors.json`, `mcp.json`, etc.) at config-load time. Anchored regex matches the entire string value only — mixed strings (`"prefix-${secret:K}-suffix"`) pass through unchanged. Default backend reads `process.env[KEY]`; pluggable-backend interface reserved for a future iteration. Fails closed (throws `Error('Secret resolution failed')`) when an env var is unset or empty; the error message intentionally omits the key name. Resolution is once per config-load cycle (in-place mutation). `WeakMap`-backed path tracking enables a future log-redaction wrapper at merged-conf print sites. Hooked inside `core/config.js::loadBundleConfig`, so downstream readers (`getConfig()`, plugin factories) see resolved values transparently. **Consumers shipped**: `gina.plugins.Csrf()` reads `settings.csrf.secret` (precedence `opts.secret` > `settings.csrf.secret` > `process.env.GINA_CSRF_SECRET` for back-compat); `gina bundle:mcp-start` re-runs the resolver on the parsed `mcp.json` immediately after `requireJSON()` so `server.authToken` and any future placeholder field gets filled before downstream readers; bundle scaffolding (`project:add` / `bundle:add`) recommends the placeholder shape in `core/template/conf/settings.json` and `core/template/boilerplate/bundle/index.js`. 33 tests in `test/core/config-secrets-resolver.test.js`. | `0.3.13-alpha` | 2026-05-13 |
166
+
167
+ ---
168
+
159
169
  ## Connectors
160
170
 
161
171
  New database connectors follow the same interface as the existing Couchbase connector: declared in `connectors.json`, acquired via `getConnection()`.
@@ -237,7 +247,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
237
247
  | ✅ | **103 Early Hints** — send `Link` preload headers as informational response before the final response | `0.3.0-alpha.1` | 2026-03-31 | `self.setEarlyHints(links)` on SuperController. HTTP/2: `stream.additionalHeaders({ ':status': 103 })`; HTTP/1.1: `res.writeEarlyHints()` (Node.js 18.11+). Silent no-op on unsupported runtimes. |
238
248
  | ✅ | **HTTP/2 session metrics** — expose active session count, stream count, GOAWAY and RST_STREAM totals via `/_gina/info` | `0.3.0-alpha.1` | 2026-04-01 | `server._h2Metrics` counter object instrumented via session event handlers; exposed under `"http2"` key in `/_gina/info` JSON. |
239
249
  | ✅ | **Configurable `maxConcurrentStreams` and `initialWindowSize`** — move from hardcoded to `settings.json` `http2Options` | `0.3.0-alpha.1` | 2026-04-05 | All four HTTP/2 server settings configurable: `maxConcurrentStreams` (256), `initialWindowSize` (655350), `maxSessionRejectedStreams` (100), `maxSessionInvalidFrames` (1000). Security guards (`maxHeaderListSize`, `enablePush`) remain hardcoded. |
240
- | 📋 | **Application-level rapid reset rate limiter** (CVE-2023-44487) — per-session stream creation counter | `0.4.0` | Q4 2026 | Node.js 20.12.1 has the OS-level fix. Add an application-level counter: if a session creates more than N streams per second, close with GOAWAY. Important for public-facing deployments. |
250
+ | | **Application-level rapid reset rate limiter** (CVE-2023-44487) — per-session stream creation counter | `0.3.13` | 2026-05-14 | The Isaac HTTP/2 session handler counts new streams in a rolling 1s window per session; over `maxStreamsPerSecond` (default 200) it sends a GOAWAY and closes the session. More targeted than `maxSessionRejectedStreams` (which counts refused streams, not created ones). Configurable via `settings.json` `http2Options.maxStreamsPerSecond`; `/_gina/info` exposes a `rapidResetBlocked` counter. |
241
251
  | 📋 | **Trailer support** — `stream.sendTrailers()` + `waitForTrailers: true` | `0.4.0` | Q4 2026 | No trailer support today. Required for gRPC-style streaming (grpc-status trailer) and content integrity use cases. Opt-in: activated only when a controller calls `self.sendTrailers(fields)`. |
242
252
  | 📋 | **Alt-Svc header** — advertise HTTP/3 availability | `0.5.0` | Q1 2027 | Set `Alt-Svc: h3=":443"; ma=86400` response header to advertise HTTP/3 (QUIC) availability via a QUIC-capable reverse proxy (nginx, Caddy, Cloudflare). Gina does not need to implement QUIC — just announce it. Opt-in via `settings.server.json`. Native HTTP/3 is out of scope: Node.js has no stable QUIC API, and the standard deployment topology (Gina → proxy → client) already delivers HTTP/3 at the edge. |
243
253
  | 📋 | **RFC 9218 Extensible Priorities** — read `Priority: u=N, i` request header | `0.5.0` | Q1 2027 | Use the RFC 9218 priority header to order response writes for multiplexed API clients. Low value for typical HTML page loads; high value for parallel API requests with declared urgency. |
@@ -0,0 +1 @@
1
+ 0.3.13