gina 0.5.5 → 0.5.6-alpha.2
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/framework/v0.5.6-alpha.2/VERSION +1 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/index.html +10 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +140 -6
- package/framework/v0.5.6-alpha.2/core/connectors/ai/index.js +530 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.js +8 -1
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.render-json.js +5 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.render-nunjucks.js +4 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.render-swig.js +9 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/inspector-window-emit.js +4 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/gna.js +21 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/server.isaac.js +10 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/server.js +6 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/conf/settings.json +11 -0
- package/framework/{v0.5.5 → v0.5.6-alpha.2}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +2 -0
- package/package.json +3 -3
- package/framework/v0.5.5/VERSION +0 -1
- package/framework/v0.5.5/core/connectors/ai/index.js +0 -183
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/AUTHORS +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/LICENSE +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/html/static.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/config.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/content.encoding +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/controller/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/dev/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/locales/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/locales/currency.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/locales/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/mime.types +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/model/entity.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/model/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/model/template/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/router.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/server.express.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/status.codes +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/_gitignore +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/conf/env.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/conf/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/console.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/context.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/data/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/data/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/json/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/json/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/path.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/prototypes.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/task.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/helpers/text.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/admin/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/archiver/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/archiver/build.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/archiver/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/async/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/async/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cache/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cache/build.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cache/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/collection/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/collection/build.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/collection/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/config.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cron/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cron/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/domain/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/domain/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/generator/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/i18n/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/inherits/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/inherits/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/instrument/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/job/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/job/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/math/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/merge/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/merge/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/metrics/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/model.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/proc.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/routing/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/routing/build.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/routing/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/secrets/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/session-store.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/shell.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/state.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/url/README.md +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/url/index.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/url/routing.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/uuid/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/validator.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/watcher/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.5.5 → v0.5.6-alpha.2}/lib/ws-session/src/main.js +0 -0
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the gina package.
|
|
3
|
+
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
4
|
+
*
|
|
5
|
+
* For the full copyright and license information, please view the LICENSE
|
|
6
|
+
* file that was distributed with this source code.
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
var EventEmitter = require('events').EventEmitter;
|
|
11
|
+
|
|
12
|
+
// #AISTREAM — monotonic per-process stream id (client-side disambiguation of
|
|
13
|
+
// interleaved token streams on the shared /_gina/agent channel).
|
|
14
|
+
var _aiStreamSeq = 0;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* AI connector wrapper.
|
|
18
|
+
*
|
|
19
|
+
* Exposes a unified `.infer(messages, options)` method that normalises the
|
|
20
|
+
* response shape across Anthropic and all OpenAI-compatible providers
|
|
21
|
+
* (OpenAI, DeepSeek, Qwen, Groq, Mistral, Gemini, xAI, Ollama, …).
|
|
22
|
+
*
|
|
23
|
+
* Returned by getModel('<connectorName>') in controllers.
|
|
24
|
+
*
|
|
25
|
+
* Usage:
|
|
26
|
+
* ```js
|
|
27
|
+
* var ai = getModel('claude');
|
|
28
|
+
*
|
|
29
|
+
* // async/await
|
|
30
|
+
* var result = await ai.infer([
|
|
31
|
+
* { role: 'system', content: 'You are a helpful assistant.' },
|
|
32
|
+
* { role: 'user', content: req.body.message }
|
|
33
|
+
* ]);
|
|
34
|
+
* self.renderJSON({ reply: result.content });
|
|
35
|
+
*
|
|
36
|
+
* // .onComplete() callback
|
|
37
|
+
* ai.infer(messages).onComplete(function(err, result) {
|
|
38
|
+
* if (err) return self.throwError(500, err.message);
|
|
39
|
+
* self.renderJSON({ reply: result.content });
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* // streaming (token-by-token) — see stream() below
|
|
43
|
+
* ai.stream(messages)
|
|
44
|
+
* .on('delta', function(d) { process.stdout.write(d.text); })
|
|
45
|
+
* .onComplete(function(err, result) { });
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* Response shape (normalised across all providers):
|
|
49
|
+
* ```js
|
|
50
|
+
* {
|
|
51
|
+
* content : string, // text response
|
|
52
|
+
* model : string, // model that answered
|
|
53
|
+
* usage : {
|
|
54
|
+
* inputTokens : number,
|
|
55
|
+
* outputTokens : number
|
|
56
|
+
* },
|
|
57
|
+
* raw : object // original provider response
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @class AI
|
|
62
|
+
* @constructor
|
|
63
|
+
* @param {object} conn - Internal connection object from AIConnector.onReady
|
|
64
|
+
* @param {object} infos - { model, bundle, database, scope } from the framework loader
|
|
65
|
+
* @returns {object} - { client, provider, model, infer, stream }
|
|
66
|
+
*/
|
|
67
|
+
function AI(conn, infos) {
|
|
68
|
+
|
|
69
|
+
// ── infer(messages, options) ─────────────────────────────────────────────
|
|
70
|
+
//
|
|
71
|
+
// messages: OpenAI-format array [{ role: 'user'|'assistant'|'system', content: string }]
|
|
72
|
+
// options:
|
|
73
|
+
// model {string} — override the connector's default model
|
|
74
|
+
// maxTokens {number} — max tokens in the response (default: 1024)
|
|
75
|
+
// temperature {number} — sampling temperature
|
|
76
|
+
// system {string} — system prompt (alternative to a system message in the array)
|
|
77
|
+
//
|
|
78
|
+
// Anthropic note: the system message is extracted from the messages array (or
|
|
79
|
+
// taken from options.system) and passed as the separate `system` parameter
|
|
80
|
+
// that the Messages API requires. Remaining messages go in `messages`.
|
|
81
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
82
|
+
var infer = function(messages, options) {
|
|
83
|
+
options = options || {};
|
|
84
|
+
|
|
85
|
+
var modelName = options.model || conn.modelName || '';
|
|
86
|
+
var maxTokens = options.maxTokens || 1024;
|
|
87
|
+
var temperature = (options.temperature !== undefined) ? options.temperature : undefined;
|
|
88
|
+
|
|
89
|
+
// ── Option B — native Promise with .onComplete() shim ─────────────────
|
|
90
|
+
var _resolve, _reject, _internalData;
|
|
91
|
+
|
|
92
|
+
var _promise = new Promise(function(resolve, reject) {
|
|
93
|
+
_resolve = resolve;
|
|
94
|
+
_reject = reject;
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
_promise.onComplete = function(cb) {
|
|
98
|
+
_promise.then(
|
|
99
|
+
function() { cb(null, _internalData); },
|
|
100
|
+
function(err) { cb(err); }
|
|
101
|
+
);
|
|
102
|
+
return _promise;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
if (!modelName) {
|
|
106
|
+
_reject(new Error(
|
|
107
|
+
'[AI] No model specified. '
|
|
108
|
+
+ 'Set "model" in connectors.json or pass { model: "..." } as the second argument.'
|
|
109
|
+
));
|
|
110
|
+
return _promise;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (conn.type === 'anthropic') {
|
|
114
|
+
// ── Anthropic Messages API ─────────────────────────────────────────
|
|
115
|
+
// System prompt is a top-level parameter, not a message role.
|
|
116
|
+
var systemMsg = options.system || null;
|
|
117
|
+
var filteredMessages = messages.filter(function(m) {
|
|
118
|
+
if (m.role === 'system') {
|
|
119
|
+
if (!systemMsg) systemMsg = m.content;
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
var params = {
|
|
126
|
+
model : modelName,
|
|
127
|
+
max_tokens : maxTokens,
|
|
128
|
+
messages : filteredMessages
|
|
129
|
+
};
|
|
130
|
+
if (systemMsg) params.system = systemMsg;
|
|
131
|
+
if (temperature !== undefined) params.temperature = temperature;
|
|
132
|
+
|
|
133
|
+
conn.client.messages.create(params)
|
|
134
|
+
.then(function(response) {
|
|
135
|
+
var result = {
|
|
136
|
+
content : response.content[0].text,
|
|
137
|
+
model : response.model,
|
|
138
|
+
usage : {
|
|
139
|
+
inputTokens : response.usage.input_tokens,
|
|
140
|
+
outputTokens : response.usage.output_tokens
|
|
141
|
+
},
|
|
142
|
+
raw : response
|
|
143
|
+
};
|
|
144
|
+
_internalData = result;
|
|
145
|
+
_resolve(result);
|
|
146
|
+
})
|
|
147
|
+
.catch(function(err) { _reject(err); });
|
|
148
|
+
|
|
149
|
+
} else {
|
|
150
|
+
// ── OpenAI-compatible Chat Completions API ─────────────────────────
|
|
151
|
+
// Works for: OpenAI, DeepSeek, Qwen, Groq, Mistral, Together,
|
|
152
|
+
// Gemini (OpenAI-compat), xAI, Perplexity, Ollama, vLLM…
|
|
153
|
+
var msgs = messages.slice();
|
|
154
|
+
if (options.system) {
|
|
155
|
+
msgs = [{ role: 'system', content: options.system }].concat(msgs);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
var params = {
|
|
159
|
+
model : modelName,
|
|
160
|
+
messages : msgs,
|
|
161
|
+
max_tokens : maxTokens
|
|
162
|
+
};
|
|
163
|
+
if (temperature !== undefined) params.temperature = temperature;
|
|
164
|
+
|
|
165
|
+
conn.client.chat.completions.create(params)
|
|
166
|
+
.then(function(response) {
|
|
167
|
+
var result = {
|
|
168
|
+
content : response.choices[0].message.content,
|
|
169
|
+
model : response.model,
|
|
170
|
+
usage : {
|
|
171
|
+
inputTokens : response.usage.prompt_tokens,
|
|
172
|
+
outputTokens : response.usage.completion_tokens
|
|
173
|
+
},
|
|
174
|
+
raw : response
|
|
175
|
+
};
|
|
176
|
+
_internalData = result;
|
|
177
|
+
_resolve(result);
|
|
178
|
+
})
|
|
179
|
+
.catch(function(err) { _reject(err); });
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return _promise;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Streaming variant of infer().
|
|
187
|
+
*
|
|
188
|
+
* Returns a fresh EventEmitter surfacing the provider's token stream as
|
|
189
|
+
* ordered events, leaving the buffered infer() untouched. A new emitter is
|
|
190
|
+
* created per call (no shared-emitter listener accumulation).
|
|
191
|
+
*
|
|
192
|
+
* Events (in order):
|
|
193
|
+
* - `start` `{ model, role }` — once, when the first chunk arrives.
|
|
194
|
+
* - `delta` `{ index, text, outputTokens }` — once per token chunk. `index`
|
|
195
|
+
* is a framework-maintained 0-based counter (neither SDK numbers deltas).
|
|
196
|
+
* `outputTokens` is the running output-token total where the provider
|
|
197
|
+
* exposes it (Anthropic: cumulative on message_delta; OpenAI: null until
|
|
198
|
+
* the final usage chunk), else null/0.
|
|
199
|
+
* - `done` `{ content, model, usage:{inputTokens,outputTokens}, raw,
|
|
200
|
+
* latencyMs[, finishReason] }` — the assembled result (the same normalised
|
|
201
|
+
* shape infer() returns, plus framework-measured `latencyMs`). `raw` is the
|
|
202
|
+
* provider's final message for Anthropic, null for OpenAI-compatible
|
|
203
|
+
* streams (which expose no single final response object).
|
|
204
|
+
* - `error` `(err)` — emitted only when an `error` listener is attached, so a
|
|
205
|
+
* caller using only `.onComplete(cb)` cannot crash the process on an
|
|
206
|
+
* unhandled `error` event; the error still reaches `.onComplete(cb)`.
|
|
207
|
+
*
|
|
208
|
+
* Also exposes `.onComplete(cb)` (`cb(err)` | `cb(null, doneResult)`) mirroring
|
|
209
|
+
* infer(), for callers that only want the assembled result.
|
|
210
|
+
*
|
|
211
|
+
* Token-counter honesty: neither SDK provides a per-delta output-token count.
|
|
212
|
+
* Anthropic emits a cumulative running total on `message_delta`; OpenAI-compatible
|
|
213
|
+
* providers emit a single end-of-stream usage chunk only when
|
|
214
|
+
* `stream_options.include_usage` is honored (some providers omit it, so usage may
|
|
215
|
+
* stay null). `latencyMs` is framework-measured at both branches.
|
|
216
|
+
*
|
|
217
|
+
* @param {Array<object>} messages - OpenAI-format [{ role, content }] array.
|
|
218
|
+
* @param {object} [options]
|
|
219
|
+
* @param {string} [options.model] - Override the connector default model.
|
|
220
|
+
* @param {number} [options.maxTokens=1024]
|
|
221
|
+
* @param {number} [options.temperature]
|
|
222
|
+
* @param {string} [options.system] - System prompt (alternative to a system message).
|
|
223
|
+
* @returns {EventEmitter} emitter emitting start/delta/done/error, with an .onComplete(cb) shim.
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* // token-by-token
|
|
227
|
+
* getModel('claude').stream([{ role: 'user', content: 'Tell me a joke.' }])
|
|
228
|
+
* .on('start', function(s) { }) // { model, role }
|
|
229
|
+
* .on('delta', function(d) { process.stdout.write(d.text); })
|
|
230
|
+
* .on('done', function(r) { }) // { content, model, usage, latencyMs }
|
|
231
|
+
* .on('error', function(e) { });
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* // assembled result only (mirrors infer())
|
|
235
|
+
* getModel('claude').stream(messages).onComplete(function(err, result) {
|
|
236
|
+
* if (err) return self.throwError(500, err.message);
|
|
237
|
+
* self.renderJSON({ reply: result.content });
|
|
238
|
+
* });
|
|
239
|
+
*/
|
|
240
|
+
var stream = function(messages, options) {
|
|
241
|
+
options = options || {};
|
|
242
|
+
var emitter = new EventEmitter();
|
|
243
|
+
|
|
244
|
+
var modelName = options.model || conn.modelName || '';
|
|
245
|
+
var maxTokens = options.maxTokens || 1024;
|
|
246
|
+
var temperature = (options.temperature !== undefined) ? options.temperature : undefined;
|
|
247
|
+
|
|
248
|
+
// Terminal-result shim — mirrors infer()'s .onComplete(cb).
|
|
249
|
+
var _resolve, _reject, _internalData, _settled = false;
|
|
250
|
+
var _done = new Promise(function(resolve, reject) {
|
|
251
|
+
_resolve = resolve;
|
|
252
|
+
_reject = reject;
|
|
253
|
+
});
|
|
254
|
+
// Absorb the internal rejection so a caller observing failures only via
|
|
255
|
+
// .on('error') does not also trip an unhandledRejection.
|
|
256
|
+
_done.catch(function() {});
|
|
257
|
+
|
|
258
|
+
emitter.onComplete = function(cb) {
|
|
259
|
+
_done.then(
|
|
260
|
+
function() { cb(null, _internalData); },
|
|
261
|
+
function(err) { cb(err); }
|
|
262
|
+
);
|
|
263
|
+
return emitter;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
var _settleDone = function(result) {
|
|
267
|
+
if (_settled) return;
|
|
268
|
+
_settled = true;
|
|
269
|
+
_internalData = result;
|
|
270
|
+
emitter.emit('done', result);
|
|
271
|
+
_resolve(result);
|
|
272
|
+
};
|
|
273
|
+
// 'error' is emitted only when a listener is attached, so a caller using
|
|
274
|
+
// .onComplete() (and no 'error' listener) cannot crash the process on an
|
|
275
|
+
// unhandled 'error' event; the rejection still reaches .onComplete(cb).
|
|
276
|
+
var _settleError = function(err) {
|
|
277
|
+
if (_settled) return;
|
|
278
|
+
_settled = true;
|
|
279
|
+
if (emitter.listenerCount('error') > 0) { emitter.emit('error', err); }
|
|
280
|
+
_reject(err);
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
if (!modelName) {
|
|
284
|
+
process.nextTick(function() {
|
|
285
|
+
_settleError(new Error(
|
|
286
|
+
'[AI] No model specified. '
|
|
287
|
+
+ 'Set "model" in connectors.json or pass { model: "..." } as the second argument.'
|
|
288
|
+
));
|
|
289
|
+
});
|
|
290
|
+
return emitter;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
var _startMs = Date.now();
|
|
294
|
+
var _index = 0;
|
|
295
|
+
var _started = false;
|
|
296
|
+
var emitStart = function(model, role) {
|
|
297
|
+
if (_started) return;
|
|
298
|
+
_started = true;
|
|
299
|
+
emitter.emit('start', { model: model, role: role });
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
// ── AI token-stream inspection (#AISTREAM) — gated, additive ──────────
|
|
303
|
+
// Captured under the same dev / instrumentation-window gate the query
|
|
304
|
+
// connectors use. The per-request buffer ref is grabbed synchronously (in
|
|
305
|
+
// the request's async context, where setOptions ran enterWith) and mutated
|
|
306
|
+
// via closure as events fire — mirroring the query-connector pattern. Chunk
|
|
307
|
+
// TEXT (and the prompt) ride the wire ONLY when settings.inspector.ai
|
|
308
|
+
// .captureText is on (seeded onto process.gina at boot); metadata is always
|
|
309
|
+
// captured. Instrumentation attaches as listeners on the emitter so the
|
|
310
|
+
// provider-specific paths below stay pure; infer() is unaffected. A live
|
|
311
|
+
// inspector#token event is emitted per phase for the Inspector's streaming
|
|
312
|
+
// view (no subscriber ⇒ a cheap no-op).
|
|
313
|
+
var _aiEnvIsDev = ( /^true$/i.test(process.env.NODE_ENV_IS_DEV) );
|
|
314
|
+
if (_aiEnvIsDev || (process.gina && process.gina._inspectorWindowUntil > Date.now())) {
|
|
315
|
+
var _aiAls = (process.gina && process.gina._queryALS) ? process.gina._queryALS.getStore() : null;
|
|
316
|
+
var _aiLog = _aiAls ? _aiAls._devAiLog : null;
|
|
317
|
+
if (_aiLog) {
|
|
318
|
+
var _captureText = !!(process.gina && process.gina._inspectorAiCaptureText);
|
|
319
|
+
var _streamId = 'ai-' + _startMs.toString(36) + '-' + (++_aiStreamSeq);
|
|
320
|
+
var _aiEntry = {
|
|
321
|
+
type : 'AI',
|
|
322
|
+
id : _streamId,
|
|
323
|
+
provider : conn.provider,
|
|
324
|
+
model : modelName,
|
|
325
|
+
role : null,
|
|
326
|
+
promptTokens : null,
|
|
327
|
+
outputTokens : null,
|
|
328
|
+
chunks : 0,
|
|
329
|
+
durationMs : 0,
|
|
330
|
+
error : null,
|
|
331
|
+
origin : (infos && infos.bundle) || ''
|
|
332
|
+
};
|
|
333
|
+
if (_captureText) {
|
|
334
|
+
_aiEntry.prompt = messages; // raw prompt — captured only when captureText is on
|
|
335
|
+
_aiEntry.text = '';
|
|
336
|
+
}
|
|
337
|
+
_aiEntry._startMs = _startMs;
|
|
338
|
+
_aiLog.push(_aiEntry);
|
|
339
|
+
|
|
340
|
+
// 'token' is the SSE/WS event NAME, never a payload key (a bare `token`
|
|
341
|
+
// key would be wholesale-redacted); phase/index/outputTokens/deltaText
|
|
342
|
+
// are redaction-safe.
|
|
343
|
+
var _aiToken = function(frame) {
|
|
344
|
+
frame.t = Date.now();
|
|
345
|
+
frame.id = _streamId;
|
|
346
|
+
process.emit('inspector#token', frame);
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
emitter.on('start', function(s) {
|
|
350
|
+
_aiEntry.model = s.model;
|
|
351
|
+
_aiEntry.role = s.role;
|
|
352
|
+
_aiToken({ phase: 'start', model: s.model, role: s.role });
|
|
353
|
+
});
|
|
354
|
+
emitter.on('delta', function(d) {
|
|
355
|
+
_aiEntry.chunks += 1;
|
|
356
|
+
if (typeof d.outputTokens === 'number') { _aiEntry.outputTokens = d.outputTokens; }
|
|
357
|
+
if (_captureText && typeof _aiEntry.text === 'string') { _aiEntry.text += d.text; }
|
|
358
|
+
var frame = { phase: 'delta', index: d.index, outputTokens: (typeof d.outputTokens === 'number' ? d.outputTokens : null) };
|
|
359
|
+
if (_captureText) { frame.deltaText = d.text; }
|
|
360
|
+
_aiToken(frame);
|
|
361
|
+
});
|
|
362
|
+
emitter.on('done', function(r) {
|
|
363
|
+
_aiEntry.durationMs = r.latencyMs;
|
|
364
|
+
_aiEntry.model = r.model;
|
|
365
|
+
if (r.usage) {
|
|
366
|
+
_aiEntry.promptTokens = r.usage.inputTokens;
|
|
367
|
+
_aiEntry.outputTokens = r.usage.outputTokens;
|
|
368
|
+
}
|
|
369
|
+
_aiToken({ phase: 'done', model: r.model, outputTokens: (r.usage ? r.usage.outputTokens : null), latencyMs: r.latencyMs });
|
|
370
|
+
});
|
|
371
|
+
// Internal 'error' listener — records the failure AND guarantees the
|
|
372
|
+
// emitter always has an 'error' handler while capturing, so a caller
|
|
373
|
+
// without its own 'error' listener cannot crash on an unhandled event.
|
|
374
|
+
emitter.on('error', function(err) {
|
|
375
|
+
_aiEntry.error = (err && err.message) || String(err);
|
|
376
|
+
_aiToken({ phase: 'error', message: _captureText ? ((err && err.message) || String(err)) : null });
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Defer one tick so callers can attach .on('start'/'delta'/...) synchronously
|
|
382
|
+
// after stream() returns, before any event fires (mirrors the Option-B timing).
|
|
383
|
+
if (conn.type === 'anthropic') {
|
|
384
|
+
process.nextTick(function() {
|
|
385
|
+
try {
|
|
386
|
+
// System prompt is a top-level parameter, not a message role.
|
|
387
|
+
var systemMsg = options.system || null;
|
|
388
|
+
var filteredMessages = messages.filter(function(m) {
|
|
389
|
+
if (m.role === 'system') {
|
|
390
|
+
if (!systemMsg) systemMsg = m.content;
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
return true;
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
var params = {
|
|
397
|
+
model : modelName,
|
|
398
|
+
max_tokens : maxTokens,
|
|
399
|
+
messages : filteredMessages
|
|
400
|
+
};
|
|
401
|
+
if (systemMsg) params.system = systemMsg;
|
|
402
|
+
if (temperature !== undefined) params.temperature = temperature;
|
|
403
|
+
|
|
404
|
+
var _model = modelName, _role = 'assistant',
|
|
405
|
+
_outputTokens = 0, _inputTokens = null, _text = '';
|
|
406
|
+
|
|
407
|
+
// The Anthropic MessageStream is itself an EventEmitter.
|
|
408
|
+
var sdkStream = conn.client.messages.stream(params);
|
|
409
|
+
|
|
410
|
+
// Raw SSE events carry model/role (message_start) and the
|
|
411
|
+
// CUMULATIVE running output-token total (message_delta.usage).
|
|
412
|
+
sdkStream.on('streamEvent', function(event) {
|
|
413
|
+
if (!event) return;
|
|
414
|
+
if (event.type === 'message_start' && event.message) {
|
|
415
|
+
_model = event.message.model || _model;
|
|
416
|
+
_role = event.message.role || _role;
|
|
417
|
+
if (event.message.usage
|
|
418
|
+
&& typeof event.message.usage.input_tokens === 'number') {
|
|
419
|
+
_inputTokens = event.message.usage.input_tokens;
|
|
420
|
+
}
|
|
421
|
+
emitStart(_model, _role);
|
|
422
|
+
} else if (event.type === 'message_delta' && event.usage
|
|
423
|
+
&& typeof event.usage.output_tokens === 'number') {
|
|
424
|
+
_outputTokens = event.usage.output_tokens;
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
// Incremental text chunks.
|
|
429
|
+
sdkStream.on('text', function(delta) {
|
|
430
|
+
emitStart(_model, _role);
|
|
431
|
+
_text += delta;
|
|
432
|
+
emitter.emit('delta', { index: _index++, text: delta, outputTokens: _outputTokens });
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
sdkStream.on('error', _settleError);
|
|
436
|
+
|
|
437
|
+
sdkStream.finalMessage().then(function(message) {
|
|
438
|
+
emitStart(_model, _role);
|
|
439
|
+
_settleDone({
|
|
440
|
+
content : (message && message.content && message.content[0] && message.content[0].text) || _text,
|
|
441
|
+
model : (message && message.model) || _model,
|
|
442
|
+
usage : {
|
|
443
|
+
inputTokens : (message && message.usage && message.usage.input_tokens != null) ? message.usage.input_tokens : _inputTokens,
|
|
444
|
+
outputTokens : (message && message.usage && message.usage.output_tokens != null) ? message.usage.output_tokens : _outputTokens
|
|
445
|
+
},
|
|
446
|
+
raw : message || null,
|
|
447
|
+
latencyMs : Date.now() - _startMs
|
|
448
|
+
});
|
|
449
|
+
}, _settleError);
|
|
450
|
+
} catch (err) {
|
|
451
|
+
_settleError(err);
|
|
452
|
+
}
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
} else {
|
|
456
|
+
// OpenAI-compatible streaming (chat.completions with stream: true).
|
|
457
|
+
process.nextTick(function() {
|
|
458
|
+
(async function() {
|
|
459
|
+
try {
|
|
460
|
+
var msgs = messages.slice();
|
|
461
|
+
if (options.system) {
|
|
462
|
+
msgs = [{ role: 'system', content: options.system }].concat(msgs);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
var params = {
|
|
466
|
+
model : modelName,
|
|
467
|
+
messages : msgs,
|
|
468
|
+
max_tokens : maxTokens,
|
|
469
|
+
stream : true,
|
|
470
|
+
// Ask for a final usage chunk; honored by most OpenAI-compatible
|
|
471
|
+
// providers (some — e.g. Ollama — may omit it, so usage stays null).
|
|
472
|
+
stream_options : { include_usage: true }
|
|
473
|
+
};
|
|
474
|
+
if (temperature !== undefined) params.temperature = temperature;
|
|
475
|
+
|
|
476
|
+
var _model = modelName, _role = 'assistant',
|
|
477
|
+
_outputTokens = null, _inputTokens = null, _text = '', _finishReason = null;
|
|
478
|
+
|
|
479
|
+
var sdkStream = await conn.client.chat.completions.create(params);
|
|
480
|
+
|
|
481
|
+
for await (var chunk of sdkStream) {
|
|
482
|
+
if (!chunk) continue;
|
|
483
|
+
if (chunk.model) { _model = chunk.model; }
|
|
484
|
+
var choice = chunk.choices && chunk.choices[0];
|
|
485
|
+
if (choice && choice.delta) {
|
|
486
|
+
if (choice.delta.role) { _role = choice.delta.role; }
|
|
487
|
+
emitStart(_model, _role);
|
|
488
|
+
if (typeof choice.delta.content === 'string' && choice.delta.content.length > 0) {
|
|
489
|
+
_text += choice.delta.content;
|
|
490
|
+
emitter.emit('delta', { index: _index++, text: choice.delta.content, outputTokens: _outputTokens });
|
|
491
|
+
}
|
|
492
|
+
if (choice.finish_reason) { _finishReason = choice.finish_reason; }
|
|
493
|
+
}
|
|
494
|
+
// Final usage chunk (empty choices) when include_usage is honored.
|
|
495
|
+
if (chunk.usage) {
|
|
496
|
+
if (typeof chunk.usage.prompt_tokens === 'number') { _inputTokens = chunk.usage.prompt_tokens; }
|
|
497
|
+
if (typeof chunk.usage.completion_tokens === 'number') { _outputTokens = chunk.usage.completion_tokens; }
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
emitStart(_model, _role); // ensure 'start' fired even for an empty stream
|
|
502
|
+
_settleDone({
|
|
503
|
+
content : _text,
|
|
504
|
+
model : _model,
|
|
505
|
+
usage : { inputTokens: _inputTokens, outputTokens: _outputTokens },
|
|
506
|
+
finishReason : _finishReason,
|
|
507
|
+
raw : null,
|
|
508
|
+
latencyMs : Date.now() - _startMs
|
|
509
|
+
});
|
|
510
|
+
} catch (err) {
|
|
511
|
+
_settleError(err);
|
|
512
|
+
}
|
|
513
|
+
})();
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
return emitter;
|
|
518
|
+
};
|
|
519
|
+
|
|
520
|
+
// ── Public interface ──────────────────────────────────────────────────────
|
|
521
|
+
return {
|
|
522
|
+
client : conn.client, // raw SDK instance for advanced use
|
|
523
|
+
provider : conn.provider, // e.g. 'anthropic', 'deepseek', 'ollama'
|
|
524
|
+
model : conn.modelName, // default model from connectors.json
|
|
525
|
+
infer : infer,
|
|
526
|
+
stream : stream // streaming variant of infer() (EventEmitter: start/delta/done/error)
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
module.exports = AI;
|
|
@@ -293,9 +293,16 @@ function SuperController(options) {
|
|
|
293
293
|
if (!req._devQueryLog) {
|
|
294
294
|
req._devQueryLog = [];
|
|
295
295
|
}
|
|
296
|
+
// #AISTREAM — sibling per-request buffer for AI token-stream inspection,
|
|
297
|
+
// threaded through the SAME _queryALS store for concurrency-correct
|
|
298
|
+
// attribution (the AI connector's stream() reaches it via getStore()).
|
|
299
|
+
if (!req._devAiLog) {
|
|
300
|
+
req._devAiLog = [];
|
|
301
|
+
}
|
|
296
302
|
local._queryLog = req._devQueryLog;
|
|
303
|
+
local._aiLog = req._devAiLog;
|
|
297
304
|
if (process.gina._queryALS) {
|
|
298
|
-
process.gina._queryALS.enterWith({ _devQueryLog: req._devQueryLog });
|
|
305
|
+
process.gina._queryALS.enterWith({ _devQueryLog: req._devQueryLog, _devAiLog: req._devAiLog });
|
|
299
306
|
}
|
|
300
307
|
// #FI — propagate request timeline into local for render access
|
|
301
308
|
if (req._devTimeline) {
|
|
@@ -288,6 +288,11 @@ module.exports = function renderJSON(jsonObj, deps) {
|
|
|
288
288
|
if (local._queryLog && local._queryLog.length > 0) {
|
|
289
289
|
_gdUser.queries = local._queryLog;
|
|
290
290
|
}
|
|
291
|
+
// #AISTREAM — AI token-stream snapshot (per-request attribution +
|
|
292
|
+
// persistence) alongside queries/flow; the live view rides inspector#token.
|
|
293
|
+
if (local._aiLog && local._aiLog.length > 0) {
|
|
294
|
+
_gdUser.aiStream = local._aiLog;
|
|
295
|
+
}
|
|
291
296
|
if (local._timeline) {
|
|
292
297
|
_gdUser.flow = {
|
|
293
298
|
requestStart : local._timeline.requestStart,
|
|
@@ -331,6 +331,10 @@ function injectInspectorScripts(html, data, self, local, displayInspector) {
|
|
|
331
331
|
if (local._queryLog && local._queryLog.length > 0) {
|
|
332
332
|
data.page.queries = local._queryLog;
|
|
333
333
|
}
|
|
334
|
+
// #AISTREAM — AI token-stream snapshot parity (rides the data.page clone).
|
|
335
|
+
if (local._aiLog && local._aiLog.length > 0) {
|
|
336
|
+
data.page.aiStream = local._aiLog;
|
|
337
|
+
}
|
|
334
338
|
|
|
335
339
|
// Two deep clones — one labelled gina (metadata for the Inspector
|
|
336
340
|
// sidebar), one labelled user (mirrors what application code sees).
|
|
@@ -932,6 +932,11 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
932
932
|
if (local._queryLog && local._queryLog.length > 0) {
|
|
933
933
|
data.page.queries = local._queryLog;
|
|
934
934
|
}
|
|
935
|
+
// #AISTREAM — AI token-stream snapshot (rides the data.page clone into
|
|
936
|
+
// __gdUser, like queries/flow); the live view rides inspector#token.
|
|
937
|
+
if (local._aiLog && local._aiLog.length > 0) {
|
|
938
|
+
data.page.aiStream = local._aiLog;
|
|
939
|
+
}
|
|
935
940
|
// #FI — snapshot count BEFORE late entries are pushed.
|
|
936
941
|
// data.page.flow.entries is a reference to local._timeline.entries,
|
|
937
942
|
// so reading .length later would include entries pushed after this point.
|
|
@@ -1176,6 +1181,10 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1176
1181
|
if (local._queryLog && local._queryLog.length > 0) {
|
|
1177
1182
|
data.page.queries = local._queryLog;
|
|
1178
1183
|
}
|
|
1184
|
+
// #AISTREAM — AI token-stream snapshot (rides the data.page clone).
|
|
1185
|
+
if (local._aiLog && local._aiLog.length > 0) {
|
|
1186
|
+
data.page.aiStream = local._aiLog;
|
|
1187
|
+
}
|
|
1179
1188
|
|
|
1180
1189
|
// #FI — inject dev-mode request timeline for Inspector Flow tab.
|
|
1181
1190
|
// Also convert QI entries into timeline entries so the waterfall
|
|
@@ -111,6 +111,10 @@ function emitInspectorWindowData(self, local) {
|
|
|
111
111
|
if (local._queryLog && local._queryLog.length > 0) {
|
|
112
112
|
_gdUser.queries = local._queryLog;
|
|
113
113
|
}
|
|
114
|
+
// #AISTREAM — AI token-stream snapshot alongside queries/flow.
|
|
115
|
+
if (local._aiLog && local._aiLog.length > 0) {
|
|
116
|
+
_gdUser.aiStream = local._aiLog;
|
|
117
|
+
}
|
|
114
118
|
if (local._timeline) {
|
|
115
119
|
_gdUser.flow = {
|
|
116
120
|
requestStart : local._timeline.requestStart,
|
|
@@ -1314,6 +1314,27 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1314
1314
|
process.gina._inspectorWindowUntil = 0;
|
|
1315
1315
|
}
|
|
1316
1316
|
|
|
1317
|
+
// #AISTREAM — capture the AI token-stream chunk-text
|
|
1318
|
+
// opt-in from settings.json `inspector.ai.captureText`
|
|
1319
|
+
// (default false). Metadata is always captured under the
|
|
1320
|
+
// dev/window gate; the raw prompt + token text rides the
|
|
1321
|
+
// wire only when this is true (the authenticated channel +
|
|
1322
|
+
// the dev/window gate are the protection — redaction cannot
|
|
1323
|
+
// cover free text). Stored on process.gina so the AI
|
|
1324
|
+
// connector reads the same slot. Fail-closed.
|
|
1325
|
+
try {
|
|
1326
|
+
var _aiInspSettings = (typeof gna.getConfig === 'function') ? gna.getConfig('settings') : null;
|
|
1327
|
+
var _aiInspConf = (_aiInspSettings && _aiInspSettings.inspector && _aiInspSettings.inspector.ai && typeof _aiInspSettings.inspector.ai === 'object')
|
|
1328
|
+
? _aiInspSettings.inspector.ai
|
|
1329
|
+
: {};
|
|
1330
|
+
if (!process.gina) process.gina = {};
|
|
1331
|
+
process.gina._inspectorAiCaptureText = (_aiInspConf.captureText === true);
|
|
1332
|
+
} catch (aiInspErr) {
|
|
1333
|
+
console.warn('[inspector-ai] init skipped: ' + (aiInspErr.message || aiInspErr));
|
|
1334
|
+
if (!process.gina) process.gina = {};
|
|
1335
|
+
process.gina._inspectorAiCaptureText = false;
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1317
1338
|
// #INS8 — dev-only auto-start of the standalone Inspector
|
|
1318
1339
|
// bundle (inspector@gina). Best-effort + fail-closed.
|
|
1319
1340
|
// Gated on:
|
|
@@ -1470,10 +1470,19 @@ function ServerEngineClass(options) {
|
|
|
1470
1470
|
} catch (e) {}
|
|
1471
1471
|
};
|
|
1472
1472
|
|
|
1473
|
+
// #AISTREAM — live AI token-stream frames (distinct event so the SPA
|
|
1474
|
+
// wires incremental appends without touching the data-snapshot path).
|
|
1475
|
+
var _agTokenListener = function(payload) {
|
|
1476
|
+
try {
|
|
1477
|
+
_agWrite('event: token\ndata: ' + JSON.stringify(payload) + '\n\n');
|
|
1478
|
+
} catch (e) {}
|
|
1479
|
+
};
|
|
1480
|
+
|
|
1473
1481
|
if (!process.gina._sseConnections) process.gina._sseConnections = new Set();
|
|
1474
1482
|
var _agClose = function() {
|
|
1475
1483
|
process.removeListener('inspector#data', _agDataListener);
|
|
1476
1484
|
process.removeListener('logger#default', _agLogListener);
|
|
1485
|
+
process.removeListener('inspector#token', _agTokenListener);
|
|
1477
1486
|
process.gina._sseConnections.delete(_agClose);
|
|
1478
1487
|
try {
|
|
1479
1488
|
if (response.stream) response.stream.end();
|
|
@@ -1483,6 +1492,7 @@ function ServerEngineClass(options) {
|
|
|
1483
1492
|
|
|
1484
1493
|
process.on('inspector#data', _agDataListener);
|
|
1485
1494
|
process.on('logger#default', _agLogListener);
|
|
1495
|
+
process.on('inspector#token', _agTokenListener);
|
|
1486
1496
|
process.gina._sseConnections.add(_agClose);
|
|
1487
1497
|
_agOnClose(_agClose);
|
|
1488
1498
|
|