gina 0.4.2 → 0.4.3

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 (462) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +6 -4
  3. package/ROADMAP.md +4 -4
  4. package/framework/v0.4.3/VERSION +1 -0
  5. package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +133 -0
  6. package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.js +142 -39
  7. package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +498 -496
  8. package/framework/v0.4.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  9. package/framework/v0.4.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  10. package/framework/{v0.4.2 → v0.4.3}/core/gna.js +54 -0
  11. package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/src/main.js +129 -10
  12. package/framework/{v0.4.2 → v0.4.3}/core/server.isaac.js +3 -0
  13. package/framework/{v0.4.2 → v0.4.3}/core/server.js +151 -0
  14. package/framework/{v0.4.2 → v0.4.3}/core/template/conf/settings.json +5 -1
  15. package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/help.txt +14 -0
  16. package/framework/v0.4.3/lib/cmd/service/start.js +219 -0
  17. package/framework/v0.4.3/package.json +10 -0
  18. package/gna.js +4 -4
  19. package/llms.txt +9 -1
  20. package/package.json +6 -5
  21. package/framework/v0.4.2/VERSION +0 -1
  22. package/framework/v0.4.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  23. package/framework/v0.4.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  24. package/framework/v0.4.2/package.json +0 -9
  25. /package/framework/{v0.4.2 → v0.4.3}/AUTHORS +0 -0
  26. /package/framework/{v0.4.2 → v0.4.3}/LICENSE +0 -0
  27. /package/framework/{v0.4.2 → v0.4.3}/core/asset/html/nolayout.html +0 -0
  28. /package/framework/{v0.4.2 → v0.4.3}/core/asset/html/static.html +0 -0
  29. /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/android-chrome-192x192.png +0 -0
  30. /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/android-chrome-512x512.png +0 -0
  31. /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/apple-touch-icon.png +0 -0
  32. /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon-16x16.png +0 -0
  33. /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon-32x32.png +0 -0
  34. /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon.ico +0 -0
  35. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/README.md +0 -0
  36. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  37. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  38. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  39. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  40. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  41. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  42. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  43. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  44. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  45. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  46. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  47. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  48. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  49. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  50. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  51. /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  52. /package/framework/{v0.4.2 → v0.4.3}/core/config.js +0 -0
  53. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/ai/index.js +0 -0
  54. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/ai/lib/connector.js +0 -0
  55. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/index.js +0 -0
  56. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.js +0 -0
  57. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  58. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  59. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/n1ql.js +0 -0
  60. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.js +0 -0
  61. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  62. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  63. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/index.js +0 -0
  64. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/connector.js +0 -0
  65. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  66. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/session-store.js +0 -0
  67. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mysql/index.js +0 -0
  68. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mysql/lib/connector.js +0 -0
  69. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/postgresql/index.js +0 -0
  70. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/postgresql/lib/connector.js +0 -0
  71. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/redis/index.js +0 -0
  72. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/redis/lib/session-store.js +0 -0
  73. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/index.js +0 -0
  74. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/lib/connector.js +0 -0
  75. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/lib/session-store.js +0 -0
  76. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sql-parser.js +0 -0
  77. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/index.js +0 -0
  78. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/lib/connector.js +0 -0
  79. /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/lib/session-store.js +0 -0
  80. /package/framework/{v0.4.2 → v0.4.3}/core/content.encoding +0 -0
  81. /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.framework.js +0 -0
  82. /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.js +0 -0
  83. /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-json.js +0 -0
  84. /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-nunjucks.js +0 -0
  85. /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-stream.js +0 -0
  86. /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-swig.js +0 -0
  87. /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-v1.js +0 -0
  88. /package/framework/{v0.4.2 → v0.4.3}/core/controller/index.js +0 -0
  89. /package/framework/{v0.4.2 → v0.4.3}/core/controller/inspector-window-emit.js +0 -0
  90. /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/LICENSE +0 -0
  91. /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/README.md +0 -0
  92. /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  93. /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  94. /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  95. /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  96. /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/package.json +0 -0
  97. /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  98. /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  99. /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/package.json +0 -0
  100. /package/framework/{v0.4.2 → v0.4.3}/core/dev/index.js +0 -0
  101. /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/class.js +0 -0
  102. /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/factory.js +0 -0
  103. /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/tools.js +0 -0
  104. /package/framework/{v0.4.2 → v0.4.3}/core/locales/README.md +0 -0
  105. /package/framework/{v0.4.2 → v0.4.3}/core/locales/currency.json +0 -0
  106. /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/language/en.json +0 -0
  107. /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/language/fr.json +0 -0
  108. /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/region/en.json +0 -0
  109. /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/region/fr.json +0 -0
  110. /package/framework/{v0.4.2 → v0.4.3}/core/locales/index.js +0 -0
  111. /package/framework/{v0.4.2 → v0.4.3}/core/mime.types +0 -0
  112. /package/framework/{v0.4.2 → v0.4.3}/core/model/entity.js +0 -0
  113. /package/framework/{v0.4.2 → v0.4.3}/core/model/index.js +0 -0
  114. /package/framework/{v0.4.2 → v0.4.3}/core/model/template/entityFactory.js +0 -0
  115. /package/framework/{v0.4.2 → v0.4.3}/core/model/template/index.js +0 -0
  116. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/README.md +0 -0
  117. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/index.js +0 -0
  118. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/README.md +0 -0
  119. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/package.json +0 -0
  120. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/src/main.js +0 -0
  121. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/README.md +0 -0
  122. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/README.md +0 -0
  123. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/package.json +0 -0
  124. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  125. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/README.md +0 -0
  126. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/package.json +0 -0
  127. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  128. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/README.md +0 -0
  129. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/package.json +0 -0
  130. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  131. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/README.md +0 -0
  132. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/package.json +0 -0
  133. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  134. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  135. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  136. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  137. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  138. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  139. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  140. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  141. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  142. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  143. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/package.json +0 -0
  144. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  145. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  146. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  147. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/src/main.js +0 -0
  148. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  149. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  150. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  151. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  152. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  153. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  154. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  155. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  156. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  157. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  158. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  159. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  160. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  161. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  162. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  163. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  164. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  165. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  166. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/README.md +0 -0
  167. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/package.json +0 -0
  168. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/src/main.js +0 -0
  169. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/README.md +0 -0
  170. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/build.json +0 -0
  171. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/package.json +0 -0
  172. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/src/main.js +0 -0
  173. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/README.md +0 -0
  174. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/build.json +0 -0
  175. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/package.json +0 -0
  176. /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/src/form-validator.js +0 -0
  177. /package/framework/{v0.4.2 → v0.4.3}/core/router.js +0 -0
  178. /package/framework/{v0.4.2 → v0.4.3}/core/server.express.js +0 -0
  179. /package/framework/{v0.4.2 → v0.4.3}/core/status.codes +0 -0
  180. /package/framework/{v0.4.2 → v0.4.3}/core/template/_gitignore +0 -0
  181. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/app.json +0 -0
  182. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  183. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/routing.json +0 -0
  184. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/settings.json +0 -0
  185. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  186. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/templates.json +0 -0
  187. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  188. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  189. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  190. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  191. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/index.js +0 -0
  192. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/locales/en.json +0 -0
  193. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  194. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  195. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  196. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  197. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  198. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  199. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  200. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/readme.md +0 -0
  201. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/sw.js +0 -0
  202. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  203. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  204. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  205. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  206. /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  207. /package/framework/{v0.4.2 → v0.4.3}/core/template/command/gina.bat.tpl +0 -0
  208. /package/framework/{v0.4.2 → v0.4.3}/core/template/command/gina.tpl +0 -0
  209. /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/env.json +0 -0
  210. /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/manifest.json +0 -0
  211. /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/package.json +0 -0
  212. /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/statics.json +0 -0
  213. /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/templates.json +0 -0
  214. /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/401.json +0 -0
  215. /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/403.json +0 -0
  216. /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/404.json +0 -0
  217. /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/html/50x.html +0 -0
  218. /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/json/500.json +0 -0
  219. /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/json/503.json +0 -0
  220. /package/framework/{v0.4.2 → v0.4.3}/core/template/extensions/logger/config.json +0 -0
  221. /package/framework/{v0.4.2 → v0.4.3}/helpers/console.js +0 -0
  222. /package/framework/{v0.4.2 → v0.4.3}/helpers/context.js +0 -0
  223. /package/framework/{v0.4.2 → v0.4.3}/helpers/data/LICENSE +0 -0
  224. /package/framework/{v0.4.2 → v0.4.3}/helpers/data/README.md +0 -0
  225. /package/framework/{v0.4.2 → v0.4.3}/helpers/data/package.json +0 -0
  226. /package/framework/{v0.4.2 → v0.4.3}/helpers/data/src/main.js +0 -0
  227. /package/framework/{v0.4.2 → v0.4.3}/helpers/dateFormat.js +0 -0
  228. /package/framework/{v0.4.2 → v0.4.3}/helpers/index.js +0 -0
  229. /package/framework/{v0.4.2 → v0.4.3}/helpers/json/LICENSE +0 -0
  230. /package/framework/{v0.4.2 → v0.4.3}/helpers/json/README.md +0 -0
  231. /package/framework/{v0.4.2 → v0.4.3}/helpers/json/package.json +0 -0
  232. /package/framework/{v0.4.2 → v0.4.3}/helpers/json/src/main.js +0 -0
  233. /package/framework/{v0.4.2 → v0.4.3}/helpers/path.js +0 -0
  234. /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/README.md +0 -0
  235. /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/package.json +0 -0
  236. /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/src/api-error.js +0 -0
  237. /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/src/main.js +0 -0
  238. /package/framework/{v0.4.2 → v0.4.3}/helpers/prototypes.js +0 -0
  239. /package/framework/{v0.4.2 → v0.4.3}/helpers/task.js +0 -0
  240. /package/framework/{v0.4.2 → v0.4.3}/helpers/text.js +0 -0
  241. /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/README.md +0 -0
  242. /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/build.json +0 -0
  243. /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/package.json +0 -0
  244. /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/src/dep/jszip.min.js +0 -0
  245. /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/src/main.js +0 -0
  246. /package/framework/{v0.4.2 → v0.4.3}/lib/async/package.json +0 -0
  247. /package/framework/{v0.4.2 → v0.4.3}/lib/async/src/main.js +0 -0
  248. /package/framework/{v0.4.2 → v0.4.3}/lib/cache/README.md +0 -0
  249. /package/framework/{v0.4.2 → v0.4.3}/lib/cache/build.json +0 -0
  250. /package/framework/{v0.4.2 → v0.4.3}/lib/cache/package.json +0 -0
  251. /package/framework/{v0.4.2 → v0.4.3}/lib/cache/src/main.js +0 -0
  252. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/aliases.json +0 -0
  253. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/add.js +0 -0
  254. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/arguments.json +0 -0
  255. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/build.js +0 -0
  256. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/copy.js +0 -0
  257. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/cp.js +0 -0
  258. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/help.js +0 -0
  259. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/help.txt +0 -0
  260. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  261. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/list.js +0 -0
  262. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/mcp-start.js +0 -0
  263. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/mcp.js +0 -0
  264. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/oas.js +0 -0
  265. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/openapi.js +0 -0
  266. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/remove.js +0 -0
  267. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/rename.js +0 -0
  268. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/restart.js +0 -0
  269. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/rm.js +0 -0
  270. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/start.js +0 -0
  271. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/status.js +0 -0
  272. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/stop.js +0 -0
  273. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/cache/stats.js +0 -0
  274. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/add.js +0 -0
  275. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/arguments.json +0 -0
  276. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/help.js +0 -0
  277. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/help.txt +0 -0
  278. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/list.js +0 -0
  279. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/migrate.js +0 -0
  280. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/remove.js +0 -0
  281. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/rm.js +0 -0
  282. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/add.js +0 -0
  283. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/get.js +0 -0
  284. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/help.js +0 -0
  285. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/help.txt +0 -0
  286. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/link-dev.js +0 -0
  287. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/list.js +0 -0
  288. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/remove.js +0 -0
  289. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/rm.js +0 -0
  290. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/set.js +0 -0
  291. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/unset.js +0 -0
  292. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/use.js +0 -0
  293. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/arguments.json +0 -0
  294. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/build.js +0 -0
  295. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/dot.js +0 -0
  296. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/get.js +0 -0
  297. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/help.js +0 -0
  298. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/help.txt +0 -0
  299. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/init.js +0 -0
  300. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/link-node-modules.js +0 -0
  301. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/link.js +0 -0
  302. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/msg.json +0 -0
  303. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/open.js +0 -0
  304. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/restart.js +0 -0
  305. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/set.js +0 -0
  306. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/start.js +0 -0
  307. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/status.js +0 -0
  308. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/stop.js +0 -0
  309. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/tail.js +0 -0
  310. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/update.js +0 -0
  311. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/version.js +0 -0
  312. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina-dev.1.md +0 -0
  313. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina-framework.1.md +0 -0
  314. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina.1.md +0 -0
  315. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/helper.js +0 -0
  316. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/add.js +0 -0
  317. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/arguments.json +0 -0
  318. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/export.js +0 -0
  319. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/help.js +0 -0
  320. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/help.txt +0 -0
  321. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/import.js +0 -0
  322. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/scan.js +0 -0
  323. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/index.js +0 -0
  324. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/help.js +0 -0
  325. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/help.txt +0 -0
  326. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/open.js +0 -0
  327. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/arguments.json +0 -0
  328. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/help.js +0 -0
  329. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/help.txt +0 -0
  330. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/kill.js +0 -0
  331. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/list.js +0 -0
  332. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/msg.json +0 -0
  333. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/help.js +0 -0
  334. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/help.txt +0 -0
  335. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/inc/scan.js +0 -0
  336. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/list.js +0 -0
  337. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/reset.js +0 -0
  338. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/set.js +0 -0
  339. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/add.js +0 -0
  340. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/arguments.json +0 -0
  341. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/build.js +0 -0
  342. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/help.js +0 -0
  343. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/help.txt +0 -0
  344. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/import.js +0 -0
  345. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/list.js +0 -0
  346. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/move.js +0 -0
  347. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/remove.js +0 -0
  348. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/rename.js +0 -0
  349. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/restart.js +0 -0
  350. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/rm.js +0 -0
  351. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/start.js +0 -0
  352. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/status.js +0 -0
  353. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/stop.js +0 -0
  354. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/arguments.json +0 -0
  355. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/help.js +0 -0
  356. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/help.txt +0 -0
  357. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/list.js +0 -0
  358. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/remove.js +0 -0
  359. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/set.js +0 -0
  360. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/add.js +0 -0
  361. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/help.js +0 -0
  362. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/help.txt +0 -0
  363. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/link-local.js +0 -0
  364. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/link-production.js +0 -0
  365. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/list.js +0 -0
  366. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/remove.js +0 -0
  367. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/rm.js +0 -0
  368. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/use.js +0 -0
  369. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/arguments.json +0 -0
  370. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/check.js +0 -0
  371. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/help.js +0 -0
  372. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/help.txt +0 -0
  373. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/scan.js +0 -0
  374. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/help.js +0 -0
  375. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/list.js +0 -0
  376. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/view/add.js +0 -0
  377. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd-status-format/package.json +0 -0
  378. /package/framework/{v0.4.2 → v0.4.3}/lib/cmd-status-format/src/main.js +0 -0
  379. /package/framework/{v0.4.2 → v0.4.3}/lib/collection/README.md +0 -0
  380. /package/framework/{v0.4.2 → v0.4.3}/lib/collection/build.json +0 -0
  381. /package/framework/{v0.4.2 → v0.4.3}/lib/collection/package.json +0 -0
  382. /package/framework/{v0.4.2 → v0.4.3}/lib/collection/src/main.js +0 -0
  383. /package/framework/{v0.4.2 → v0.4.3}/lib/config.js +0 -0
  384. /package/framework/{v0.4.2 → v0.4.3}/lib/connector-registry/package.json +0 -0
  385. /package/framework/{v0.4.2 → v0.4.3}/lib/connector-registry/src/main.js +0 -0
  386. /package/framework/{v0.4.2 → v0.4.3}/lib/cron/README.md +0 -0
  387. /package/framework/{v0.4.2 → v0.4.3}/lib/cron/package.json +0 -0
  388. /package/framework/{v0.4.2 → v0.4.3}/lib/cron/src/main.js +0 -0
  389. /package/framework/{v0.4.2 → v0.4.3}/lib/domain/LICENSE +0 -0
  390. /package/framework/{v0.4.2 → v0.4.3}/lib/domain/README.md +0 -0
  391. /package/framework/{v0.4.2 → v0.4.3}/lib/domain/package.json +0 -0
  392. /package/framework/{v0.4.2 → v0.4.3}/lib/domain/src/main.js +0 -0
  393. /package/framework/{v0.4.2 → v0.4.3}/lib/generator/index.js +0 -0
  394. /package/framework/{v0.4.2 → v0.4.3}/lib/i18n/package.json +0 -0
  395. /package/framework/{v0.4.2 → v0.4.3}/lib/i18n/src/main.js +0 -0
  396. /package/framework/{v0.4.2 → v0.4.3}/lib/index.js +0 -0
  397. /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/LICENSE +0 -0
  398. /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/README.md +0 -0
  399. /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/package.json +0 -0
  400. /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/src/main.js +0 -0
  401. /package/framework/{v0.4.2 → v0.4.3}/lib/inspector-redact/package.json +0 -0
  402. /package/framework/{v0.4.2 → v0.4.3}/lib/inspector-redact/src/main.js +0 -0
  403. /package/framework/{v0.4.2 → v0.4.3}/lib/instrument/package.json +0 -0
  404. /package/framework/{v0.4.2 → v0.4.3}/lib/instrument/src/main.js +0 -0
  405. /package/framework/{v0.4.2 → v0.4.3}/lib/job/package.json +0 -0
  406. /package/framework/{v0.4.2 → v0.4.3}/lib/job/src/main.js +0 -0
  407. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/README.md +0 -0
  408. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/package.json +0 -0
  409. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/default/index.js +0 -0
  410. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/index.js +0 -0
  411. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  412. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  413. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/index.js +0 -0
  414. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/listener.js +0 -0
  415. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/speaker.js +0 -0
  416. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/helper.js +0 -0
  417. /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/main.js +0 -0
  418. /package/framework/{v0.4.2 → v0.4.3}/lib/math/index.js +0 -0
  419. /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-dispatch/package.json +0 -0
  420. /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-dispatch/src/main.js +0 -0
  421. /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-http/package.json +0 -0
  422. /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-http/src/main.js +0 -0
  423. /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-server/package.json +0 -0
  424. /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-server/src/main.js +0 -0
  425. /package/framework/{v0.4.2 → v0.4.3}/lib/merge/README.md +0 -0
  426. /package/framework/{v0.4.2 → v0.4.3}/lib/merge/package.json +0 -0
  427. /package/framework/{v0.4.2 → v0.4.3}/lib/merge/src/main.js +0 -0
  428. /package/framework/{v0.4.2 → v0.4.3}/lib/metrics/package.json +0 -0
  429. /package/framework/{v0.4.2 → v0.4.3}/lib/metrics/src/main.js +0 -0
  430. /package/framework/{v0.4.2 → v0.4.3}/lib/model.js +0 -0
  431. /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/README.md +0 -0
  432. /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/package.json +0 -0
  433. /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/src/main.js +0 -0
  434. /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-resolver/package.json +0 -0
  435. /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-resolver/src/main.js +0 -0
  436. /package/framework/{v0.4.2 → v0.4.3}/lib/proc.js +0 -0
  437. /package/framework/{v0.4.2 → v0.4.3}/lib/routing/README.md +0 -0
  438. /package/framework/{v0.4.2 → v0.4.3}/lib/routing/build.json +0 -0
  439. /package/framework/{v0.4.2 → v0.4.3}/lib/routing/package.json +0 -0
  440. /package/framework/{v0.4.2 → v0.4.3}/lib/routing/src/main.js +0 -0
  441. /package/framework/{v0.4.2 → v0.4.3}/lib/routing/src/radix.js +0 -0
  442. /package/framework/{v0.4.2 → v0.4.3}/lib/routing-introspect/package.json +0 -0
  443. /package/framework/{v0.4.2 → v0.4.3}/lib/routing-introspect/src/main.js +0 -0
  444. /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/package.json +0 -0
  445. /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/src/backends/env.js +0 -0
  446. /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/src/main.js +0 -0
  447. /package/framework/{v0.4.2 → v0.4.3}/lib/session-store.js +0 -0
  448. /package/framework/{v0.4.2 → v0.4.3}/lib/shell.js +0 -0
  449. /package/framework/{v0.4.2 → v0.4.3}/lib/state.js +0 -0
  450. /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/README.md +0 -0
  451. /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/package.json +0 -0
  452. /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/src/main.js +0 -0
  453. /package/framework/{v0.4.2 → v0.4.3}/lib/swig-resolver/package.json +0 -0
  454. /package/framework/{v0.4.2 → v0.4.3}/lib/swig-resolver/src/main.js +0 -0
  455. /package/framework/{v0.4.2 → v0.4.3}/lib/url/README.md +0 -0
  456. /package/framework/{v0.4.2 → v0.4.3}/lib/url/index.js +0 -0
  457. /package/framework/{v0.4.2 → v0.4.3}/lib/url/routing.json +0 -0
  458. /package/framework/{v0.4.2 → v0.4.3}/lib/uuid/package.json +0 -0
  459. /package/framework/{v0.4.2 → v0.4.3}/lib/uuid/src/main.js +0 -0
  460. /package/framework/{v0.4.2 → v0.4.3}/lib/validator.js +0 -0
  461. /package/framework/{v0.4.2 → v0.4.3}/lib/watcher/package.json +0 -0
  462. /package/framework/{v0.4.2 → v0.4.3}/lib/watcher/src/main.js +0 -0
