gina 0.3.13-alpha.2 → 0.3.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (420) hide show
  1. package/.playwright-mcp/console-2026-05-14T02-27-11-347Z.log +64 -0
  2. package/.playwright-mcp/d9-after-connector.png +0 -0
  3. package/.playwright-mcp/d9-after-service.png +0 -0
  4. package/.playwright-mcp/d9-before-connector-full.png +0 -0
  5. package/.playwright-mcp/d9-before-connector-leak.png +0 -0
  6. package/.playwright-mcp/d9-before-connector-top.png +0 -0
  7. package/.playwright-mcp/d9-before-connector-v2.png +0 -0
  8. package/.playwright-mcp/d9-before-connector.png +0 -0
  9. package/.playwright-mcp/page-2026-05-14T02-24-51-996Z.yml +1818 -0
  10. package/.playwright-mcp/page-2026-05-14T02-26-47-905Z.yml +2063 -0
  11. package/.playwright-mcp/page-2026-05-14T02-27-11-472Z.yml +406 -0
  12. package/.playwright-mcp/page-2026-05-14T02-28-37-939Z.yml +2061 -0
  13. package/.playwright-mcp/page-2026-05-14T02-29-01-333Z.yml +404 -0
  14. package/CHANGELOG.md +29 -0
  15. package/README.md +11 -1
  16. package/ROADMAP.md +16 -6
  17. package/framework/v0.3.13/VERSION +1 -0
  18. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.js +21 -6
  19. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +47 -46
  20. package/framework/v0.3.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  21. package/framework/v0.3.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  22. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/config.js +13 -0
  23. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/csrf/src/main.js +32 -9
  24. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/validator/src/form-validator.js +11 -1
  25. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/validator/src/main.js +4 -2
  26. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/server.isaac.js +56 -11
  27. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/settings.server.json +3 -1
  28. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/index.js +14 -4
  29. package/framework/v0.3.13/core/template/boilerplate/bundle_public/manifest.webmanifest +17 -0
  30. package/framework/v0.3.13/core/template/boilerplate/bundle_public/readme.md +20 -0
  31. package/framework/v0.3.13/core/template/boilerplate/bundle_public/sw.js +122 -0
  32. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/layouts/main.html +14 -0
  33. package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/settings.json +11 -4
  34. package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/src/main.js +38 -22
  35. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/mcp-start.js +18 -2
  36. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/index.js +5 -0
  37. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/file/index.js +1 -4
  38. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/mq/index.js +1 -4
  39. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/main.js +1 -4
  40. package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/merge/src/main.js +2 -1
  41. package/framework/v0.3.13/lib/secrets/package.json +17 -0
  42. package/framework/v0.3.13/lib/secrets/src/backends/env.js +60 -0
  43. package/framework/v0.3.13/lib/secrets/src/main.js +200 -0
  44. package/framework/{v0.3.13-alpha.2 → v0.3.13}/package.json +2 -2
  45. package/gna.js +4 -4
  46. package/llms.txt +17 -1
  47. package/package.json +3 -3
  48. package/framework/v0.3.13-alpha.2/VERSION +0 -1
  49. package/framework/v0.3.13-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  50. package/framework/v0.3.13-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  51. package/framework/v0.3.13-alpha.2/core/plugins/lib/file/package.json +0 -25
  52. package/framework/v0.3.13-alpha.2/core/plugins/lib/intl/package.json +0 -25
  53. package/framework/v0.3.13-alpha.2/core/plugins/lib/intl/src/main.js +0 -35
  54. package/framework/v0.3.13-alpha.2/core/template/boilerplate/bundle_public/readme.md +0 -1
  55. package/framework/v0.3.13-alpha.2/lib/collection/build.json +0 -0
  56. package/framework/v0.3.13-alpha.2/lib/routing/build.json +0 -0
  57. package/framework/v0.3.13-alpha.2/lib/swig-filters/README.md +0 -0
  58. package/framework/v0.3.13-alpha.2/lib/url/README.md +0 -0
  59. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/AUTHORS +0 -0
  60. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/LICENSE +0 -0
  61. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/html/nolayout.html +0 -0
  62. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/html/static.html +0 -0
  63. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/android-chrome-192x192.png +0 -0
  64. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/android-chrome-512x512.png +0 -0
  65. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/apple-touch-icon.png +0 -0
  66. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/favicon-16x16.png +0 -0
  67. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/favicon-32x32.png +0 -0
  68. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/img/favicon.ico +0 -0
  69. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/README.md +0 -0
  70. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  71. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  72. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  73. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  74. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  75. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  76. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  77. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  78. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  79. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  80. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  81. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  82. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  83. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  84. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  85. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  86. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  87. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/ai/index.js +0 -0
  88. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/ai/lib/connector.js +0 -0
  89. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/index.js +0 -0
  90. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.js +0 -0
  91. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  92. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  93. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  94. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/n1ql.js +0 -0
  95. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.js +0 -0
  96. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  97. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  98. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  99. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/index.js +0 -0
  100. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/lib/connector.js +0 -0
  101. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  102. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mongodb/lib/session-store.js +0 -0
  103. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mysql/index.js +0 -0
  104. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/mysql/lib/connector.js +0 -0
  105. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/postgresql/index.js +0 -0
  106. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/postgresql/lib/connector.js +0 -0
  107. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/redis/index.js +0 -0
  108. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/redis/lib/session-store.js +0 -0
  109. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/scylladb/index.js +0 -0
  110. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/scylladb/lib/connector.js +0 -0
  111. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/scylladb/lib/session-store.js +0 -0
  112. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sql-parser.js +0 -0
  113. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sqlite/index.js +0 -0
  114. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sqlite/lib/connector.js +0 -0
  115. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/connectors/sqlite/lib/session-store.js +0 -0
  116. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/content.encoding +0 -0
  117. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.framework.js +0 -0
  118. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.js +0 -0
  119. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-json.js +0 -0
  120. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-nunjucks.js +0 -0
  121. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-stream.js +0 -0
  122. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-swig.js +0 -0
  123. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/controller.render-v1.js +0 -0
  124. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/controller/index.js +0 -0
  125. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/LICENSE +0 -0
  126. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/README.md +0 -0
  127. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  128. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  129. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  130. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  131. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/busboy-1.6.0/package.json +0 -0
  132. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  133. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  134. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/deps/streamsearch-1.1.0/package.json +0 -0
  135. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/index.js +0 -0
  136. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/lib/class.js +0 -0
  137. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/lib/factory.js +0 -0
  138. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/dev/lib/tools.js +0 -0
  139. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/gna.js +0 -0
  140. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/README.md +0 -0
  141. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/currency.json +0 -0
  142. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/language/en.json +0 -0
  143. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/language/fr.json +0 -0
  144. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/region/en.json +0 -0
  145. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/dist/region/fr.json +0 -0
  146. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/locales/index.js +0 -0
  147. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/mime.types +0 -0
  148. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/entity.js +0 -0
  149. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/index.js +0 -0
  150. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/template/entityFactory.js +0 -0
  151. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/model/template/index.js +0 -0
  152. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/README.md +0 -0
  153. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/index.js +0 -0
  154. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/csrf/README.md +0 -0
  155. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/csrf/package.json +0 -0
  156. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/session/README.md +0 -0
  157. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/session/package.json +0 -0
  158. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/session/src/main.js +0 -0
  159. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/file → v0.3.13/core/plugins/lib/storage}/README.md +0 -0
  160. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/file → v0.3.13/core/plugins/lib/storage}/build.json +0 -0
  161. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/storage/package.json +0 -0
  162. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/storage/src/main.js +0 -0
  163. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/intl → v0.3.13/core/plugins/lib/validator}/README.md +0 -0
  164. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/intl → v0.3.13/core/plugins/lib/validator}/build.json +0 -0
  165. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/plugins/lib/validator/package.json +0 -0
  166. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/router.js +0 -0
  167. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/server.express.js +0 -0
  168. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/server.js +0 -0
  169. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/status.codes +0 -0
  170. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/_gitignore +0 -0
  171. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/app.json +0 -0
  172. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  173. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/routing.json +0 -0
  174. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/settings.json +0 -0
  175. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/templates.json +0 -0
  176. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  177. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  178. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  179. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  180. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle/locales/en.json +0 -0
  181. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  182. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  183. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  184. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  185. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  186. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  187. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  188. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  189. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  190. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  191. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/command/gina.bat.tpl +0 -0
  192. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/command/gina.tpl +0 -0
  193. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/env.json +0 -0
  194. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/manifest.json +0 -0
  195. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/package.json +0 -0
  196. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/statics.json +0 -0
  197. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/conf/templates.json +0 -0
  198. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/client/json/401.json +0 -0
  199. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/client/json/403.json +0 -0
  200. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/client/json/404.json +0 -0
  201. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/server/html/50x.html +0 -0
  202. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/server/json/500.json +0 -0
  203. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/error/server/json/503.json +0 -0
  204. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/core/template/extensions/logger/config.json +0 -0
  205. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/console.js +0 -0
  206. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/context.js +0 -0
  207. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/LICENSE +0 -0
  208. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/README.md +0 -0
  209. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/package.json +0 -0
  210. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/data/src/main.js +0 -0
  211. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/dateFormat.js +0 -0
  212. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/index.js +0 -0
  213. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/LICENSE +0 -0
  214. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/README.md +0 -0
  215. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/json/package.json +0 -0
  216. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/path.js +0 -0
  217. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/README.md +0 -0
  218. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/package.json +0 -0
  219. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/src/api-error.js +0 -0
  220. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/plugins/src/main.js +0 -0
  221. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/prototypes.js +0 -0
  222. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/task.js +0 -0
  223. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/helpers/text.js +0 -0
  224. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/storage → v0.3.13/lib/archiver}/README.md +0 -0
  225. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/storage → v0.3.13/lib/archiver}/build.json +0 -0
  226. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/archiver/package.json +0 -0
  227. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/archiver/src/dep/jszip.min.js +0 -0
  228. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/archiver/src/main.js +0 -0
  229. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/async/package.json +0 -0
  230. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/async/src/main.js +0 -0
  231. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cache/README.md +0 -0
  232. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/validator → v0.3.13/lib/cache}/build.json +0 -0
  233. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cache/package.json +0 -0
  234. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cache/src/main.js +0 -0
  235. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/aliases.json +0 -0
  236. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/add.js +0 -0
  237. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/arguments.json +0 -0
  238. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/build.js +0 -0
  239. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/copy.js +0 -0
  240. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/cp.js +0 -0
  241. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/help.js +0 -0
  242. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/help.txt +0 -0
  243. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/list.js +0 -0
  244. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/mcp.js +0 -0
  245. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/oas.js +0 -0
  246. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/openapi.js +0 -0
  247. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/remove.js +0 -0
  248. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/rename.js +0 -0
  249. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/restart.js +0 -0
  250. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/rm.js +0 -0
  251. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/start.js +0 -0
  252. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/status.js +0 -0
  253. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/bundle/stop.js +0 -0
  254. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/cache/stats.js +0 -0
  255. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/add.js +0 -0
  256. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/arguments.json +0 -0
  257. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/help.js +0 -0
  258. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/help.txt +0 -0
  259. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/list.js +0 -0
  260. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/migrate.js +0 -0
  261. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/remove.js +0 -0
  262. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/connector/rm.js +0 -0
  263. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/add.js +0 -0
  264. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/get.js +0 -0
  265. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/help.js +0 -0
  266. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/help.txt +0 -0
  267. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/link-dev.js +0 -0
  268. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/list.js +0 -0
  269. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/remove.js +0 -0
  270. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/rm.js +0 -0
  271. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/set.js +0 -0
  272. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/unset.js +0 -0
  273. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/env/use.js +0 -0
  274. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/arguments.json +0 -0
  275. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/build.js +0 -0
  276. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/dot.js +0 -0
  277. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/get.js +0 -0
  278. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/help.js +0 -0
  279. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/help.txt +0 -0
  280. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/init.js +0 -0
  281. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/link-node-modules.js +0 -0
  282. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/link.js +0 -0
  283. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/msg.json +0 -0
  284. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/open.js +0 -0
  285. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/restart.js +0 -0
  286. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/set.js +0 -0
  287. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/start.js +0 -0
  288. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/status.js +0 -0
  289. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/stop.js +0 -0
  290. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/tail.js +0 -0
  291. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/update.js +0 -0
  292. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/framework/version.js +0 -0
  293. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/gina-dev.1.md +0 -0
  294. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/gina-framework.1.md +0 -0
  295. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/gina.1.md +0 -0
  296. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/helper.js +0 -0
  297. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/add.js +0 -0
  298. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/arguments.json +0 -0
  299. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/export.js +0 -0
  300. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/help.js +0 -0
  301. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/help.txt +0 -0
  302. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/import.js +0 -0
  303. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/i18n/scan.js +0 -0
  304. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/index.js +0 -0
  305. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/inspector/help.js +0 -0
  306. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/inspector/help.txt +0 -0
  307. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/inspector/open.js +0 -0
  308. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/minion/help.js +0 -0
  309. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/minion/help.txt +0 -0
  310. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/msg.json +0 -0
  311. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/help.js +0 -0
  312. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/help.txt +0 -0
  313. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/inc/scan.js +0 -0
  314. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/list.js +0 -0
  315. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/reset.js +0 -0
  316. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/port/set.js +0 -0
  317. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/add.js +0 -0
  318. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/arguments.json +0 -0
  319. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/build.js +0 -0
  320. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/help.js +0 -0
  321. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/help.txt +0 -0
  322. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/import.js +0 -0
  323. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/list.js +0 -0
  324. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/move.js +0 -0
  325. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/remove.js +0 -0
  326. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/rename.js +0 -0
  327. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/restart.js +0 -0
  328. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/rm.js +0 -0
  329. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/start.js +0 -0
  330. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/status.js +0 -0
  331. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/project/stop.js +0 -0
  332. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/help.js +0 -0
  333. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/help.txt +0 -0
  334. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/list.js +0 -0
  335. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/protocol/set.js +0 -0
  336. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/add.js +0 -0
  337. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/help.js +0 -0
  338. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/help.txt +0 -0
  339. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/link-local.js +0 -0
  340. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/link-production.js +0 -0
  341. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/list.js +0 -0
  342. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/remove.js +0 -0
  343. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/rm.js +0 -0
  344. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/scope/use.js +0 -0
  345. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/service/help.js +0 -0
  346. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/service/help.txt +0 -0
  347. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/service/list.js +0 -0
  348. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cmd/view/add.js +0 -0
  349. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/collection/README.md +0 -0
  350. /package/framework/{v0.3.13-alpha.2/lib/archiver → v0.3.13/lib/collection}/build.json +0 -0
  351. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/collection/package.json +0 -0
  352. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/collection/src/main.js +0 -0
  353. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/config.js +0 -0
  354. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/connector-registry/package.json +0 -0
  355. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/connector-registry/src/main.js +0 -0
  356. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cron/README.md +0 -0
  357. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cron/package.json +0 -0
  358. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/cron/src/main.js +0 -0
  359. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/LICENSE +0 -0
  360. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/README.md +0 -0
  361. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/package.json +0 -0
  362. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/domain/src/main.js +0 -0
  363. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/generator/index.js +0 -0
  364. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/i18n/package.json +0 -0
  365. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/i18n/src/main.js +0 -0
  366. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/LICENSE +0 -0
  367. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/README.md +0 -0
  368. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/package.json +0 -0
  369. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inherits/src/main.js +0 -0
  370. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inspector-redact/package.json +0 -0
  371. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/inspector-redact/src/main.js +0 -0
  372. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/README.md +0 -0
  373. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/package.json +0 -0
  374. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/default/index.js +0 -0
  375. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  376. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  377. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/mq/listener.js +0 -0
  378. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/containers/mq/speaker.js +0 -0
  379. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/logger/src/helper.js +0 -0
  380. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/math/index.js +0 -0
  381. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-dispatch/package.json +0 -0
  382. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-dispatch/src/main.js +0 -0
  383. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-http/package.json +0 -0
  384. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-http/src/main.js +0 -0
  385. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-server/package.json +0 -0
  386. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/mcp-server/src/main.js +0 -0
  387. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/merge/README.md +0 -0
  388. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/merge/package.json +0 -0
  389. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/metrics/package.json +0 -0
  390. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/metrics/src/main.js +0 -0
  391. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/model.js +0 -0
  392. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-filters/README.md +0 -0
  393. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-filters/package.json +0 -0
  394. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-filters/src/main.js +0 -0
  395. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-resolver/package.json +0 -0
  396. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/nunjucks-resolver/src/main.js +0 -0
  397. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/proc.js +0 -0
  398. /package/framework/{v0.3.13-alpha.2/core/plugins/lib/validator → v0.3.13/lib/routing}/README.md +0 -0
  399. /package/framework/{v0.3.13-alpha.2/lib/cache → v0.3.13/lib/routing}/build.json +0 -0
  400. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing/package.json +0 -0
  401. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing/src/main.js +0 -0
  402. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing/src/radix.js +0 -0
  403. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing-introspect/package.json +0 -0
  404. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/routing-introspect/src/main.js +0 -0
  405. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/session-store.js +0 -0
  406. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/shell.js +0 -0
  407. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/state.js +0 -0
  408. /package/framework/{v0.3.13-alpha.2/lib/archiver → v0.3.13/lib/swig-filters}/README.md +0 -0
  409. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-filters/package.json +0 -0
  410. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-filters/src/main.js +0 -0
  411. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-resolver/package.json +0 -0
  412. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/swig-resolver/src/main.js +0 -0
  413. /package/framework/{v0.3.13-alpha.2/lib/routing → v0.3.13/lib/url}/README.md +0 -0
  414. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/url/index.js +0 -0
  415. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/url/routing.json +0 -0
  416. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/uuid/package.json +0 -0
  417. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/uuid/src/main.js +0 -0
  418. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/validator.js +0 -0
  419. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/watcher/package.json +0 -0
  420. /package/framework/{v0.3.13-alpha.2 → v0.3.13}/lib/watcher/src/main.js +0 -0
