gina 0.6.6 → 0.6.7

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 (580) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +26 -23
  3. package/ROADMAP.md +2 -0
  4. package/bin/cli +1 -0
  5. package/framework/v0.6.7/VERSION +1 -0
  6. package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/css/gina.min.css +1 -0
  7. package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  8. package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  9. package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +27 -0
  10. package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +93 -8
  11. package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.js +443 -28
  12. package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/js/gina.min.js +647 -0
  13. package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  14. package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  15. package/framework/{v0.6.6 → v0.6.7}/core/config.js +22 -0
  16. package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/index.js +16 -4
  17. package/framework/{v0.6.6 → v0.6.7}/core/connectors/duckdb/index.js +5 -2
  18. package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/index.js +8 -3
  19. package/framework/{v0.6.6 → v0.6.7}/core/connectors/mysql/index.js +5 -2
  20. package/framework/v0.6.7/core/connectors/param-redact.js +177 -0
  21. package/framework/{v0.6.6 → v0.6.7}/core/connectors/postgresql/index.js +5 -2
  22. package/framework/{v0.6.6 → v0.6.7}/core/connectors/scylladb/index.js +5 -2
  23. package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/index.js +5 -2
  24. package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.js +190 -23
  25. package/framework/{v0.6.6 → v0.6.7}/core/gna.js +186 -0
  26. package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/src/form-validator.js +91 -7
  27. package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/src/main.js +352 -21
  28. package/framework/{v0.6.6 → v0.6.7}/core/server.js +190 -1
  29. package/framework/{v0.6.6 → v0.6.7}/core/template/conf/settings.json +7 -8
  30. package/framework/v0.6.7/lib/cmd/storage/arguments.json +6 -0
  31. package/framework/v0.6.7/lib/cmd/storage/gc.js +418 -0
  32. package/framework/v0.6.7/lib/cmd/storage/help.txt +63 -0
  33. package/framework/v0.6.7/lib/cmd/storage/stats.js +396 -0
  34. package/framework/v0.6.7/lib/cmd/storage/verify.js +413 -0
  35. package/framework/{v0.6.6 → v0.6.7}/lib/index.js +14 -0
  36. package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/main.js +13 -6
  37. package/framework/v0.6.7/lib/storage/package.json +7 -0
  38. package/framework/v0.6.7/lib/storage/src/local-cas.js +1186 -0
  39. package/framework/v0.6.7/lib/storage/src/local.js +599 -0
  40. package/framework/v0.6.7/lib/storage/src/main.js +890 -0
  41. package/framework/v0.6.7/lib/storage/src/meta-store.js +506 -0
  42. package/framework/v0.6.7/lib/storage/src/util.js +336 -0
  43. package/framework/v0.6.7/lib/storage-store.js +110 -0
  44. package/framework/{v0.6.6 → v0.6.7}/package.json +1 -1
  45. package/gna.js +4 -4
  46. package/llms.txt +10 -9
  47. package/package.json +3 -3
  48. package/schema/settings.json +142 -2
  49. package/types/index.d.ts +7 -0
  50. package/framework/v0.6.6/VERSION +0 -1
  51. package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -1
  52. package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  53. package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  54. package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -643
  55. package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  56. package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  57. /package/framework/{v0.6.6 → v0.6.7}/AUTHORS +0 -0
  58. /package/framework/{v0.6.6 → v0.6.7}/LICENSE +0 -0
  59. /package/framework/{v0.6.6 → v0.6.7}/core/asset/html/nolayout.html +0 -0
  60. /package/framework/{v0.6.6 → v0.6.7}/core/asset/html/static.html +0 -0
  61. /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/android-chrome-192x192.png +0 -0
  62. /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/android-chrome-512x512.png +0 -0
  63. /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/apple-touch-icon.png +0 -0
  64. /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/favicon-16x16.png +0 -0
  65. /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/favicon-32x32.png +0 -0
  66. /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/favicon.ico +0 -0
  67. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/README.md +0 -0
  68. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  69. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  70. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  71. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  72. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  73. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  74. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  75. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  76. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  77. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  78. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  79. /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  80. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/ai/index.js +0 -0
  81. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/ai/lib/connector.js +0 -0
  82. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/connector.js +0 -0
  83. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  84. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  85. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/n1ql.js +0 -0
  86. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/session-store.js +0 -0
  87. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  88. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  89. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/duckdb/lib/connector.js +0 -0
  90. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/connector.js +0 -0
  91. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/job-store.js +0 -0
  92. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  93. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/session-store.js +0 -0
  94. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mysql/lib/connector.js +0 -0
  95. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/postgresql/lib/connector.js +0 -0
  96. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/index.js +0 -0
  97. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/connector.js +0 -0
  98. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/job-store.js +0 -0
  99. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/render-cache-store.js +0 -0
  100. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/session-store.js +0 -0
  101. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/scylladb/lib/connector.js +0 -0
  102. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/scylladb/lib/session-store.js +0 -0
  103. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sql-parser.js +0 -0
  104. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/lib/connector.js +0 -0
  105. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/lib/job-store.js +0 -0
  106. /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/lib/session-store.js +0 -0
  107. /package/framework/{v0.6.6 → v0.6.7}/core/content.encoding +0 -0
  108. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.framework.js +0 -0
  109. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-json.js +0 -0
  110. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-nunjucks-async.js +0 -0
  111. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-nunjucks.js +0 -0
  112. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-stream.js +0 -0
  113. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-swig-async.js +0 -0
  114. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-swig.js +0 -0
  115. /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-v1.js +0 -0
  116. /package/framework/{v0.6.6 → v0.6.7}/core/controller/index.js +0 -0
  117. /package/framework/{v0.6.6 → v0.6.7}/core/controller/inspector-window-emit.js +0 -0
  118. /package/framework/{v0.6.6 → v0.6.7}/core/controller/release-banner.js +0 -0
  119. /package/framework/{v0.6.6 → v0.6.7}/core/dev/index.js +0 -0
  120. /package/framework/{v0.6.6 → v0.6.7}/core/dev/lib/class.js +0 -0
  121. /package/framework/{v0.6.6 → v0.6.7}/core/dev/lib/factory.js +0 -0
  122. /package/framework/{v0.6.6 → v0.6.7}/core/dev/lib/tools.js +0 -0
  123. /package/framework/{v0.6.6 → v0.6.7}/core/locales/README.md +0 -0
  124. /package/framework/{v0.6.6 → v0.6.7}/core/locales/currency.json +0 -0
  125. /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/language/en.json +0 -0
  126. /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/language/fr.json +0 -0
  127. /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/region/en.json +0 -0
  128. /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/region/fr.json +0 -0
  129. /package/framework/{v0.6.6 → v0.6.7}/core/locales/index.js +0 -0
  130. /package/framework/{v0.6.6 → v0.6.7}/core/mime.types +0 -0
  131. /package/framework/{v0.6.6 → v0.6.7}/core/model/entity.js +0 -0
  132. /package/framework/{v0.6.6 → v0.6.7}/core/model/index.js +0 -0
  133. /package/framework/{v0.6.6 → v0.6.7}/core/model/template/entityFactory.js +0 -0
  134. /package/framework/{v0.6.6 → v0.6.7}/core/model/template/index.js +0 -0
  135. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/README.md +0 -0
  136. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/index.js +0 -0
  137. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/csrf/README.md +0 -0
  138. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/csrf/package.json +0 -0
  139. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/csrf/src/main.js +0 -0
  140. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/README.md +0 -0
  141. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coep/README.md +0 -0
  142. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coep/package.json +0 -0
  143. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  144. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coop/README.md +0 -0
  145. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coop/package.json +0 -0
  146. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  147. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/corp/README.md +0 -0
  148. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/corp/package.json +0 -0
  149. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  150. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/csp/README.md +0 -0
  151. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/csp/package.json +0 -0
  152. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  153. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  154. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  155. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  156. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  157. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  158. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  159. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  160. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  161. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  162. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/package.json +0 -0
  163. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  164. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  165. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  166. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/src/main.js +0 -0
  167. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  168. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  169. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  170. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  171. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  172. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  173. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  174. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  175. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  176. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  177. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  178. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  179. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  180. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  181. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  182. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  183. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  184. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  185. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/session/README.md +0 -0
  186. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/session/package.json +0 -0
  187. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/session/src/main.js +0 -0
  188. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/README.md +0 -0
  189. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/build.json +0 -0
  190. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/package.json +0 -0
  191. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/src/main.js +0 -0
  192. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/README.md +0 -0
  193. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/build.json +0 -0
  194. /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/package.json +0 -0
  195. /package/framework/{v0.6.6 → v0.6.7}/core/router.js +0 -0
  196. /package/framework/{v0.6.6 → v0.6.7}/core/server.express.js +0 -0
  197. /package/framework/{v0.6.6 → v0.6.7}/core/server.isaac.js +0 -0
  198. /package/framework/{v0.6.6 → v0.6.7}/core/status.codes +0 -0
  199. /package/framework/{v0.6.6 → v0.6.7}/core/template/_gitignore +0 -0
  200. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/app.json +0 -0
  201. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  202. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/routing.json +0 -0
  203. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/settings.json +0 -0
  204. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  205. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/templates.json +0 -0
  206. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  207. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  208. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  209. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  210. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/index.js +0 -0
  211. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/locales/en.json +0 -0
  212. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  213. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  214. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  215. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  216. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  217. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  218. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  219. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  220. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/readme.md +0 -0
  221. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/sw.js +0 -0
  222. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  223. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  224. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  225. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  226. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  227. /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  228. /package/framework/{v0.6.6 → v0.6.7}/core/template/command/gina.bat.tpl +0 -0
  229. /package/framework/{v0.6.6 → v0.6.7}/core/template/command/gina.tpl +0 -0
  230. /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/env.json +0 -0
  231. /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/manifest.json +0 -0
  232. /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/package.json +0 -0
  233. /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/statics.json +0 -0
  234. /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/templates.json +0 -0
  235. /package/framework/{v0.6.6 → v0.6.7}/core/template/error/client/json/401.json +0 -0
  236. /package/framework/{v0.6.6 → v0.6.7}/core/template/error/client/json/403.json +0 -0
  237. /package/framework/{v0.6.6 → v0.6.7}/core/template/error/client/json/404.json +0 -0
  238. /package/framework/{v0.6.6 → v0.6.7}/core/template/error/server/html/50x.html +0 -0
  239. /package/framework/{v0.6.6 → v0.6.7}/core/template/error/server/json/500.json +0 -0
  240. /package/framework/{v0.6.6 → v0.6.7}/core/template/error/server/json/503.json +0 -0
  241. /package/framework/{v0.6.6 → v0.6.7}/core/template/extensions/logger/config.json +0 -0
  242. /package/framework/{v0.6.6 → v0.6.7}/helpers/console.js +0 -0
  243. /package/framework/{v0.6.6 → v0.6.7}/helpers/context.js +0 -0
  244. /package/framework/{v0.6.6 → v0.6.7}/helpers/data/LICENSE +0 -0
  245. /package/framework/{v0.6.6 → v0.6.7}/helpers/data/README.md +0 -0
  246. /package/framework/{v0.6.6 → v0.6.7}/helpers/data/package.json +0 -0
  247. /package/framework/{v0.6.6 → v0.6.7}/helpers/data/src/main.js +0 -0
  248. /package/framework/{v0.6.6 → v0.6.7}/helpers/dateFormat.js +0 -0
  249. /package/framework/{v0.6.6 → v0.6.7}/helpers/index.js +0 -0
  250. /package/framework/{v0.6.6 → v0.6.7}/helpers/json/LICENSE +0 -0
  251. /package/framework/{v0.6.6 → v0.6.7}/helpers/json/README.md +0 -0
  252. /package/framework/{v0.6.6 → v0.6.7}/helpers/json/package.json +0 -0
  253. /package/framework/{v0.6.6 → v0.6.7}/helpers/json/src/main.js +0 -0
  254. /package/framework/{v0.6.6 → v0.6.7}/helpers/path.js +0 -0
  255. /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/README.md +0 -0
  256. /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/package.json +0 -0
  257. /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/src/api-error.js +0 -0
  258. /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/src/main.js +0 -0
  259. /package/framework/{v0.6.6 → v0.6.7}/helpers/prototypes.js +0 -0
  260. /package/framework/{v0.6.6 → v0.6.7}/helpers/task.js +0 -0
  261. /package/framework/{v0.6.6 → v0.6.7}/helpers/text.js +0 -0
  262. /package/framework/{v0.6.6 → v0.6.7}/lib/admin/package.json +0 -0
  263. /package/framework/{v0.6.6 → v0.6.7}/lib/admin/src/main.js +0 -0
  264. /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/README.md +0 -0
  265. /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/build.json +0 -0
  266. /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/package.json +0 -0
  267. /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/src/dep/jszip.min.js +0 -0
  268. /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/src/main.js +0 -0
  269. /package/framework/{v0.6.6 → v0.6.7}/lib/async/package.json +0 -0
  270. /package/framework/{v0.6.6 → v0.6.7}/lib/async/src/main.js +0 -0
  271. /package/framework/{v0.6.6 → v0.6.7}/lib/audit/package.json +0 -0
  272. /package/framework/{v0.6.6 → v0.6.7}/lib/audit/src/main.js +0 -0
  273. /package/framework/{v0.6.6 → v0.6.7}/lib/audit-store.js +0 -0
  274. /package/framework/{v0.6.6 → v0.6.7}/lib/authn/package.json +0 -0
  275. /package/framework/{v0.6.6 → v0.6.7}/lib/authn/src/lockout.js +0 -0
  276. /package/framework/{v0.6.6 → v0.6.7}/lib/authn/src/main.js +0 -0
  277. /package/framework/{v0.6.6 → v0.6.7}/lib/authn/src/totp.js +0 -0
  278. /package/framework/{v0.6.6 → v0.6.7}/lib/authz-gate/package.json +0 -0
  279. /package/framework/{v0.6.6 → v0.6.7}/lib/authz-gate/src/main.js +0 -0
  280. /package/framework/{v0.6.6 → v0.6.7}/lib/cache/README.md +0 -0
  281. /package/framework/{v0.6.6 → v0.6.7}/lib/cache/build.json +0 -0
  282. /package/framework/{v0.6.6 → v0.6.7}/lib/cache/package.json +0 -0
  283. /package/framework/{v0.6.6 → v0.6.7}/lib/cache/src/main.js +0 -0
  284. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/aliases.json +0 -0
  285. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/audit/arguments.json +0 -0
  286. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/audit/help.txt +0 -0
  287. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/audit/verify.js +0 -0
  288. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/add.js +0 -0
  289. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/arguments.json +0 -0
  290. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/build.js +0 -0
  291. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/copy.js +0 -0
  292. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/cp.js +0 -0
  293. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/help.js +0 -0
  294. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/help.txt +0 -0
  295. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  296. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/list.js +0 -0
  297. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/man.js +0 -0
  298. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/mcp-start.js +0 -0
  299. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/mcp.js +0 -0
  300. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/oas.js +0 -0
  301. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/openapi.js +0 -0
  302. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/remove.js +0 -0
  303. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/rename.js +0 -0
  304. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/restart.js +0 -0
  305. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/rm.js +0 -0
  306. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/start.js +0 -0
  307. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/status.js +0 -0
  308. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/stop.js +0 -0
  309. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/types.js +0 -0
  310. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/arguments.json +0 -0
  311. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/clear.js +0 -0
  312. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/help.txt +0 -0
  313. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/stats.js +0 -0
  314. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/add.js +0 -0
  315. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/arguments.json +0 -0
  316. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/help.js +0 -0
  317. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/help.txt +0 -0
  318. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/infer.js +0 -0
  319. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/list.js +0 -0
  320. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/migrate.js +0 -0
  321. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/models.js +0 -0
  322. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/remove.js +0 -0
  323. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/rm.js +0 -0
  324. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/test.js +0 -0
  325. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/arguments.json +0 -0
  326. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/help.js +0 -0
  327. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/help.txt +0 -0
  328. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/man.js +0 -0
  329. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/ps.js +0 -0
  330. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/stop.js +0 -0
  331. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/add.js +0 -0
  332. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/arguments.json +0 -0
  333. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/help.txt +0 -0
  334. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/args.js +0 -0
  335. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/namespace.js +0 -0
  336. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  337. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/reference-scan.js +0 -0
  338. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/scaffold.js +0 -0
  339. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/remove.js +0 -0
  340. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/rename.js +0 -0
  341. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/rm.js +0 -0
  342. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/add.js +0 -0
  343. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/get.js +0 -0
  344. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/help.js +0 -0
  345. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/help.txt +0 -0
  346. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/link-dev.js +0 -0
  347. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/list.js +0 -0
  348. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/remove.js +0 -0
  349. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/rm.js +0 -0
  350. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/set.js +0 -0
  351. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/unset.js +0 -0
  352. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/use.js +0 -0
  353. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/add.js +0 -0
  354. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/arguments.json +0 -0
  355. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/build.js +0 -0
  356. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/dot.js +0 -0
  357. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/get.js +0 -0
  358. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/help.js +0 -0
  359. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/help.txt +0 -0
  360. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/init.js +0 -0
  361. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/link-node-modules.js +0 -0
  362. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/link.js +0 -0
  363. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/list.js +0 -0
  364. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/man.js +0 -0
  365. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/msg.json +0 -0
  366. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/open.js +0 -0
  367. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/remove.js +0 -0
  368. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/reset.js +0 -0
  369. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/restart.js +0 -0
  370. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/set.js +0 -0
  371. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/start.js +0 -0
  372. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/status.js +0 -0
  373. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/stop.js +0 -0
  374. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/tail.js +0 -0
  375. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/update.js +0 -0
  376. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/version.js +0 -0
  377. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/gina-dev.1.md +0 -0
  378. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/gina-framework.1.md +0 -0
  379. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/gina.1.md +0 -0
  380. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/helper.js +0 -0
  381. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/add.js +0 -0
  382. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/arguments.json +0 -0
  383. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/export.js +0 -0
  384. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/help.js +0 -0
  385. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/help.txt +0 -0
  386. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/import.js +0 -0
  387. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/scan.js +0 -0
  388. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/_host.js +0 -0
  389. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/arguments.json +0 -0
  390. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/build.js +0 -0
  391. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/help.js +0 -0
  392. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/help.txt +0 -0
  393. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/list.js +0 -0
  394. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/man.js +0 -0
  395. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/rm.js +0 -0
  396. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/run.js +0 -0
  397. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/index.js +0 -0
  398. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/inspector/help.js +0 -0
  399. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/inspector/help.txt +0 -0
  400. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/inspector/open.js +0 -0
  401. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/man-render.js +0 -0
  402. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/arguments.json +0 -0
  403. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/help.js +0 -0
  404. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/help.txt +0 -0
  405. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/kill.js +0 -0
  406. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/list.js +0 -0
  407. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/msg.json +0 -0
  408. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/help.js +0 -0
  409. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/help.txt +0 -0
  410. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/inc/scan.js +0 -0
  411. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/list.js +0 -0
  412. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/reset.js +0 -0
  413. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/set.js +0 -0
  414. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/add.js +0 -0
  415. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/arguments.json +0 -0
  416. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/backup.js +0 -0
  417. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/build.js +0 -0
  418. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/help.js +0 -0
  419. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/help.txt +0 -0
  420. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/import.js +0 -0
  421. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/list.js +0 -0
  422. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/man.js +0 -0
  423. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/move.js +0 -0
  424. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/remove.js +0 -0
  425. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/rename.js +0 -0
  426. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/restart.js +0 -0
  427. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/restore.js +0 -0
  428. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/rm.js +0 -0
  429. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/start.js +0 -0
  430. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/status.js +0 -0
  431. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/stop.js +0 -0
  432. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/arguments.json +0 -0
  433. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/help.js +0 -0
  434. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/help.txt +0 -0
  435. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/list.js +0 -0
  436. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/remove.js +0 -0
  437. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/set.js +0 -0
  438. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/add.js +0 -0
  439. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/help.js +0 -0
  440. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/help.txt +0 -0
  441. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/link-local.js +0 -0
  442. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/link-production.js +0 -0
  443. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/list.js +0 -0
  444. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/remove.js +0 -0
  445. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/rm.js +0 -0
  446. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/use.js +0 -0
  447. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/arguments.json +0 -0
  448. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/check.js +0 -0
  449. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/help.js +0 -0
  450. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/help.txt +0 -0
  451. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/scan.js +0 -0
  452. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/help.js +0 -0
  453. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/help.txt +0 -0
  454. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/list.js +0 -0
  455. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/man.js +0 -0
  456. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/start.js +0 -0
  457. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/view/add.js +0 -0
  458. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd-status-format/package.json +0 -0
  459. /package/framework/{v0.6.6 → v0.6.7}/lib/cmd-status-format/src/main.js +0 -0
  460. /package/framework/{v0.6.6 → v0.6.7}/lib/collection/README.md +0 -0
  461. /package/framework/{v0.6.6 → v0.6.7}/lib/collection/build.json +0 -0
  462. /package/framework/{v0.6.6 → v0.6.7}/lib/collection/package.json +0 -0
  463. /package/framework/{v0.6.6 → v0.6.7}/lib/collection/src/main.js +0 -0
  464. /package/framework/{v0.6.6 → v0.6.7}/lib/config.js +0 -0
  465. /package/framework/{v0.6.6 → v0.6.7}/lib/connector-config/package.json +0 -0
  466. /package/framework/{v0.6.6 → v0.6.7}/lib/connector-config/src/main.js +0 -0
  467. /package/framework/{v0.6.6 → v0.6.7}/lib/connector-error/package.json +0 -0
  468. /package/framework/{v0.6.6 → v0.6.7}/lib/connector-error/src/main.js +0 -0
  469. /package/framework/{v0.6.6 → v0.6.7}/lib/connector-registry/package.json +0 -0
  470. /package/framework/{v0.6.6 → v0.6.7}/lib/connector-registry/src/main.js +0 -0
  471. /package/framework/{v0.6.6 → v0.6.7}/lib/cron/README.md +0 -0
  472. /package/framework/{v0.6.6 → v0.6.7}/lib/cron/package.json +0 -0
  473. /package/framework/{v0.6.6 → v0.6.7}/lib/cron/src/main.js +0 -0
  474. /package/framework/{v0.6.6 → v0.6.7}/lib/domain/LICENSE +0 -0
  475. /package/framework/{v0.6.6 → v0.6.7}/lib/domain/README.md +0 -0
  476. /package/framework/{v0.6.6 → v0.6.7}/lib/domain/package.json +0 -0
  477. /package/framework/{v0.6.6 → v0.6.7}/lib/domain/src/main.js +0 -0
  478. /package/framework/{v0.6.6 → v0.6.7}/lib/dto/package.json +0 -0
  479. /package/framework/{v0.6.6 → v0.6.7}/lib/dto/src/main.js +0 -0
  480. /package/framework/{v0.6.6 → v0.6.7}/lib/dto-pipe/package.json +0 -0
  481. /package/framework/{v0.6.6 → v0.6.7}/lib/dto-pipe/src/main.js +0 -0
  482. /package/framework/{v0.6.6 → v0.6.7}/lib/dto-types/package.json +0 -0
  483. /package/framework/{v0.6.6 → v0.6.7}/lib/dto-types/src/main.js +0 -0
  484. /package/framework/{v0.6.6 → v0.6.7}/lib/generator/index.js +0 -0
  485. /package/framework/{v0.6.6 → v0.6.7}/lib/i18n/package.json +0 -0
  486. /package/framework/{v0.6.6 → v0.6.7}/lib/i18n/src/main.js +0 -0
  487. /package/framework/{v0.6.6 → v0.6.7}/lib/image-build/package.json +0 -0
  488. /package/framework/{v0.6.6 → v0.6.7}/lib/image-build/src/main.js +0 -0
  489. /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/LICENSE +0 -0
  490. /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/README.md +0 -0
  491. /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/package.json +0 -0
  492. /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/src/main.js +0 -0
  493. /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-events/package.json +0 -0
  494. /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-events/src/main.js +0 -0
  495. /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-redact/package.json +0 -0
  496. /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-redact/src/main.js +0 -0
  497. /package/framework/{v0.6.6 → v0.6.7}/lib/instrument/package.json +0 -0
  498. /package/framework/{v0.6.6 → v0.6.7}/lib/instrument/src/main.js +0 -0
  499. /package/framework/{v0.6.6 → v0.6.7}/lib/job/package.json +0 -0
  500. /package/framework/{v0.6.6 → v0.6.7}/lib/job/src/main.js +0 -0
  501. /package/framework/{v0.6.6 → v0.6.7}/lib/job-store.js +0 -0
  502. /package/framework/{v0.6.6 → v0.6.7}/lib/json-config-header/package.json +0 -0
  503. /package/framework/{v0.6.6 → v0.6.7}/lib/json-config-header/src/main.js +0 -0
  504. /package/framework/{v0.6.6 → v0.6.7}/lib/loading-state/package.json +0 -0
  505. /package/framework/{v0.6.6 → v0.6.7}/lib/loading-state/src/main.js +0 -0
  506. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/README.md +0 -0
  507. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/package.json +0 -0
  508. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/default/index.js +0 -0
  509. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/file/index.js +0 -0
  510. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  511. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  512. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/mq/index.js +0 -0
  513. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/mq/listener.js +0 -0
  514. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/mq/speaker.js +0 -0
  515. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/helper.js +0 -0
  516. /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/main.js +0 -0
  517. /package/framework/{v0.6.6 → v0.6.7}/lib/math/index.js +0 -0
  518. /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-dispatch/package.json +0 -0
  519. /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-dispatch/src/main.js +0 -0
  520. /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-http/package.json +0 -0
  521. /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-http/src/main.js +0 -0
  522. /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-server/package.json +0 -0
  523. /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-server/src/main.js +0 -0
  524. /package/framework/{v0.6.6 → v0.6.7}/lib/merge/README.md +0 -0
  525. /package/framework/{v0.6.6 → v0.6.7}/lib/merge/package.json +0 -0
  526. /package/framework/{v0.6.6 → v0.6.7}/lib/merge/src/main.js +0 -0
  527. /package/framework/{v0.6.6 → v0.6.7}/lib/metrics/package.json +0 -0
  528. /package/framework/{v0.6.6 → v0.6.7}/lib/metrics/src/main.js +0 -0
  529. /package/framework/{v0.6.6 → v0.6.7}/lib/model.js +0 -0
  530. /package/framework/{v0.6.6 → v0.6.7}/lib/net-locality/package.json +0 -0
  531. /package/framework/{v0.6.6 → v0.6.7}/lib/net-locality/src/main.js +0 -0
  532. /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-filters/README.md +0 -0
  533. /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-filters/package.json +0 -0
  534. /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-filters/src/main.js +0 -0
  535. /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-resolver/package.json +0 -0
  536. /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-resolver/src/main.js +0 -0
  537. /package/framework/{v0.6.6 → v0.6.7}/lib/proc.js +0 -0
  538. /package/framework/{v0.6.6 → v0.6.7}/lib/release-watch/package.json +0 -0
  539. /package/framework/{v0.6.6 → v0.6.7}/lib/release-watch/src/main.js +0 -0
  540. /package/framework/{v0.6.6 → v0.6.7}/lib/render-cache/package.json +0 -0
  541. /package/framework/{v0.6.6 → v0.6.7}/lib/render-cache/src/main.js +0 -0
  542. /package/framework/{v0.6.6 → v0.6.7}/lib/render-cache-store.js +0 -0
  543. /package/framework/{v0.6.6 → v0.6.7}/lib/routing/README.md +0 -0
  544. /package/framework/{v0.6.6 → v0.6.7}/lib/routing/build.json +0 -0
  545. /package/framework/{v0.6.6 → v0.6.7}/lib/routing/package.json +0 -0
  546. /package/framework/{v0.6.6 → v0.6.7}/lib/routing/src/main.js +0 -0
  547. /package/framework/{v0.6.6 → v0.6.7}/lib/routing/src/radix.js +0 -0
  548. /package/framework/{v0.6.6 → v0.6.7}/lib/routing-introspect/package.json +0 -0
  549. /package/framework/{v0.6.6 → v0.6.7}/lib/routing-introspect/src/main.js +0 -0
  550. /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/package.json +0 -0
  551. /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/backends/env.js +0 -0
  552. /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/backends/file.js +0 -0
  553. /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/env-file.js +0 -0
  554. /package/framework/{v0.6.6 → v0.6.7}/lib/session-store.js +0 -0
  555. /package/framework/{v0.6.6 → v0.6.7}/lib/shell.js +0 -0
  556. /package/framework/{v0.6.6 → v0.6.7}/lib/sqlite-driver.js +0 -0
  557. /package/framework/{v0.6.6 → v0.6.7}/lib/state.js +0 -0
  558. /package/framework/{v0.6.6 → v0.6.7}/lib/swig-filters/README.md +0 -0
  559. /package/framework/{v0.6.6 → v0.6.7}/lib/swig-filters/package.json +0 -0
  560. /package/framework/{v0.6.6 → v0.6.7}/lib/swig-filters/src/main.js +0 -0
  561. /package/framework/{v0.6.6 → v0.6.7}/lib/swig-resolver/package.json +0 -0
  562. /package/framework/{v0.6.6 → v0.6.7}/lib/swig-resolver/src/main.js +0 -0
  563. /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/package.json +0 -0
  564. /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/src/loaders/http.js +0 -0
  565. /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/src/loaders/memory.js +0 -0
  566. /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/src/main.js +0 -0
  567. /package/framework/{v0.6.6 → v0.6.7}/lib/url/README.md +0 -0
  568. /package/framework/{v0.6.6 → v0.6.7}/lib/url/index.js +0 -0
  569. /package/framework/{v0.6.6 → v0.6.7}/lib/url/routing.json +0 -0
  570. /package/framework/{v0.6.6 → v0.6.7}/lib/uuid/package.json +0 -0
  571. /package/framework/{v0.6.6 → v0.6.7}/lib/uuid/src/main.js +0 -0
  572. /package/framework/{v0.6.6 → v0.6.7}/lib/validator.js +0 -0
  573. /package/framework/{v0.6.6 → v0.6.7}/lib/watcher/package.json +0 -0
  574. /package/framework/{v0.6.6 → v0.6.7}/lib/watcher/src/main.js +0 -0
  575. /package/framework/{v0.6.6 → v0.6.7}/lib/ws-framing/package.json +0 -0
  576. /package/framework/{v0.6.6 → v0.6.7}/lib/ws-framing/src/main.js +0 -0
  577. /package/framework/{v0.6.6 → v0.6.7}/lib/ws-query/package.json +0 -0
  578. /package/framework/{v0.6.6 → v0.6.7}/lib/ws-query/src/main.js +0 -0
  579. /package/framework/{v0.6.6 → v0.6.7}/lib/ws-session/package.json +0 -0
  580. /package/framework/{v0.6.6 → v0.6.7}/lib/ws-session/src/main.js +0 -0
