gina 0.5.25 → 0.5.26
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.
- package/CHANGELOG.md +17 -0
- package/README.md +22 -15
- package/ROADMAP.md +4 -3
- package/bin/cli +22 -1
- package/bin/cmd +11 -1
- package/bin/gina-init +1 -0
- package/framework/v0.5.26/VERSION +1 -0
- package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/js/gina.js +10 -6
- package/framework/{v0.5.25 → v0.5.26}/core/config.js +29 -5
- package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/index.js +48 -3
- package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.render-json.js +4 -0
- package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.render-nunjucks.js +4 -0
- package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.render-swig.js +4 -0
- package/framework/{v0.5.25 → v0.5.26}/core/server.isaac.js +12 -0
- package/framework/{v0.5.25 → v0.5.26}/core/server.js +235 -1
- package/framework/{v0.5.25 → v0.5.26}/core/template/conf/settings.json +36 -0
- package/framework/{v0.5.25 → v0.5.26}/lib/authz-gate/src/main.js +169 -2
- package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/arguments.json +1 -0
- package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/help.txt +19 -6
- package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/mcp-start.js +47 -5
- package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/openapi.js +37 -4
- package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/init.js +28 -1
- package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/set.js +5 -0
- package/framework/{v0.5.25 → v0.5.26}/lib/connector-error/src/main.js +8 -4
- package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/containers/mq/listener.js +32 -2
- package/framework/{v0.5.25 → v0.5.26}/lib/mcp-http/src/main.js +110 -11
- package/framework/{v0.5.25 → v0.5.26}/lib/merge/src/main.js +10 -6
- package/framework/{v0.5.25 → v0.5.26}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +10 -5
- package/package.json +3 -3
- package/resources/home/settings.json +1 -0
- package/schema/routing.json +20 -0
- package/schema/settings.json +13 -0
- package/utils/helper.js +1 -1
- package/framework/v0.5.25/VERSION +0 -1
- /package/framework/{v0.5.25 → v0.5.26}/AUTHORS +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/LICENSE +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/html/static.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/content.encoding +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/dev/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/gna.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/locales/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/locales/currency.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/locales/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/mime.types +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/model/entity.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/model/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/model/template/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/router.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/server.express.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/status.codes +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/_gitignore +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/conf/env.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/conf/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/console.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/context.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/data/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/data/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/json/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/json/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/path.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/prototypes.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/task.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/helpers/text.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/admin/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/archiver/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/archiver/build.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/archiver/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/async/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/async/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/audit/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/audit-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cache/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cache/build.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cache/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/collection/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/collection/build.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/collection/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/config.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cron/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cron/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/domain/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/domain/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/dto/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/generator/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/i18n/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/image-build/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inherits/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inherits/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/instrument/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/job/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/job/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/job-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/math/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/merge/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/merge/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/metrics/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/model.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/proc.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/routing/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/routing/build.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/routing/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/secrets/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/session-store.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/shell.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/state.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/url/README.md +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/url/index.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/url/routing.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/uuid/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/validator.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/watcher/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.5.25 → v0.5.26}/lib/ws-session/src/main.js +0 -0
|
@@ -237,6 +237,7 @@ function MCPStart(opt, cmd) {
|
|
|
237
237
|
var port = resolveHttpPort(mcpDoc);
|
|
238
238
|
var authToken = resolveAuthToken(mcpDoc);
|
|
239
239
|
var allowedOrigins = resolveAllowedOrigins(mcpDoc);
|
|
240
|
+
var allowInsecure = resolveAllowInsecure(mcpDoc);
|
|
240
241
|
|
|
241
242
|
httpTransport = mcpHttp.createHttpTransport({
|
|
242
243
|
mcpServer: server,
|
|
@@ -244,13 +245,16 @@ function MCPStart(opt, cmd) {
|
|
|
244
245
|
port: port,
|
|
245
246
|
authToken: authToken,
|
|
246
247
|
allowedOrigins: allowedOrigins,
|
|
248
|
+
allowInsecure: allowInsecure,
|
|
247
249
|
onError: function(err) {
|
|
248
250
|
console.error('[ '+ bundle +' ][mcp] HTTP transport: ' + (err && err.message || err));
|
|
249
251
|
}
|
|
250
252
|
});
|
|
251
253
|
|
|
252
254
|
httpTransport.start().then(function(info) {
|
|
253
|
-
var authNote = authToken
|
|
255
|
+
var authNote = authToken
|
|
256
|
+
? ' (bearer auth: enabled)'
|
|
257
|
+
: (allowInsecure ? ' (bearer auth: none — allowInsecure asserted)' : '');
|
|
254
258
|
console.info('[ '+ bundle +' ][mcp] MCP server listening on http://'+ info.host +':'+ info.port + authNote +'. Dispatch target: '+ baseUrl +' (timeout: '+ timeoutMs +' ms, maxInFlight: '+ maxInFlight +'). '+ mcpDoc.tools.length +' tool'+ (mcpDoc.tools.length === 1 ? '' : 's') +' exposed.');
|
|
255
259
|
}, function(err) {
|
|
256
260
|
return end( new Error('Failed to start HTTP transport on '+ host +':'+ port +': '+ (err && err.message || err)) );
|
|
@@ -360,9 +364,15 @@ function MCPStart(opt, cmd) {
|
|
|
360
364
|
* Resolves the HTTP bind host. Precedence:
|
|
361
365
|
* 1. `--http-host=<host>` CLI flag
|
|
362
366
|
* 2. `mcp.json > server > httpHost`
|
|
363
|
-
* 3. `process.env.GINA_HOST_V4`
|
|
364
|
-
*
|
|
365
|
-
*
|
|
367
|
+
* 3. `process.env.GINA_HOST_V4` — INERT under the CLI. `filterArgs()`
|
|
368
|
+
* moves every GINA_* key into `process.gina` and deletes it from
|
|
369
|
+
* `process.env`, so this read is always undefined there.
|
|
370
|
+
* Deliberately NOT converted to `getEnvVar` the way the auth-token
|
|
371
|
+
* tier was: `host_v4` is the address clients CONNECT to (commonly a
|
|
372
|
+
* LAN address), never a bind address — reviving this tier would move
|
|
373
|
+
* the default bind OFF loopback and expose the transport. The correct
|
|
374
|
+
* replacement is `bind_host` / `GINA_BIND_HOST`, tracked separately.
|
|
375
|
+
* 4. `'127.0.0.1'` — in practice the effective default, per (3).
|
|
366
376
|
*
|
|
367
377
|
* @private
|
|
368
378
|
* @param {object} mcpDoc
|
|
@@ -429,12 +439,44 @@ function MCPStart(opt, cmd) {
|
|
|
429
439
|
if (mcpDoc && mcpDoc.server && typeof(mcpDoc.server.authToken) === 'string' && mcpDoc.server.authToken) {
|
|
430
440
|
return mcpDoc.server.authToken;
|
|
431
441
|
}
|
|
432
|
-
|
|
442
|
+
// `filterArgs()` (bin/cli) moves every GINA_* key OUT of `process.env`
|
|
443
|
+
// into `process.gina` and deletes the original, so a bare
|
|
444
|
+
// `process.env.GINA_MCP_AUTH_TOKEN` read is always undefined under the
|
|
445
|
+
// CLI — the documented env path silently yielded NO token, leaving the
|
|
446
|
+
// transport unauthenticated. `getEnvVar` is the supported reader; the
|
|
447
|
+
// direct read stays as the fallback for embedders that never ran the sweep.
|
|
448
|
+
var env = (typeof(getEnvVar) === 'function' && getEnvVar('GINA_MCP_AUTH_TOKEN'))
|
|
449
|
+
|| process.env.GINA_MCP_AUTH_TOKEN;
|
|
433
450
|
if (typeof(env) === 'string' && env) return env;
|
|
434
451
|
return null;
|
|
435
452
|
};
|
|
436
453
|
|
|
437
454
|
|
|
455
|
+
/**
|
|
456
|
+
* Resolves the insecure-transport waiver. Precedence:
|
|
457
|
+
* 1. `--allow-insecure` CLI flag
|
|
458
|
+
* 2. `mcp.json > server > allowInsecure` (strict boolean)
|
|
459
|
+
* 3. `false`
|
|
460
|
+
*
|
|
461
|
+
* Only meaningful when no bearer token is configured: it tells the
|
|
462
|
+
* transport that a non-loopback bind (or a wildcard Origin allowlist) is
|
|
463
|
+
* fronted by something else — a mesh, a NetworkPolicy, or an
|
|
464
|
+
* authenticating reverse proxy — rather than genuinely open.
|
|
465
|
+
*
|
|
466
|
+
* @private
|
|
467
|
+
* @param {object} mcpDoc
|
|
468
|
+
* @returns {boolean}
|
|
469
|
+
*/
|
|
470
|
+
var resolveAllowInsecure = function(mcpDoc) {
|
|
471
|
+
var cli = self.params && self.params['allow-insecure'];
|
|
472
|
+
if (cli === true || cli === 'true') return true;
|
|
473
|
+
if (mcpDoc && mcpDoc.server && mcpDoc.server.allowInsecure === true) {
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
return false;
|
|
477
|
+
};
|
|
478
|
+
|
|
479
|
+
|
|
438
480
|
/**
|
|
439
481
|
* Resolves the CORS `Origin` allowlist. Precedence:
|
|
440
482
|
* 1. `--cors-origin=<list>` CLI flag (comma-separated; use `*` to disable)
|
|
@@ -198,11 +198,37 @@ function OpenAPI(opt, cmd) {
|
|
|
198
198
|
};
|
|
199
199
|
|
|
200
200
|
|
|
201
|
+
/**
|
|
202
|
+
* #COMPLY10 — reads `auth.requireAuthByDefault`, the deny-by-default mode.
|
|
203
|
+
*
|
|
204
|
+
* The published spec has to agree with the runtime, and under this mode an
|
|
205
|
+
* UN-annotated route is gated. Without reading it here the spec would declare
|
|
206
|
+
* those routes unauthenticated while every call to them answers 401 — a
|
|
207
|
+
* published contract that lies about its own security, which is worse than
|
|
208
|
+
* publishing none.
|
|
209
|
+
*
|
|
210
|
+
* Strict `=== true`, matching the boot lint: a truthy string does not enable
|
|
211
|
+
* the mode at runtime, so it must not enable it in the spec either.
|
|
212
|
+
*
|
|
213
|
+
* @private
|
|
214
|
+
* @param {object|null} settings - Parsed settings.json (may be null)
|
|
215
|
+
* @returns {boolean} True when un-annotated routes are gated by default
|
|
216
|
+
*/
|
|
217
|
+
var hasRequireAuthByDefault = function(settings) {
|
|
218
|
+
if ( !settings || typeof(settings.auth) != 'object' || settings.auth === null ) {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
return ( settings.auth.requireAuthByDefault === true );
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
|
|
201
225
|
/**
|
|
202
226
|
* Applies the authorization contract to an operation when its route is
|
|
203
227
|
* gated. A route is gated exactly when the runtime authz gate would act:
|
|
204
228
|
* `param.requireAuth === true`, a non-empty `param.roles` array, or a
|
|
205
|
-
* non-empty `param.policy` string (roles/policy imply requireAuth)
|
|
229
|
+
* non-empty `param.policy` string (roles/policy imply requireAuth) — or,
|
|
230
|
+
* under #COMPLY10 deny-by-default, when the route declares none of those and
|
|
231
|
+
* is not marked `param.public: true`.
|
|
206
232
|
*
|
|
207
233
|
* Emits the observable contract only: a `401` response on every gated
|
|
208
234
|
* route (+ a `403` when roles/policy add authorization beyond
|
|
@@ -216,12 +242,18 @@ function OpenAPI(opt, cmd) {
|
|
|
216
242
|
* @param {object} operation - The OpenAPI operation object (mutated in place)
|
|
217
243
|
* @param {object} param - The route's `param` block (`route.param || {}`)
|
|
218
244
|
* @param {boolean} machineAuth - True when the `bearerAuth` scheme is emitted
|
|
245
|
+
* @param {boolean} defaultDeny - True when `auth.requireAuthByDefault` is on (#COMPLY10)
|
|
219
246
|
* @returns {undefined}
|
|
220
247
|
*/
|
|
221
|
-
var applyAuthContract = function(operation, param, machineAuth) {
|
|
248
|
+
var applyAuthContract = function(operation, param, machineAuth, defaultDeny) {
|
|
222
249
|
var hasRoles = ( Array.isArray(param.roles) && param.roles.length > 0 );
|
|
223
250
|
var hasPolicy = ( typeof(param.policy) == 'string' && param.policy !== '' );
|
|
224
|
-
|
|
251
|
+
// #COMPLY10 — under deny-by-default an un-annotated route is gated unless it
|
|
252
|
+
// is explicitly `public`, so the spec must treat it as gated too. Mirrors the
|
|
253
|
+
// gate's own precedence (lib/authz-gate): `public` only ever exempts a route
|
|
254
|
+
// that declares no explicit key, so it can never un-gate an annotated one.
|
|
255
|
+
var byDefault = ( defaultDeny === true && param.public !== true );
|
|
256
|
+
var isGated = ( param.requireAuth === true || hasRoles || hasPolicy || byDefault );
|
|
225
257
|
|
|
226
258
|
if ( !isGated ) return;
|
|
227
259
|
|
|
@@ -285,6 +317,7 @@ function OpenAPI(opt, cmd) {
|
|
|
285
317
|
// bundle's spec gains no components block. The scheme matches the wire's
|
|
286
318
|
// own advertisement — the machine 401 challenges with
|
|
287
319
|
// `WWW-Authenticate: Bearer`.
|
|
320
|
+
var defaultDeny = hasRequireAuthByDefault(settings);
|
|
288
321
|
var machineAuth = hasMachineAuth(settings);
|
|
289
322
|
if (machineAuth) {
|
|
290
323
|
spec.components = {
|
|
@@ -332,7 +365,7 @@ function OpenAPI(opt, cmd) {
|
|
|
332
365
|
var operation = buildOperation(routeName, route, urlInfo.params, namespace, methods.length > 1, method, srcPath);
|
|
333
366
|
|
|
334
367
|
// Authorization contract for gated routes
|
|
335
|
-
applyAuthContract(operation, route.param || {}, machineAuth);
|
|
368
|
+
applyAuthContract(operation, route.param || {}, machineAuth, defaultDeny);
|
|
336
369
|
|
|
337
370
|
spec.paths[oaPath][method] = operation;
|
|
338
371
|
}
|
|
@@ -153,8 +153,24 @@ function Initialize(opt) {
|
|
|
153
153
|
*/
|
|
154
154
|
var run = function(opt, cmd) {
|
|
155
155
|
opt.task = checkForAliases(opt.task);
|
|
156
|
+
|
|
157
|
+
// The resolved topic/action pair becomes the `require()` path below, and
|
|
158
|
+
// for an online command it is supplied by the caller over the framework
|
|
159
|
+
// socket. Constrain both segments to the shipped command namespace so a
|
|
160
|
+
// name can only ever resolve INSIDE `lib/cmd/`. Every command group
|
|
161
|
+
// directory and action file gina ships matches this pattern, including
|
|
162
|
+
// the synthetic `framework:-V` / `framework:--version` forms; anything
|
|
163
|
+
// carrying a path separator or a `..` segment does not.
|
|
164
|
+
var isSafeCmdSegment = function (segment) {
|
|
165
|
+
return /^[A-Za-z0-9_-]+$/.test( String(segment) );
|
|
166
|
+
};
|
|
167
|
+
var isKnownNamespace = isSafeCmdSegment(opt.task.topic) && isSafeCmdSegment(opt.task.action);
|
|
168
|
+
|
|
156
169
|
var filename ='/cmd/' + opt.task.topic + '/' + opt.task.action + '.js'
|
|
157
|
-
|
|
170
|
+
// A segment outside that namespace resolves to '' — which never exists —
|
|
171
|
+
// so it falls into the same "not a valid command" branch as an unknown
|
|
172
|
+
// action below, and can never reach require().
|
|
173
|
+
var path = isKnownNamespace ? getPath('gina').lib + filename : '';
|
|
158
174
|
|
|
159
175
|
// Unknown command → print a clean, actionable message instead of a raw
|
|
160
176
|
// `Cannot find module` stack. `bin/cli` already rejects an unknown GROUP
|
|
@@ -183,6 +199,13 @@ function Initialize(opt) {
|
|
|
183
199
|
if (opt.client) {
|
|
184
200
|
opt.client.write(message + '\n');
|
|
185
201
|
}
|
|
202
|
+
|
|
203
|
+
// Online runs inside the long-lived daemon serving every client, so
|
|
204
|
+
// exiting here would drop the control plane. End this client instead.
|
|
205
|
+
if ( opt.isOnlineCommand ) {
|
|
206
|
+
if (opt.client) { opt.client.end(); }
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
186
209
|
process.exit(1);
|
|
187
210
|
return;
|
|
188
211
|
}
|
|
@@ -666,6 +689,7 @@ function Initialize(opt) {
|
|
|
666
689
|
'debug_port' : 'GINA_DEBUG_PORT',
|
|
667
690
|
'mq_port' : 'GINA_MQ_PORT',
|
|
668
691
|
'host_v4' : 'GINA_HOST_V4',
|
|
692
|
+
'bind_host' : 'GINA_BIND_HOST',
|
|
669
693
|
'hostname' : 'GINA_HOSTNAME',
|
|
670
694
|
'logdir' : 'GINA_LOGDIR',
|
|
671
695
|
'tmpdir' : 'GINA_TMPDIR',
|
|
@@ -764,6 +788,9 @@ function Initialize(opt) {
|
|
|
764
788
|
'port' : getEnvVar('GINA_PORT') || 8124, // TODO - scan for the next available port
|
|
765
789
|
'debug_port' : getEnvVar('GINA_DEBUG_PORT') || process.debugPort || 9339,
|
|
766
790
|
'host_v4' : getEnvVar('GINA_HOST_V4') || '127.0.0.1',
|
|
791
|
+
// Bind address for the framework control sockets — loopback by
|
|
792
|
+
// default; widen deliberately to expose them beyond this host.
|
|
793
|
+
'bind_host' : getEnvVar('GINA_BIND_HOST') || '127.0.0.1',
|
|
767
794
|
'mq_port' : getEnvVar('GINA_MQ_PORT') || 8125,
|
|
768
795
|
'hostname' : getEnvVar('GINA_HOSTNAME') || 'localhost',
|
|
769
796
|
'user' : process.env.USER,
|
|
@@ -145,10 +145,14 @@ var TRANSIENT_N1QL_CODE = {
|
|
|
145
145
|
// honest signal for a retryable DML failure such as a CAS mismatch.
|
|
146
146
|
//
|
|
147
147
|
// These CODE entries are load-bearing on the connector path even where the
|
|
148
|
-
// SDK types the error: the
|
|
149
|
-
//
|
|
150
|
-
// carrying only `cause` —
|
|
151
|
-
//
|
|
148
|
+
// SDK types the error: whenever the N1QL `cause` envelope carries server
|
|
149
|
+
// TEXT, the couchbase connector's #B153 handlers forward that failure as a
|
|
150
|
+
// synthesized `new Error(first_error_message)` carrying only `cause` —
|
|
151
|
+
// `err.name` is 'Error' there, so TRANSIENT_NAME cannot fire and this table
|
|
152
|
+
// is the sole classifier. (Only where there IS text: since the #B153
|
|
153
|
+
// residual fix an EMPTY envelope message is raw-forwarded instead, so a
|
|
154
|
+
// typed client-side timeout keeps its class name and the name rule catches
|
|
155
|
+
// it first — that is the whole point of the residual fix.) On the raw SDK shape a
|
|
152
156
|
// server-side 1080 arrives typed (SDK 4.x `document_query.cxx` maps 1080 ->
|
|
153
157
|
// unambiguous_timeout -> UnambiguousTimeoutError) and the name rule catches
|
|
154
158
|
// it first — the 1080 entry is the belt for the envelope shape. 12008 has NO
|
|
@@ -149,9 +149,26 @@ function MQListener(opt, cb) {
|
|
|
149
149
|
sessions[sessionId].write( JSON.stringify(payload) +'\r\n');
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
/**
|
|
153
|
+
* Start the MQ listener that speakers, `gina tail` and the file container
|
|
154
|
+
* connect to.
|
|
155
|
+
*
|
|
156
|
+
* @inner
|
|
157
|
+
* @param {object} opt - listener options
|
|
158
|
+
* @param {number} opt.port - TCP port to listen on
|
|
159
|
+
* @param {string} [opt.hostV4='127.0.0.1'] - bind address. NOTE the key
|
|
160
|
+
* name: a caller passing `host` leaves this undefined, and an
|
|
161
|
+
* undefined host makes Node bind every interface. Defaults to
|
|
162
|
+
* loopback so an omitted key can never widen the bind.
|
|
163
|
+
* @param {function} cb - called once listening, or with an error
|
|
164
|
+
* @returns {void}
|
|
165
|
+
*/
|
|
152
166
|
function startMQListener(opt, cb) {
|
|
153
167
|
var port = opt.port;
|
|
154
|
-
|
|
168
|
+
// Default to loopback when the caller omits the key, matching every
|
|
169
|
+
// sibling in this subsystem (speaker.js, tail.js, file/index.js) and
|
|
170
|
+
// ensuring an omitted option can never widen the bind to all interfaces.
|
|
171
|
+
var host = opt.hostV4 || '127.0.0.1';
|
|
155
172
|
var server = net.createServer( function(conn) {//'connection' listener
|
|
156
173
|
|
|
157
174
|
conn.sessionId = uuid();
|
|
@@ -211,7 +228,20 @@ function MQListener(opt, cb) {
|
|
|
211
228
|
i++;
|
|
212
229
|
let payload = payloads[i];
|
|
213
230
|
if ( /^\{/.test(payload) && /\}$/.test(payload)) {
|
|
214
|
-
|
|
231
|
+
// The brace test only proves the payload LOOKS like
|
|
232
|
+
// JSON. An unguarded parse of anything else throws
|
|
233
|
+
// from inside this 'data' handler, which surfaces as
|
|
234
|
+
// an uncaughtException and drops the process via
|
|
235
|
+
// proc.js's SIGTERM path — so a single malformed
|
|
236
|
+
// frame would end the listener for every speaker.
|
|
237
|
+
// Skip the frame instead, mirroring bin/cmd's guard.
|
|
238
|
+
let pl = null;
|
|
239
|
+
try {
|
|
240
|
+
pl = JSON.parse(payload);
|
|
241
|
+
} catch (parseErr) {
|
|
242
|
+
console.warn('[MQListener] ignoring malformed payload');
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
215
245
|
|
|
216
246
|
|
|
217
247
|
// mostly after client that acknowledeged sessionId
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
* - Validate the `Origin` header against an allowlist (DNS rebinding
|
|
14
14
|
* mitigation per MCP spec §Security).
|
|
15
15
|
* - Enforce a static bearer token when `authToken` is configured.
|
|
16
|
+
* - Refuse to start, token-less, once an ambient protection has been removed
|
|
17
|
+
* (non-loopback bind, or a wildcard Origin allowlist) unless `allowInsecure`.
|
|
16
18
|
* - Emit full CORS response headers (`access-control-allow-origin` +
|
|
17
19
|
* `vary: Origin`, or `*` when wildcard allowlist is in effect).
|
|
18
20
|
*
|
|
@@ -36,6 +38,41 @@ var DEFAULT_MAX_BODY_BYTES = 1024 * 1024;
|
|
|
36
38
|
var BEARER_REALM = 'MCP';
|
|
37
39
|
|
|
38
40
|
|
|
41
|
+
/**
|
|
42
|
+
* True only when `h` is unambiguously a loopback bind address, i.e. when
|
|
43
|
+
* binding it cannot make the transport reachable from another host.
|
|
44
|
+
*
|
|
45
|
+
* Deliberately fail-closed: anything this cannot positively recognise as
|
|
46
|
+
* loopback (a hostname, `0.0.0.0`, `::`, a LAN address) is treated as exposed,
|
|
47
|
+
* because guessing wrong in that direction is the expensive mistake.
|
|
48
|
+
*
|
|
49
|
+
* Recognised: `localhost`, `::1` (bracketed or bare), the whole `127.0.0.0/8`
|
|
50
|
+
* block, and IPv4-mapped forms such as `::ffff:127.0.0.1`.
|
|
51
|
+
*
|
|
52
|
+
* @param {string} h - a bind host as handed to `server.listen()`.
|
|
53
|
+
* @returns {boolean}
|
|
54
|
+
* @inner
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
function isLoopbackBind(h) {
|
|
58
|
+
if (typeof(h) !== 'string') return false;
|
|
59
|
+
var v = h.trim().toLowerCase();
|
|
60
|
+
if (v.charAt(0) === '[' && v.charAt(v.length - 1) === ']') {
|
|
61
|
+
v = v.substring(1, v.length - 1);
|
|
62
|
+
}
|
|
63
|
+
if (v === 'localhost' || v === '::1') return true;
|
|
64
|
+
if (v.indexOf('::ffff:') === 0) {
|
|
65
|
+
v = v.substring(7); // IPv4-mapped IPv6 — fall through to the v4 test
|
|
66
|
+
}
|
|
67
|
+
var m = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(v);
|
|
68
|
+
if (!m) return false;
|
|
69
|
+
for (var i = 1; i <= 4; ++i) {
|
|
70
|
+
if (Number(m[i]) > 255) return false;
|
|
71
|
+
}
|
|
72
|
+
return Number(m[1]) === 127;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
39
76
|
/**
|
|
40
77
|
* Creates an HTTP transport bound to an mcp-server instance. Returns a
|
|
41
78
|
* controller with `start()`, `stop()`, and `address()`.
|
|
@@ -47,9 +84,19 @@ var BEARER_REALM = 'MCP';
|
|
|
47
84
|
* @param {number} [opts.maxBodyBytes] - Cap on POST body size
|
|
48
85
|
* @param {string} [opts.authToken] - If set, `Authorization: Bearer <token>`
|
|
49
86
|
* is required on every non-OPTIONS request.
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
87
|
+
* Compared in constant time, sha256-hashed
|
|
88
|
+
* on both sides. When omitted the transport
|
|
89
|
+
* leans on its ambient protections (loopback
|
|
90
|
+
* bind + Origin allowlist) and REFUSES to
|
|
91
|
+
* start if either has been deliberately
|
|
92
|
+
* removed — see `opts.allowInsecure`.
|
|
93
|
+
* @param {boolean} [opts.allowInsecure] - Strict boolean. Set `true` to run
|
|
94
|
+
* token-less even with an ambient protection
|
|
95
|
+
* removed (non-loopback bind, or a wildcard
|
|
96
|
+
* Origin allowlist). Assert this only when
|
|
97
|
+
* access is restricted upstream — a service
|
|
98
|
+
* mesh, a NetworkPolicy, or an
|
|
99
|
+
* authenticating reverse proxy.
|
|
53
100
|
* @param {string[]} [opts.allowedOrigins] - Additional origins to accept beyond the
|
|
54
101
|
* built-in loopback allowlist
|
|
55
102
|
* (`http(s)://localhost`, `http(s)://127.0.0.1`,
|
|
@@ -87,8 +134,17 @@ function createHttpTransport(opts) {
|
|
|
87
134
|
var authToken = (typeof(opts.authToken) === 'string' && opts.authToken.length) ? opts.authToken : null;
|
|
88
135
|
var extraOrigins = Array.isArray(opts.allowedOrigins) ? opts.allowedOrigins.slice() : [];
|
|
89
136
|
var originWildcard = (extraOrigins.indexOf('*') !== -1);
|
|
137
|
+
var allowInsecure = (opts.allowInsecure === true);
|
|
90
138
|
var onError = (typeof(opts.onError) === 'function') ? opts.onError : function() {};
|
|
91
139
|
|
|
140
|
+
// Digest the configured token ONCE, here, rather than per request: the
|
|
141
|
+
// compare in `isAuthed` then runs over two fixed-length (32-byte) buffers,
|
|
142
|
+
// so it can neither throw nor leak the token's length. Mirrors the
|
|
143
|
+
// boot-precomputed key hashes in `lib/authz-gate` (`verifyMachineToken`).
|
|
144
|
+
var authTokenHash = authToken
|
|
145
|
+
? crypto.createHash('sha256').update(authToken, 'utf8').digest()
|
|
146
|
+
: null;
|
|
147
|
+
|
|
92
148
|
var httpServer = null;
|
|
93
149
|
|
|
94
150
|
|
|
@@ -133,9 +189,13 @@ function createHttpTransport(opts) {
|
|
|
133
189
|
|
|
134
190
|
/**
|
|
135
191
|
* True when the request carries a valid bearer (or no token is configured).
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
192
|
+
*
|
|
193
|
+
* Both sides are sha256-hashed before the constant-time compare, so the two
|
|
194
|
+
* buffers are always 32 bytes. That removes the length short-circuit this
|
|
195
|
+
* used to need — comparing the raw tokens meant returning early on a length
|
|
196
|
+
* mismatch (`timingSafeEqual` throws on unequal lengths), which leaked the
|
|
197
|
+
* configured token's length through response timing. The try/catch is kept
|
|
198
|
+
* as the house idiom even though two same-length digests cannot throw.
|
|
139
199
|
*
|
|
140
200
|
* @private
|
|
141
201
|
*/
|
|
@@ -144,15 +204,40 @@ function createHttpTransport(opts) {
|
|
|
144
204
|
var header = req.headers['authorization'] || '';
|
|
145
205
|
var m = /^Bearer\s+(.+)$/i.exec(header);
|
|
146
206
|
if (!m) return false;
|
|
147
|
-
var presented
|
|
148
|
-
var
|
|
149
|
-
|
|
150
|
-
if (expected.length !== actual.length) return false;
|
|
151
|
-
try { return crypto.timingSafeEqual(expected, actual); }
|
|
207
|
+
var presented = m[1].trim();
|
|
208
|
+
var presentedHash = crypto.createHash('sha256').update(presented, 'utf8').digest();
|
|
209
|
+
try { return crypto.timingSafeEqual(presentedHash, authTokenHash); }
|
|
152
210
|
catch (e) { return false; }
|
|
153
211
|
}
|
|
154
212
|
|
|
155
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Describes the ambient protection the operator has removed, when running
|
|
216
|
+
* without a bearer token — or `null` when the transport is adequately
|
|
217
|
+
* protected (or `allowInsecure` waives the requirement).
|
|
218
|
+
*
|
|
219
|
+
* Two protections make a token-less transport defensible, and losing EITHER
|
|
220
|
+
* is enough to need one:
|
|
221
|
+
* - the loopback bind, which keeps other hosts out entirely;
|
|
222
|
+
* - the Origin allowlist, which is the only thing standing between a
|
|
223
|
+
* loopback-bound server and a DNS-rebinding attack driven from any web
|
|
224
|
+
* page (the bind does not help there — the browser is already local).
|
|
225
|
+
*
|
|
226
|
+
* @returns {string|null} the reason, phrased for an operator-facing error.
|
|
227
|
+
* @private
|
|
228
|
+
*/
|
|
229
|
+
function describeExposure() {
|
|
230
|
+
if (authToken || allowInsecure) return null;
|
|
231
|
+
if (!isLoopbackBind(host)) {
|
|
232
|
+
return 'it is bound to the non-loopback address `'+ host +'`';
|
|
233
|
+
}
|
|
234
|
+
if (originWildcard) {
|
|
235
|
+
return 'the Origin allowlist is disabled (`allowedOrigins: ["*"]`)';
|
|
236
|
+
}
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
|
|
156
241
|
/**
|
|
157
242
|
* Merges CORS response headers into a base header bag. Safe to call even
|
|
158
243
|
* when there is no `Origin` on the request — returns the base bag unchanged
|
|
@@ -510,6 +595,12 @@ function createHttpTransport(opts) {
|
|
|
510
595
|
* resolved { host, port, family } — `port` is the OS-assigned port when
|
|
511
596
|
* `opts.port` was 0.
|
|
512
597
|
*
|
|
598
|
+
* Also rejects, BEFORE binding, when the transport would be exposed without
|
|
599
|
+
* a bearer token (see `describeExposure`). Refusing here rather than
|
|
600
|
+
* answering 401 per request is the framework's house answer for a security
|
|
601
|
+
* control that would otherwise sit silently inert: nothing ever listens, so
|
|
602
|
+
* there is no window in which an unauthenticated port is reachable.
|
|
603
|
+
*
|
|
513
604
|
* @returns {Promise<{host: string, port: number, family: string}>}
|
|
514
605
|
*/
|
|
515
606
|
function start() {
|
|
@@ -517,6 +608,14 @@ function createHttpTransport(opts) {
|
|
|
517
608
|
if (httpServer) {
|
|
518
609
|
return reject(new Error('start: transport already started'));
|
|
519
610
|
}
|
|
611
|
+
var exposure = describeExposure();
|
|
612
|
+
if (exposure) {
|
|
613
|
+
return reject(new Error(
|
|
614
|
+
'start: refusing to listen without a bearer token because '+ exposure +'. '
|
|
615
|
+
+ 'Configure a token, or set `allowInsecure` to assert that access is '
|
|
616
|
+
+ 'restricted upstream (service mesh, NetworkPolicy, authenticating proxy).'
|
|
617
|
+
));
|
|
618
|
+
}
|
|
520
619
|
var server = http.createServer(handleHttpRequest);
|
|
521
620
|
var onListenError = function(err) { reject(err); };
|
|
522
621
|
server.once('error', onListenError);
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
* Works in Node.js (CommonJS) and browser (AMD / GFF) contexts.
|
|
6
6
|
*
|
|
7
7
|
* - Objects are merged recursively.
|
|
8
|
-
* -
|
|
9
|
-
*
|
|
8
|
+
* - Missing keys are always filled from `source`; on a CONFLICTING key the
|
|
9
|
+
* `target` value is preserved by default.
|
|
10
|
+
* - Pass `true` as the last argument (`override`) to make `source` win instead.
|
|
10
11
|
*
|
|
11
12
|
* @example
|
|
12
13
|
* var merge = require('lib/merge');
|
|
13
14
|
* var result = merge({ a: 1 }, { b: 2 }); // { a: 1, b: 2 }
|
|
14
|
-
* merge({ a: 1 }, { a: 9 }
|
|
15
|
+
* merge({ a: 1 }, { a: 9 }); // { a: 1 } — default: target wins on conflicts
|
|
16
|
+
* merge({ a: 1 }, { a: 9 }, true); // { a: 9 } — override: source wins
|
|
15
17
|
*/
|
|
16
18
|
|
|
17
19
|
/**
|
|
@@ -37,13 +39,15 @@ function Merge() {
|
|
|
37
39
|
*
|
|
38
40
|
* @param {object|Array} target - Target (base) object or array
|
|
39
41
|
* @param {object|Array} source - Source object or array to merge into target
|
|
40
|
-
* @param {boolean} [override=
|
|
42
|
+
* @param {boolean} [override=false] - Pass `true` to let `source` overwrite existing target keys; by default they are preserved
|
|
41
43
|
* @returns {object|Array} Merged result (mutates and returns `target`)
|
|
42
44
|
*
|
|
43
45
|
* @example
|
|
44
46
|
* merge({ a: 1 }, { b: 2 }) // { a: 1, b: 2 }
|
|
45
|
-
* merge({ a: 1 }, { a: 9 }
|
|
46
|
-
* merge(
|
|
47
|
+
* merge({ a: 1 }, { a: 9 }) // { a: 1 } — default: target wins
|
|
48
|
+
* merge({ a: 1 }, { a: 9 }, true) // { a: 9 }
|
|
49
|
+
* merge([1, 2], [3, 4]) // [1, 2, 3, 4]
|
|
50
|
+
* merge([1, 2], [3, 4], true) // [3, 4]
|
|
47
51
|
*/
|
|
48
52
|
var browse = function (_target, _source) {
|
|
49
53
|
|
package/gna.js
CHANGED
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
'use strict';
|
|
16
16
|
|
|
17
17
|
// Framework core — the main gna module (lifecycle hooks, lib, etc.)
|
|
18
|
-
var _gna = require('./framework/v0.5.
|
|
18
|
+
var _gna = require('./framework/v0.5.26/core/gna');
|
|
19
19
|
|
|
20
20
|
// SuperController and EntitySuper — loaded from their source modules
|
|
21
|
-
var SuperController = require('./framework/v0.5.
|
|
22
|
-
var EntitySuper = require('./framework/v0.5.
|
|
21
|
+
var SuperController = require('./framework/v0.5.26/core/controller');
|
|
22
|
+
var EntitySuper = require('./framework/v0.5.26/core/model/entity');
|
|
23
23
|
|
|
24
24
|
// uuid — from the lib registry
|
|
25
|
-
var uuid = require('./framework/v0.5.
|
|
25
|
+
var uuid = require('./framework/v0.5.26/lib/uuid');
|
|
26
26
|
|
|
27
27
|
module.exports = {
|
|
28
28
|
|