@@ -1197,11 +1197,15 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
1197
1197
  if (!process.gina) process.gina = {};
1198
1198
  process.gina._inspectorAgentEnabled = (_inspAgent.enabled === true);
1199
1199
  process.gina._inspectorAgentKey = (typeof _inspAgent.key === 'string' && _inspAgent.key) ? _inspAgent.key : null;
1200
+ // #INS8 — Origin allowlist for the WebSocket /_gina/agent upgrade
1201
+ // (empty ⇒ allow any origin; enforced only when non-empty).
1202
+ process.gina._inspectorAgentAllowedOrigins = Array.isArray(_inspAgent.allowedOrigins) ? _inspAgent.allowedOrigins : [];
1200
1203
  } catch (inspAgentErr) {
1201
1204
  console.warn('[inspector-agent] init skipped: ' + (inspAgentErr.message || inspAgentErr));
1202
1205
  if (!process.gina) process.gina = {};
1203
1206
  process.gina._inspectorAgentEnabled = false;
1204
1207
  process.gina._inspectorAgentKey = null;
1208
+ process.gina._inspectorAgentAllowedOrigins = [];
1205
1209
  }
1206
1210
 
1207
1211
  // #INS10 — capture the instrumentation-window opt-in + key + window
@@ -1237,6 +1241,56 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
1237
1241
  process.gina._inspectorWindowUntil = 0;