@@ -0,0 +1,2061 @@
1
+ - generic [ref=e2]:
2
+ - region "Skip to main content":
3
+ - link "Skip to main content" [ref=e3] [cursor=pointer]:
4
+ - /url: "#__docusaurus_skipToContent_fallback"
5
+ - navigation "Main" [ref=e4]:
6
+ - generic [ref=e5]:
7
+ - generic [ref=e6]:
8
+ - link "Gina logo Gina" [ref=e7] [cursor=pointer]:
9
+ - /url: /docs/
10
+ - img "Gina logo" [ref=e9]
11
+ - generic [ref=e10]: Gina
12
+ - link "Docs" [ref=e11] [cursor=pointer]:
13
+ - /url: /docs/intro
14
+ - link "Tutorials" [ref=e12] [cursor=pointer]:
15
+ - /url: /docs/tutorials
16
+ - link "Templating" [ref=e13] [cursor=pointer]:
17
+ - /url: /docs/templating/
18
+ - link "Roadmap" [ref=e14] [cursor=pointer]:
19
+ - /url: /docs/roadmap
20
+ - generic [ref=e15]:
21
+ - generic [ref=e17]:
22
+ - link "Changelog" [ref=e18] [cursor=pointer]:
23
+ - /url: https://github.com/gina-io/gina/releases
24
+ - text: v0.3.12
25
+ - link "GitHub repository" [ref=e19] [cursor=pointer]:
26
+ - /url: https://github.com/gina-io/gina
27
+ - img [ref=e20]
28
+ - link "npm package (stable)" [ref=e22] [cursor=pointer]:
29
+ - /url: https://www.npmjs.com/package/gina/v/0.3.12
30
+ - img [ref=e23]
31
+ - generic "light mode" [ref=e26] [cursor=pointer]:
32
+ - checkbox "Switch between dark and light mode (currently light mode)" [disabled]
33
+ - generic [ref=e27]:
34
+ - generic [ref=e28]: ☾
35
+ - generic [ref=e29]: ☀
36
+ - textbox "Search" [ref=e32]
37
+ - generic [ref=e35]:
38
+ - complementary [ref=e36]:
39
+ - navigation "Docs sidebar" [ref=e39]:
40
+ - list [ref=e40]:
41
+ - listitem [ref=e41]:
42
+ - link "What is Gina?" [ref=e42] [cursor=pointer]:
43
+ - /url: /docs/intro
44
+ - generic "What is Gina?" [ref=e43]
45
+ - listitem [ref=e44]:
46
+ - generic [ref=e45]:
47
+ - link "Getting Started" [ref=e46] [cursor=pointer]:
48
+ - /url: /docs/getting-started
49
+ - generic "Getting Started" [ref=e47]
50
+ - button "Expand sidebar category 'Getting Started'" [ref=e48] [cursor=pointer]
51
+ - listitem [ref=e49]:
52
+ - generic [ref=e50]:
53
+ - link "Concepts" [ref=e51] [cursor=pointer]:
54
+ - /url: /docs/concepts
55
+ - generic "Concepts" [ref=e52]
56
+ - button "Expand sidebar category 'Concepts'" [ref=e53] [cursor=pointer]
57
+ - listitem [ref=e54]:
58
+ - generic [ref=e55]:
59
+ - link "Guides" [ref=e56] [cursor=pointer]:
60
+ - /url: /docs/guides
61
+ - generic "Guides" [ref=e57]
62
+ - button "Expand sidebar category 'Guides'" [ref=e58] [cursor=pointer]
63
+ - listitem [ref=e59]:
64
+ - generic [ref=e60]:
65
+ - link "CLI Reference" [ref=e61] [cursor=pointer]:
66
+ - /url: /docs/cli
67
+ - generic "CLI Reference" [ref=e62]
68
+ - button "Collapse sidebar category 'CLI Reference'" [expanded] [ref=e63] [cursor=pointer]
69
+ - list [ref=e64]:
70
+ - listitem [ref=e65]:
71
+ - link "bundle" [ref=e66] [cursor=pointer]:
72
+ - /url: /docs/cli/cli-bundle
73
+ - generic "bundle" [ref=e67]
74
+ - listitem [ref=e68]:
75
+ - link "project" [ref=e69] [cursor=pointer]:
76
+ - /url: /docs/cli/cli-project
77
+ - generic "project" [ref=e70]
78
+ - listitem [ref=e71]:
79
+ - link "framework" [ref=e72] [cursor=pointer]:
80
+ - /url: /docs/cli/cli-framework
81
+ - generic "framework" [ref=e73]
82
+ - listitem [ref=e74]:
83
+ - link "env" [ref=e75] [cursor=pointer]:
84
+ - /url: /docs/cli/cli-env
85
+ - generic "env" [ref=e76]
86
+ - listitem [ref=e77]:
87
+ - link "port" [ref=e78] [cursor=pointer]:
88
+ - /url: /docs/cli/cli-port
89
+ - generic "port" [ref=e79]
90
+ - listitem [ref=e80]:
91
+ - link "scope" [ref=e81] [cursor=pointer]:
92
+ - /url: /docs/cli/cli-scope
93
+ - generic "scope" [ref=e82]
94
+ - listitem [ref=e83]:
95
+ - link "view" [ref=e84] [cursor=pointer]:
96
+ - /url: /docs/cli/cli-view
97
+ - generic "view" [ref=e85]
98
+ - listitem [ref=e86]:
99
+ - link "cache" [ref=e87] [cursor=pointer]:
100
+ - /url: /docs/cli/cli-cache
101
+ - generic "cache" [ref=e88]
102
+ - listitem [ref=e89]:
103
+ - link "protocol" [ref=e90] [cursor=pointer]:
104
+ - /url: /docs/cli/cli-protocol
105
+ - generic "protocol" [ref=e91]
106
+ - listitem [ref=e92]:
107
+ - link "service" [ref=e93] [cursor=pointer]:
108
+ - /url: /docs/cli/cli-service
109
+ - generic "service" [ref=e94]
110
+ - listitem [ref=e95]:
111
+ - link "connector" [ref=e96] [cursor=pointer]:
112
+ - /url: /docs/cli/cli-connector
113
+ - generic "connector" [ref=e97]
114
+ - listitem [ref=e98]:
115
+ - generic [ref=e99]:
116
+ - link "Configuration Reference" [ref=e100] [cursor=pointer]:
117
+ - /url: /docs/reference/
118
+ - generic "Configuration Reference" [ref=e101]
119
+ - button "Expand sidebar category 'Configuration Reference'" [ref=e102] [cursor=pointer]
120
+ - listitem [ref=e103]:
121
+ - generic [ref=e104]:
122
+ - link "API Reference" [ref=e105] [cursor=pointer]:
123
+ - /url: /docs/api
124
+ - generic "API Reference" [ref=e106]
125
+ - button "Expand sidebar category 'API Reference'" [ref=e107] [cursor=pointer]
126
+ - listitem [ref=e108]:
127
+ - generic [ref=e109]:
128
+ - link "Globals" [ref=e110] [cursor=pointer]:
129
+ - /url: /docs/globals
130
+ - generic "Globals" [ref=e111]
131
+ - button "Expand sidebar category 'Globals'" [ref=e112] [cursor=pointer]
132
+ - listitem [ref=e113]:
133
+ - link "Security" [ref=e114] [cursor=pointer]:
134
+ - /url: /docs/security
135
+ - generic "Security" [ref=e115]
136
+ - listitem [ref=e116]:
137
+ - link "Migration Guide" [ref=e117] [cursor=pointer]:
138
+ - /url: /docs/migration
139
+ - generic "Migration Guide" [ref=e118]
140
+ - main [ref=e119]:
141
+ - generic [ref=e121]:
142
+ - generic [ref=e123]:
143
+ - article [ref=e124]:
144
+ - navigation "Breadcrumbs" [ref=e125]:
145
+ - list [ref=e126]:
146
+ - listitem [ref=e127]:
147
+ - link "Home page" [ref=e128] [cursor=pointer]:
148
+ - /url: /docs/
149
+ - img [ref=e129]
150
+ - listitem [ref=e131]:
151
+ - link "CLI Reference" [ref=e132] [cursor=pointer]:
152
+ - /url: /docs/cli
153
+ - listitem [ref=e133]:
154
+ - generic [ref=e134]: connector
155
+ - generic [ref=e135]:
156
+ - heading "connector" [level=1] [ref=e137]
157
+ - generic [ref=e138]:
158
+ - generic [ref=e139]:
159
+ - generic [ref=e140]:
160
+ - img [ref=e141]
161
+ - text: 14 min read
162
+ - generic [ref=e144]: Intermediate
163
+ - generic [ref=e145]:
164
+ - generic [ref=e146]: Prerequisites
165
+ - list [ref=e147]:
166
+ - listitem [ref=e148]:
167
+ - link "Gina installed globally" [ref=e149] [cursor=pointer]:
168
+ - /url: /docs/getting-started/installation
169
+ - listitem [ref=e150]:
170
+ - link "connectors.json reference" [ref=e151] [cursor=pointer]:
171
+ - /url: /docs/reference/connectors
172
+ - listitem [ref=e152]:
173
+ - link "Projects and bundles" [ref=e153] [cursor=pointer]:
174
+ - /url: /docs/concepts/projects-and-bundles
175
+ - paragraph [ref=e154]:
176
+ - text: The
177
+ - code [ref=e155]: connector
178
+ - text: command group inspects and maintains
179
+ - code [ref=e156]: connectors.json
180
+ - text: across a project's
181
+ - code [ref=e157]: shared/config/
182
+ - text: and each bundle's
183
+ - code [ref=e158]: config/
184
+ - text: directory. It reports the effective overlay that every bundle sees at runtime, adds or removes entries, and lints / auto-fixes common schema drift. Every subcommand is
185
+ - strong [ref=e159]: offline
186
+ - text: — no framework socket or network call.
187
+ - list [ref=e160]:
188
+ - listitem [ref=e161]:
189
+ - strong [ref=e162]:
190
+ - code [ref=e163]: connector:list
191
+ - text: — read-only inventory of every declared connector, with driver install status and version-pin warnings.
192
+ - listitem [ref=e164]:
193
+ - strong [ref=e165]:
194
+ - code [ref=e166]: connector:add
195
+ - text: — write a connector entry to shared or bundle scope, with driver install hint.
196
+ - listitem [ref=e167]:
197
+ - strong [ref=e168]:
198
+ - code [ref=e169]: connector:rm
199
+ - text: (alias
200
+ - code [ref=e170]: connector:remove
201
+ - text: ) — remove a connector entry; prints retention hints, never touches
202
+ - code [ref=e171]: node_modules/
203
+ - text: .
204
+ - listitem [ref=e172]:
205
+ - strong [ref=e173]:
206
+ - code [ref=e174]: connector:migrate
207
+ - text: — lint every
208
+ - code [ref=e175]: connectors.json
209
+ - text: for schema drift, optionally fix in place with
210
+ - code [ref=e176]: "--fix"
211
+ - text: .
212
+ - separator [ref=e177]
213
+ - heading "connector:listDirect link to connectorlist" [level=2] [ref=e178]:
214
+ - code [ref=e179]: connector:list
215
+ - link "Direct link to connectorlist" [ref=e180] [cursor=pointer]:
216
+ - /url: "#connectorlist"
217
+ - text: "#"
218
+ - paragraph [ref=e181]:
219
+ - emphasis [ref=e182]: New in 0.3.7-alpha.2
220
+ - paragraph [ref=e183]: List connectors for every registered project, a single project, or the merged view a single bundle sees at runtime.
221
+ - code [ref=e187]:
222
+ - generic [ref=e188]: "gina connector:list # Every registered project"
223
+ - generic [ref=e189]: "gina connector:list @<project> # One project (shared + all bundles)"
224
+ - generic [ref=e190]: "gina connector:list <bundle> @<project> # Merged shared+bundle view for <bundle>"
225
+ - paragraph [ref=e191]:
226
+ - strong [ref=e192]: Flags
227
+ - table [ref=e193]:
228
+ - rowgroup [ref=e194]:
229
+ - row "Flag Description" [ref=e195]:
230
+ - columnheader "Flag" [ref=e196]
231
+ - columnheader "Description" [ref=e197]
232
+ - rowgroup [ref=e198]:
233
+ - row "--format=json Emit a JSON payload instead of the human-readable text table" [ref=e199]:
234
+ - cell "--format=json" [ref=e200]:
235
+ - code [ref=e201]: "--format=json"
236
+ - cell "Emit a JSON payload instead of the human-readable text table" [ref=e202]
237
+ - heading "OutputDirect link to Output" [level=3] [ref=e203]:
238
+ - text: Output
239
+ - link "Direct link to Output" [ref=e204] [cursor=pointer]:
240
+ - /url: "#output"
241
+ - text: "#"
242
+ - code [ref=e208]:
243
+ - generic [ref=e209]: "------------------------------------"
244
+ - generic [ref=e210]: myproject
245
+ - generic [ref=e211]: "------------------------------------"
246
+ - generic [ref=e212]: "[ ok ] session couchbase [shared] (couchbase@>=3.0.0 4.1.3 installed)"
247
+ - generic [ref=e213]: "[ ok ] profile couchbase [api] (couchbase@>=3.0.0 4.1.3 installed)"
248
+ - generic [ref=e214]: "[ ok ] session couchbase [api override] (couchbase@>=3.0.0 4.1.3 installed)"
249
+ - generic [ref=e215]: "[ ?! ] mongodb mongodb [admin] (mongodb@>=5.0.0 — run `npm install mongodb`)"
250
+ - generic [ref=e216]: "[ ok ] local sqlite [worker] (Node.js >= 22.5.0 built-in (node:sqlite))"
251
+ - paragraph [ref=e217]:
252
+ - strong [ref=e218]: Row columns
253
+ - table [ref=e219]:
254
+ - rowgroup [ref=e220]:
255
+ - row "Column Meaning" [ref=e221]:
256
+ - columnheader "Column" [ref=e222]
257
+ - columnheader "Meaning" [ref=e223]
258
+ - rowgroup [ref=e224]:
259
+ - row "[ ok ] / [ ?! ] / [ ?? ] Install status (see below)" [ref=e225]:
260
+ - cell "[ ok ] / [ ?! ] / [ ?? ]" [ref=e226]:
261
+ - strong [ref=e227]:
262
+ - code [ref=e228]: "[ ok ]"
263
+ - text: /
264
+ - code [ref=e229]: "[ ?! ]"
265
+ - text: /
266
+ - code [ref=e230]: "[ ?? ]"
267
+ - cell "Install status (see below)" [ref=e231]
268
+ - row "name Logical connector key (JSON object key in connectors.json)" [ref=e232]:
269
+ - cell "name" [ref=e233]:
270
+ - strong [ref=e234]: name
271
+ - cell "Logical connector key (JSON object key in connectors.json)" [ref=e235]:
272
+ - text: Logical connector key (JSON object key in
273
+ - code [ref=e236]: connectors.json
274
+ - text: )
275
+ - row "connector Driver type resolved from entry.connector (falls back to the logical key)" [ref=e237]:
276
+ - cell "connector" [ref=e238]:
277
+ - strong [ref=e239]: connector
278
+ - cell "Driver type resolved from entry.connector (falls back to the logical key)" [ref=e240]:
279
+ - text: Driver type resolved from
280
+ - code [ref=e241]: entry.connector
281
+ - text: (falls back to the logical key)
282
+ - 'row "source label Where the entry comes from: [shared], [<bundle>], or [<bundle> override]" [ref=e242]':
283
+ - cell "source label" [ref=e243]:
284
+ - strong [ref=e244]: source label
285
+ - 'cell "Where the entry comes from: [shared], [<bundle>], or [<bundle> override]" [ref=e245]':
286
+ - text: "Where the entry comes from:"
287
+ - code [ref=e246]: "[shared]"
288
+ - text: ","
289
+ - code [ref=e247]: "[<bundle>]"
290
+ - text: ", or"
291
+ - code [ref=e248]: "[<bundle> override]"
292
+ - row "driver info Resolved npm package, peerDependencies range, pinned version (if any), install state" [ref=e249]:
293
+ - cell "driver info" [ref=e250]:
294
+ - strong [ref=e251]: driver info
295
+ - cell "Resolved npm package, peerDependencies range, pinned version (if any), install state" [ref=e252]:
296
+ - text: Resolved npm package,
297
+ - code [ref=e253]: peerDependencies
298
+ - text: range, pinned version (if any), install state
299
+ - paragraph [ref=e254]:
300
+ - strong [ref=e255]: Status flags
301
+ - table [ref=e256]:
302
+ - rowgroup [ref=e257]:
303
+ - row "Flag Meaning" [ref=e258]:
304
+ - columnheader "Flag" [ref=e259]
305
+ - columnheader "Meaning" [ref=e260]
306
+ - rowgroup [ref=e261]:
307
+ - row "[ ok ] Driver installed at <project>/node_modules/<driver>, or built-in (node:sqlite)" [ref=e262]:
308
+ - cell "[ ok ]" [ref=e263]:
309
+ - code [ref=e264]: "[ ok ]"
310
+ - cell "Driver installed at <project>/node_modules/<driver>, or built-in (node:sqlite)" [ref=e265]:
311
+ - text: Driver installed at
312
+ - code [ref=e266]: <project>/node_modules/<driver>
313
+ - text: ", or built-in ("
314
+ - code [ref=e267]: node:sqlite
315
+ - text: )
316
+ - row "[ ?! ] Driver declared but not found — npm install <driver> suggested inline" [ref=e268]:
317
+ - cell "[ ?! ]" [ref=e269]:
318
+ - code [ref=e270]: "[ ?! ]"
319
+ - cell "Driver declared but not found — npm install <driver> suggested inline" [ref=e271]:
320
+ - text: Driver declared but not found —
321
+ - code [ref=e272]: npm install <driver>
322
+ - text: suggested inline
323
+ - row "[ ?? ] Unknown connector type, or ai connector with missing/unrecognised protocol" [ref=e273]:
324
+ - cell "[ ?? ]" [ref=e274]:
325
+ - code [ref=e275]: "[ ?? ]"
326
+ - cell "Unknown connector type, or ai connector with missing/unrecognised protocol" [ref=e276]:
327
+ - text: Unknown connector type, or
328
+ - code [ref=e277]: ai
329
+ - text: connector with missing/unrecognised
330
+ - code [ref=e278]: protocol
331
+ - row "[ !! ] Version-pin disagreement — emitted as a trailing warning line when two bundles pin the same driver at different versions (the first npm install wins)" [ref=e279]:
332
+ - cell "[ !! ]" [ref=e280]:
333
+ - code [ref=e281]: "[ !! ]"
334
+ - cell "Version-pin disagreement — emitted as a trailing warning line when two bundles pin the same driver at different versions (the first npm install wins)" [ref=e282]:
335
+ - text: Version-pin disagreement — emitted as a trailing warning line when two bundles pin the same driver at different versions (the first
336
+ - code [ref=e283]: npm install
337
+ - text: wins)
338
+ - paragraph [ref=e284]:
339
+ - strong [ref=e285]: Source labels
340
+ - table [ref=e286]:
341
+ - rowgroup [ref=e287]:
342
+ - row "Label Meaning" [ref=e288]:
343
+ - columnheader "Label" [ref=e289]
344
+ - columnheader "Meaning" [ref=e290]
345
+ - rowgroup [ref=e291]:
346
+ - row "[shared] Declared only in shared/config/connectors.json" [ref=e292]:
347
+ - cell "[shared]" [ref=e293]:
348
+ - code [ref=e294]: "[shared]"
349
+ - cell "Declared only in shared/config/connectors.json" [ref=e295]:
350
+ - text: Declared only in
351
+ - code [ref=e296]: shared/config/connectors.json
352
+ - row "[<bundle>] Declared only in the bundle's config/connectors.json" [ref=e297]:
353
+ - cell "[<bundle>]" [ref=e298]:
354
+ - code [ref=e299]: "[<bundle>]"
355
+ - cell "Declared only in the bundle's config/connectors.json" [ref=e300]:
356
+ - text: Declared only in the bundle's
357
+ - code [ref=e301]: config/connectors.json
358
+ - row "[<bundle> override] Declared in shared and overridden by the bundle — the merged entry (bundle wins on conflicting keys) is shown" [ref=e302]:
359
+ - cell "[<bundle> override]" [ref=e303]:
360
+ - code [ref=e304]: "[<bundle> override]"
361
+ - cell "Declared in shared and overridden by the bundle — the merged entry (bundle wins on conflicting keys) is shown" [ref=e305]:
362
+ - text: Declared in
363
+ - code [ref=e306]: shared
364
+ - strong [ref=e307]: and
365
+ - text: overridden by the bundle — the merged entry (bundle wins on conflicting keys) is shown
366
+ - heading "JSON outputDirect link to JSON output" [level=3] [ref=e308]:
367
+ - text: JSON output
368
+ - link "Direct link to JSON output" [ref=e309] [cursor=pointer]:
369
+ - /url: "#json-output"
370
+ - text: "#"
371
+ - code [ref=e313]:
372
+ - generic [ref=e314]: gina connector:list @<project> --format=json
373
+ - code [ref=e318]:
374
+ - generic [ref=e319]: "{"
375
+ - generic [ref=e320]: "\"project\": \"myproject\","
376
+ - generic [ref=e321]: "\"status\": \"ok\","
377
+ - generic [ref=e322]: "\"connectors\": ["
378
+ - generic [ref=e323]: "{"
379
+ - generic [ref=e324]: "\"project\": \"myproject\","
380
+ - generic [ref=e325]: "\"bundle\": \"api\","
381
+ - generic [ref=e326]: "\"name\": \"session\","
382
+ - generic [ref=e327]: "\"connector\": \"couchbase\","
383
+ - generic [ref=e328]: "\"source\": \"override\","
384
+ - generic [ref=e329]: "\"driver\": \"couchbase\","
385
+ - generic [ref=e330]: "\"builtin\": false,"
386
+ - generic [ref=e331]: "\"range\": \">=3.0.0\","
387
+ - generic [ref=e332]: "\"version\": null,"
388
+ - generic [ref=e333]: "\"installed\": true,"
389
+ - generic [ref=e334]: "\"installedVersion\": \"4.1.3\","
390
+ - generic [ref=e335]: "\"note\": null,"
391
+ - generic [ref=e336]: "\"unresolved\": false"
392
+ - generic [ref=e337]: "}"
393
+ - generic [ref=e338]: "]"
394
+ - generic [ref=e339]: "}"
395
+ - table [ref=e340]:
396
+ - rowgroup [ref=e341]:
397
+ - row "Field Description" [ref=e342]:
398
+ - columnheader "Field" [ref=e343]
399
+ - columnheader "Description" [ref=e344]
400
+ - rowgroup [ref=e345]:
401
+ - row "project / bundle / name Project, owning bundle (null for shared-only rows), logical connector key" [ref=e346]:
402
+ - cell "project / bundle / name" [ref=e347]:
403
+ - code [ref=e348]: project
404
+ - text: /
405
+ - code [ref=e349]: bundle
406
+ - text: /
407
+ - code [ref=e350]: name
408
+ - cell "Project, owning bundle (null for shared-only rows), logical connector key" [ref=e351]
409
+ - row "connector Resolved connector type" [ref=e352]:
410
+ - cell "connector" [ref=e353]:
411
+ - code [ref=e354]: connector
412
+ - cell "Resolved connector type" [ref=e355]
413
+ - row "source \"shared\", \"bundle\", or \"override\"" [ref=e356]:
414
+ - cell "source" [ref=e357]:
415
+ - code [ref=e358]: source
416
+ - cell "\"shared\", \"bundle\", or \"override\"" [ref=e359]:
417
+ - code [ref=e360]: "\"shared\""
418
+ - text: ","
419
+ - code [ref=e361]: "\"bundle\""
420
+ - text: ", or"
421
+ - code [ref=e362]: "\"override\""
422
+ - row "driver npm package name (null for built-in drivers)" [ref=e363]:
423
+ - cell "driver" [ref=e364]:
424
+ - code [ref=e365]: driver
425
+ - cell "npm package name (null for built-in drivers)" [ref=e366]
426
+ - row "builtin true when the driver is Node-builtin (e.g. node:sqlite)" [ref=e367]:
427
+ - cell "builtin" [ref=e368]:
428
+ - code [ref=e369]: builtin
429
+ - cell "true when the driver is Node-builtin (e.g. node:sqlite)" [ref=e370]:
430
+ - code [ref=e371]: "true"
431
+ - text: when the driver is Node-builtin (e.g.
432
+ - code [ref=e372]: node:sqlite
433
+ - text: )
434
+ - row "range peerDependencies range declared by the framework" [ref=e373]:
435
+ - cell "range" [ref=e374]:
436
+ - code [ref=e375]: range
437
+ - cell "peerDependencies range declared by the framework" [ref=e376]:
438
+ - code [ref=e377]: peerDependencies
439
+ - text: range declared by the framework
440
+ - row "version User-set version pin from the connector entry (null if unset)" [ref=e378]:
441
+ - cell "version" [ref=e379]:
442
+ - code [ref=e380]: version
443
+ - cell "User-set version pin from the connector entry (null if unset)" [ref=e381]:
444
+ - text: User-set
445
+ - code [ref=e382]: version
446
+ - text: pin from the connector entry (null if unset)
447
+ - row "installed / installedVersion Install probe result from <project>/node_modules/<driver>/package.json" [ref=e383]:
448
+ - cell "installed / installedVersion" [ref=e384]:
449
+ - code [ref=e385]: installed
450
+ - text: /
451
+ - code [ref=e386]: installedVersion
452
+ - cell "Install probe result from <project>/node_modules/<driver>/package.json" [ref=e387]:
453
+ - text: Install probe result from
454
+ - code [ref=e388]: <project>/node_modules/<driver>/package.json
455
+ - row "note Human-readable hint for unresolved or built-in entries" [ref=e389]:
456
+ - cell "note" [ref=e390]:
457
+ - code [ref=e391]: note
458
+ - cell "Human-readable hint for unresolved or built-in entries" [ref=e392]
459
+ - row "unresolved true when no driver mapping exists for the type" [ref=e393]:
460
+ - cell "unresolved" [ref=e394]:
461
+ - code [ref=e395]: unresolved
462
+ - cell "true when no driver mapping exists for the type" [ref=e396]:
463
+ - code [ref=e397]: "true"
464
+ - text: when no driver mapping exists for the type
465
+ - heading "Driver resolutionDirect link to Driver resolution" [level=3] [ref=e398]:
466
+ - text: Driver resolution
467
+ - link "Direct link to Driver resolution" [ref=e399] [cursor=pointer]:
468
+ - /url: "#driver-resolution"
469
+ - text: "#"
470
+ - paragraph [ref=e400]:
471
+ - text: Drivers are resolved from the framework's
472
+ - code [ref=e401]: peerDependencies
473
+ - text: declared in
474
+ - code [ref=e402]: package.json
475
+ - text: ":"
476
+ - table [ref=e403]:
477
+ - rowgroup [ref=e404]:
478
+ - row "Connector type npm package Range" [ref=e405]:
479
+ - columnheader "Connector type" [ref=e406]
480
+ - columnheader "npm package" [ref=e407]
481
+ - columnheader "Range" [ref=e408]
482
+ - rowgroup [ref=e409]:
483
+ - row "couchbase couchbase >=3.0.0" [ref=e410]:
484
+ - cell "couchbase" [ref=e411]:
485
+ - code [ref=e412]: couchbase
486
+ - cell "couchbase" [ref=e413]:
487
+ - code [ref=e414]: couchbase
488
+ - cell ">=3.0.0" [ref=e415]:
489
+ - code [ref=e416]: ">=3.0.0"
490
+ - row "redis ioredis >=5.0.0" [ref=e417]:
491
+ - cell "redis" [ref=e418]:
492
+ - code [ref=e419]: redis
493
+ - cell "ioredis" [ref=e420]:
494
+ - code [ref=e421]: ioredis
495
+ - cell ">=5.0.0" [ref=e422]:
496
+ - code [ref=e423]: ">=5.0.0"
497
+ - row "mysql mysql2 >=2.0.0" [ref=e424]:
498
+ - cell "mysql" [ref=e425]:
499
+ - code [ref=e426]: mysql
500
+ - cell "mysql2" [ref=e427]:
501
+ - code [ref=e428]: mysql2
502
+ - cell ">=2.0.0" [ref=e429]:
503
+ - code [ref=e430]: ">=2.0.0"
504
+ - row "postgresql pg >=8.0.0" [ref=e431]:
505
+ - cell "postgresql" [ref=e432]:
506
+ - code [ref=e433]: postgresql
507
+ - cell "pg" [ref=e434]:
508
+ - code [ref=e435]: pg
509
+ - cell ">=8.0.0" [ref=e436]:
510
+ - code [ref=e437]: ">=8.0.0"
511
+ - row "mongodb mongodb >=5.0.0" [ref=e438]:
512
+ - cell "mongodb" [ref=e439]:
513
+ - code [ref=e440]: mongodb
514
+ - cell "mongodb" [ref=e441]:
515
+ - code [ref=e442]: mongodb
516
+ - cell ">=5.0.0" [ref=e443]:
517
+ - code [ref=e444]: ">=5.0.0"
518
+ - row "scylladb @scylladb/scylla-driver >=1.0.0" [ref=e445]:
519
+ - cell "scylladb" [ref=e446]:
520
+ - code [ref=e447]: scylladb
521
+ - cell "@scylladb/scylla-driver" [ref=e448]:
522
+ - code [ref=e449]: "@scylladb/scylla-driver"
523
+ - cell ">=1.0.0" [ref=e450]:
524
+ - code [ref=e451]: ">=1.0.0"
525
+ - 'row "sqlite (built-in: node:sqlite) Node ≥ 22.5.0" [ref=e452]':
526
+ - cell "sqlite" [ref=e453]:
527
+ - code [ref=e454]: sqlite
528
+ - 'cell "(built-in: node:sqlite)" [ref=e455]':
529
+ - emphasis [ref=e456]:
530
+ - text: "(built-in:"
531
+ - code [ref=e457]: node:sqlite
532
+ - text: )
533
+ - cell "Node ≥ 22.5.0" [ref=e458]
534
+ - row "ai Resolved from entry.protocol See below" [ref=e459]:
535
+ - cell "ai" [ref=e460]:
536
+ - code [ref=e461]: ai
537
+ - cell "Resolved from entry.protocol" [ref=e462]:
538
+ - text: Resolved from
539
+ - code [ref=e463]: entry.protocol
540
+ - cell "See below" [ref=e464]
541
+ - paragraph [ref=e465]:
542
+ - text: The
543
+ - code [ref=e466]: ai
544
+ - text: connector resolves its driver from
545
+ - code [ref=e467]: entry.protocol
546
+ - text: ":"
547
+ - table [ref=e468]:
548
+ - rowgroup [ref=e469]:
549
+ - row "Scheme npm package" [ref=e470]:
550
+ - columnheader "Scheme" [ref=e471]
551
+ - columnheader "npm package" [ref=e472]
552
+ - rowgroup [ref=e473]:
553
+ - row "anthropic:// @anthropic-ai/sdk (>=0.27.0)" [ref=e474]:
554
+ - cell "anthropic://" [ref=e475]:
555
+ - code [ref=e476]: anthropic://
556
+ - cell "@anthropic-ai/sdk (>=0.27.0)" [ref=e477]:
557
+ - code [ref=e478]: "@anthropic-ai/sdk"
558
+ - text: (
559
+ - code [ref=e479]: ">=0.27.0"
560
+ - text: )
561
+ - row "openai://, deepseek://, qwen://, groq://, mistral://, together://, ollama://, gemini://, xai://, perplexity:// openai (>=4.0.0)" [ref=e480]:
562
+ - cell "openai://, deepseek://, qwen://, groq://, mistral://, together://, ollama://, gemini://, xai://, perplexity://" [ref=e481]:
563
+ - code [ref=e482]: openai://
564
+ - text: ","
565
+ - code [ref=e483]: deepseek://
566
+ - text: ","
567
+ - code [ref=e484]: qwen://
568
+ - text: ","
569
+ - code [ref=e485]: groq://
570
+ - text: ","
571
+ - code [ref=e486]: mistral://
572
+ - text: ","
573
+ - code [ref=e487]: together://
574
+ - text: ","
575
+ - code [ref=e488]: ollama://
576
+ - text: ","
577
+ - code [ref=e489]: gemini://
578
+ - text: ","
579
+ - code [ref=e490]: xai://
580
+ - text: ","
581
+ - code [ref=e491]: perplexity://
582
+ - cell "openai (>=4.0.0)" [ref=e492]:
583
+ - code [ref=e493]: openai
584
+ - text: (
585
+ - code [ref=e494]: ">=4.0.0"
586
+ - text: )
587
+ - heading "Overlay semanticsDirect link to Overlay semantics" [level=3] [ref=e495]:
588
+ - text: Overlay semantics
589
+ - link "Direct link to Overlay semantics" [ref=e496] [cursor=pointer]:
590
+ - /url: "#overlay-semantics"
591
+ - text: "#"
592
+ - paragraph [ref=e497]:
593
+ - text: Shared and bundle-level
594
+ - code [ref=e498]: connectors.json
595
+ - text: files are merged key-level, with the bundle side winning on conflicting keys. This mirrors the runtime behaviour of
596
+ - code [ref=e499]: core/config.js
597
+ - text: ": a bundle that overrides"
598
+ - code [ref=e500]: session
599
+ - text: in its own
600
+ - code [ref=e501]: config/connectors.json
601
+ - text: does
602
+ - strong [ref=e502]: not
603
+ - text: need to restate the full entry — it inherits the shared fields and only overrides the keys it declares.
604
+ - paragraph [ref=e503]: "The text output emits one row per resolved entry:"
605
+ - list [ref=e504]:
606
+ - listitem [ref=e505]:
607
+ - text: A shared entry with no bundle override → one
608
+ - code [ref=e506]: "[shared]"
609
+ - text: row.
610
+ - listitem [ref=e507]:
611
+ - text: A shared entry that is overridden by one or more bundles → one
612
+ - code [ref=e508]: "[<bundle> override]"
613
+ - text: row per overriding bundle;
614
+ - strong [ref=e509]:
615
+ - text: no standalone
616
+ - code [ref=e510]: "[shared]"
617
+ - text: row
618
+ - text: .
619
+ - listitem [ref=e511]:
620
+ - text: A bundle-only entry (not in shared) →
621
+ - code [ref=e512]: "[<bundle>]"
622
+ - text: .
623
+ - heading "Comment toleranceDirect link to Comment tolerance" [level=3] [ref=e513]:
624
+ - text: Comment tolerance
625
+ - link "Direct link to Comment tolerance" [ref=e514] [cursor=pointer]:
626
+ - /url: "#comment-tolerance"
627
+ - text: "#"
628
+ - paragraph [ref=e515]:
629
+ - code [ref=e516]: connectors.json
630
+ - text: ","
631
+ - code [ref=e517]: manifest.json
632
+ - text: ", and the file headers they carry are parsed with tolerance for"
633
+ - code [ref=e518]: //
634
+ - text: line comments and
635
+ - code [ref=e519]: /* … */
636
+ - text: block comments, the same as
637
+ - code [ref=e520]: routing.json
638
+ - text: .
639
+ - heading "Error pathsDirect link to Error paths" [level=3] [ref=e521]:
640
+ - text: Error paths
641
+ - link "Direct link to Error paths" [ref=e522] [cursor=pointer]:
642
+ - /url: "#error-paths"
643
+ - text: "#"
644
+ - table [ref=e523]:
645
+ - rowgroup [ref=e524]:
646
+ - row "Input Behaviour" [ref=e525]:
647
+ - columnheader "Input" [ref=e526]
648
+ - columnheader "Behaviour" [ref=e527]
649
+ - rowgroup [ref=e528]:
650
+ - 'row "connector:list @unknown CmdHelper rejects: \"Project [unknown] not found in your projects list\" (exit 1)" [ref=e529]':
651
+ - cell "connector:list @unknown" [ref=e530]:
652
+ - code [ref=e531]: connector:list @unknown
653
+ - 'cell "CmdHelper rejects: \"Project [unknown] not found in your projects list\" (exit 1)" [ref=e532]'
654
+ - row "connector:list <bundle> (no @<project>) \"connector:list <bundle> requires @<project>\" (exit 1)" [ref=e533]:
655
+ - cell "connector:list <bundle> (no @<project>)" [ref=e534]:
656
+ - code [ref=e535]: connector:list <bundle>
657
+ - text: (no
658
+ - code [ref=e536]: "@<project>"
659
+ - text: )
660
+ - cell "\"connector:list <bundle> requires @<project>\" (exit 1)" [ref=e537]:
661
+ - text: "\""
662
+ - code [ref=e538]: connector:list <bundle>
663
+ - text: requires
664
+ - code [ref=e539]: "@<project>"
665
+ - text: "\" (exit 1)"
666
+ - row "connector:list bogus @<project> \"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e540]:
667
+ - cell "connector:list bogus @<project>" [ref=e541]:
668
+ - code [ref=e542]: connector:list bogus @<project>
669
+ - cell "\"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e543]:
670
+ - text: "\"Bundle [ bogus ] is not registered inside"
671
+ - code [ref=e544]: "@<project>"
672
+ - text: "\" (exit 1)"
673
+ - row "connectors.json malformed Treated as \"no connectors declared\" (silently skipped — use bundle:start for strict validation)" [ref=e545]:
674
+ - cell "connectors.json malformed" [ref=e546]:
675
+ - code [ref=e547]: connectors.json
676
+ - text: malformed
677
+ - cell "Treated as \"no connectors declared\" (silently skipped — use bundle:start for strict validation)" [ref=e548]:
678
+ - text: Treated as "no connectors declared" (silently skipped — use
679
+ - code [ref=e549]: bundle:start
680
+ - text: for strict validation)
681
+ - generic [ref=e550]:
682
+ - generic [ref=e551]:
683
+ - img [ref=e553]
684
+ - text: Version-pin warnings vs. install resolution
685
+ - paragraph [ref=e556]:
686
+ - text: npm resolves
687
+ - code [ref=e557]: node_modules/<driver>/
688
+ - text: to a single version per project. When two bundles declare the same driver with different
689
+ - code [ref=e558]: version
690
+ - text: pins, the first
691
+ - code [ref=e559]: npm install
692
+ - text: wins and the other bundle's pin is aspirational.
693
+ - code [ref=e560]: connector:list
694
+ - text: flags this with a trailing
695
+ - code [ref=e561]: "[ !! ] driver \\"
696
+ - text: "` has conflicting `version` pins: ...` line. The actual installed version still appears on the affected rows."
697
+ - separator [ref=e562]
698
+ - heading "connector:addDirect link to connectoradd" [level=2] [ref=e563]:
699
+ - code [ref=e564]: connector:add
700
+ - link "Direct link to connectoradd" [ref=e565] [cursor=pointer]:
701
+ - /url: "#connectoradd"
702
+ - text: "#"
703
+ - paragraph [ref=e566]:
704
+ - emphasis [ref=e567]: New in 0.3.7-alpha.2
705
+ - paragraph [ref=e568]:
706
+ - text: Add a connector entry to a project's
707
+ - code [ref=e569]: shared/config/connectors.json
708
+ - text: or a bundle-scoped
709
+ - code [ref=e570]: <bundle>/config/connectors.json
710
+ - text: . Preserves any
711
+ - code [ref=e571]: //
712
+ - text: /
713
+ - code [ref=e572]: /* */
714
+ - text: comment header above the first
715
+ - code [ref=e573]: "{"
716
+ - text: ", serialises the body with 4-space indentation, and pins"
717
+ - code [ref=e574]: $schema
718
+ - text: at the top.
719
+ - code [ref=e578]:
720
+ - generic [ref=e579]: "gina connector:add <name> @<project> # Writes to shared/config/connectors.json"
721
+ - generic [ref=e580]: "gina connector:add <name> <bundle> @<project> # Writes to <bundle-src>/config/connectors.json"
722
+ - paragraph [ref=e581]:
723
+ - text: After the write, the exact install command for the matching driver is printed — e.g.
724
+ - code [ref=e582]: npm install ioredis@">=5.0.0"
725
+ - text: .
726
+ - heading "FlagsDirect link to Flags" [level=3] [ref=e583]:
727
+ - text: Flags
728
+ - link "Direct link to Flags" [ref=e584] [cursor=pointer]:
729
+ - /url: "#flags"
730
+ - text: "#"
731
+ - table [ref=e585]:
732
+ - rowgroup [ref=e586]:
733
+ - row "Flag Description" [ref=e587]:
734
+ - columnheader "Flag" [ref=e588]
735
+ - columnheader "Description" [ref=e589]
736
+ - rowgroup [ref=e590]:
737
+ - 'row "--connector=<type> Driver type. One of: couchbase, mysql, postgresql, sqlite, redis, ai. Inferred from <name> when <name> matches one of those values." [ref=e591]':
738
+ - cell "--connector=<type>" [ref=e592]:
739
+ - code [ref=e593]: "--connector=<type>"
740
+ - 'cell "Driver type. One of: couchbase, mysql, postgresql, sqlite, redis, ai. Inferred from <name> when <name> matches one of those values." [ref=e594]':
741
+ - text: "Driver type. One of:"
742
+ - code [ref=e595]: couchbase
743
+ - text: ","
744
+ - code [ref=e596]: mysql
745
+ - text: ","
746
+ - code [ref=e597]: postgresql
747
+ - text: ","
748
+ - code [ref=e598]: sqlite
749
+ - text: ","
750
+ - code [ref=e599]: redis
751
+ - text: ","
752
+ - code [ref=e600]: ai
753
+ - text: . Inferred from
754
+ - code [ref=e601]: <name>
755
+ - text: when
756
+ - code [ref=e602]: <name>
757
+ - text: matches one of those values.
758
+ - row "--driver=<type> Synonym for --connector=." [ref=e603]:
759
+ - cell "--driver=<type>" [ref=e604]:
760
+ - code [ref=e605]: "--driver=<type>"
761
+ - cell "Synonym for --connector=." [ref=e606]:
762
+ - text: Synonym for
763
+ - code [ref=e607]: "--connector="
764
+ - text: .
765
+ - row "--protocol=<uri> Connection protocol URI scheme (couchbase://, anthropic://, etc). Required for ai connectors." [ref=e608]:
766
+ - cell "--protocol=<uri>" [ref=e609]:
767
+ - code [ref=e610]: "--protocol=<uri>"
768
+ - cell "Connection protocol URI scheme (couchbase://, anthropic://, etc). Required for ai connectors." [ref=e611]:
769
+ - text: Connection protocol URI scheme (
770
+ - code [ref=e612]: couchbase://
771
+ - text: ","
772
+ - code [ref=e613]: anthropic://
773
+ - text: ", etc). Required for"
774
+ - code [ref=e614]: ai
775
+ - text: connectors.
776
+ - row "--host=<host> Hostname or IP. Comma-separated for clusters (db1,db2)." [ref=e615]:
777
+ - cell "--host=<host>" [ref=e616]:
778
+ - code [ref=e617]: "--host=<host>"
779
+ - cell "Hostname or IP. Comma-separated for clusters (db1,db2)." [ref=e618]:
780
+ - text: Hostname or IP. Comma-separated for clusters (
781
+ - code [ref=e619]: db1,db2
782
+ - text: ).
783
+ - row "--connector-port=<port> Server port. Numeric when possible. Written to the entry under the port key. See the Reserved flag names note below." [ref=e620]:
784
+ - cell "--connector-port=<port>" [ref=e621]:
785
+ - code [ref=e622]: "--connector-port=<port>"
786
+ - cell "Server port. Numeric when possible. Written to the entry under the port key. See the Reserved flag names note below." [ref=e623]:
787
+ - text: Server port. Numeric when possible. Written to the entry under the
788
+ - code [ref=e624]: port
789
+ - text: key. See the
790
+ - strong [ref=e625]: Reserved flag names
791
+ - text: note below.
792
+ - row "--database=<name> Database, bucket, or keyspace name." [ref=e626]:
793
+ - cell "--database=<name>" [ref=e627]:
794
+ - code [ref=e628]: "--database=<name>"
795
+ - cell "Database, bucket, or keyspace name." [ref=e629]
796
+ - row "--username=<name> Authentication username." [ref=e630]:
797
+ - cell "--username=<name>" [ref=e631]:
798
+ - code [ref=e632]: "--username=<name>"
799
+ - cell "Authentication username." [ref=e633]
800
+ - 'row "--password=<value> Authentication password. Supports ${ENV_VAR} interpolation." [ref=e634]':
801
+ - cell "--password=<value>" [ref=e635]:
802
+ - code [ref=e636]: "--password=<value>"
803
+ - 'cell "Authentication password. Supports ${ENV_VAR} interpolation." [ref=e637]':
804
+ - text: Authentication password. Supports
805
+ - code [ref=e638]: "${ENV_VAR}"
806
+ - text: interpolation.
807
+ - 'row "--scope=<scope> Data isolation scope: local, beta, production, testing." [ref=e639]':
808
+ - cell "--scope=<scope>" [ref=e640]:
809
+ - code [ref=e641]: "--scope=<scope>"
810
+ - 'cell "Data isolation scope: local, beta, production, testing." [ref=e642]':
811
+ - text: "Data isolation scope:"
812
+ - code [ref=e643]: local
813
+ - text: ","
814
+ - code [ref=e644]: beta
815
+ - text: ","
816
+ - code [ref=e645]: production
817
+ - text: ","
818
+ - code [ref=e646]: testing
819
+ - text: .
820
+ - row "--model=<id> AI connector only. Default model id." [ref=e647]:
821
+ - cell "--model=<id>" [ref=e648]:
822
+ - code [ref=e649]: "--model=<id>"
823
+ - cell "AI connector only. Default model id." [ref=e650]
824
+ - 'row "--api-key=<value> AI connector only. API key. Supports ${ENV_VAR} interpolation." [ref=e651]':
825
+ - cell "--api-key=<value>" [ref=e652]:
826
+ - code [ref=e653]: "--api-key=<value>"
827
+ - 'cell "AI connector only. API key. Supports ${ENV_VAR} interpolation." [ref=e654]':
828
+ - text: AI connector only. API key. Supports
829
+ - code [ref=e655]: "${ENV_VAR}"
830
+ - text: interpolation.
831
+ - row "--base-url=<url> AI connector only. Override the provider base URL (OpenAI-compatible providers)." [ref=e656]:
832
+ - cell "--base-url=<url>" [ref=e657]:
833
+ - code [ref=e658]: "--base-url=<url>"
834
+ - cell "AI connector only. Override the provider base URL (OpenAI-compatible providers)." [ref=e659]
835
+ - row "--driver-version=<range> Optional semver range to pin the driver install (e.g. ^5.0.0, >=5.3.0 <6.0.0). Written to the entry under the version key. See the Reserved flag names note below." [ref=e660]:
836
+ - cell "--driver-version=<range>" [ref=e661]:
837
+ - code [ref=e662]: "--driver-version=<range>"
838
+ - cell "Optional semver range to pin the driver install (e.g. ^5.0.0, >=5.3.0 <6.0.0). Written to the entry under the version key. See the Reserved flag names note below." [ref=e663]:
839
+ - text: Optional semver range to pin the driver install (e.g.
840
+ - code [ref=e664]: ^5.0.0
841
+ - text: ","
842
+ - code [ref=e665]: ">=5.3.0 <6.0.0"
843
+ - text: ). Written to the entry under the
844
+ - code [ref=e666]: version
845
+ - text: key. See the
846
+ - strong [ref=e667]: Reserved flag names
847
+ - text: note below.
848
+ - row "--force Overwrite an existing entry with the same <name>." [ref=e668]:
849
+ - cell "--force" [ref=e669]:
850
+ - code [ref=e670]: "--force"
851
+ - cell "Overwrite an existing entry with the same <name>." [ref=e671]:
852
+ - text: Overwrite an existing entry with the same
853
+ - code [ref=e672]: <name>
854
+ - text: .
855
+ - row "--install After writing the entry, run the detected package manager's install command for the resolved driver + range. Opt-in; default behaviour is \"write entry, print hint\". See Driver install below." [ref=e673]:
856
+ - cell "--install" [ref=e674]:
857
+ - code [ref=e675]: "--install"
858
+ - cell "After writing the entry, run the detected package manager's install command for the resolved driver + range. Opt-in; default behaviour is \"write entry, print hint\". See Driver install below." [ref=e676]:
859
+ - text: After writing the entry, run the detected package manager's install command for the resolved driver + range. Opt-in; default behaviour is "write entry, print hint". See
860
+ - link "Driver install" [ref=e677] [cursor=pointer]:
861
+ - /url: "#driver-install-with---install"
862
+ - text: below.
863
+ - generic [ref=e678]:
864
+ - generic [ref=e679]:
865
+ - img [ref=e681]
866
+ - text: Reserved flag names
867
+ - generic [ref=e683]:
868
+ - paragraph [ref=e684]: "Two CLI flags use longer names than their schema property names:"
869
+ - list [ref=e685]:
870
+ - listitem [ref=e686]:
871
+ - strong [ref=e687]:
872
+ - code [ref=e688]: "--connector-port="
873
+ - text: (not
874
+ - code [ref=e689]: "--port="
875
+ - text: "):"
876
+ - code [ref=e690]: "--port="
877
+ - text: is reserved by the framework for its own socket port (8124 by default) and is intercepted by
878
+ - code [ref=e691]: bin/cli
879
+ - text: before the handler runs. The written JSON entry still uses the property name
880
+ - code [ref=e692]: port
881
+ - text: .
882
+ - listitem [ref=e693]:
883
+ - strong [ref=e694]:
884
+ - code [ref=e695]: "--driver-version="
885
+ - text: (not
886
+ - code [ref=e696]: "--version="
887
+ - text: "): the framework auto-converts any"
888
+ - code [ref=e697]: "--<key>=<value>"
889
+ - text: flag to a
890
+ - code [ref=e698]: GINA_<KEY>
891
+ - text: env var, so
892
+ - code [ref=e699]: "--version=^5.0.0"
893
+ - text: would set
894
+ - code [ref=e700]: GINA_VERSION=^5.0.0
895
+ - text: and trigger a framework version migration. The written JSON entry still uses the property name
896
+ - code [ref=e701]: version
897
+ - text: .
898
+ - paragraph [ref=e702]: These aliases exist to avoid collisions with framework-level flags; the on-disk JSON shape is unchanged.
899
+ - heading "ExamplesDirect link to Examples" [level=3] [ref=e703]:
900
+ - text: Examples
901
+ - link "Direct link to Examples" [ref=e704] [cursor=pointer]:
902
+ - /url: "#examples"
903
+ - text: "#"
904
+ - code [ref=e708]:
905
+ - generic [ref=e709]: "# Shared Redis, type inferred from name"
906
+ - generic [ref=e710]: gina connector:add redis @myproject --host=127.0.0.1 --connector-port=6379
907
+ - generic [ref=e711]: "# Shared Redis under a custom name"
908
+ - generic [ref=e712]: gina connector:add session @myproject --connector=redis --host=127.0.0.1 --connector-port=6379
909
+ - generic [ref=e713]: "# Bundle-scoped MySQL entry"
910
+ - generic [ref=e714]: gina connector:add mydb api @myproject --connector=mysql --database=mydb --username=root
911
+ - generic [ref=e715]: "# AI connector with env-var secret"
912
+ - generic [ref=e716]: "gina connector:add ai-bot @myproject --connector=ai --protocol=anthropic:// --api-key='${ANTHROPIC_API_KEY}'"
913
+ - generic [ref=e717]: "# Pin driver version, overwrite existing"
914
+ - generic [ref=e718]: gina connector:add session @myproject --connector=redis --driver-version=^5.0.0 --force
915
+ - generic [ref=e719]: "# Write entry AND run `npm install ioredis@<range>` (lockfile-detected PM)"
916
+ - generic [ref=e720]: gina connector:add redis @myproject --install
917
+ - heading "OutputDirect link to Output" [level=3] [ref=e721]:
918
+ - text: Output
919
+ - link "Direct link to Output" [ref=e722] [cursor=pointer]:
920
+ - /url: "#output-1"
921
+ - text: "#"
922
+ - code [ref=e726]:
923
+ - generic [ref=e727]: "Added connector `redis` (redis) in bundle `api` at /path/to/project/src/api/config/connectors.json"
924
+ - generic [ref=e728]: "Next: run `npm install ioredis@\">=5.0.0\"` inside your project root."
925
+ - paragraph [ref=e729]:
926
+ - text: When overwriting an existing entry with
927
+ - code [ref=e730]: "--force"
928
+ - text: ", the first line reads"
929
+ - code [ref=e731]: Updated connector ...
930
+ - text: instead of
931
+ - code [ref=e732]: Added connector ...
932
+ - text: .
933
+ - heading "Driver install with --installDirect link to driver-install-with---install" [level=3] [ref=e733]:
934
+ - text: Driver install with
935
+ - code [ref=e734]: "--install"
936
+ - link "Direct link to driver-install-with---install" [ref=e735] [cursor=pointer]:
937
+ - /url: "#driver-install-with---install"
938
+ - text: "#"
939
+ - paragraph [ref=e736]:
940
+ - text: By default,
941
+ - code [ref=e737]: connector:add
942
+ - text: writes the entry and prints the matching
943
+ - code [ref=e738]: npm install …
944
+ - text: hint — it does
945
+ - strong [ref=e739]: not
946
+ - text: run the install for you. Pass
947
+ - code [ref=e740]: "--install"
948
+ - text: to turn that hint into an actual call, using the package manager detected from the project's lockfile.
949
+ - code [ref=e744]:
950
+ - generic [ref=e745]: gina connector:add redis @myproject --install
951
+ - code [ref=e749]:
952
+ - generic [ref=e750]: "Added connector `redis` (redis) in shared scope at /path/to/project/shared/config/connectors.json"
953
+ - generic [ref=e751]: "[install] detected package manager: npm (package-lock.json)"
954
+ - generic [ref=e752]: "[install] resolving driver range: >=5.0.0 (source: framework)"
955
+ - generic [ref=e753]: "[npm] running: npm install ioredis@>=5.0.0 (cwd: /path/to/project)"
956
+ - generic [ref=e754]: …npm output…
957
+ - paragraph [ref=e755]:
958
+ - strong [ref=e756]: Package-manager detection (lockfile probe order)
959
+ - paragraph [ref=e757]: "The detector walks the project root looking for a lockfile, in this order:"
960
+ - table [ref=e758]:
961
+ - rowgroup [ref=e759]:
962
+ - row "Order Lockfile Package manager Install subcommand" [ref=e760]:
963
+ - columnheader "Order" [ref=e761]
964
+ - columnheader "Lockfile" [ref=e762]
965
+ - columnheader "Package manager" [ref=e763]
966
+ - columnheader "Install subcommand" [ref=e764]
967
+ - rowgroup [ref=e765]:
968
+ - row "1 bun.lockb bun bun add <pkg>@<range>" [ref=e766]:
969
+ - cell "1" [ref=e767]
970
+ - cell "bun.lockb" [ref=e768]:
971
+ - code [ref=e769]: bun.lockb
972
+ - cell "bun" [ref=e770]
973
+ - cell "bun add <pkg>@<range>" [ref=e771]:
974
+ - code [ref=e772]: bun add <pkg>@<range>
975
+ - row "2 pnpm-lock.yaml pnpm pnpm add <pkg>@<range>" [ref=e773]:
976
+ - cell "2" [ref=e774]
977
+ - cell "pnpm-lock.yaml" [ref=e775]:
978
+ - code [ref=e776]: pnpm-lock.yaml
979
+ - cell "pnpm" [ref=e777]
980
+ - cell "pnpm add <pkg>@<range>" [ref=e778]:
981
+ - code [ref=e779]: pnpm add <pkg>@<range>
982
+ - row "3 yarn.lock yarn yarn add <pkg>@<range>" [ref=e780]:
983
+ - cell "3" [ref=e781]
984
+ - cell "yarn.lock" [ref=e782]:
985
+ - code [ref=e783]: yarn.lock
986
+ - cell "yarn" [ref=e784]
987
+ - cell "yarn add <pkg>@<range>" [ref=e785]:
988
+ - code [ref=e786]: yarn add <pkg>@<range>
989
+ - row "4 package-lock.json npm npm install <pkg>@<range>" [ref=e787]:
990
+ - cell "4" [ref=e788]
991
+ - cell "package-lock.json" [ref=e789]:
992
+ - code [ref=e790]: package-lock.json
993
+ - cell "npm" [ref=e791]
994
+ - cell "npm install <pkg>@<range>" [ref=e792]:
995
+ - code [ref=e793]: npm install <pkg>@<range>
996
+ - row "— (no lockfile) npm (fallback) npm install <pkg>@<range>" [ref=e794]:
997
+ - cell "—" [ref=e795]
998
+ - cell "(no lockfile)" [ref=e796]:
999
+ - emphasis [ref=e797]: (no lockfile)
1000
+ - cell "npm (fallback)" [ref=e798]
1001
+ - cell "npm install <pkg>@<range>" [ref=e799]:
1002
+ - code [ref=e800]: npm install <pkg>@<range>
1003
+ - paragraph [ref=e801]:
1004
+ - text: The first match wins. When no lockfile is present, npm is the fallback — the detector logs
1005
+ - code [ref=e802]: (fallback — no lockfile found)
1006
+ - text: so it's visible in the output.
1007
+ - paragraph [ref=e803]:
1008
+ - strong [ref=e804]: Install-range resolution order
1009
+ - paragraph [ref=e805]:
1010
+ - text: The range that follows
1011
+ - code [ref=e806]: "@"
1012
+ - text: "in the install command is resolved in three tiers, first match wins:"
1013
+ - list [ref=e807]:
1014
+ - listitem [ref=e808]:
1015
+ - strong [ref=e809]:
1016
+ - code [ref=e810]: "--driver-version=<range>"
1017
+ - text: — the pin on the
1018
+ - code [ref=e811]: connector:add
1019
+ - text: call (if set). Also written to the entry under the
1020
+ - code [ref=e812]: version
1021
+ - text: key.
1022
+ - listitem [ref=e813]:
1023
+ - strong [ref=e814]:
1024
+ - text: Project
1025
+ - code [ref=e815]: package.json
1026
+ - text: —
1027
+ - code [ref=e816]: dependencies
1028
+ - text: first, then
1029
+ - code [ref=e817]: devDependencies
1030
+ - text: . If the driver is already declared there (from a previous install), that range is reused so
1031
+ - code [ref=e818]: npm install
1032
+ - text: doesn't churn the lockfile.
1033
+ - listitem [ref=e819]:
1034
+ - strong [ref=e820]:
1035
+ - text: Framework
1036
+ - code [ref=e821]: peerDependencies
1037
+ - text: — the range declared by gina itself (e.g.
1038
+ - code [ref=e822]: ioredis >=5.0.0
1039
+ - text: ","
1040
+ - code [ref=e823]: couchbase >=3.0.0
1041
+ - text: ).
1042
+ - paragraph [ref=e824]:
1043
+ - text: The resolved tier is logged as
1044
+ - code [ref=e825]: "(source: entry | project | framework)"
1045
+ - text: so you can see which rung fired.
1046
+ - paragraph [ref=e826]:
1047
+ - strong [ref=e827]:
1048
+ - code [ref=e828]: sqlite
1049
+ - text: and
1050
+ - code [ref=e829]: ai
1051
+ - text: behaviour
1052
+ - list [ref=e830]:
1053
+ - listitem [ref=e831]:
1054
+ - strong [ref=e832]:
1055
+ - code [ref=e833]: sqlite
1056
+ - text: — short-circuits. Node.js ≥ 22.5.0 ships
1057
+ - code [ref=e834]: node:sqlite
1058
+ - text: built in, so
1059
+ - code [ref=e835]: "--install"
1060
+ - text: logs
1061
+ - code [ref=e836]: "[install] no install needed — Node.js >= 22.5.0 built-in (node:sqlite)."
1062
+ - text: and exits
1063
+ - code [ref=e837]: "0"
1064
+ - text: without running anything.
1065
+ - listitem [ref=e838]:
1066
+ - strong [ref=e839]:
1067
+ - code [ref=e840]: ai
1068
+ - text: with a missing or unknown
1069
+ - code [ref=e841]: "--protocol="
1070
+ - text: — exits
1071
+ - code [ref=e842]: "1"
1072
+ - text: after writing the entry. The entry is still written to disk (you can fix the protocol and re-run
1073
+ - code [ref=e843]: "--install"
1074
+ - text: separately, or install by hand). The error names the supported schemes.
1075
+ - paragraph [ref=e844]:
1076
+ - strong [ref=e845]: Exit codes
1077
+ - table [ref=e846]:
1078
+ - rowgroup [ref=e847]:
1079
+ - row "Scenario Exit code" [ref=e848]:
1080
+ - columnheader "Scenario" [ref=e849]
1081
+ - columnheader "Exit code" [ref=e850]
1082
+ - rowgroup [ref=e851]:
1083
+ - row "Entry written, install ran, package manager exited 0 0" [ref=e852]:
1084
+ - cell "Entry written, install ran, package manager exited 0" [ref=e853]:
1085
+ - text: Entry written, install ran, package manager exited
1086
+ - code [ref=e854]: "0"
1087
+ - cell "0" [ref=e855]:
1088
+ - code [ref=e856]: "0"
1089
+ - row "Entry written, sqlite short-circuit 0" [ref=e857]:
1090
+ - cell "Entry written, sqlite short-circuit" [ref=e858]:
1091
+ - text: Entry written,
1092
+ - code [ref=e859]: sqlite
1093
+ - text: short-circuit
1094
+ - cell "0" [ref=e860]:
1095
+ - code [ref=e861]: "0"
1096
+ - row "Entry written, install ran, package manager exited non-zero whatever the PM returned" [ref=e862]:
1097
+ - cell "Entry written, install ran, package manager exited non-zero" [ref=e863]
1098
+ - cell "whatever the PM returned" [ref=e864]
1099
+ - row "Entry written, PM binary missing on PATH 127" [ref=e865]:
1100
+ - cell "Entry written, PM binary missing on PATH" [ref=e866]:
1101
+ - text: Entry written, PM binary missing on
1102
+ - code [ref=e867]: PATH
1103
+ - cell "127" [ref=e868]:
1104
+ - code [ref=e869]: "127"
1105
+ - row "Entry written, AI connector with missing/unknown protocol 1" [ref=e870]:
1106
+ - cell "Entry written, AI connector with missing/unknown protocol" [ref=e871]:
1107
+ - text: Entry written, AI connector with missing/unknown
1108
+ - code [ref=e872]: protocol
1109
+ - cell "1" [ref=e873]:
1110
+ - code [ref=e874]: "1"
1111
+ - row "Entry written, unknown connector type 1" [ref=e875]:
1112
+ - cell "Entry written, unknown connector type" [ref=e876]
1113
+ - cell "1" [ref=e877]:
1114
+ - code [ref=e878]: "1"
1115
+ - generic [ref=e879]:
1116
+ - generic [ref=e880]:
1117
+ - img [ref=e882]
1118
+ - text: Opt-in by design
1119
+ - paragraph [ref=e885]:
1120
+ - code [ref=e886]: "--install"
1121
+ - text: is never applied by default —
1122
+ - code [ref=e887]: connector:add
1123
+ - text: always writes the entry first, then honours the flag. There is no
1124
+ - code [ref=e888]: "--no-install"
1125
+ - text: /
1126
+ - code [ref=e889]: "--yes"
1127
+ - text: counterpart, and no configuration that silently turns install into the default. If a future session needs it, the flag can be added without changing the default.
1128
+ - heading "Version pin — where it appliesDirect link to Version pin — where it applies" [level=3] [ref=e890]:
1129
+ - text: Version pin — where it applies
1130
+ - link "Direct link to Version pin — where it applies" [ref=e891] [cursor=pointer]:
1131
+ - /url: "#version-pin--where-it-applies"
1132
+ - text: "#"
1133
+ - paragraph [ref=e892]:
1134
+ - text: The
1135
+ - code [ref=e893]: "--driver-version="
1136
+ - text: pin is written to the entry under the
1137
+ - code [ref=e894]: version
1138
+ - text: key. At install time, the printed install hint uses that pin (so
1139
+ - code [ref=e895]: "--driver-version=^5.0.0"
1140
+ - text: produces
1141
+ - code [ref=e896]: npm install ioredis@"^5.0.0"
1142
+ - text: ). When omitted, the hint falls back to the framework's
1143
+ - code [ref=e897]: peerDependencies
1144
+ - text: range.
1145
+ - paragraph [ref=e898]:
1146
+ - text: Since
1147
+ - code [ref=e899]: npm install
1148
+ - text: resolves a single version per project, a
1149
+ - code [ref=e900]: version
1150
+ - text: pin set on one bundle still affects every bundle that uses the same driver.
1151
+ - code [ref=e901]: connector:list
1152
+ - text: flags conflicting pins with a
1153
+ - code [ref=e902]: "[ !! ]"
1154
+ - text: warning — see the
1155
+ - link "version-pin warnings note" [ref=e903] [cursor=pointer]:
1156
+ - /url: "#connectorlist"
1157
+ - text: .
1158
+ - heading "Merge behaviourDirect link to Merge behaviour" [level=3] [ref=e904]:
1159
+ - text: Merge behaviour
1160
+ - link "Direct link to Merge behaviour" [ref=e905] [cursor=pointer]:
1161
+ - /url: "#merge-behaviour"
1162
+ - text: "#"
1163
+ - paragraph [ref=e906]: "The written file always has this order:"
1164
+ - list [ref=e907]:
1165
+ - listitem [ref=e908]:
1166
+ - code [ref=e909]: $schema
1167
+ - text: (always first; inserted with the canonical
1168
+ - code [ref=e910]: https://gina.io/schema/connectors.json
1169
+ - text: URL if none was present)
1170
+ - listitem [ref=e911]:
1171
+ - text: Existing entries — key order preserved verbatim; if
1172
+ - code [ref=e912]: <name>
1173
+ - text: already exists, it is replaced in place (not moved to the bottom)
1174
+ - listitem [ref=e913]:
1175
+ - text: The new entry — appended only when
1176
+ - code [ref=e914]: <name>
1177
+ - text: was not already present
1178
+ - paragraph [ref=e915]:
1179
+ - text: Any comment header above the first
1180
+ - code [ref=e916]: "{"
1181
+ - text: is preserved byte-for-byte. Mid-body
1182
+ - code [ref=e917]: //
1183
+ - text: or
1184
+ - code [ref=e918]: /* */
1185
+ - text: comments are
1186
+ - strong [ref=e919]: lost
1187
+ - text: on rewrite — the body is re-serialised from the parsed JSON.
1188
+ - heading "Error pathsDirect link to Error paths" [level=3] [ref=e920]:
1189
+ - text: Error paths
1190
+ - link "Direct link to Error paths" [ref=e921] [cursor=pointer]:
1191
+ - /url: "#error-paths-1"
1192
+ - text: "#"
1193
+ - table [ref=e922]:
1194
+ - rowgroup [ref=e923]:
1195
+ - row "Input Behaviour" [ref=e924]:
1196
+ - columnheader "Input" [ref=e925]
1197
+ - columnheader "Behaviour" [ref=e926]
1198
+ - rowgroup [ref=e927]:
1199
+ - row "connector:add with no <name> \"connector:add requires <name> and @<project>\" (exit 1)" [ref=e928]:
1200
+ - cell "connector:add with no <name>" [ref=e929]:
1201
+ - code [ref=e930]: connector:add
1202
+ - text: with no
1203
+ - code [ref=e931]: <name>
1204
+ - cell "\"connector:add requires <name> and @<project>\" (exit 1)" [ref=e932]:
1205
+ - text: "\""
1206
+ - code [ref=e933]: connector:add
1207
+ - text: requires
1208
+ - code [ref=e934]: <name>
1209
+ - text: and
1210
+ - code [ref=e935]: "@<project>"
1211
+ - text: "\" (exit 1)"
1212
+ - row "connector:add <name> (no @<project>) \"connector:add requires @<project>\" (exit 1)" [ref=e936]:
1213
+ - cell "connector:add <name> (no @<project>)" [ref=e937]:
1214
+ - code [ref=e938]: connector:add <name>
1215
+ - text: (no
1216
+ - code [ref=e939]: "@<project>"
1217
+ - text: )
1218
+ - cell "\"connector:add requires @<project>\" (exit 1)" [ref=e940]:
1219
+ - text: "\""
1220
+ - code [ref=e941]: connector:add
1221
+ - text: requires
1222
+ - code [ref=e942]: "@<project>"
1223
+ - text: "\" (exit 1)"
1224
+ - row "connector:add <name> bogus @<project> \"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e943]:
1225
+ - cell "connector:add <name> bogus @<project>" [ref=e944]:
1226
+ - code [ref=e945]: connector:add <name> bogus @<project>
1227
+ - cell "\"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e946]:
1228
+ - text: "\"Bundle [ bogus ] is not registered inside"
1229
+ - code [ref=e947]: "@<project>"
1230
+ - text: "\" (exit 1)"
1231
+ - 'row "connector:add mycache @<project> --connector=notathing \"Unknown connector type notathing. Allowed values: ...\" (exit 1)" [ref=e948]':
1232
+ - cell "connector:add mycache @<project> --connector=notathing" [ref=e949]:
1233
+ - code [ref=e950]: connector:add mycache @<project> --connector=notathing
1234
+ - 'cell "\"Unknown connector type notathing. Allowed values: ...\" (exit 1)" [ref=e951]':
1235
+ - text: "\"Unknown connector type"
1236
+ - code [ref=e952]: notathing
1237
+ - text: ". Allowed values: ...\" (exit 1)"
1238
+ - 'row "connector:add redis @<project> with no shared/ dir \"Config directory does not exist: ...\" (exit 1)" [ref=e953]':
1239
+ - cell "connector:add redis @<project> with no shared/ dir" [ref=e954]:
1240
+ - code [ref=e955]: connector:add redis @<project>
1241
+ - text: with no
1242
+ - code [ref=e956]: shared/
1243
+ - text: dir
1244
+ - 'cell "\"Config directory does not exist: ...\" (exit 1)" [ref=e957]'
1245
+ - 'row "Entry already exists, --force not passed \"Connector `` already exists in ... Re-run with --force to overwrite.\" (exit 1)" [ref=e958]':
1246
+ - cell "Entry already exists, --force not passed" [ref=e959]:
1247
+ - text: Entry already exists,
1248
+ - code [ref=e960]: "--force"
1249
+ - text: not passed
1250
+ - 'cell "\"Connector `` already exists in ... Re-run with --force to overwrite.\" (exit 1)" [ref=e961]'
1251
+ - 'row "--scope= is not one of local, beta, production, testing The framework''s scope validation rejects first (before the handler); if it passes, the handler falls back to \"Scope `` is not valid. Allowed: ...\"" [ref=e962]':
1252
+ - cell "--scope= is not one of local, beta, production, testing" [ref=e963]:
1253
+ - code [ref=e964]: "--scope="
1254
+ - text: is not one of
1255
+ - code [ref=e965]: local
1256
+ - text: ","
1257
+ - code [ref=e966]: beta
1258
+ - text: ","
1259
+ - code [ref=e967]: production
1260
+ - text: ","
1261
+ - code [ref=e968]: testing
1262
+ - 'cell "The framework''s scope validation rejects first (before the handler); if it passes, the handler falls back to \"Scope `` is not valid. Allowed: ...\"" [ref=e969]'
1263
+ - generic [ref=e970]:
1264
+ - generic [ref=e971]:
1265
+ - img [ref=e973]
1266
+ - text: Inferred type
1267
+ - generic [ref=e975]:
1268
+ - paragraph [ref=e976]:
1269
+ - text: If
1270
+ - code [ref=e977]: <name>
1271
+ - text: is one of the built-in connector types (
1272
+ - code [ref=e978]: couchbase
1273
+ - text: ","
1274
+ - code [ref=e979]: mysql
1275
+ - text: ","
1276
+ - code [ref=e980]: postgresql
1277
+ - text: ","
1278
+ - code [ref=e981]: sqlite
1279
+ - text: ","
1280
+ - code [ref=e982]: redis
1281
+ - text: ","
1282
+ - code [ref=e983]: ai
1283
+ - text: ), you can omit
1284
+ - code [ref=e984]: "--connector="
1285
+ - text: . In that case, the generated entry also omits the
1286
+ - code [ref=e985]: connector
1287
+ - text: field — the runtime uses the logical key name as the type.
1288
+ - paragraph [ref=e986]:
1289
+ - text: "Example:"
1290
+ - code [ref=e987]: gina connector:add redis @myproject --host=127.0.0.1 --connector-port=6379
1291
+ - text: "writes:"
1292
+ - code [ref=e991]:
1293
+ - generic [ref=e992]: "\"redis\": { \"host\": \"127.0.0.1\", \"port\": 6379 }"
1294
+ - separator [ref=e993]
1295
+ - heading "connector:rmDirect link to connectorrm" [level=2] [ref=e994]:
1296
+ - code [ref=e995]: connector:rm
1297
+ - link "Direct link to connectorrm" [ref=e996] [cursor=pointer]:
1298
+ - /url: "#connectorrm"
1299
+ - text: "#"
1300
+ - paragraph [ref=e997]:
1301
+ - emphasis [ref=e998]: New in 0.3.7-alpha.2
1302
+ - paragraph [ref=e999]:
1303
+ - text: Remove a connector entry from a project's
1304
+ - code [ref=e1000]: shared/config/connectors.json
1305
+ - text: or from a bundle-scoped
1306
+ - code [ref=e1001]: <bundle>/config/connectors.json
1307
+ - text: ". The scope is inferred from positional-absence: pass a"
1308
+ - code [ref=e1002]: <bundle>
1309
+ - text: to target that bundle, omit it to target shared.
1310
+ - code [ref=e1003]: remove
1311
+ - text: is accepted as an alias.
1312
+ - code [ref=e1007]:
1313
+ - generic [ref=e1008]: "gina connector:rm <name> @<project> # Removes from shared/config/connectors.json"
1314
+ - generic [ref=e1009]: "gina connector:rm <name> <bundle> @<project> # Removes from <bundle-src>/config/connectors.json"
1315
+ - generic [ref=e1010]: "gina connector:remove <name> @<project> # Alias for rm"
1316
+ - generic [ref=e1011]:
1317
+ - generic [ref=e1012]:
1318
+ - img [ref=e1014]
1319
+ - text: Never uninstalls the npm driver
1320
+ - paragraph [ref=e1017]:
1321
+ - code [ref=e1018]: connector:rm
1322
+ - text: removes the JSON entry only — it never runs
1323
+ - code [ref=e1019]: npm uninstall
1324
+ - text: . A driver removed from one bundle may still be needed by another bundle in the same project, and the project's
1325
+ - code [ref=e1020]: node_modules/
1326
+ - text: is shared across bundles. After removal, the command prints a retention hint listing any sibling bundles (or shared) that still reference the same driver.
1327
+ - heading "FlagsDirect link to Flags" [level=3] [ref=e1021]:
1328
+ - text: Flags
1329
+ - link "Direct link to Flags" [ref=e1022] [cursor=pointer]:
1330
+ - /url: "#flags-1"
1331
+ - text: "#"
1332
+ - table [ref=e1023]:
1333
+ - rowgroup [ref=e1024]:
1334
+ - row "Flag Description" [ref=e1025]:
1335
+ - columnheader "Flag" [ref=e1026]
1336
+ - columnheader "Description" [ref=e1027]
1337
+ - rowgroup [ref=e1028]:
1338
+ - row "--dry-run Print what would be removed without touching any file. Includes the sibling-usage hint." [ref=e1029]:
1339
+ - cell "--dry-run" [ref=e1030]:
1340
+ - code [ref=e1031]: "--dry-run"
1341
+ - cell "Print what would be removed without touching any file. Includes the sibling-usage hint." [ref=e1032]
1342
+ - row "--force Skip the project-level guard that refuses to remove a shared connector while other bundles still reference it. Bundle-level removals never consult this guard." [ref=e1033]:
1343
+ - cell "--force" [ref=e1034]:
1344
+ - code [ref=e1035]: "--force"
1345
+ - cell "Skip the project-level guard that refuses to remove a shared connector while other bundles still reference it. Bundle-level removals never consult this guard." [ref=e1036]
1346
+ - heading "Scoping rulesDirect link to Scoping rules" [level=3] [ref=e1037]:
1347
+ - text: Scoping rules
1348
+ - link "Direct link to Scoping rules" [ref=e1038] [cursor=pointer]:
1349
+ - /url: "#scoping-rules"
1350
+ - text: "#"
1351
+ - table [ref=e1039]:
1352
+ - rowgroup [ref=e1040]:
1353
+ - row "Command shape Target file Safety gate" [ref=e1041]:
1354
+ - columnheader "Command shape" [ref=e1042]
1355
+ - columnheader "Target file" [ref=e1043]
1356
+ - columnheader "Safety gate" [ref=e1044]
1357
+ - rowgroup [ref=e1045]:
1358
+ - row "connector:rm <name> @<project> shared/config/connectors.json Refuses if any bundle still declares <name> unless --force is passed" [ref=e1046]:
1359
+ - cell "connector:rm <name> @<project>" [ref=e1047]:
1360
+ - code [ref=e1048]: connector:rm <name> @<project>
1361
+ - cell "shared/config/connectors.json" [ref=e1049]:
1362
+ - code [ref=e1050]: shared/config/connectors.json
1363
+ - cell "Refuses if any bundle still declares <name> unless --force is passed" [ref=e1051]:
1364
+ - text: Refuses if any bundle still declares
1365
+ - code [ref=e1052]: <name>
1366
+ - text: unless
1367
+ - code [ref=e1053]: "--force"
1368
+ - text: is passed
1369
+ - row "connector:rm <name> <bundle> @<project> <bundle-src>/config/connectors.json Always proceeds. Leaves shared untouched." [ref=e1054]:
1370
+ - cell "connector:rm <name> <bundle> @<project>" [ref=e1055]:
1371
+ - code [ref=e1056]: connector:rm <name> <bundle> @<project>
1372
+ - cell "<bundle-src>/config/connectors.json" [ref=e1057]:
1373
+ - code [ref=e1058]: <bundle-src>/config/connectors.json
1374
+ - cell "Always proceeds. Leaves shared untouched." [ref=e1059]
1375
+ - heading "ExamplesDirect link to Examples" [level=3] [ref=e1060]:
1376
+ - text: Examples
1377
+ - link "Direct link to Examples" [ref=e1061] [cursor=pointer]:
1378
+ - /url: "#examples-1"
1379
+ - text: "#"
1380
+ - code [ref=e1065]:
1381
+ - generic [ref=e1066]: "# Remove shared entry (fails if any bundle still uses it)"
1382
+ - generic [ref=e1067]: gina connector:rm session @myproject
1383
+ - generic [ref=e1068]: "# Remove from one bundle only"
1384
+ - generic [ref=e1069]: gina connector:rm session api @myproject
1385
+ - generic [ref=e1070]: "# Preview removal with sibling warnings"
1386
+ - generic [ref=e1071]: gina connector:rm session @myproject --dry-run
1387
+ - generic [ref=e1072]: "# Remove shared entry even if bundles still use it"
1388
+ - generic [ref=e1073]: gina connector:rm session @myproject --force
1389
+ - heading "OutputDirect link to Output" [level=3] [ref=e1074]:
1390
+ - text: Output
1391
+ - link "Direct link to Output" [ref=e1075] [cursor=pointer]:
1392
+ - /url: "#output-2"
1393
+ - text: "#"
1394
+ - code [ref=e1079]:
1395
+ - generic [ref=e1080]: "Removed connector `session` from shared scope at /path/to/project/shared/config/connectors.json"
1396
+ - generic [ref=e1081]: "Note: gina does not uninstall npm packages. Driver `redis` is still referenced by: api (override), worker (session)."
1397
+ - paragraph [ref=e1082]: "When removing from a bundle:"
1398
+ - code [ref=e1086]:
1399
+ - generic [ref=e1087]: "Removed connector `session` from bundle `api` at /path/to/project/src/api/config/connectors.json"
1400
+ - generic [ref=e1088]: "Note: gina does not uninstall npm packages. Driver `redis` is still referenced by: shared, worker (session)."
1401
+ - paragraph [ref=e1089]:
1402
+ - text: When the removed driver is
1403
+ - code [ref=e1090]: sqlite
1404
+ - text: (Node-builtin), the retention note is omitted — there is no npm package to retain.
1405
+ - heading "Dry-runDirect link to Dry-run" [level=3] [ref=e1091]:
1406
+ - text: Dry-run
1407
+ - link "Direct link to Dry-run" [ref=e1092] [cursor=pointer]:
1408
+ - /url: "#dry-run"
1409
+ - text: "#"
1410
+ - code [ref=e1096]:
1411
+ - generic [ref=e1097]: gina connector:rm session @myproject --dry-run
1412
+ - code [ref=e1101]:
1413
+ - generic [ref=e1102]: "[dry-run] Would remove connector `session` from shared scope at /path/to/project/shared/config/connectors.json."
1414
+ - generic [ref=e1103]: "[dry-run] Current entry:"
1415
+ - generic [ref=e1104]: "{"
1416
+ - generic [ref=e1105]: "\"connector\": \"redis\","
1417
+ - generic [ref=e1106]: "\"host\": \"127.0.0.1\","
1418
+ - generic [ref=e1107]: "\"port\": 6379"
1419
+ - generic [ref=e1108]: "}"
1420
+ - generic [ref=e1109]: "[dry-run] Warning: 2 bundle(s) still reference `session`: api (override), worker. Re-run without --dry-run and with --force to proceed."
1421
+ - generic [ref=e1110]: "[dry-run] Note: gina does not uninstall npm packages. Driver `redis` is still referenced by: api (override), worker (session)."
1422
+ - paragraph [ref=e1111]:
1423
+ - text: Dry-run never writes to disk and always exits
1424
+ - code [ref=e1112]: "0"
1425
+ - text: ", even when the real command would refuse without"
1426
+ - code [ref=e1113]: "--force"
1427
+ - text: .
1428
+ - heading "Project-level guard (--force)Direct link to project-level-guard---force" [level=3] [ref=e1114]:
1429
+ - text: Project-level guard (
1430
+ - code [ref=e1115]: "--force"
1431
+ - text: )
1432
+ - link "Direct link to project-level-guard---force" [ref=e1116] [cursor=pointer]:
1433
+ - /url: "#project-level-guard---force"
1434
+ - text: "#"
1435
+ - paragraph [ref=e1117]: "By default, removing a shared connector requires that no bundle still declares the same logical name — this prevents a bundle that relies on overlay inheritance from breaking silently. The command prints the offending bundles:"
1436
+ - code [ref=e1121]:
1437
+ - generic [ref=e1122]: "[error] Removing shared connector `session` would break 2 bundle(s) that still reference it:"
1438
+ - generic [ref=e1123]: api (override), worker.
1439
+ - generic [ref=e1124]: Re-run with --force to remove anyway, or remove from each bundle first.
1440
+ - paragraph [ref=e1125]:
1441
+ - text: Pass
1442
+ - code [ref=e1126]: "--force"
1443
+ - text: to bypass the guard. Bundle-level removals never consult the guard — removing from
1444
+ - code [ref=e1127]: api
1445
+ - text: has no effect on
1446
+ - code [ref=e1128]: worker
1447
+ - text: or
1448
+ - code [ref=e1129]: shared
1449
+ - text: .
1450
+ - heading "Inherited-from-shared hintDirect link to Inherited-from-shared hint" [level=3] [ref=e1130]:
1451
+ - text: Inherited-from-shared hint
1452
+ - link "Direct link to Inherited-from-shared hint" [ref=e1131] [cursor=pointer]:
1453
+ - /url: "#inherited-from-shared-hint"
1454
+ - text: "#"
1455
+ - paragraph [ref=e1132]:
1456
+ - text: Attempting to remove a connector from a bundle when it is only declared in
1457
+ - code [ref=e1133]: shared
1458
+ - text: "prints a hint pointing at the right scope:"
1459
+ - code [ref=e1137]:
1460
+ - generic [ref=e1138]: "[error] Connector `session` is not declared in `api/config/connectors.json` — it is inherited from shared/config/connectors.json. Use `gina connector:rm session @myproject` to remove it from shared."
1461
+ - heading "Merge behaviourDirect link to Merge behaviour" [level=3] [ref=e1139]:
1462
+ - text: Merge behaviour
1463
+ - link "Direct link to Merge behaviour" [ref=e1140] [cursor=pointer]:
1464
+ - /url: "#merge-behaviour-1"
1465
+ - text: "#"
1466
+ - paragraph [ref=e1141]: "The written file preserves:"
1467
+ - list [ref=e1142]:
1468
+ - listitem [ref=e1143]:
1469
+ - code [ref=e1144]: $schema
1470
+ - text: (always first)
1471
+ - listitem [ref=e1145]: Existing entries in their original key order, minus the removed key
1472
+ - listitem [ref=e1146]:
1473
+ - text: Any comment header above the first
1474
+ - code [ref=e1147]: "{"
1475
+ - text: (byte-for-byte)
1476
+ - paragraph [ref=e1148]:
1477
+ - text: Mid-body
1478
+ - code [ref=e1149]: //
1479
+ - text: or
1480
+ - code [ref=e1150]: /* */
1481
+ - text: comments are
1482
+ - strong [ref=e1151]: lost
1483
+ - text: on rewrite — the body is re-serialised from the parsed JSON, same as
1484
+ - code [ref=e1152]: connector:add
1485
+ - text: .
1486
+ - heading "Error pathsDirect link to Error paths" [level=3] [ref=e1153]:
1487
+ - text: Error paths
1488
+ - link "Direct link to Error paths" [ref=e1154] [cursor=pointer]:
1489
+ - /url: "#error-paths-2"
1490
+ - text: "#"
1491
+ - table [ref=e1155]:
1492
+ - rowgroup [ref=e1156]:
1493
+ - row "Input Behaviour" [ref=e1157]:
1494
+ - columnheader "Input" [ref=e1158]
1495
+ - columnheader "Behaviour" [ref=e1159]
1496
+ - rowgroup [ref=e1160]:
1497
+ - row "connector:rm with no <name> \"connector:rm requires <name> and @<project>\" (exit 1)" [ref=e1161]:
1498
+ - cell "connector:rm with no <name>" [ref=e1162]:
1499
+ - code [ref=e1163]: connector:rm
1500
+ - text: with no
1501
+ - code [ref=e1164]: <name>
1502
+ - cell "\"connector:rm requires <name> and @<project>\" (exit 1)" [ref=e1165]:
1503
+ - text: "\""
1504
+ - code [ref=e1166]: connector:rm
1505
+ - text: requires
1506
+ - code [ref=e1167]: <name>
1507
+ - text: and
1508
+ - code [ref=e1168]: "@<project>"
1509
+ - text: "\" (exit 1)"
1510
+ - row "connector:rm <name> (no @<project>) \"connector:rm requires @<project>\" (exit 1)" [ref=e1169]:
1511
+ - cell "connector:rm <name> (no @<project>)" [ref=e1170]:
1512
+ - code [ref=e1171]: connector:rm <name>
1513
+ - text: (no
1514
+ - code [ref=e1172]: "@<project>"
1515
+ - text: )
1516
+ - cell "\"connector:rm requires @<project>\" (exit 1)" [ref=e1173]:
1517
+ - text: "\""
1518
+ - code [ref=e1174]: connector:rm
1519
+ - text: requires
1520
+ - code [ref=e1175]: "@<project>"
1521
+ - text: "\" (exit 1)"
1522
+ - row "connector:rm <name> bogus @<project> \"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e1176]:
1523
+ - cell "connector:rm <name> bogus @<project>" [ref=e1177]:
1524
+ - code [ref=e1178]: connector:rm <name> bogus @<project>
1525
+ - cell "\"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e1179]:
1526
+ - text: "\"Bundle [ bogus ] is not registered inside"
1527
+ - code [ref=e1180]: "@<project>"
1528
+ - text: "\" (exit 1)"
1529
+ - row "connector:rm unknown @<project> \"Connector unknown not found in /…/shared/config/connectors.json\" (exit 1)" [ref=e1181]:
1530
+ - cell "connector:rm unknown @<project>" [ref=e1182]:
1531
+ - code [ref=e1183]: connector:rm unknown @<project>
1532
+ - cell "\"Connector unknown not found in /…/shared/config/connectors.json\" (exit 1)" [ref=e1184]:
1533
+ - text: "\"Connector"
1534
+ - code [ref=e1185]: unknown
1535
+ - text: not found in /…/shared/config/connectors.json" (exit 1)
1536
+ - row "connector:rm session api @<project> (lives only in shared) Inherited-from-shared hint (exit 1)" [ref=e1186]:
1537
+ - cell "connector:rm session api @<project> (lives only in shared)" [ref=e1187]:
1538
+ - code [ref=e1188]: connector:rm session api @<project>
1539
+ - text: (lives only in shared)
1540
+ - cell "Inherited-from-shared hint (exit 1)" [ref=e1189]
1541
+ - 'row "connector:rm session @<project> (siblings still reference it) \"Removing shared connector would break N bundle(s): …\" (exit 1; pass --force to override)" [ref=e1190]':
1542
+ - cell "connector:rm session @<project> (siblings still reference it)" [ref=e1191]:
1543
+ - code [ref=e1192]: connector:rm session @<project>
1544
+ - text: (siblings still reference it)
1545
+ - 'cell "\"Removing shared connector would break N bundle(s): …\" (exit 1; pass --force to override)" [ref=e1193]':
1546
+ - text: "\"Removing shared connector would break N bundle(s): …\" (exit 1; pass"
1547
+ - code [ref=e1194]: "--force"
1548
+ - text: to override)
1549
+ - separator [ref=e1195]
1550
+ - heading "connector:migrateDirect link to connectormigrate" [level=2] [ref=e1196]:
1551
+ - code [ref=e1197]: connector:migrate
1552
+ - link "Direct link to connectormigrate" [ref=e1198] [cursor=pointer]:
1553
+ - /url: "#connectormigrate"
1554
+ - text: "#"
1555
+ - paragraph [ref=e1199]:
1556
+ - emphasis [ref=e1200]: New in 0.3.7-alpha.2
1557
+ - paragraph [ref=e1201]:
1558
+ - text: Lint every
1559
+ - code [ref=e1202]: connectors.json
1560
+ - text: in a project (or a single bundle's file) and optionally apply auto-fixable issues in place.
1561
+ - code [ref=e1203]: connector:migrate
1562
+ - text: is
1563
+ - strong [ref=e1204]: explicit and opt-in
1564
+ - text: — the framework never auto-migrates a
1565
+ - code [ref=e1205]: connectors.json
1566
+ - text: at bundle boot. Run it in CI or before committing.
1567
+ - code [ref=e1209]:
1568
+ - generic [ref=e1210]: "gina connector:migrate @<project> # Scan shared + every bundle"
1569
+ - generic [ref=e1211]: "gina connector:migrate <bundle> @<project> # Scan just the bundle's file"
1570
+ - generic [ref=e1212]: "gina connector:migrate @<project> --fix # Apply auto-fixable issues"
1571
+ - generic [ref=e1213]: "gina connector:migrate @<project> --format=json # Machine-readable report"
1572
+ - generic [ref=e1214]:
1573
+ - generic [ref=e1215]:
1574
+ - img [ref=e1217]
1575
+ - text: Dry run by default
1576
+ - paragraph [ref=e1220]:
1577
+ - text: Without
1578
+ - code [ref=e1221]: "--fix"
1579
+ - text: ","
1580
+ - code [ref=e1222]: connector:migrate
1581
+ - text: is a
1582
+ - strong [ref=e1223]: read-only dry run
1583
+ - text: — nothing is written. Pass
1584
+ - code [ref=e1224]: "--fix"
1585
+ - text: to apply the auto-fixable issues.
1586
+ - heading "FlagsDirect link to Flags" [level=3] [ref=e1225]:
1587
+ - text: Flags
1588
+ - link "Direct link to Flags" [ref=e1226] [cursor=pointer]:
1589
+ - /url: "#flags-2"
1590
+ - text: "#"
1591
+ - table [ref=e1227]:
1592
+ - rowgroup [ref=e1228]:
1593
+ - row "Flag Description" [ref=e1229]:
1594
+ - columnheader "Flag" [ref=e1230]
1595
+ - columnheader "Description" [ref=e1231]
1596
+ - rowgroup [ref=e1232]:
1597
+ - row "--fix Apply auto-fixable issues to disk. Without it, connector:migrate is a read-only dry run." [ref=e1233]:
1598
+ - cell "--fix" [ref=e1234]:
1599
+ - code [ref=e1235]: "--fix"
1600
+ - cell "Apply auto-fixable issues to disk. Without it, connector:migrate is a read-only dry run." [ref=e1236]:
1601
+ - text: Apply auto-fixable issues to disk. Without it,
1602
+ - code [ref=e1237]: connector:migrate
1603
+ - text: is a read-only dry run.
1604
+ - row "--format=json Emit a machine-readable JSON report instead of the human-readable text summary." [ref=e1238]:
1605
+ - cell "--format=json" [ref=e1239]:
1606
+ - code [ref=e1240]: "--format=json"
1607
+ - cell "Emit a machine-readable JSON report instead of the human-readable text summary." [ref=e1241]
1608
+ - heading "ChecksDirect link to Checks" [level=3] [ref=e1242]:
1609
+ - text: Checks
1610
+ - link "Direct link to Checks" [ref=e1243] [cursor=pointer]:
1611
+ - /url: "#checks"
1612
+ - text: "#"
1613
+ - table [ref=e1244]:
1614
+ - rowgroup [ref=e1245]:
1615
+ - row "Check Severity Auto-fixable Description" [ref=e1246]:
1616
+ - columnheader "Check" [ref=e1247]
1617
+ - columnheader "Severity" [ref=e1248]
1618
+ - columnheader "Auto-fixable" [ref=e1249]
1619
+ - columnheader "Description" [ref=e1250]
1620
+ - rowgroup [ref=e1251]:
1621
+ - 'row "missing-schema info yes Top-level $schema key is absent. --fix injects \"$schema\": \"https://gina.io/schema/connectors.json\" at the top of the object, preserving the leading comment header and existing key order." [ref=e1252]':
1622
+ - cell "missing-schema" [ref=e1253]:
1623
+ - code [ref=e1254]: missing-schema
1624
+ - cell "info" [ref=e1255]
1625
+ - cell "yes" [ref=e1256]
1626
+ - 'cell "Top-level $schema key is absent. --fix injects \"$schema\": \"https://gina.io/schema/connectors.json\" at the top of the object, preserving the leading comment header and existing key order." [ref=e1257]':
1627
+ - text: Top-level
1628
+ - code [ref=e1258]: $schema
1629
+ - text: key is absent.
1630
+ - code [ref=e1259]: "--fix"
1631
+ - text: injects
1632
+ - code [ref=e1260]: "\"$schema\": \"https://gina.io/schema/connectors.json\""
1633
+ - text: at the top of the object, preserving the leading comment header and existing key order.
1634
+ - row "bare-key-no-connector warn no An entry has no connector field and its key is not in the built-in enum (couchbase, mysql, postgresql, sqlite, redis, ai). The correct driver cannot be inferred from the key name, so re-declare the entry explicitly via gina connector:add <name> @<project> --connector=<type> --force." [ref=e1261]:
1635
+ - cell "bare-key-no-connector" [ref=e1262]:
1636
+ - code [ref=e1263]: bare-key-no-connector
1637
+ - cell "warn" [ref=e1264]
1638
+ - cell "no" [ref=e1265]
1639
+ - cell "An entry has no connector field and its key is not in the built-in enum (couchbase, mysql, postgresql, sqlite, redis, ai). The correct driver cannot be inferred from the key name, so re-declare the entry explicitly via gina connector:add <name> @<project> --connector=<type> --force." [ref=e1266]:
1640
+ - text: An entry has no
1641
+ - code [ref=e1267]: connector
1642
+ - text: field
1643
+ - strong [ref=e1268]: and
1644
+ - text: its key is not in the built-in enum (
1645
+ - code [ref=e1269]: couchbase
1646
+ - text: ","
1647
+ - code [ref=e1270]: mysql
1648
+ - text: ","
1649
+ - code [ref=e1271]: postgresql
1650
+ - text: ","
1651
+ - code [ref=e1272]: sqlite
1652
+ - text: ","
1653
+ - code [ref=e1273]: redis
1654
+ - text: ","
1655
+ - code [ref=e1274]: ai
1656
+ - text: ). The correct driver cannot be inferred from the key name, so re-declare the entry explicitly via
1657
+ - code [ref=e1275]: gina connector:add <name> @<project> --connector=<type> --force
1658
+ - text: .
1659
+ - heading "Example — dry runDirect link to Example — dry run" [level=3] [ref=e1276]:
1660
+ - text: Example — dry run
1661
+ - link "Direct link to Example — dry run" [ref=e1277] [cursor=pointer]:
1662
+ - /url: "#example--dry-run"
1663
+ - text: "#"
1664
+ - code [ref=e1281]:
1665
+ - generic [ref=e1282]: gina connector:migrate @myproject
1666
+ - code [ref=e1286]:
1667
+ - generic [ref=e1287]: "[dry-run] /.../shared/config/connectors.json (shared) — 2 connector(s), 1 issue(s) remaining"
1668
+ - generic [ref=e1288]: "INFO missing-schema — Top-level `$schema` key missing. Auto-fix adds `\"$schema\": \"https://gina.io/schema/connectors.json\"`."
1669
+ - generic [ref=e1289]: "[dry-run] /.../api/config/connectors.json (bundle `api`) — 1 connector(s), no issues"
1670
+ - generic [ref=e1290]: "[dry-run] /.../admin/config/connectors.json (bundle `admin`) — 2 connector(s), 2 issue(s) remaining"
1671
+ - generic [ref=e1291]: "INFO missing-schema — Top-level `$schema` key missing. Auto-fix adds `\"$schema\": \"https://gina.io/schema/connectors.json\"`."
1672
+ - generic [ref=e1292]: "WARN bare-key-no-connector — `mongodb` Entry `mongodb` has no `connector` field and key `mongodb` is not in the built-in enum (couchbase, mysql, postgresql, sqlite, redis, ai). Add `\"connector\": \"<type>\"` by hand, or re-declare via `gina connector:add mongodb @<project> --connector=<type> --force`."
1673
+ - generic [ref=e1293]: Re-run with --fix to apply 2 auto-fixable issue(s). 1 issue(s) need manual attention.
1674
+ - heading "Example — apply fixesDirect link to Example — apply fixes" [level=3] [ref=e1294]:
1675
+ - text: Example — apply fixes
1676
+ - link "Direct link to Example — apply fixes" [ref=e1295] [cursor=pointer]:
1677
+ - /url: "#example--apply-fixes"
1678
+ - text: "#"
1679
+ - code [ref=e1299]:
1680
+ - generic [ref=e1300]: gina connector:migrate @myproject --fix
1681
+ - code [ref=e1304]:
1682
+ - generic [ref=e1305]: "[fix] /.../shared/config/connectors.json (shared) — 2 connector(s), 1 fixed"
1683
+ - generic [ref=e1306]: "FIXED missing-schema — Top-level `$schema` key missing. Auto-fix adds `\"$schema\": \"https://gina.io/schema/connectors.json\"`."
1684
+ - generic [ref=e1307]: "[fix] /.../api/config/connectors.json (bundle `api`) — 1 connector(s), no issues"
1685
+ - generic [ref=e1308]: "[fix] /.../admin/config/connectors.json (bundle `admin`) — 2 connector(s), 1 fixed, 1 issue(s) remaining"
1686
+ - generic [ref=e1309]: "FIXED missing-schema — Top-level `$schema` key missing. Auto-fix adds `\"$schema\": \"https://gina.io/schema/connectors.json\"`."
1687
+ - generic [ref=e1310]: "WARN bare-key-no-connector — `mongodb` Entry `mongodb` has no `connector` field and key `mongodb` is not in the built-in enum (couchbase, mysql, postgresql, sqlite, redis, ai). Add `\"connector\": \"<type>\"` by hand, or re-declare via `gina connector:add mongodb @<project> --connector=<type> --force`."
1688
+ - generic [ref=e1311]: Applied 2 fix(es). 1 issue(s) still need manual attention.
1689
+ - paragraph [ref=e1312]:
1690
+ - text: Re-running after
1691
+ - code [ref=e1313]: "--fix"
1692
+ - text: is idempotent — the fixable issue no longer fires, and only the manual-attention warnings remain.
1693
+ - heading "JSON outputDirect link to JSON output" [level=3] [ref=e1314]:
1694
+ - text: JSON output
1695
+ - link "Direct link to JSON output" [ref=e1315] [cursor=pointer]:
1696
+ - /url: "#json-output-1"
1697
+ - text: "#"
1698
+ - code [ref=e1319]:
1699
+ - generic [ref=e1320]: gina connector:migrate @myproject --format=json
1700
+ - code [ref=e1324]:
1701
+ - generic [ref=e1325]: "{"
1702
+ - generic [ref=e1326]: "\"project\": \"myproject\","
1703
+ - generic [ref=e1327]: "\"scope\": \"project\","
1704
+ - generic [ref=e1328]: "\"bundle\": null,"
1705
+ - generic [ref=e1329]: "\"fixApplied\": false,"
1706
+ - generic [ref=e1330]: "\"files\": ["
1707
+ - generic [ref=e1331]: "{"
1708
+ - generic [ref=e1332]: "\"path\": \"/.../shared/config/connectors.json\","
1709
+ - generic [ref=e1333]: "\"bundle\": null,"
1710
+ - generic [ref=e1334]: "\"exists\": true,"
1711
+ - generic [ref=e1335]: "\"parseError\": null,"
1712
+ - generic [ref=e1336]: "\"connectorCount\": 2,"
1713
+ - generic [ref=e1337]: "\"fixed\": [],"
1714
+ - generic [ref=e1338]: "\"issues\": ["
1715
+ - generic [ref=e1339]: "{"
1716
+ - generic [ref=e1340]: "\"type\": \"missing-schema\","
1717
+ - generic [ref=e1341]: "\"severity\": \"info\","
1718
+ - generic [ref=e1342]: "\"fixable\": true,"
1719
+ - generic [ref=e1343]: "\"message\": \"Top-level `$schema` key missing. Auto-fix adds `\\\"$schema\\\": \\\"https://gina.io/schema/connectors.json\\\"`.\""
1720
+ - generic [ref=e1344]: "}"
1721
+ - generic [ref=e1345]: "]"
1722
+ - generic [ref=e1346]: "}"
1723
+ - generic [ref=e1347]: "]"
1724
+ - generic [ref=e1348]: "}"
1725
+ - table [ref=e1349]:
1726
+ - rowgroup [ref=e1350]:
1727
+ - row "Field Description" [ref=e1351]:
1728
+ - columnheader "Field" [ref=e1352]
1729
+ - columnheader "Description" [ref=e1353]
1730
+ - rowgroup [ref=e1354]:
1731
+ - row "project Project short-name (manifest name with the leading @ stripped)" [ref=e1355]:
1732
+ - cell "project" [ref=e1356]:
1733
+ - code [ref=e1357]: project
1734
+ - cell "Project short-name (manifest name with the leading @ stripped)" [ref=e1358]:
1735
+ - text: Project short-name (manifest
1736
+ - code [ref=e1359]: name
1737
+ - text: with the leading
1738
+ - code [ref=e1360]: "@"
1739
+ - text: stripped)
1740
+ - row "scope \"project\" when <bundle> is absent, \"bundle\" when present" [ref=e1361]:
1741
+ - cell "scope" [ref=e1362]:
1742
+ - code [ref=e1363]: scope
1743
+ - cell "\"project\" when <bundle> is absent, \"bundle\" when present" [ref=e1364]:
1744
+ - code [ref=e1365]: "\"project\""
1745
+ - text: when
1746
+ - code [ref=e1366]: <bundle>
1747
+ - text: is absent,
1748
+ - code [ref=e1367]: "\"bundle\""
1749
+ - text: when present
1750
+ - row "bundle Bundle name when scope is \"bundle\", otherwise null" [ref=e1368]:
1751
+ - cell "bundle" [ref=e1369]:
1752
+ - code [ref=e1370]: bundle
1753
+ - cell "Bundle name when scope is \"bundle\", otherwise null" [ref=e1371]:
1754
+ - text: Bundle name when scope is
1755
+ - code [ref=e1372]: "\"bundle\""
1756
+ - text: ", otherwise"
1757
+ - code [ref=e1373]: "null"
1758
+ - row "fixApplied true when --fix was passed (regardless of whether any fix ran)" [ref=e1374]:
1759
+ - cell "fixApplied" [ref=e1375]:
1760
+ - code [ref=e1376]: fixApplied
1761
+ - cell "true when --fix was passed (regardless of whether any fix ran)" [ref=e1377]:
1762
+ - code [ref=e1378]: "true"
1763
+ - text: when
1764
+ - code [ref=e1379]: "--fix"
1765
+ - text: was passed (regardless of whether any fix ran)
1766
+ - row "files[] One entry per scanned connectors.json file — path, owning bundle (null for shared), exists, parseError, connectorCount (excluding $schema), fixed[], issues[]" [ref=e1380]:
1767
+ - cell "files[]" [ref=e1381]:
1768
+ - code [ref=e1382]: files[]
1769
+ - cell "One entry per scanned connectors.json file — path, owning bundle (null for shared), exists, parseError, connectorCount (excluding $schema), fixed[], issues[]" [ref=e1383]:
1770
+ - text: One entry per scanned
1771
+ - code [ref=e1384]: connectors.json
1772
+ - text: file —
1773
+ - code [ref=e1385]: path
1774
+ - text: ", owning"
1775
+ - code [ref=e1386]: bundle
1776
+ - text: (null for shared),
1777
+ - code [ref=e1387]: exists
1778
+ - text: ","
1779
+ - code [ref=e1388]: parseError
1780
+ - text: ","
1781
+ - code [ref=e1389]: connectorCount
1782
+ - text: (excluding
1783
+ - code [ref=e1390]: $schema
1784
+ - text: ),
1785
+ - code [ref=e1391]: fixed[]
1786
+ - text: ","
1787
+ - code [ref=e1392]: issues[]
1788
+ - heading "Comment header preservationDirect link to Comment header preservation" [level=3] [ref=e1393]:
1789
+ - text: Comment header preservation
1790
+ - link "Direct link to Comment header preservation" [ref=e1394] [cursor=pointer]:
1791
+ - /url: "#comment-header-preservation"
1792
+ - text: "#"
1793
+ - paragraph [ref=e1395]:
1794
+ - text: The leading
1795
+ - code [ref=e1396]: //
1796
+ - text: or
1797
+ - code [ref=e1397]: /* */
1798
+ - text: comment header above the first
1799
+ - code [ref=e1398]: "{"
1800
+ - text: is preserved byte-for-byte when
1801
+ - code [ref=e1399]: "--fix"
1802
+ - text: rewrites the file. Mid-body comments are lost on rewrite (same convention as
1803
+ - code [ref=e1400]: connector:add
1804
+ - text: and
1805
+ - code [ref=e1401]: connector:rm
1806
+ - text: ).
1807
+ - heading "Why there is no auto-migrate hookDirect link to Why there is no auto-migrate hook" [level=3] [ref=e1402]:
1808
+ - text: Why there is no auto-migrate hook
1809
+ - link "Direct link to Why there is no auto-migrate hook" [ref=e1403] [cursor=pointer]:
1810
+ - /url: "#why-there-is-no-auto-migrate-hook"
1811
+ - text: "#"
1812
+ - paragraph [ref=e1404]:
1813
+ - code [ref=e1405]: connector:migrate
1814
+ - text: does
1815
+ - strong [ref=e1406]: not
1816
+ - text: run automatically at bundle boot —
1817
+ - code [ref=e1407]: core/config.js
1818
+ - text: is unchanged by this command. A runtime auto-migration hook is the right long-term design, but only when a concrete old-shape → new-shape delta exists to migrate. Today's schema has no such delta (the enum and field shapes are stable since 0.3.7), so a boot-path hook would be scaffolding around a non-existent problem. The real hook is deferred to
1819
+ - code [ref=e1408]: 0.4.0
1820
+ - text: alongside the Couchbase SDK v2 removal (
1821
+ - code [ref=e1409]: "#CN8"
1822
+ - text: ), when the migration will have a real before/after to act on.
1823
+ - heading "Error pathsDirect link to Error paths" [level=3] [ref=e1410]:
1824
+ - text: Error paths
1825
+ - link "Direct link to Error paths" [ref=e1411] [cursor=pointer]:
1826
+ - /url: "#error-paths-3"
1827
+ - text: "#"
1828
+ - table [ref=e1412]:
1829
+ - rowgroup [ref=e1413]:
1830
+ - row "Input Behaviour" [ref=e1414]:
1831
+ - columnheader "Input" [ref=e1415]
1832
+ - columnheader "Behaviour" [ref=e1416]
1833
+ - rowgroup [ref=e1417]:
1834
+ - row "connector:migrate with no @<project> \"connector:migrate requires @<project>\" (exit 1)" [ref=e1418]:
1835
+ - cell "connector:migrate with no @<project>" [ref=e1419]:
1836
+ - code [ref=e1420]: connector:migrate
1837
+ - text: with no
1838
+ - code [ref=e1421]: "@<project>"
1839
+ - cell "\"connector:migrate requires @<project>\" (exit 1)" [ref=e1422]:
1840
+ - text: "\""
1841
+ - code [ref=e1423]: connector:migrate
1842
+ - text: requires
1843
+ - code [ref=e1424]: "@<project>"
1844
+ - text: "\" (exit 1)"
1845
+ - row "connector:migrate @unknown \"Project [unknown] not found in your projects list\" (CmdHelper, exit 1)" [ref=e1425]:
1846
+ - cell "connector:migrate @unknown" [ref=e1426]:
1847
+ - code [ref=e1427]: connector:migrate @unknown
1848
+ - cell "\"Project [unknown] not found in your projects list\" (CmdHelper, exit 1)" [ref=e1428]
1849
+ - row "connector:migrate bogus @<project> \"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e1429]:
1850
+ - cell "connector:migrate bogus @<project>" [ref=e1430]:
1851
+ - code [ref=e1431]: connector:migrate bogus @<project>
1852
+ - cell "\"Bundle [ bogus ] is not registered inside @<project>\" (exit 1)" [ref=e1432]:
1853
+ - text: "\"Bundle [ bogus ] is not registered inside"
1854
+ - code [ref=e1433]: "@<project>"
1855
+ - text: "\" (exit 1)"
1856
+ - 'row "connector:migrate @<project> --format=xml \"Unknown --format value xml. Supported: json.\" (exit 1)" [ref=e1434]':
1857
+ - cell "connector:migrate @<project> --format=xml" [ref=e1435]:
1858
+ - code [ref=e1436]: connector:migrate @<project> --format=xml
1859
+ - 'cell "\"Unknown --format value xml. Supported: json.\" (exit 1)" [ref=e1437]':
1860
+ - text: "\"Unknown --format value"
1861
+ - code [ref=e1438]: xml
1862
+ - text: ". Supported: json.\" (exit 1)"
1863
+ - row "Target connectors.json missing Reported as \"missing (skipped)\" — not an error (exit 0)" [ref=e1439]:
1864
+ - cell "Target connectors.json missing" [ref=e1440]:
1865
+ - text: Target
1866
+ - code [ref=e1441]: connectors.json
1867
+ - text: missing
1868
+ - cell "Reported as \"missing (skipped)\" — not an error (exit 0)" [ref=e1442]
1869
+ - separator [ref=e1443]
1870
+ - heading "connector:helpDirect link to connectorhelp" [level=2] [ref=e1444]:
1871
+ - code [ref=e1445]: connector:help
1872
+ - link "Direct link to connectorhelp" [ref=e1446] [cursor=pointer]:
1873
+ - /url: "#connectorhelp"
1874
+ - text: "#"
1875
+ - paragraph [ref=e1447]:
1876
+ - text: Print the usage summary for the
1877
+ - code [ref=e1448]: connector
1878
+ - text: command group.
1879
+ - code [ref=e1452]:
1880
+ - generic [ref=e1453]: gina connector:help
1881
+ - code [ref=e1457]:
1882
+ - generic [ref=e1458]: gina connector
1883
+ - generic [ref=e1459]:
1884
+ - generic [ref=e1460]:
1885
+ - generic [ref=e1461]: Was this page helpful?
1886
+ - generic [ref=e1462]:
1887
+ - button "Yes, this was helpful" [ref=e1463] [cursor=pointer]:
1888
+ - generic [ref=e1464]: 👍
1889
+ - generic [ref=e1465]: –
1890
+ - button "No, this was not helpful" [ref=e1466] [cursor=pointer]:
1891
+ - generic [ref=e1467]: 👎
1892
+ - generic [ref=e1468]: –
1893
+ - link "Edit this page" [ref=e1472] [cursor=pointer]:
1894
+ - /url: https://github.com/gina-io/docs/tree/main/docs/cli/connector.md
1895
+ - img [ref=e1473]
1896
+ - text: Edit this page
1897
+ - navigation "Docs pages" [ref=e1477]:
1898
+ - link "Previous « service" [ref=e1478] [cursor=pointer]:
1899
+ - /url: /docs/cli/cli-service
1900
+ - generic [ref=e1479]: Previous
1901
+ - generic [ref=e1480]: « service
1902
+ - link "Next Overview »" [ref=e1481] [cursor=pointer]:
1903
+ - /url: /docs/reference/
1904
+ - generic [ref=e1482]: Next
1905
+ - generic [ref=e1483]: Overview »
1906
+ - list [ref=e1486]:
1907
+ - listitem [ref=e1487]:
1908
+ - link "connector:list" [ref=e1488] [cursor=pointer]:
1909
+ - /url: "#connectorlist"
1910
+ - code [ref=e1489]: connector:list
1911
+ - list [ref=e1490]:
1912
+ - listitem [ref=e1491]:
1913
+ - link "Output" [ref=e1492] [cursor=pointer]:
1914
+ - /url: "#output"
1915
+ - listitem [ref=e1493]:
1916
+ - link "JSON output" [ref=e1494] [cursor=pointer]:
1917
+ - /url: "#json-output"
1918
+ - listitem [ref=e1495]:
1919
+ - link "Driver resolution" [ref=e1496] [cursor=pointer]:
1920
+ - /url: "#driver-resolution"
1921
+ - listitem [ref=e1497]:
1922
+ - link "Overlay semantics" [ref=e1498] [cursor=pointer]:
1923
+ - /url: "#overlay-semantics"
1924
+ - listitem [ref=e1499]:
1925
+ - link "Comment tolerance" [ref=e1500] [cursor=pointer]:
1926
+ - /url: "#comment-tolerance"
1927
+ - listitem [ref=e1501]:
1928
+ - link "Error paths" [ref=e1502] [cursor=pointer]:
1929
+ - /url: "#error-paths"
1930
+ - listitem [ref=e1503]:
1931
+ - link "connector:add" [ref=e1504] [cursor=pointer]:
1932
+ - /url: "#connectoradd"
1933
+ - code [ref=e1505]: connector:add
1934
+ - list [ref=e1506]:
1935
+ - listitem [ref=e1507]:
1936
+ - link "Flags" [ref=e1508] [cursor=pointer]:
1937
+ - /url: "#flags"
1938
+ - listitem [ref=e1509]:
1939
+ - link "Examples" [ref=e1510] [cursor=pointer]:
1940
+ - /url: "#examples"
1941
+ - listitem [ref=e1511]:
1942
+ - link "Output" [ref=e1512] [cursor=pointer]:
1943
+ - /url: "#output-1"
1944
+ - listitem [ref=e1513]:
1945
+ - link "Driver install with --install" [ref=e1514] [cursor=pointer]:
1946
+ - /url: "#driver-install-with---install"
1947
+ - text: Driver install with
1948
+ - code [ref=e1515]: "--install"
1949
+ - listitem [ref=e1516]:
1950
+ - link "Version pin — where it applies" [ref=e1517] [cursor=pointer]:
1951
+ - /url: "#version-pin--where-it-applies"
1952
+ - listitem [ref=e1518]:
1953
+ - link "Merge behaviour" [ref=e1519] [cursor=pointer]:
1954
+ - /url: "#merge-behaviour"
1955
+ - listitem [ref=e1520]:
1956
+ - link "Error paths" [ref=e1521] [cursor=pointer]:
1957
+ - /url: "#error-paths-1"
1958
+ - listitem [ref=e1522]:
1959
+ - link "connector:rm" [ref=e1523] [cursor=pointer]:
1960
+ - /url: "#connectorrm"
1961
+ - code [ref=e1524]: connector:rm
1962
+ - list [ref=e1525]:
1963
+ - listitem [ref=e1526]:
1964
+ - link "Flags" [ref=e1527] [cursor=pointer]:
1965
+ - /url: "#flags-1"
1966
+ - listitem [ref=e1528]:
1967
+ - link "Scoping rules" [ref=e1529] [cursor=pointer]:
1968
+ - /url: "#scoping-rules"
1969
+ - listitem [ref=e1530]:
1970
+ - link "Examples" [ref=e1531] [cursor=pointer]:
1971
+ - /url: "#examples-1"
1972
+ - listitem [ref=e1532]:
1973
+ - link "Output" [ref=e1533] [cursor=pointer]:
1974
+ - /url: "#output-2"
1975
+ - listitem [ref=e1534]:
1976
+ - link "Dry-run" [ref=e1535] [cursor=pointer]:
1977
+ - /url: "#dry-run"
1978
+ - listitem [ref=e1536]:
1979
+ - link "Project-level guard (--force)" [ref=e1537] [cursor=pointer]:
1980
+ - /url: "#project-level-guard---force"
1981
+ - text: Project-level guard (
1982
+ - code [ref=e1538]: "--force"
1983
+ - text: )
1984
+ - listitem [ref=e1539]:
1985
+ - link "Inherited-from-shared hint" [ref=e1540] [cursor=pointer]:
1986
+ - /url: "#inherited-from-shared-hint"
1987
+ - listitem [ref=e1541]:
1988
+ - link "Merge behaviour" [ref=e1542] [cursor=pointer]:
1989
+ - /url: "#merge-behaviour-1"
1990
+ - listitem [ref=e1543]:
1991
+ - link "Error paths" [ref=e1544] [cursor=pointer]:
1992
+ - /url: "#error-paths-2"
1993
+ - listitem [ref=e1545]:
1994
+ - link "connector:migrate" [ref=e1546] [cursor=pointer]:
1995
+ - /url: "#connectormigrate"
1996
+ - code [ref=e1547]: connector:migrate
1997
+ - list [ref=e1548]:
1998
+ - listitem [ref=e1549]:
1999
+ - link "Flags" [ref=e1550] [cursor=pointer]:
2000
+ - /url: "#flags-2"
2001
+ - listitem [ref=e1551]:
2002
+ - link "Checks" [ref=e1552] [cursor=pointer]:
2003
+ - /url: "#checks"
2004
+ - listitem [ref=e1553]:
2005
+ - link "Example — dry run" [ref=e1554] [cursor=pointer]:
2006
+ - /url: "#example--dry-run"
2007
+ - listitem [ref=e1555]:
2008
+ - link "Example — apply fixes" [ref=e1556] [cursor=pointer]:
2009
+ - /url: "#example--apply-fixes"
2010
+ - listitem [ref=e1557]:
2011
+ - link "JSON output" [ref=e1558] [cursor=pointer]:
2012
+ - /url: "#json-output-1"
2013
+ - listitem [ref=e1559]:
2014
+ - link "Comment header preservation" [ref=e1560] [cursor=pointer]:
2015
+ - /url: "#comment-header-preservation"
2016
+ - listitem [ref=e1561]:
2017
+ - link "Why there is no auto-migrate hook" [ref=e1562] [cursor=pointer]:
2018
+ - /url: "#why-there-is-no-auto-migrate-hook"
2019
+ - listitem [ref=e1563]:
2020
+ - link "Error paths" [ref=e1564] [cursor=pointer]:
2021
+ - /url: "#error-paths-3"
2022
+ - listitem [ref=e1565]:
2023
+ - link "connector:help" [ref=e1566] [cursor=pointer]:
2024
+ - /url: "#connectorhelp"
2025
+ - code [ref=e1567]: connector:help
2026
+ - contentinfo [ref=e1568]:
2027
+ - generic [ref=e1569]:
2028
+ - generic [ref=e1570]:
2029
+ - generic [ref=e1571]:
2030
+ - generic [ref=e1572]: Docs
2031
+ - list [ref=e1573]:
2032
+ - listitem [ref=e1574]:
2033
+ - link "Getting Started" [ref=e1575] [cursor=pointer]:
2034
+ - /url: /docs/intro
2035
+ - generic [ref=e1576]:
2036
+ - generic [ref=e1577]: Community
2037
+ - list [ref=e1578]:
2038
+ - listitem [ref=e1579]:
2039
+ - link "GitHub Issues(opens in new tab)" [ref=e1580] [cursor=pointer]:
2040
+ - /url: https://github.com/gina-io/gina/issues
2041
+ - text: GitHub Issues
2042
+ - img "(opens in new tab)" [ref=e1581]
2043
+ - listitem [ref=e1583]:
2044
+ - link "GitHub Discussions(opens in new tab)" [ref=e1584] [cursor=pointer]:
2045
+ - /url: https://github.com/gina-io/gina/discussions
2046
+ - text: GitHub Discussions
2047
+ - img "(opens in new tab)" [ref=e1585]
2048
+ - listitem [ref=e1587]:
2049
+ - link "Support Gina" [ref=e1588] [cursor=pointer]:
2050
+ - /url: /docs/support
2051
+ - generic [ref=e1589]:
2052
+ - generic [ref=e1590]: More
2053
+ - list [ref=e1591]:
2054
+ - listitem [ref=e1592]:
2055
+ - link "npm(opens in new tab)" [ref=e1593] [cursor=pointer]:
2056
+ - /url: https://www.npmjs.com/package/gina
2057
+ - text: npm
2058
+ - img "(opens in new tab)" [ref=e1594]
2059
+ - generic [ref=e1597]: Copyright © 2009-2026 Gina I/O.
2060
+ - button "Collapse sidebar" [ref=e1599] [cursor=pointer]:
2061
+ - img [ref=e1600]