@@ -4471,6 +4471,192 @@ function Server(options) {
4471
4471
  });
4472
4472
  }
4473
4473
 
4474
+ // ── /_gina/storage/* — storage maintenance (#STO1 CLI slice; always-on, admin-gated) ──
4475
+ // Engine-agnostic ONLY — no isaac fast-path, per the /_gina/agent
4476
+ // precedent (the isaac instance runs this same onRequest chain, so
4477
+ // one handler covers both engines). Same admin IP allowlist as
4478
+ // /_gina/info & /_gina/cache/* — the surface discloses filesystem
4479
+ // ROOTS and gc DELETES, the /_gina/cache/stats class. NO dev gate:
4480
+ // operational tooling. Patterns are ^-anchored (the RW-F9 lesson —
4481
+ // unanchored, any URL that merely EMBEDS the path would match).
4482
+ // No fix-over-HTTP: verify's racy half stays offline where it is
4483
+ // safe by construction — the running process serves REPORTS, and
4484
+ // the gc sweep is the one sanctioned mutation.
4485
+ //
4486
+ // GET /_gina/storage/stats?driver=<name>
4487
+ // → { configured, drivers: [ {name, strategy, root, capabilities,
4488
+ // store: {objects, refcounted, zeroRefPending, inline, bytes}|null }
4489
+ // | {name, error} ] } — the driver's own stats() shape, verbatim.
4490
+ if (
4491
+ request.method.toUpperCase() === 'GET'
4492
+ && /^\/_gina\/storage\/stats(\?.*)?$/i.test(request.url)
4493
+ ) {
4494
+ response.setHeader('content-type', 'application/json; charset=utf8');
4495
+ response.setHeader('cache-control', 'no-cache, no-store, must-revalidate');
4496
+ response.setHeader('pragma', 'no-cache');
4497
+ response.setHeader('expires', '0');
4498
+ if ( !lib.admin.isClientAllowed(request) ) {
4499
+ response.statusCode = 403;
4500
+ return response.end(JSON.stringify({ error: 'forbidden', message: '/_gina/storage/stats: client IP not in app.json admin.allowFrom' }));
4501
+ }
4502
+ var _stoStatsNames = lib.storage.list();
4503
+ var _stoStatsDriver = null;
4504
+ var _stoStatsQi = request.url.indexOf('?');
4505
+ if ( _stoStatsQi > -1 ) {
4506
+ _stoStatsDriver = new URLSearchParams(request.url.slice(_stoStatsQi + 1)).get('driver') || null;
4507
+ }
4508
+ if ( _stoStatsDriver ) {
4509
+ if ( _stoStatsNames.indexOf(_stoStatsDriver) < 0 ) {
4510
+ response.statusCode = 404;
4511
+ return response.end(JSON.stringify({ error: 'not_found', message: '/_gina/storage/stats: no driver `' + _stoStatsDriver + '` (configured: ' + (_stoStatsNames.join(', ') || 'none') + ')' }));
4512
+ }
4513
+ _stoStatsNames = [ _stoStatsDriver ];
4514
+ }
4515
+ var _stoStatsOut = { configured: lib.storage.isStarted(), drivers: [] };
4516
+ var _stoStatsNext = function(_stoI) {
4517
+ if ( _stoI >= _stoStatsNames.length ) {
4518
+ return response.end(JSON.stringify(_stoStatsOut));
4519
+ }
4520
+ lib.storage.get(_stoStatsNames[_stoI]).stats(function(_stoErr, _stoView) {
4521
+ _stoStatsOut.drivers.push(_stoErr
4522
+ ? { name: _stoStatsNames[_stoI], error: _stoErr.message || String(_stoErr) }
4523
+ : _stoView);
4524
+ _stoStatsNext(_stoI + 1);
4525
+ });
4526
+ };
4527
+ return _stoStatsNext(0);
4528
+ }
4529
+
4530
+ // POST /_gina/storage/gc?dryRun=1&driver=<name> — POST only: a gc
4531
+ // pass is a mutation (a prefetch/crawler must never fire it — the
4532
+ // /_gina/cache/clear rationale). `dryRun=1` lists what a real pass
4533
+ // would collect and touches NOTHING. A real pass LOOPS sweepNow()
4534
+ // until the driver reports `drained` (each pass is batch-capped),
4535
+ // bounded so a pathological store cannot pin the request forever.
4536
+ // A driver without a sweep (sharded) is named-and-skipped, never
4537
+ // an error — the design's "no sweep" is a strategy fact.
4538
+ if (
4539
+ request.method.toUpperCase() === 'POST'
4540
+ && /^\/_gina\/storage\/gc(\?.*)?$/i.test(request.url)
4541
+ ) {
4542
+ response.setHeader('content-type', 'application/json; charset=utf8');
4543
+ response.setHeader('cache-control', 'no-cache, no-store, must-revalidate');
4544
+ response.setHeader('pragma', 'no-cache');
4545
+ response.setHeader('expires', '0');
4546
+ if ( !lib.admin.isClientAllowed(request) ) {
4547
+ response.statusCode = 403;
4548
+ return response.end(JSON.stringify({ error: 'forbidden', message: '/_gina/storage/gc: client IP not in app.json admin.allowFrom' }));
4549
+ }
4550
+ var _stoGcNames = lib.storage.list();
4551
+ var _stoGcDriver = null;
4552
+ var _stoGcDry = false;
4553
+ var _stoGcQi = request.url.indexOf('?');
4554
+ if ( _stoGcQi > -1 ) {
4555
+ var _stoGcQs = new URLSearchParams(request.url.slice(_stoGcQi + 1));
4556
+ _stoGcDriver = _stoGcQs.get('driver') || null;
4557
+ _stoGcDry = ( _stoGcQs.get('dryRun') === '1' || _stoGcQs.get('dryRun') === 'true' );
4558
+ }
4559
+ if ( _stoGcDriver ) {
4560
+ if ( _stoGcNames.indexOf(_stoGcDriver) < 0 ) {
4561
+ response.statusCode = 404;
4562
+ return response.end(JSON.stringify({ error: 'not_found', message: '/_gina/storage/gc: no driver `' + _stoGcDriver + '` (configured: ' + (_stoGcNames.join(', ') || 'none') + ')' }));
4563
+ }
4564
+ _stoGcNames = [ _stoGcDriver ];
4565
+ }
4566
+ var _stoGcOut = { configured: lib.storage.isStarted(), dryRun: _stoGcDry, drivers: [] };
4567
+ var _stoGcNext = function(_stoI) {
4568
+ if ( _stoI >= _stoGcNames.length ) {
4569
+ return response.end(JSON.stringify(_stoGcOut));
4570
+ }
4571
+ var _stoGcName = _stoGcNames[_stoI];
4572
+ var _stoGcDrv = lib.storage.get(_stoGcName);
4573
+ if ( typeof _stoGcDrv.sweepNow !== 'function' ) {
4574
+ _stoGcOut.drivers.push({ name: _stoGcName, skipped: true, reason: 'this driver\'s strategy has no sweep (only `cas` collects garbage)' });
4575
+ return _stoGcNext(_stoI + 1);
4576
+ }
4577
+ if ( _stoGcDry ) {
4578
+ return _stoGcDrv.sweepNow({ dryRun: true }, function(_stoErr, _stoRes) {
4579
+ _stoGcOut.drivers.push(_stoErr
4580
+ ? { name: _stoGcName, error: _stoErr.message || String(_stoErr) }
4581
+ : { name: _stoGcName, collectable: _stoRes.collectable, drained: _stoRes.drained });
4582
+ _stoGcNext(_stoI + 1);
4583
+ });
4584
+ }
4585
+ // full drain: loop the batch-capped pass until `drained`,
4586
+ // hard-bounded at 1000 passes (100k blobs per request)
4587
+ var _stoGcTotal = 0;
4588
+ var _stoGcPasses = 0;
4589
+ var _stoGcLoop = function() {
4590
+ _stoGcDrv.sweepNow(function(_stoErr, _stoRes) {
4591
+ if (_stoErr) {
4592
+ _stoGcOut.drivers.push({ name: _stoGcName, error: _stoErr.message || String(_stoErr) });
4593
+ return _stoGcNext(_stoI + 1);
4594
+ }
4595
+ _stoGcTotal += _stoRes.collected;
4596
+ _stoGcPasses++;
4597
+ if ( !_stoRes.drained && _stoGcPasses < 1000 ) {
4598
+ return setImmediate(_stoGcLoop);
4599
+ }
4600
+ _stoGcOut.drivers.push({ name: _stoGcName, collected: _stoGcTotal, drained: _stoRes.drained, passes: _stoGcPasses });
4601
+ _stoGcNext(_stoI + 1);
4602
+ });
4603
+ };
4604
+ _stoGcLoop();
4605
+ };
4606
+ return _stoGcNext(0);
4607
+ }
4608
+
4609
+ // GET /_gina/storage/verify?driver=<name> — REPORT-ONLY over HTTP,
4610
+ // deliberately: `fix` is not even parsed here (the CLI refuses
4611
+ // --fix while the bundle runs, and this handler is what makes that
4612
+ // refusal structural rather than advisory). A driver without
4613
+ // verify (sharded, v1) is named-and-skipped, never an error.
4614
+ if (
4615
+ request.method.toUpperCase() === 'GET'
4616
+ && /^\/_gina\/storage\/verify(\?.*)?$/i.test(request.url)
4617
+ ) {
4618
+ response.setHeader('content-type', 'application/json; charset=utf8');
4619
+ response.setHeader('cache-control', 'no-cache, no-store, must-revalidate');
4620
+ response.setHeader('pragma', 'no-cache');
4621
+ response.setHeader('expires', '0');
4622
+ if ( !lib.admin.isClientAllowed(request) ) {
4623
+ response.statusCode = 403;
4624
+ return response.end(JSON.stringify({ error: 'forbidden', message: '/_gina/storage/verify: client IP not in app.json admin.allowFrom' }));
4625
+ }
4626
+ var _stoVerNames = lib.storage.list();
4627
+ var _stoVerDriver = null;
4628
+ var _stoVerQi = request.url.indexOf('?');
4629
+ if ( _stoVerQi > -1 ) {
4630
+ _stoVerDriver = new URLSearchParams(request.url.slice(_stoVerQi + 1)).get('driver') || null;
4631
+ }
4632
+ if ( _stoVerDriver ) {
4633
+ if ( _stoVerNames.indexOf(_stoVerDriver) < 0 ) {
4634
+ response.statusCode = 404;
4635
+ return response.end(JSON.stringify({ error: 'not_found', message: '/_gina/storage/verify: no driver `' + _stoVerDriver + '` (configured: ' + (_stoVerNames.join(', ') || 'none') + ')' }));
4636
+ }
4637
+ _stoVerNames = [ _stoVerDriver ];
4638
+ }
4639
+ var _stoVerOut = { configured: lib.storage.isStarted(), drivers: [] };
4640
+ var _stoVerNext = function(_stoI) {
4641
+ if ( _stoI >= _stoVerNames.length ) {
4642
+ return response.end(JSON.stringify(_stoVerOut));
4643
+ }
4644
+ var _stoVerName = _stoVerNames[_stoI];
4645
+ var _stoVerDrv = lib.storage.get(_stoVerName);
4646
+ if ( typeof _stoVerDrv.verify !== 'function' ) {
4647
+ _stoVerOut.drivers.push({ name: _stoVerName, skipped: true, reason: 'verify is cas-only in v1' });
4648
+ return _stoVerNext(_stoI + 1);
4649
+ }
4650
+ _stoVerDrv.verify(function(_stoErr, _stoRep) {
4651
+ _stoVerOut.drivers.push(_stoErr
4652
+ ? { name: _stoVerName, error: _stoErr.message || String(_stoErr) }
4653
+ : _stoRep);
4654
+ _stoVerNext(_stoI + 1);
4655
+ });
4656
+ };
4657
+ return _stoVerNext(0);
4658
+ }
4659
+
4474
4660
  // ── /_gina/release/* — stale built-release watch (#RWATCH) ──────────