1238
1242
  }
1239
1243
 
1244
+ // #INS8 — dev-only auto-start of the standalone Inspector
1245
+ // bundle (inspector@gina). Best-effort + fail-closed.
1246
+ // Gated on:
1247
+ // - isDev: never fires outside the project's dev env.
1248
+ // - projectName !== 'gina': a @gina service (inspector /
1249
+ // proxy) must never trigger this — otherwise the
1250
+ // Inspector would re-spawn itself when it boots. This is
1251
+ // the timing-proof guard; the not-running check below is
1252
+ // a second line of defense.
1253
+ // - srcExists: the @gina project is registered AND
1254
+ // services/src/inspector is on disk. services/ is
1255
+ // gitignored + npmignored, so it is absent in any
1256
+ // `npm install gina` — the auto-start no-ops for everyone
1257
+ // but a maintainer who scaffolded the services/ project.
1258
+ // - not-running: a live inspector@gina pidfile skips the
1259
+ // spawn (no duplicate Inspector).
1260
+ // Launches via the daemon-free bin/gina-container, so no
1261
+ // `gina start` socket server is required. Keep the spawn
1262
+ // shape in sync with lib/cmd/service/start.js.
1263
+ if (isDev && projectName !== 'gina') {
1264
+ try {
1265
+ var _inspProj = projects['gina'];
1266
+ // 'src/inspector' mirrors @gina manifest.bundles.inspector.src
1267
+ var _inspSrc = _inspProj ? _(_inspProj.path + '/src/inspector') : null;
1268
+ if (_inspProj && _inspSrc && require('fs').existsSync(_inspSrc)) {
1269
+ var _inspRun = lib.cmdStatusFormat.readPidfile(getEnvVar('GINA_HOMEDIR') + '/run', 'inspector', 'gina');
1270
+ if (!_inspRun.running) {
1271
+ var _inspContainer = getEnvVar('GINA_DIR') + '/bin/gina-container';
1272
+ if (require('fs').existsSync(_inspContainer)) {
1273
+ var _inspEnv = Object.assign({}, process.env);
1274
+ delete _inspEnv.NODE_ENV;
1275
+ delete _inspEnv.NODE_SCOPE;
1276
+ delete _inspEnv.NODE_PORT;
1277
+ delete _inspEnv.NODE_BUNDLE;
1278
+ delete _inspEnv.NODE_PROJECT;
1279
+ var _inspChild = require('child_process').spawn(
1280
+ process.execPath,
1281
+ [_inspContainer, 'inspector', '@gina'],
1282
+ { detached: true, stdio: 'ignore', env: _inspEnv }
1283
+ );
1284
+ _inspChild.unref();
1285
+ console.debug('[inspector-autostart] started inspector@gina (pid ' + ((_inspChild && _inspChild.pid) || '?') + ')');
1286
+ }
1287
+ }
1288
+ }
1289
+ } catch (inspAutoErr) {
1290
+ console.warn('[inspector-autostart] skipped: ' + (inspAutoErr.message || inspAutoErr));
1291
+ }
1292
+ }
1293
+
1240
1294
  // #AI6 — initialise the async-job primitive. Always-on (unlike
