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