4475
4661
  // Present ONLY when the service armed at boot (local scope + non-dev +
4476
4662
  // server.releaseWatch.enabled) — when inactive the URLs fall through to
@@ -5553,7 +5739,10 @@ function Server(options) {
5553
5739
  // drains slower.
5554
5740
  fileRecord = {
5555
5741
  name: fieldname,
5556
- group: group,
5742
+ // #B140 — the RESOLVED group (`untagged` when the part
5743
+ // carried no group tag), never the raw disposition
5744
+ // param: this record is what `self.store()` routes on
5745
+ group: fileGroup,
5557
5746
  originalFilename: filename,
5558
5747
  encoding: encoding,
5559
5748
  type: mimetype,
@@ -94,13 +94,12 @@
94
94
  },
95
95
  "upload": {
96
96
  "_comment": "for more details, check out https://github.com/gina-io/busboy",
97
- "encoding": "utf8",
98
97
  "tmpPath": "${tmpPath}",
99
- "maxFieldsSize": "2MB", // for all uploads by default - can be redefined under the group
100
- "maxFields": 1000, // number of assets when isMultipleAllowed - can be redifined under the group
98
+ "maxFieldsSize": "2MB", // WHOLE-REQUEST cap vs Content-Length (431 past it); B/KB/MB/GB, bare number = MB
99
+ "maxFields": 1000, // per-request FILE-COUNT cap (400 past it); 0 disables
101
100
  "maxTextFields": 1000, // #B92-adjacent — max multipart TEXT (non-file) fields per request; 0 = no limit
102
101
  "maxTextFieldSize": "1MB", // #B92-adjacent — per text-field size cap (B/KB/MB/GB, bare number = MB); 0 = no limit
103
- // timeout for tmp files removal - can be redifined under the group
102
+ // timeout for tmp files removal (block-level — applies to every group)
104
103
  // will be ignored by server if set to 0 or false
105
104
  // but you will have to setup a cron to remove files from tmp dir
106
105
  // eg.: "5s" for 5 seconds, "10m" for 10 minutes, "1h" for 1 hour
@@ -113,11 +112,11 @@
113
112
  "path": "${tmpPath}",
114
113
  "allowedExtensions": "*", // or [ "jpg", "jpeg", "png", "svg" ]
115
114
  "isMultipleAllowed": true // #B50 — untagged is the permissive default (now enforced); set false to require single-file
116
- // optional sample
115
+ // optional — route this group's `self.store()` step through a
116
+ // `settings.storage` driver (#STO1); `path` then only sets the
117
+ // parse-time staging dir
117
118
  // ,
118
- // "filePrefix": "$designId_",
119
- // "subFolder": "/$ownerId_$companyId",
120
- // "maxFieldsSize": "512K"
119
+ // "driver": "assets"
121
120
  }
122
121
  // ,
123
122
  // // #B144 — a TEST-ONLY write-error probe group. Every upload tagged
@@ -0,0 +1,6 @@
1
+ [
2
+ "--driver",
3
+ "--dry-run",
4
+ "--fix",
5
+ "--format"
6
+ ]
@@ -0,0 +1,418 @@
1
+ var fs = require('fs');
2
+ var http = require('http');
3
+ var https = require('https');
4
+ var nodePath = require('path');
5
+
6
+ var CmdHelper = require('./../helper');
7
+ var storageLib = require('../../index').storage;
8
+ var console = lib.logger;
9
+
10
+ /**
11
+ * @module gina/lib/cmd/storage/gc
12
+ */
13
+ /**
14
+ * Runs the cas GC sweep NOW for a bundle's storage drivers: blobs whose
15
+ * reference count has sat at zero for longer than `sweepGrace` are collected
16
+ * (row claimed first, file unlinked second — the loss-proof order the driver
17
+ * owns). `sharded` drivers have no sweep and are named-and-skipped, never an
18
+ * error. `--dry-run` lists what a pass would collect and touches NOTHING.
19
+ *
20
+ * Who does the work depends on who OWNS the store (#STO1):
21
+ * - bundle RUNNING — `POST /_gina/storage/gc` and the OWNING process
22
+ * sweeps (the endpoint drains: it loops the batch-capped pass until the
23
+ * driver reports `drained`);
24
+ * - bundle DOWN (every assigned port ECONNREFUSED) — the REAL driver is
25
+ * built offline (`sweepInterval: 0`) and `sweepNow()` is looped here
26
+ * until `drained`;
27
+ * - anything else (timeout, socket error) — reported as unknown, the
28
+ * store is NOT opened.
29
+ *
30
+ * Usage:
31
+ * gina storage:gc <bundle> @<project>
32
+ * gina storage:gc @<project> — every bundle in the project
33
+ * gina storage:gc <bundle> @<project> --dry-run
34
+ * gina storage:gc <bundle> @<project> --driver=<name> --format=json
35
+ *
36
+ * @class Gc
37
+ * @constructor
38
+ * @param {object} opt - Parsed command-line options
39
+ * @param {object} opt.client - Socket client for terminal output
40
+ * @param {string[]} opt.argv - Full argv array
41
+ * @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
42
+ *
43
+ * @example
44
+ * // collect everything past the grace window, now
45
+ * $ gina storage:gc api @myproject
46
+ *
47
+ * @example
48
+ * // preview — nothing is claimed, nothing is unlinked
49
+ * $ gina storage:gc api @myproject --dry-run
50
+ */
51
+ function Gc(opt, cmd) {
52
+ var self = { format: null, driver: null, dryRun: false, results: [] };
53
+
54
+ var init = function(opt, cmd) {
55
+ // import CMD helpers
56
+ new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
57
+ // check CMD configuration
58
+ if (!isCmdConfigured()) return false;
59
+
60
+ // Full pre-scan of argv for --format, --driver and --dry-run —
61
+ // whitelisted in `storage/arguments.json` (mirrors cache:clear).
62
+ for (let i = 3, len = process.argv.length; i < len; i++) {
63
+ if ( /^\-\-format\=/.test(process.argv[i]) ) {
64
+ self.format = process.argv[i].split(/\=/)[1];
65
+ } else if ( /^\-\-driver\=/.test(process.argv[i]) ) {
66
+ self.driver = process.argv[i].split(/\=/)[1];
67
+ } else if ( /^\-\-dry-run$/.test(process.argv[i]) ) {
68
+ self.dryRun = true;
69
+ }
70
+ }
71
+
72
+ if (!self.name) {
73
+ // No bundle specified — sweep every bundle in the project.
74
+ runAll(opt, cmd, 0);
75
+ } else {
76
+ runOne(self.name, opt, cmd, false);
77
+ }
78
+ }
79
+
80
+ /**
81
+ * Runs every bundle in the project sequentially, then reports.
82
+ * @inner
83
+ */
84
+ var runAll = function(opt, cmd, index) {
85
+ if (index >= self.bundles.length) {
86
+ report(opt, cmd);
87
+ return;
88
+ }
89
+ runOne(self.bundles[index], opt, cmd, true, function() {
90
+ runAll(opt, cmd, index + 1);
91
+ });
92
+ }
93
+
94
+ /**
95
+ * Resolves one bundle (running → endpoint, down → offline), records the
96
+ * result, then advances / reports.
97
+ * @inner
98
+ */
99
+ var runOne = function(bundle, opt, cmd, isBulk, next) {
100
+ var advance = function(result) {
101
+ self.results.push(result);
102
+ if (isBulk && next) return next();
103
+ report(opt, cmd);
104
+ };
105
+ probeAndSweep(bundle, function(outcome) {
106
+ if ( outcome.mode === 'down' ) {
107
+ return gcOffline(bundle, advance);
108
+ }
109
+ advance(outcome);
110
+ });
111
+ }
112
+
113
+ /**
114
+ * Sends `POST /_gina/storage/gc` (the request IS the probe — a POST is
115
+ * safe as a probe here because executing the sweep is exactly what the
116
+ * caller asked for): a response classifies the bundle RUNNING and carries
117
+ * the result; ECONNREFUSED advances; every candidate refused classifies
118
+ * it DOWN. The response timeout is 120s, not the 5s probe class: the
119
+ * server drains the whole backlog before answering, and a big store
120
+ * legitimately takes a while (the work is chunked server-side, the
121
+ * response is not).
122
+ *
123
+ * @inner
124
+ * @param {string} bundle
125
+ * @param {function(object)} done - Result object, or `{mode:'down'}`.
126
+ */
127
+ var probeAndSweep = function(bundle, done) {
128
+ var env = self.projects[self.projectName].def_env;
129
+ var portsRev = self.portsReverseData[bundle + '@' + self.projectName];
130
+
131
+ if (!portsRev || !portsRev[env]) {
132
+ return done({ bundle: bundle, mode: 'error', error: 'no port assignment found — is the bundle registered?' });
133
+ }
134
+
135
+ var candidates = [];
136
+ for (var protocol in portsRev[env]) {
137
+ for (var s in portsRev[env][protocol]) {
138
+ candidates.push({ port: portsRev[env][protocol][s], scheme: s });
139
+ }
140
+ }
141
+ if (!candidates.length) {
142
+ return done({ bundle: bundle, mode: 'error', error: 'could not determine port' });
143
+ }
144
+
145
+ var query = [];
146
+ if (self.dryRun) { query.push('dryRun=1'); }
147
+ if (self.driver) { query.push('driver=' + encodeURIComponent(self.driver)); }
148
+ var endpointPath = '/_gina/storage/gc' + ( query.length ? '?' + query.join('&') : '' );
149
+
150
+ var tryNext = function(index) {
151
+ if (index >= candidates.length) {
152
+ return done({ mode: 'down' }); // refused on every assigned port — the offline path owns it
153
+ }
154
+
155
+ var candidate = candidates[index];
156
+ var transport = (candidate.scheme === 'https') ? https : http;
157
+ var reqOptions = {
158
+ hostname : '127.0.0.1',
159
+ port : candidate.port,
160
+ path : endpointPath,
161
+ method : 'POST',
162
+ timeout : 120000,
163
+ rejectUnauthorized : false // allow self-signed certs on internal endpoints
164
+ };
165
+
166
+ var req = transport.request(reqOptions, function(res) {
167
+ var raw = '';
168
+ res.on('data', function(chunk) { raw += chunk; });
169
+ res.on('end', function() {
170
+ var parsed = null;
171
+ try {
172
+ parsed = JSON.parse(raw);
173
+ } catch (e) {
174
+ return done({ bundle: bundle, mode: 'error', error: 'invalid response from /_gina/storage/gc' });
175
+ }
176
+ if ( parsed && parsed.error ) {
177
+ return done({ bundle: bundle, mode: 'running', error: ( parsed.error === 'forbidden' )
178
+ ? 'reachable but admin-gated (app.json admin.allowFrom?)'
179
+ : (parsed.message || parsed.error) });
180
+ }
181
+ done({ bundle: bundle, mode: 'running', configured: !!parsed.configured, dryRun: !!parsed.dryRun, drivers: parsed.drivers || [] });
182
+ });
183
+ });
184
+
185
+ req.on('timeout', function() {
186
+ req.destroy();
187
+ done({ bundle: bundle, mode: 'error', error: 'request timed out — bundle state unknown; not opening its store offline (a live process may own it)' });
188
+ });
189
+
190
+ req.on('error', function(err) {
191
+ if (err.code === 'ECONNREFUSED') {
192
+ return tryNext(index + 1); // this port is not listening — try the next
193
+ }
194
+ done({ bundle: bundle, mode: 'error', error: err.message + ' — bundle state unknown; not opening its store offline' });
195
+ });
196
+
197
+ req.end();
198
+ };
199
+
200
+ tryNext(0);
201
+ }
202
+
203
+ /**
204
+ * The DOWN path: resolve the bundle's `storage` block offline, build each
205
+ * local cas driver through the boot's own resolver/factories, and loop
206
+ * `sweepNow()` until `drained` (each pass is batch-capped by the driver;
207
+ * the loop is hard-bounded so a pathological store cannot spin forever).
208
+ * `--dry-run` runs a single listing pass and touches nothing.
209
+ *
210
+ * @inner
211
+ * @param {string} bundle
212
+ * @param {function(object)} done
213
+ */
214
+ var gcOffline = function(bundle, done) {
215
+ var byProject = self.bundlesByProject[self.projectName] || {};
216
+ var bundleMeta = byProject[bundle];
217
+ var settingsPath = ( bundleMeta && bundleMeta.configPaths ) ? bundleMeta.configPaths.settings : null;
218
+ if ( !settingsPath || !fs.existsSync(settingsPath) ) {
219
+ return done({ bundle: bundle, mode: 'offline', error: 'no config/settings.json found for this bundle' });
220
+ }
221
+ var settings = null;
222
+ try {
223
+ settings = requireJSON(settingsPath);
224
+ } catch (e) {
225
+ return done({ bundle: bundle, mode: 'offline', error: 'could not parse settings.json: ' + (e.message || e) });
226
+ }
227
+ var block = settings ? settings.storage : null;
228
+ if ( !block || !block.drivers || !Object.keys(block.drivers).length ) {
229
+ return done({ bundle: bundle, mode: 'offline', configured: false, drivers: [] });
230
+ }
231
+ var lint = storageLib.validateConfig(block);
232
+ if ( lint.fatal ) {
233
+ return done({ bundle: bundle, mode: 'offline', error: 'invalid storage config: ' + lint.fatal });
234
+ }
235
+
236
+ var names = Object.keys(block.drivers);
237
+ if ( self.driver ) {
238
+ if ( names.indexOf(self.driver) < 0 ) {
239
+ return done({ bundle: bundle, mode: 'offline', error: 'no driver `' + self.driver + '` (configured: ' + names.join(', ') + ')' });
240
+ }
241
+ names = [ self.driver ];
242
+ }
243
+
244
+ var out = { bundle: bundle, mode: 'offline', configured: true, dryRun: self.dryRun, drivers: [] };
245
+ var nextDriver = function(i) {
246
+ if ( i >= names.length ) { return done(out); }
247
+ var name = names[i];
248
+ var d = block.drivers[name];
249
+ if ( d.store ) {
250
+ out.drivers.push({ name: name, skipped: true, reason: 'connector-backed store (`' + d.store + '`) — nothing local to open; start the bundle and re-run' });
251
+ return nextDriver(i + 1);
252
+ }
253
+ if ( d.strategy !== 'cas' ) {
254
+ out.drivers.push({ name: name, skipped: true, reason: 'this driver\'s strategy has no sweep (only `cas` collects garbage)' });
255
+ return nextDriver(i + 1);
256
+ }
257
+ if ( !fs.existsSync(d.root) ) {
258
+ out.drivers.push({ name: name, collected: 0, drained: true, note: 'root not created yet (nothing stored)' });
259
+ return nextDriver(i + 1);
260
+ }
261
+ var driver = null;
262
+ try {
263
+ var resolved = storageLib._resolveDriverConf(d);
264
+ resolved.sweepInterval = 0; // no GC timer in a CLI process
265
+ var metaStore = storageLib._createEmbeddedMetaStore(nodePath.join(d.root, '.meta.db'));
266
+ driver = storageLib._FACTORIES[d.strategy](name, resolved, metaStore);
267
+ } catch (buildErr) {
268
+ out.drivers.push({ name: name, error: buildErr.message || String(buildErr) });
269
+ return nextDriver(i + 1);
270
+ }
271
+ var finish = function(entry) {
272
+ try { driver.close(); } catch (e) { /* already closed */ }
273
+ out.drivers.push(entry);
274
+ nextDriver(i + 1);
275
+ };
276
+ if ( self.dryRun ) {
277
+ return driver.sweepNow({ dryRun: true }, function(err, res) {
278
+ finish(err
279
+ ? { name: name, error: err.message || String(err) }
280
+ : { name: name, collectable: res.collectable, drained: res.drained });
281
+ });
282
+ }
283
+ // full drain: loop the batch-capped pass until `drained`,
284
+ // hard-bounded at 1000 passes (the endpoint's bound, mirrored)
285
+ var total = 0;
286
+ var passes = 0;
287
+ var loop = function() {
288
+ driver.sweepNow(function(err, res) {
289
+ if (err) {
290
+ return finish({ name: name, error: err.message || String(err) });
291
+ }
292
+ total += res.collected;
293
+ passes++;
294
+ if ( !res.drained && passes < 1000 ) {
295
+ return setImmediate(loop);
296
+ }
297
+ finish({ name: name, collected: total, drained: res.drained, passes: passes });
298
+ });
299
+ };
300
+ loop();
301
+ };
302
+ nextDriver(0);
303
+ }
304
+
305
+ /**
306
+ * Builds the `--format=json` envelope. Pure. Single-bundle → flattened;
307
+ * all-bundles → a `bundles` array.
308
+ *
309
+ * @inner
310
+ * @param {string} project
311
+ * @param {Array<object>} results
312
+ * @param {string|null} singleBundle
313
+ * @param {string|null} driver
314
+ * @returns {object}
315
+ */
316
+ var buildEnvelope = function(project, results, singleBundle, driver) {
317
+ var base = { project: project, dryRun: self.dryRun };
318
+ if (driver) {
319
+ base.driver = driver;
320
+ }
321
+ if (singleBundle && results.length === 1) {
322
+ var r = results[0];
323
+ for (var k in r) { base[k] = r[k]; }
324
+ return base;
325
+ }
326
+ base.bundles = results;
327
+ return base;
328
+ }
329
+
330
+ /**
331
+ * Formats the per-bundle results as a human-readable summary. Pure.
332
+ *
333
+ * @inner
334
+ * @param {Array<object>} results
335
+ * @param {string} project
336
+ * @returns {string}
337
+ */
338
+ var formatText = function(results, project) {
339
+ var SEP = '------------------------------------------------------------\n\r';
340
+ var str = '\n\r' + SEP;
341
+ str += (self.dryRun ? '[ dry-run ] ' : '') + 'storage:gc @' + project + ( self.driver ? ' --driver=' + self.driver : '' ) + '\n\r';
342
+ str += SEP;
343
+
344
+ if (!results.length) {
345
+ str += ' (no bundles)\n\r\n\r';
346
+ return str;
347
+ }
348
+
349
+ for (var i = 0; i < results.length; i++) {
350
+ var r = results[i];
351
+ str += '\n\r [ ' + r.bundle + '@' + project + ' ]' + ( r.mode ? ' (' + r.mode + ')' : '' ) + '\n\r';
352
+ if (r.error) {
353
+ str += ' ' + r.error + '\n\r';
354
+ continue;
355
+ }
356
+ if ( r.configured === false ) {
357
+ str += ' storage not configured (no `storage` block)\n\r';
358
+ continue;
359
+ }
360
+ for (var j = 0; j < r.drivers.length; j++) {
361
+ var d = r.drivers[j];
362
+ if (d.error) {
363
+ str += ' driver `' + d.name + '`: ' + d.error + '\n\r';
364
+ continue;
365
+ }
366
+ if (d.skipped) {
367
+ str += ' driver `' + d.name + '`: skipped — ' + d.reason + '\n\r';
368
+ continue;
369
+ }
370
+ if ( typeof d.collectable !== 'undefined' ) {
371
+ // dry-run entry
372
+ str += ' driver `' + d.name + '`: would collect ' + d.collectable.length
373
+ + ' blob(s)' + ( d.drained ? '' : ' (more beyond this batch)' ) + '\n\r';
374
+ for (var c = 0; c < d.collectable.length; c++) {
375
+ str += ' ' + d.collectable[c] + '\n\r';
376
+ }
377
+ continue;
378
+ }
379
+ str += ' driver `' + d.name + '`: collected ' + d.collected + ' blob(s)'
380
+ + ( d.drained ? ' — drained' : ' — NOT drained (pass bound hit)' )
381
+ + ( typeof d.passes === 'number' ? ' (passes: ' + d.passes + ')' : '' )
382
+ + ( d.note ? ' — ' + d.note : '' ) + '\n\r';
383
+ }
384
+ }
385
+
386
+ str += '\n\r';
387
+ return str;
388
+ }
389
+
390
+ /**
391
+ * Emits the result — JSON synchronously via fs.writeSync (pipe-safe
392
+ * against the `process.exit` in `end()` — llms.txt #180), else text via
393
+ * `opt.client` — then terminates. Exit code 1 when any per-bundle result
394
+ * carries an error.
395
+ * @inner
396
+ */
397
+ var report = function(opt, cmd) {
398
+ var single = (self.results.length === 1 && !!self.name) ? self.name : null;
399
+ var hasError = self.results.some(function(r) { return !!r.error; });
400
+
401
+ if ( /^json/i.test(String(self.format || '')) ) {
402
+ var envelope = buildEnvelope(self.projectName, self.results, single, self.driver);
403
+ fs.writeSync(1, JSON.stringify(envelope) + '\n');
404
+ return end(opt, cmd, hasError);
405
+ }
406
+
407
+ opt.client.write(formatText(self.results, self.projectName));
408
+ end(opt, cmd, hasError);
409
+ }
410
+
411
+ var end = function(opt, cmd, error) {
412
+ if (!opt.client.destroyed) opt.client.emit('end');
413
+ process.exit(error ? 1 : 0);
414
+ }
415
+
416
+ init(opt, cmd);
417
+ }
418
+ module.exports = Gc;