1241
1295
  // metrics): self.startJob() / lib.job.create() must work out of the
1242
1296
  // box, so this is NOT gated on an `enabled` flag. The app.json `jobs`
@@ -573,9 +573,43 @@ function ValidatorPlugin(rules, data, formId) {
573
573
  }
574
574
  }
575
575
 
576
+ /**
577
+ * #A11Y1 (slice 4) — lazily create one visually-hidden aria-live="polite" status region per
578
+ * form and announce a blur-time committed error through it. A CSS :user-invalid display toggle
579
+ * is not reliably announced by screen readers, and on blur the field has lost focus so its own
580
+ * aria-invalid / aria-errormessage are not re-read; the polite region decouples the announcement
581
+ * from visual display. Submit-time errors use focus (see onValidate), not this region.
582
+ * @param {object} $form - the HTMLFormElement the region belongs to
583
+ * @param {string} text - the error text to announce
584
+ * @returns {object|null} the live-region element, or null when nothing was announced
585
+ */
586
+ var announceA11yError = function($form, text) {
587
+ if ( !$form || !text ) return null;
588
+ var _fid = ( typeof($form.id) != 'undefined' && $form.id ) ? $form.id : ( $form.getAttribute('id') || 'form' );
589
+ var _liveId = 'gina-aria-live-' + _fid;
590
+ var _live = document.getElementById(_liveId);
591
+ if ( !_live ) {
592
+ _live = document.createElement('div');
593
+ _live.id = _liveId;
594
+ _live.setAttribute('role', 'status');
595
+ _live.setAttribute('aria-live', 'polite');
596
+ _live.setAttribute('aria-atomic', 'true');
597
+ _live.className = 'gina-visually-hidden';
598
+ _live.style.cssText = 'position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;';
599
+ $form.appendChild(_live);
600
+ }
601
+ _live.textContent = text;
602
+ return _live;
603
+ };
604
+
576
605
  /**
577
606
  * handleErrorsDisplay
578
607
  * Attention: if you are going to handle errors display by hand, set data to `null` to prevent Toolbar refresh with empty data
608
+ *
609
+ * #A11Y1 — besides toggling `form-item-error` / `form-item-warning` and the error-message div,
610
+ * this reflects each managed field's committed validity into `aria-invalid` ("true" on a
611
+ * committed error, "false" when valid — mirroring the native ValidityState where the field has
612
+ * native HTML constraints so it agrees with `:user-invalid`). Soft live-check warnings are not asserted.
579
613
  * @param {object} $form - Target (HTMLFormElement)
580
614
  * @param {object} errors
581
615
  * @param {object|null} data
@@ -706,6 +740,14 @@ function ValidatorPlugin(rules, data, formId) {
706
740
 
707
741
  if (!name) continue;
708
742
 
743
+ // #A11Y1 (slice 2) — detect a consumer-provided aria-errormessage association. When
744
+ // present, the field already references its own error element, so we must NOT inject a
745
+ // competing form-item-error-message div (aria-invalid alone exposes it). Any wire we add
746
+ // ourselves is marked (data-gina-aria-errormessage) so it is not mistaken for a consumer's.
747
+ var _ariaErrId = $el.getAttribute('aria-errormessage');
748
+ var _ginaOwnsErrMsg = ( typeof($el.dataset) != 'undefined' && typeof($el.dataset.ginaAriaErrormessage) != 'undefined' ) ? true : false;
749
+ var _hasConsumerErrMsg = ( _ariaErrId && !_ginaOwnsErrMsg ) ? true : false;
750
+
709
751
  if (
710
752
  errors
711
753
  && typeof(errors[name]) != 'undefined'
@@ -728,6 +770,14 @@ function ValidatorPlugin(rules, data, formId) {
728
770
  $err.className = 'form-item-error-message';
729
771
  }
730
772
 
773
+ // #A11Y1 — reflect a committed invalid state into aria-invalid so any
774
+ // aria-errormessage association on the field is exposed to assistive tech.
775
+ // Soft (live-check) warnings while the field is still being edited are not
776
+ // asserted — only committed errors (blur/submit) are.
777
+ if ( !isWarning && $el.type != 'hidden' ) {
778
+ $el.setAttribute('aria-invalid', 'true');
779
+ }
780
+
731
781
  // injecting error messages
732
782
  for (var e in errors[name]) {
733
783
 
@@ -746,10 +796,31 @@ function ValidatorPlugin(rules, data, formId) {
746
796
  }
747
797
  }
748
798
 
749
- if ($target.type != 'hidden')
799
+ // #A11Y1 (slice 2) — skip the injected message div when the field already references
800
+ // a consumer-provided error element; otherwise inject it and wire aria-errormessage
801
+ // to it so assistive tech can resolve the message text.
802
+ if ($target.type != 'hidden' && !_hasConsumerErrMsg) {
803
+ if ( !$el.getAttribute('aria-errormessage') || _ginaOwnsErrMsg ) {
804
+ $err.id = ('gina-errormessage-' + (id || 'form') + '-' + (name || 'field')).replace(/[^a-zA-Z0-9_-]+/g, '-');
805
+ $el.setAttribute('aria-errormessage', $err.id);
806
+ if ( typeof($el.dataset) != 'undefined' ) {
807
+ $el.dataset.ginaAriaErrormessage = 'true';
808
+ }
809
+ }
750
810
  insertAfter($target, $err);
811
+ }
751
812
 
752
-
813
+ // #A11Y1 (slice 4) — announce a blur-time committed error through the form's polite
814
+ // live region (submit-time errors use focus instead). Only on the per-field/blur path
815
+ // (fieldName set) and only once focus has left the field; soft warnings are skipped.
816
+ if (
817
+ !isWarning
818
+ && typeof(fieldName) != 'undefined'
819
+ && $err
820
+ && $el !== document.activeElement
821
+ ) {
822
+ announceA11yError($form, $err.textContent);
823
+ }
753
824
 
754
825
  } else if (
755
826
  errors
@@ -782,6 +853,21 @@ function ValidatorPlugin(rules, data, formId) {
782
853
 
783
854
  $parent.className = $parent.className.replace(/(\s+form\-item\-error|form\-item\-error|\s+form\-item\-warning|form\-item\-warning)/, '');
784
855
 
856
+ // #A11Y1 — field is valid per Gina; mirror the native ValidityState (where the
857
+ // field has native HTML constraints) so aria-invalid never disagrees with the
858
+ // :user-invalid styling already shown. Explicit "false" is a touched-and-valid signal.
859
+ if ( $el.type != 'hidden' ) {
860
+ var _a11yNativeInvalid = ( $el.willValidate && $el.validity && !$el.validity.valid ) ? true : false;
861
+ $el.setAttribute('aria-invalid', _a11yNativeInvalid ? 'true' : 'false');
862
+ }
863
+
864
+ // #A11Y1 (slice 2) — the referenced div was just removed; drop the aria-errormessage
865
+ // wire we own (a consumer-provided association, lacking our marker, is left intact).
866
+ if ( typeof($el.dataset) != 'undefined' && typeof($el.dataset.ginaAriaErrormessage) != 'undefined' ) {
867
+ $el.removeAttribute('aria-errormessage');
868
+ delete $el.dataset.ginaAriaErrormessage;
869
+ }
870
+
785
871
  } else if (
786
872
  errors.count() > 0
787
873
  && typeof(errors[name]) != 'undefined'
@@ -802,6 +888,11 @@ function ValidatorPlugin(rules, data, formId) {
802
888
  $err = document.createElement('div');
803
889
  $err.setAttribute('class', 'form-item-error-message');
804
890
 
891
+ // #A11Y1 (slice 2) — preserve the aria-errormessage wire we own across refresh.
892
+ if ( _ginaOwnsErrMsg && _ariaErrId ) {
893
+ $err.id = _ariaErrId;
894
+ }
895
+
805
896
  // Fixed on 2025-03-09: className cleanup
806
897
  if (
807
898
  !isWarning
@@ -834,9 +925,14 @@ function ValidatorPlugin(rules, data, formId) {
834
925
  }
835
926
  }
836
927
 
837
- if ($err && $target.type != 'hidden') {
928
+ if ($err && $target.type != 'hidden' && !_hasConsumerErrMsg) {
838
929
  insertAfter($target, $err);
839
930
  }
931
+
932
+ // #A11Y1 — the committed error persists on refresh; keep aria-invalid asserted.
933
+ if ( !isWarning && $el.type != 'hidden' ) {
934
+ $el.setAttribute('aria-invalid', 'true');
935
+ }
840
936
  }
841
937
 
842
938
  if (
@@ -6001,6 +6097,28 @@ function ValidatorPlugin(rules, data, formId) {
6001
6097
  } else if ($form) { // just in case the form is being destroyed
6002
6098
  $form.send(result['data']);
6003
6099
  }
6100
+ } else {
6101
+ // #A11Y1 (slice 3) — failed submit: move focus to the first invalid field so
6102
+ // assistive tech announces it (accessible name + aria-invalid + the
6103
+ // aria-errormessage text). DOM order; hidden / unfocusable fields are skipped.
6104
+ var _a11yErrs = result['fields'] || result['error'];
6105
+ if ( _a11yErrs ) {
6106
+ var $a11yForm = event['target'];
6107
+ for (var _ai = 0, _aLen = $a11yForm.length; _ai < _aLen; ++_ai) {
6108
+ var _aField = $a11yForm[_ai];
6109
+ var _aName = _aField.getAttribute('name');
6110
+ if (
6111
+ _aName
6112
+ && typeof(_a11yErrs[_aName]) != 'undefined'
6113
+ && ( typeof(_a11yErrs[_aName].count) != 'function' || _a11yErrs[_aName].count() > 0 )
6114
+ && _aField.type != 'hidden'
6115
+ && typeof(_aField.focus) == 'function'
6116
+ ) {
6117
+ _aField.focus();
6118
+ break;
6119
+ }
6120
+ }
6121
+ }
6004
6122
  }
6005
6123
  })
6006
6124
  }
@@ -6168,14 +6286,15 @@ function ValidatorPlugin(rules, data, formId) {
6168
6286
  isSubmitType = $submit.getAttribute('data-gina-form-submit');
6169
6287
 
6170
6288
  if ( !onclickAttribute && !isSubmitType) {
6171
- $submit.setAttribute('onclick', 'return false;')
6172
- } else if ( !/return false/i.test(onclickAttribute) && !isSubmitType) {
6173
- if ( /\;$/.test(onclickAttribute) ) {
6174
- onclickAttribute += 'return false;'
6175
- } else {
6176
- onclickAttribute += '; return false;'
6177
- }
6289
+ // [CSP] Suppress the default action via a click listener instead of an inline
6290
+ // onclick="return false;" attribute (tripped CSP script-src-attr under nonce
6291
+ // policies). A preventDefault-only listener sets event.defaultPrevented exactly
6292
+ // as the inline handler did, so the form-level clickProxyHandler's
6293
+ // `if (event.defaultPrevented) return` guard still short-circuits identically.
6294
+ addListener(gina, $submit, 'click', function(e) { e.preventDefault(); });
6178
6295
  }
6296
+ // (an existing onclick is left untouched, as before; the dead else-if append
6297
+ // branch — it only mutated a local, never written back — was removed.)
6179
6298
  }
6180
6299
 
6181
6300
  if (!$submit['id']) {
@@ -1900,6 +1900,9 @@ function ServerEngineClass(options) {
1900
1900
  });
1901
1901
 
1902
1902
  server.on('upgrade', function(req, socket, head){
1903
+ // #INS8 — defer /_gina/agent upgrades to the WebSocket agent handler
1904
+ // attached in server.js; engine.io owns only its own upgrade path.
1905
+ if (/\/_gina\/agent(?:\?|$)/.test(req.url || '')) { return; }
1903
1906
  console.debug('[IO SERVER ] upgrading socket #'+ this.id);
1904
1907
  ioServer.handleUpgrade(req, socket, head);
1905
1908
  });
@@ -146,6 +146,152 @@ function _instrumentKeyValid(req) {
146
146
  try { return crypto.timingSafeEqual(a, b); } catch (e) { return false; }
147
147
  }
148
148
 
149
+ /**
150
+ * #INS8 — Attach the authenticated WebSocket transport for `/_gina/agent` to
151
+ * the raw HTTP server. The standalone Inspector (services/src/inspector on
152
+ * :4101) can connect over a WebSocket as an alternative to the SSE channel —
153
+ * same data + log frames, same #INS9b auth — but over a single bidirectional
154
+ * socket, the substrate for future bidirectional commands (#INS11 multi-bundle
155
+ * dashboard, #INS12 browser extension).
156
+ *
157
+ * Engine-agnostic by design: `rawServer` is the value returned by
158
+ * `self.instance.listen()`, and server.js owns the single `listen()` call for
159
+ * BOTH engines (the isaac instance IS the raw server; express's `app.listen()`
160
+ * returns it), so one `upgrade` listener here covers both. There is deliberately
161
+ * NO isaac-specific mirror — the isaac engine.io upgrade handler defers to this
162
+ * one via a `/_gina/agent` skip-guard (see server.isaac.js).
163
+ *
164
+ * Auth parity with the SSE endpoint: dev stays open + keyless; outside dev the
165
+ * upgrade requires a valid key (`x-gina-inspector-key` header or `?key=` query
166
+ * param) via the shared {@link _agentKeyValid}, fail-closed. When an Origin
167
+ * allowlist is configured (`process.gina._inspectorAgentAllowedOrigins`), the
168
+ * upgrade `Origin` must be in it; unconfigured ⇒ allow (parity with the SSE
169
+ * endpoint's `access-control-allow-origin: *`; cross-origin is the norm here,
170
+ * Inspector on :4101 → target on another port). Denials are written as a raw
171
+ * HTTP status line on the upgrade socket (no `ServerResponse` exists yet), then
172
+ * the socket is destroyed.
173
+ *
174
+ * Snapshot replay + capture egress mirror the SSE handler: the last snapshot is
175
+ * only sent in dev OR during an active instrumentation window (#INS10), never a
176
+ * post-window snapshot to a late authenticated client.
177
+ *
178
+ * Fail-graceful: if the `ws` module cannot be loaded the attach is skipped with
179
+ * a warning and SSE remains the transport — the WebSocket is an enhancement,
180
+ * not a hard dependency of the inspector channel.
181
+ *
182
+ * @inner
183
+ * @param {http.Server|https.Server|http2.Http2Server} rawServer - the raw server returned by listen()
184
+ * @param {object} ctx - the Server instance (provides `ctx.instance._lastGinaData`, `ctx.appName`, `ctx.env`)
185
+ * @returns {void}
186
+ * @example
187
+ * // Browser (standalone Inspector), non-dev target with a configured key:
188
+ * // new WebSocket('ws://host:port/_gina/agent?key=' + encodeURIComponent(key))
189
+ * // Frames: {"event":"data","data":{...}} and {"event":"log","data":{t,l,b,s,src}}
190
+ */
191
+ function attachInspectorAgentWs(rawServer, ctx) {
192
+ if (!rawServer || typeof rawServer.on !== 'function') { return; }
193
+ var WebSocketServer;
194
+ try {
195
+ var _wsMod = require('ws');
196
+ WebSocketServer = _wsMod.WebSocketServer || _wsMod.Server;
197
+ } catch (wsErr) {
198
+ console.warn('[inspector-agent] WebSocket transport disabled — ws module unavailable: ' + (wsErr.message || wsErr));
199
+ return;
200
+ }
201
+ if (typeof WebSocketServer !== 'function') { return; }
202
+
203
+ var _wss = new WebSocketServer({ noServer: true });
204
+ var _agAnsiRe = /\x1B\[\d+m/g;
205
+
206
+ rawServer.on('upgrade', function(req, socket, head) {
207
+ // Only handle the agent WS path; leave every other upgrade (e.g.
208
+ // engine.io in ioServer-attach mode) for its own listener.
209
+ if (!/\/_gina\/agent(?:\?|$)/.test(req.url || '')) { return; }
210
+
211
+ var _agIsDev = (process.env.NODE_ENV_IS_DEV && process.env.NODE_ENV_IS_DEV.toLowerCase() === 'true');
212
+
213
+ // Gate: dev OR explicitly enabled outside dev — otherwise the endpoint
214
+ // does not exist (404), matching the SSE handler's opt-in invisibility.
215
+ if (!_agIsDev && !(process.gina && process.gina._inspectorAgentEnabled)) {
216
+ try { socket.write('HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n'); } catch (e) {}
217
+ try { socket.destroy(); } catch (e) {}
218
+ return;
219
+ }
220
+
221
+ // #INS9b auth — outside dev a valid key is required (header or ?key=).
222
+ if (!_agIsDev && !_agentKeyValid(req)) {
223
+ try { socket.write('HTTP/1.1 401 Unauthorized\r\nConnection: close\r\n\r\n'); } catch (e) {}
224
+ try { socket.destroy(); } catch (e) {}
225
+ return;
226
+ }
227
+
228
+ // Optional Origin allowlist — enforced only when configured (parity with
229
+ // the SSE endpoint, open by default). The operator lists the Inspector
230
+ // origin(s) for production use.
231
+ var _allowed = (process.gina && Array.isArray(process.gina._inspectorAgentAllowedOrigins))
232
+ ? process.gina._inspectorAgentAllowedOrigins : [];
233
+ if (_allowed.length > 0) {
234
+ var _origin = (req.headers && req.headers.origin) || '';
235
+ if (_allowed.indexOf(_origin) < 0) {
236
+ try { socket.write('HTTP/1.1 403 Forbidden\r\nConnection: close\r\n\r\n'); } catch (e) {}
237
+ try { socket.destroy(); } catch (e) {}
238
+ return;
239
+ }
240
+ }
241
+
242
+ _wss.handleUpgrade(req, socket, head, function(ws) {
243
+ if (!process.gina._inspectorActive) { process.gina._inspectorActive = true; }
244
+
245
+ // Initial snapshot — dev OR an active instrumentation window only,
246
+ // never a post-window snapshot to a late authenticated client (#INS10).
247
+ try {
248
+ if ((_agIsDev || (lib.instrument && lib.instrument.isActive())) && ctx.instance && ctx.instance._lastGinaData) {
249
+ ws.send(JSON.stringify({ event: 'data', data: ctx.instance._lastGinaData }));
250
+ } else {
251
+ var _initEnv = { bundle: ctx.appName || '', env: ctx.env || '' };
252
+ ws.send(JSON.stringify({ event: 'data', data: { gina: { environment: _initEnv }, user: { environment: _initEnv } } }));
253
+ }
254
+ } catch (e) {}
255
+
256
+ // Data updates — emitted by the render delegates on every render.
257
+ var _wsDataListener = function(payload) {
258
+ try { ws.send(JSON.stringify({ event: 'data', data: payload })); } catch (e) {}
259
+ };
260
+ // Log entries — same source + frame shape as the SSE endpoint.
261
+ var _wsLogListener = function(payload) {
262
+ try {
263
+ var entry = JSON.parse(payload);
264
+ var level = entry.level === 'catch' ? 'log' : (entry.level || 'log');
265
+ var msg = (entry.content || '').replace(_agAnsiRe, '').replace(/\n$/, '');
266
+ if (!msg) { return; }
267
+ ws.send(JSON.stringify({ event: 'log', data: { t: Date.now(), l: level, b: entry.group || '', s: msg, src: 'server' } }));
268
+ } catch (e) {}
269
+ };
270
+
271
+ process.on('inspector#data', _wsDataListener);
272
+ process.on('logger#default', _wsLogListener);
273
+
274
+ var _cleanup = function() {
275
+ process.removeListener('inspector#data', _wsDataListener);
276
+ process.removeListener('logger#default', _wsLogListener);
277
+ };
278
+ ws.on('close', _cleanup);
279
+ ws.on('error', _cleanup);
280
+
281
+ // Inbound frames are reserved for future bidirectional commands
282
+ // (#INS11/#INS12). For now, answer only a lightweight heartbeat.
283
+ ws.on('message', function(raw) {
284
+ try {
285
+ var m = JSON.parse(raw.toString());
286
+ if (m && m.type === 'ping') { ws.send(JSON.stringify({ event: 'pong', data: Date.now() })); }
287
+ } catch (e) {}
288
+ });
289
+
290
+ try { console.info((req.method || 'GET') + ' [101] ' + req.url + ' (WS agent)'); } catch (e) {}
291
+ });
292
+ });
293
+ }
294
+
149
295
  /**
150
296
  * Read a small JSON request body for the POST /_gina/instrument control
151
297
  * endpoint (#INS10). Bounded at 4 KB — the control body is tiny
@@ -3378,6 +3524,11 @@ function Server(options) {
3378
3524
  var _rawServer = self.instance.listen(self.conf[self.appName][self.env].server.port);
3379
3525
  process.server = (_rawServer && typeof _rawServer.close === 'function') ? _rawServer : self.instance;
3380
3526
 
3527
+ // #INS8 — attach the authenticated WebSocket transport for /_gina/agent
3528
+ // to the raw server. Covers both the isaac and express engines (server.js
3529
+ // owns the single listen() call), so no engine-specific mirror is needed.
3530
+ attachInspectorAgentWs(process.server, self);
3531
+
3381
3532
  self.emit('started', self.conf[self.appName][self.env], true);
3382
3533
  }
3383
3534
 
@@ -145,10 +145,14 @@
145
145
  // process.env at config-load time). Example:
146
146
  // "key": "${secret:INSPECTOR_AGENT_KEY}". When enabled is true
147
147
  // but key is empty, the endpoint stays closed (fail-closed).
148
+ // allowedOrigins — #INS8: when non-empty, a WebSocket /_gina/agent upgrade
149
+ // is accepted only if its Origin header is in this list. Empty ⇒
150
+ // allow any origin (the SSE channel is open by CORS * regardless).
148
151
  "inspector": {
149
152
  "agent": {
150
153
  "enabled": false,
151
- "key": ""
154
+ "key": "",
155
+ "allowedOrigins": []
152
156
  },
153
157
  // #INS10 — time-boxed instrumentation window. Lets the Inspector's query +
154
158
  // flow capture run OUTSIDE dev mode for a bounded period, without enabling
@@ -3,6 +3,10 @@
3
3
 
4
4
  Actions:
5
5
 
6
+ start <service> [@gina] Start a framework-internal service (a bundle of
7
+ the @gina project, e.g. `inspector`) via the
8
+ daemon-free gina-container launcher. No-op when
9
+ the service is already running.
6
10
  list [@gina] List framework-internal services registered
7
11
  under @gina, with ports and running state.
8
12
  help Show this message.
@@ -11,6 +15,8 @@
11
15
 
12
16
  --format=json Emit machine-readable JSON instead of the
13
17
  human-readable text table.
18
+ --dry-run (service:start) Print the launch command that
19
+ would run, without spawning anything.
14
20
 
15
21
  Notes:
16
22
 
@@ -22,8 +28,16 @@
22
28
  with `process.kill(pid, 0)` — a stale pidfile (process gone) reports
23
29
  the service as stopped.
24
30
 
31
+ `service:start` spawns the service detached via bin/gina-container, so it
32
+ does not need the `gina start` socket daemon. The service runs in @gina's
33
+ own dev/local defaults; use `bundle:start` for explicit env/scope control.
34
+ Stop a service with `bundle:stop <service> @gina`.
35
+
25
36
  Examples:
26
37
 
38
+ gina service:start inspector Start the Inspector standalone bundle (dev)
39
+ gina service:start inspector --dry-run
40
+ Show the launch command without spawning
27
41
  gina service:list List all services with ports + running state
28
42
  gina service:list @gina Same (explicit @gina)
29
43
  gina service:list --format=json