jxp 4.1.1 → 5.0.0
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/.env.sample +30 -0
- package/README.md +2 -0
- package/dist/bin/index_audit.d.ts +3 -0
- package/dist/bin/index_audit.d.ts.map +1 -0
- package/dist/bin/index_audit.js +66 -0
- package/dist/bin/index_audit.js.map +1 -0
- package/dist/bin/mcp-stdio-bridge.d.ts +3 -0
- package/dist/bin/mcp-stdio-bridge.d.ts.map +1 -0
- package/dist/bin/mcp-stdio-bridge.js +87 -0
- package/dist/bin/mcp-stdio-bridge.js.map +1 -0
- package/dist/bin/server.d.ts.map +1 -1
- package/dist/bin/server.js +8 -2
- package/dist/bin/server.js.map +1 -1
- package/dist/libs/builtin_models.d.ts +21 -0
- package/dist/libs/builtin_models.d.ts.map +1 -0
- package/dist/libs/builtin_models.js +125 -0
- package/dist/libs/builtin_models.js.map +1 -0
- package/dist/libs/docs-auth.d.ts.map +1 -1
- package/dist/libs/docs-auth.js +6 -2
- package/dist/libs/docs-auth.js.map +1 -1
- package/dist/libs/docs.js +105 -44
- package/dist/libs/docs.js.map +1 -1
- package/dist/libs/groups.js +3 -4
- package/dist/libs/groups.js.map +1 -1
- package/dist/libs/index_diagnostics.d.ts +144 -0
- package/dist/libs/index_diagnostics.d.ts.map +1 -0
- package/dist/libs/index_diagnostics.js +671 -0
- package/dist/libs/index_diagnostics.js.map +1 -0
- package/dist/libs/jxp.d.ts.map +1 -1
- package/dist/libs/jxp.js +97 -331
- package/dist/libs/jxp.js.map +1 -1
- package/dist/libs/load-config.d.ts +2 -0
- package/dist/libs/load-config.d.ts.map +1 -1
- package/dist/libs/load-config.js +10 -0
- package/dist/libs/load-config.js.map +1 -1
- package/dist/libs/login.js +3 -8
- package/dist/libs/login.js.map +1 -1
- package/dist/libs/mcp/auth.d.ts +4 -0
- package/dist/libs/mcp/auth.d.ts.map +1 -0
- package/dist/libs/mcp/auth.js +49 -0
- package/dist/libs/mcp/auth.js.map +1 -0
- package/dist/libs/mcp/config.d.ts +21 -0
- package/dist/libs/mcp/config.d.ts.map +1 -0
- package/dist/libs/mcp/config.js +66 -0
- package/dist/libs/mcp/config.js.map +1 -0
- package/dist/libs/mcp/context.d.ts +5 -0
- package/dist/libs/mcp/context.d.ts.map +1 -0
- package/dist/libs/mcp/context.js +14 -0
- package/dist/libs/mcp/context.js.map +1 -0
- package/dist/libs/mcp/describe.d.ts +13 -0
- package/dist/libs/mcp/describe.d.ts.map +1 -0
- package/dist/libs/mcp/describe.js +36 -0
- package/dist/libs/mcp/describe.js.map +1 -0
- package/dist/libs/mcp/docs_auth.d.ts +5 -0
- package/dist/libs/mcp/docs_auth.d.ts.map +1 -0
- package/dist/libs/mcp/docs_auth.js +36 -0
- package/dist/libs/mcp/docs_auth.js.map +1 -0
- package/dist/libs/mcp/dynamic_import.d.ts +6 -0
- package/dist/libs/mcp/dynamic_import.d.ts.map +1 -0
- package/dist/libs/mcp/dynamic_import.js +12 -0
- package/dist/libs/mcp/dynamic_import.js.map +1 -0
- package/dist/libs/mcp/execute_tool.d.ts +10 -0
- package/dist/libs/mcp/execute_tool.d.ts.map +1 -0
- package/dist/libs/mcp/execute_tool.js +65 -0
- package/dist/libs/mcp/execute_tool.js.map +1 -0
- package/dist/libs/mcp/guides/default.md +67 -0
- package/dist/libs/mcp/guides.d.ts +14 -0
- package/dist/libs/mcp/guides.d.ts.map +1 -0
- package/dist/libs/mcp/guides.js +127 -0
- package/dist/libs/mcp/guides.js.map +1 -0
- package/dist/libs/mcp/model_visibility.d.ts +31 -0
- package/dist/libs/mcp/model_visibility.d.ts.map +1 -0
- package/dist/libs/mcp/model_visibility.js +73 -0
- package/dist/libs/mcp/model_visibility.js.map +1 -0
- package/dist/libs/mcp/mount.d.ts +10 -0
- package/dist/libs/mcp/mount.d.ts.map +1 -0
- package/dist/libs/mcp/mount.js +68 -0
- package/dist/libs/mcp/mount.js.map +1 -0
- package/dist/libs/mcp/read_service.d.ts +23 -0
- package/dist/libs/mcp/read_service.d.ts.map +1 -0
- package/dist/libs/mcp/read_service.js +141 -0
- package/dist/libs/mcp/read_service.js.map +1 -0
- package/dist/libs/mcp/server.d.ts +23 -0
- package/dist/libs/mcp/server.d.ts.map +1 -0
- package/dist/libs/mcp/server.js +111 -0
- package/dist/libs/mcp/server.js.map +1 -0
- package/dist/libs/parse_byte_size.d.ts +10 -0
- package/dist/libs/parse_byte_size.d.ts.map +1 -0
- package/dist/libs/parse_byte_size.js +80 -0
- package/dist/libs/parse_byte_size.js.map +1 -0
- package/dist/libs/query_limits.js +99 -13
- package/dist/libs/query_limits.js.map +1 -1
- package/dist/libs/read_handlers.d.ts +13 -0
- package/dist/libs/read_handlers.d.ts.map +1 -0
- package/dist/libs/read_handlers.js +381 -0
- package/dist/libs/read_handlers.js.map +1 -0
- package/dist/libs/schema.js +2 -2
- package/dist/libs/schema.js.map +1 -1
- package/dist/libs/schema_serialize.d.ts +3 -0
- package/dist/libs/schema_serialize.d.ts.map +1 -0
- package/dist/libs/schema_serialize.js +45 -0
- package/dist/libs/schema_serialize.js.map +1 -0
- package/dist/libs/security.js +7 -11
- package/dist/libs/security.js.map +1 -1
- package/dist/libs/setup.js +3 -4
- package/dist/libs/setup.js.map +1 -1
- package/dist/libs/startup.d.ts +4 -0
- package/dist/libs/startup.d.ts.map +1 -1
- package/dist/libs/startup.js +17 -0
- package/dist/libs/startup.js.map +1 -1
- package/dist/models/indexquerylog_model.d.ts +19 -0
- package/dist/models/indexquerylog_model.d.ts.map +1 -0
- package/dist/models/indexquerylog_model.js +32 -0
- package/dist/models/indexquerylog_model.js.map +1 -0
- package/dist/types/jxp-config.d.ts +29 -0
- package/dist/types/jxp-config.d.ts.map +1 -1
- package/dist/types/schema-fields.d.ts +4 -0
- package/dist/types/schema-fields.d.ts.map +1 -1
- package/docs/api.md +16 -2
- package/docs/changelog.md +101 -1
- package/docs/configuration.md +39 -0
- package/docs/index.md +2 -0
- package/docs/index_diagnostics.md +127 -0
- package/docs/mcp.md +134 -0
- package/docs/schemas.md +3 -1
- package/mkdocs.yml +2 -0
- package/package.json +26 -9
- package/templates/assets/diagnostics.js +352 -0
- package/templates/assets/docs.css +107 -0
- package/templates/assets/mcp-console.js +343 -0
- package/templates/diagnostics.pug +94 -0
- package/templates/index.pug +38 -0
- package/templates/mcp.pug +112 -0
- package/templates/navbar.pug +2 -0
- package/templates/sidebar.pug +12 -0
package/.env.sample
CHANGED
|
@@ -21,6 +21,10 @@ REFRESH_TOKEN_EXPIRY=2678400
|
|
|
21
21
|
MODEL_DIR=./dist/models
|
|
22
22
|
LOG_FILE=access.log
|
|
23
23
|
|
|
24
|
+
# Built-in jxp models (user, apikey, token, etc.) load from package when missing from MODEL_DIR
|
|
25
|
+
# JXP_BUILTIN_MODELS=default
|
|
26
|
+
# JXP_BUILTIN_MODELS=none
|
|
27
|
+
|
|
24
28
|
# API docs browser: protected (default) | disabled | public
|
|
25
29
|
# Protected: home + guides public; /docs/api and /docs/model/* need POST /login
|
|
26
30
|
# DOCS_ACCESS=protected
|
|
@@ -33,6 +37,32 @@ LOG_FILE=access.log
|
|
|
33
37
|
# LOGIN_RATE_PER_MINUTE=12
|
|
34
38
|
# LOGIN_RATE_LIMIT_XFF=true
|
|
35
39
|
|
|
40
|
+
# Index diagnostics (see docs/index_diagnostics.md)
|
|
41
|
+
# INDEX_DIAGNOSTICS_ENABLED=false
|
|
42
|
+
# QUERY_INDEX_MONITOR=true
|
|
43
|
+
# QUERY_INDEX_SAMPLE_RATE=1.0
|
|
44
|
+
# QUERY_INDEX_MIN_DOCS_EXAMINED=20
|
|
45
|
+
# QUERY_INDEX_DOCS_EXAMINED_RATIO=5
|
|
46
|
+
# QUERY_INDEX_SMALL_COLLECTION_THRESHOLD=500
|
|
47
|
+
# QUERY_INDEX_BUFFER_SIZE=200
|
|
48
|
+
# INDEX_QUERY_LOG_RETENTION_DAYS=30
|
|
49
|
+
|
|
50
|
+
# MCP (Model Context Protocol) — read-only AI tools on the same port as the API
|
|
51
|
+
# MCP_ENABLED=false
|
|
52
|
+
# MCP_PATH=/mcp
|
|
53
|
+
# MCP_REQUIRE_API_KEY=true
|
|
54
|
+
# MCP_MODEL_WHITELIST=user
|
|
55
|
+
# MCP_MODEL_BLACKLIST=logs,hits
|
|
56
|
+
# MCP_DEFAULT_LIMIT=20
|
|
57
|
+
# MCP_MAX_LIMIT=100
|
|
58
|
+
# MCP_MAX_RESPONSE_SIZE=256kb
|
|
59
|
+
# MCP_MAX_CSV_SIZE=512kb
|
|
60
|
+
# MCP_TRUNCATE_STRINGS_AT=4000
|
|
61
|
+
# MCP_DISABLE_AUTOPOPULATE=true
|
|
62
|
+
# MCP_INSTRUCTIONS_APPEND=
|
|
63
|
+
# MCP_GUIDE_FILES=./mcp/guide.md
|
|
64
|
+
# Bridge (jxp-mcp bin): JXP_URL=http://localhost:4001, JXP_API_KEY=
|
|
65
|
+
|
|
36
66
|
# Optional
|
|
37
67
|
# APIKEY=
|
|
38
68
|
# DEBUG=false
|
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ JXP is an opinionated RESTful API framework that lets you make an API just by de
|
|
|
17
17
|
* Lightning-fast
|
|
18
18
|
* Logging, done
|
|
19
19
|
* Stateless
|
|
20
|
+
* **MCP server** — read-only [Model Context Protocol](docs/mcp.md) tools for AI agents (Cursor, LM Studio) plus a built-in docs playground
|
|
20
21
|
|
|
21
22
|
## Quick Start
|
|
22
23
|
|
|
@@ -51,6 +52,7 @@ JXP 4 is implemented in TypeScript. See [docs/typescript.md](docs/typescript.md)
|
|
|
51
52
|
* [Restful API](https://jxp.readthedocs.io/en/latest/api/)
|
|
52
53
|
* [Roles and Permissions](https://jxp.readthedocs.io/en/latest/permissions/)
|
|
53
54
|
* [Hooks](https://jxp.readthedocs.io/en/latest/hooks/)
|
|
55
|
+
* [MCP (Model Context Protocol)](docs/mcp.md) — AI agent tools and docs playground
|
|
54
56
|
* [Special Features](https://jxp.readthedocs.io/en/latest/special/)
|
|
55
57
|
* [Changelog](https://jxp.readthedocs.io/en/latest/changelog/)
|
|
56
58
|
* [Full docs](https://jxp.readthedocs.io/en/latest/)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index_audit.d.ts","sourceRoot":"","sources":["../../src/bin/index_audit.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#! /usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const mongoose_1 = __importDefault(require("mongoose"));
|
|
8
|
+
const commander_1 = require("commander");
|
|
9
|
+
const load_config_1 = require("../libs/load-config");
|
|
10
|
+
const schemaModule = require("../libs/schema");
|
|
11
|
+
global.JXPSchema = schemaModule.default || schemaModule;
|
|
12
|
+
const index_diagnostics_1 = require("../libs/index_diagnostics");
|
|
13
|
+
const pkg = require("../../package.json");
|
|
14
|
+
(0, load_config_1.loadEnv)();
|
|
15
|
+
const program = new commander_1.Command();
|
|
16
|
+
program
|
|
17
|
+
.name("jxp-indexes")
|
|
18
|
+
.description("Compare Mongoose schema indexes to MongoDB and optionally sync")
|
|
19
|
+
.version(pkg.version)
|
|
20
|
+
.option("--json", "Output JSON report")
|
|
21
|
+
.option("--unused", "Include $indexStats unused index hints")
|
|
22
|
+
.option("--sync", "Apply syncIndexes (create missing, drop extras)")
|
|
23
|
+
.option("--confirm <phrase>", `Required with --sync; must be "${index_diagnostics_1.SYNC_CONFIRM_PHRASE}"`)
|
|
24
|
+
.parse();
|
|
25
|
+
const opts = program.opts();
|
|
26
|
+
async function main() {
|
|
27
|
+
const config = (0, load_config_1.loadJxpConfig)();
|
|
28
|
+
const modelDir = config.model_dir || "./dist/models";
|
|
29
|
+
await mongoose_1.default.connect((0, load_config_1.getMongoConnectionString)());
|
|
30
|
+
const models = (0, index_diagnostics_1.loadModelsFromDir)(modelDir);
|
|
31
|
+
if (opts.sync) {
|
|
32
|
+
const results = await (0, index_diagnostics_1.syncAllModels)(models, { confirm: opts.confirm });
|
|
33
|
+
if (opts.json) {
|
|
34
|
+
console.log(JSON.stringify({ sync: results }, null, 2));
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
for (const r of results) {
|
|
38
|
+
if (r.error) {
|
|
39
|
+
console.log(`${r.modelName}: ERROR ${r.error}`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(`${r.modelName}: synced (created: ${(r.created || []).length}, dropped: ${(r.dropped || []).length})`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const failed = results.filter((r) => r.error);
|
|
47
|
+
await mongoose_1.default.disconnect();
|
|
48
|
+
process.exit(failed.length ? 1 : 0);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const report = await (0, index_diagnostics_1.auditAllModels)(models, { includeUnused: !!opts.unused });
|
|
52
|
+
if (opts.json) {
|
|
53
|
+
console.log(JSON.stringify(report, null, 2));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log((0, index_diagnostics_1.formatAuditReportHuman)(report));
|
|
57
|
+
}
|
|
58
|
+
await mongoose_1.default.disconnect();
|
|
59
|
+
const hasProblems = report.collections.some((c) => !c.ok);
|
|
60
|
+
process.exit(hasProblems ? 1 : 0);
|
|
61
|
+
}
|
|
62
|
+
main().catch((err) => {
|
|
63
|
+
console.error(err instanceof Error ? err.message : err);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=index_audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index_audit.js","sourceRoot":"","sources":["../../src/bin/index_audit.ts"],"names":[],"mappings":";;;;;;AACA,wDAAgC;AAChC,yCAAoC;AACpC,qDAAuF;AAEvF,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC/C,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC;AACxD,iEAMmC;AAEnC,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1C,IAAA,qBAAO,GAAE,CAAC;AAEV,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO;KACL,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC;KACtC,MAAM,CAAC,UAAU,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,QAAQ,EAAE,iDAAiD,CAAC;KACnE,MAAM,CACN,oBAAoB,EACpB,kCAAkC,uCAAmB,GAAG,CACxD;KACA,KAAK,EAAE,CAAC;AAEV,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAKrB,CAAC;AAEL,KAAK,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,IAAA,2BAAa,GAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,eAAe,CAAC;IAErD,MAAM,kBAAQ,CAAC,OAAO,CAAC,IAAA,sCAAwB,GAAE,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,IAAA,qCAAiB,EAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAa,EAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACP,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CACV,GAAG,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CACrG,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,kBAAQ,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO;IACR,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,kCAAc,EAAC,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,IAAA,0CAAsB,EAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,kBAAQ,CAAC,UAAU,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio-bridge.d.ts","sourceRoot":"","sources":["../../src/bin/mcp-stdio-bridge.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
/**
|
|
5
|
+
* stdio MCP bridge — proxies Cursor/LM Studio to a JXP HTTP MCP endpoint.
|
|
6
|
+
* Env: JXP_URL (default http://localhost:4001), JXP_API_KEY (required), MCP_PATH (default /mcp)
|
|
7
|
+
*/
|
|
8
|
+
const dynamic_import_1 = require("../libs/mcp/dynamic_import");
|
|
9
|
+
const path = require("path");
|
|
10
|
+
const { z } = require("zod");
|
|
11
|
+
const pkg = require(path.join(__dirname, "../../package.json"));
|
|
12
|
+
function envOptional(name, fallback) {
|
|
13
|
+
const v = process.env[name];
|
|
14
|
+
return v !== undefined && v !== "" ? v : fallback;
|
|
15
|
+
}
|
|
16
|
+
function requireEnv(name) {
|
|
17
|
+
const v = process.env[name];
|
|
18
|
+
if (!v) {
|
|
19
|
+
console.error(`${name} is required`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
return v;
|
|
23
|
+
}
|
|
24
|
+
async function main() {
|
|
25
|
+
const mcpServer = await (0, dynamic_import_1.dynamicImport)("@modelcontextprotocol/server");
|
|
26
|
+
const mcpClient = await (0, dynamic_import_1.dynamicImport)("@modelcontextprotocol/client");
|
|
27
|
+
const { StdioServerTransport, McpServer } = mcpServer;
|
|
28
|
+
const { Client, StreamableHTTPClientTransport } = mcpClient;
|
|
29
|
+
const baseUrl = envOptional("JXP_URL", "http://localhost:4001").replace(/\/$/, "");
|
|
30
|
+
const apiKey = requireEnv("JXP_API_KEY");
|
|
31
|
+
const mcpPath = process.env.MCP_PATH?.trim() || "/mcp";
|
|
32
|
+
const url = new URL(mcpPath.startsWith("/") ? mcpPath : `/${mcpPath}`, `${baseUrl}/`);
|
|
33
|
+
const remote = new Client({ name: "jxp-mcp-bridge", version: pkg.version });
|
|
34
|
+
const remoteTransport = new StreamableHTTPClientTransport(url, {
|
|
35
|
+
requestInit: {
|
|
36
|
+
headers: {
|
|
37
|
+
"X-API-Key": apiKey,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
await remote.connect(remoteTransport);
|
|
42
|
+
const instructions = remote.getInstructions();
|
|
43
|
+
const proxy = new McpServer({ name: "jxp-mcp", version: pkg.version }, instructions ? { instructions } : undefined);
|
|
44
|
+
const { tools } = await remote.listTools();
|
|
45
|
+
for (const tool of tools) {
|
|
46
|
+
const t = tool;
|
|
47
|
+
const props = t.inputSchema?.properties || {};
|
|
48
|
+
const shape = {};
|
|
49
|
+
for (const key of Object.keys(props)) {
|
|
50
|
+
shape[key] = z.unknown().optional();
|
|
51
|
+
}
|
|
52
|
+
const inputSchema = z.object(shape);
|
|
53
|
+
proxy.registerTool(t.name, {
|
|
54
|
+
title: t.title,
|
|
55
|
+
description: t.description,
|
|
56
|
+
inputSchema,
|
|
57
|
+
}, async (args) => {
|
|
58
|
+
const result = await remote.callTool({ name: t.name, arguments: args });
|
|
59
|
+
return {
|
|
60
|
+
content: (result.content || []).map((block) => {
|
|
61
|
+
if (block.type === "text") {
|
|
62
|
+
return { type: "text", text: block.text };
|
|
63
|
+
}
|
|
64
|
+
return { type: "text", text: JSON.stringify(block) };
|
|
65
|
+
}),
|
|
66
|
+
isError: result.isError,
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
const { resources } = await remote.listResources();
|
|
71
|
+
for (const resource of resources) {
|
|
72
|
+
const name = resource.name || resource.uri;
|
|
73
|
+
const uri = resource.uri;
|
|
74
|
+
proxy.registerResource(name, uri, {
|
|
75
|
+
title: resource.title,
|
|
76
|
+
description: resource.description,
|
|
77
|
+
mimeType: resource.mimeType || "text/markdown",
|
|
78
|
+
}, async () => remote.readResource({ uri }));
|
|
79
|
+
}
|
|
80
|
+
const stdio = new StdioServerTransport();
|
|
81
|
+
await proxy.connect(stdio);
|
|
82
|
+
}
|
|
83
|
+
main().catch((err) => {
|
|
84
|
+
console.error(err);
|
|
85
|
+
process.exit(1);
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=mcp-stdio-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio-bridge.js","sourceRoot":"","sources":["../../src/bin/mcp-stdio-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/bin/server.ts"],"names":[],"mappings":"AAUA,OAAO,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/bin/server.ts"],"names":[],"mappings":"AAUA,OAAO,8BAA8B,CAAC;AA0HtC,QAAA,MAAM,MAAM,KAAiB,CAAC;AAsB9B,SAAS,MAAM,CAAC"}
|
package/dist/bin/server.js
CHANGED
|
@@ -16,10 +16,12 @@ const path_1 = __importDefault(require("path"));
|
|
|
16
16
|
const mongoose_1 = __importDefault(require("mongoose"));
|
|
17
17
|
const JXP = require("../libs/jxp");
|
|
18
18
|
const load_config_1 = require("../libs/load-config");
|
|
19
|
+
const index_diagnostics_1 = require("../libs/index_diagnostics");
|
|
19
20
|
const startup_1 = require("../libs/startup");
|
|
20
21
|
const package_json_1 = __importDefault(require("../../package.json"));
|
|
21
22
|
const apiconfig = (0, load_config_1.loadJxpConfig)();
|
|
22
23
|
apiconfig.quiet_startup = true;
|
|
24
|
+
(0, index_diagnostics_1.registerQueryIndexMonitor)(apiconfig.index_diagnostics);
|
|
23
25
|
apiconfig.callbacks = {
|
|
24
26
|
post: function () { },
|
|
25
27
|
put: function () { },
|
|
@@ -77,6 +79,7 @@ const startupCtx = {
|
|
|
77
79
|
mongoose_1.default.connect(connection_string, mongo_options);
|
|
78
80
|
const db = mongoose_1.default.connection;
|
|
79
81
|
let mongoConnectedAt = null;
|
|
82
|
+
let mongoVersion;
|
|
80
83
|
let httpUrl = null;
|
|
81
84
|
let readyPrinted = false;
|
|
82
85
|
db.on("error", (err) => {
|
|
@@ -85,7 +88,8 @@ db.on("error", (err) => {
|
|
|
85
88
|
console.error("Network error occurred. Attempting to reconnect...");
|
|
86
89
|
}
|
|
87
90
|
});
|
|
88
|
-
db.once("open", () => {
|
|
91
|
+
db.once("open", async () => {
|
|
92
|
+
mongoVersion = await (0, startup_1.fetchMongoServerVersion)(db);
|
|
89
93
|
mongoConnectedAt = new Date();
|
|
90
94
|
maybePrintReady();
|
|
91
95
|
});
|
|
@@ -111,9 +115,10 @@ setInterval(() => {
|
|
|
111
115
|
}, 30000);
|
|
112
116
|
const server = JXP(apiconfig);
|
|
113
117
|
let port = process.env.NODE_DOCKER_PORT || process.env.PORT || String(apiconfig.port || 4001);
|
|
118
|
+
const listenHost = process.env.NODE_ENV === "test" ? "127.0.0.1" : undefined;
|
|
114
119
|
if (process.env.NODE_ENV === "test")
|
|
115
120
|
port = "4005";
|
|
116
|
-
server.listen(parseInt(String(port), 10), function () {
|
|
121
|
+
server.listen(parseInt(String(port), 10), listenHost, function () {
|
|
117
122
|
httpUrl = server.url;
|
|
118
123
|
maybePrintReady();
|
|
119
124
|
});
|
|
@@ -125,6 +130,7 @@ function maybePrintReady() {
|
|
|
125
130
|
...startupCtx,
|
|
126
131
|
url: httpUrl,
|
|
127
132
|
mongooseVersion: mongoose_1.default.version,
|
|
133
|
+
mongoVersion,
|
|
128
134
|
mongoConnectedAt,
|
|
129
135
|
});
|
|
130
136
|
}
|
package/dist/bin/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/bin/server.ts"],"names":[],"mappings":";AAAA;;;;;;;;EAQE;;;;AAEF,wCAAsC;AACtC,gDAAwB;AACxB,wDAAgC;AAChC,mCAAoC;AACpC,qDAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/bin/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Model } from "mongoose";
|
|
2
|
+
/** Framework models loaded from the jxp package when absent from MODEL_DIR. */
|
|
3
|
+
export declare const BUILTIN_MODEL_SLUGS: readonly ["user", "apikey", "token", "refreshtoken", "usergroups", "indexquerylog"];
|
|
4
|
+
export type BuiltinModelSlug = (typeof BUILTIN_MODEL_SLUGS)[number];
|
|
5
|
+
export type ModelRegistry = Record<string, Model<unknown>>;
|
|
6
|
+
/** Root of the installed jxp package (works with npm install and link:jxp). */
|
|
7
|
+
export declare function getJxpPackageRoot(): string;
|
|
8
|
+
/** Compiled built-in model files shipped with jxp. */
|
|
9
|
+
export declare function getJxpBuiltinModelsDir(): string;
|
|
10
|
+
export declare function getEnabledBuiltinSlugs(): BuiltinModelSlug[];
|
|
11
|
+
/** Load `*_model.js` from the application MODEL_DIR. */
|
|
12
|
+
export declare function loadAppModels(modelDir: string): ModelRegistry;
|
|
13
|
+
/** Fill missing slugs from jxp package `dist/models`. App models always win. */
|
|
14
|
+
export declare function loadBuiltinModels(models: ModelRegistry, slugs?: BuiltinModelSlug[]): void;
|
|
15
|
+
/** App MODEL_DIR first, then jxp built-ins for any missing slugs. */
|
|
16
|
+
export declare function loadAllModels(modelDir: string): ModelRegistry;
|
|
17
|
+
export declare function getModelFromRegistry(models: ModelRegistry, slug: string): Model<unknown>;
|
|
18
|
+
export declare function isInternalModel(model: Model<unknown>): boolean;
|
|
19
|
+
/** Map slug or modelName input to the stored query-log model name (Mongoose modelName). */
|
|
20
|
+
export declare function resolveModelFilterName(models: ModelRegistry, input: string): string;
|
|
21
|
+
//# sourceMappingURL=builtin_models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin_models.d.ts","sourceRoot":"","sources":["../../src/libs/builtin_models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,qFAOtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAM3D,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,sDAAsD;AACtD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAcD,wBAAgB,sBAAsB,IAAI,gBAAgB,EAAE,CAI3D;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAc7D;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAgBzF;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAI7D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAQxF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAE9D;AAED,2FAA2F;AAC3F,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACX,MAAM,CAYR"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BUILTIN_MODEL_SLUGS = void 0;
|
|
7
|
+
exports.getJxpPackageRoot = getJxpPackageRoot;
|
|
8
|
+
exports.getJxpBuiltinModelsDir = getJxpBuiltinModelsDir;
|
|
9
|
+
exports.getEnabledBuiltinSlugs = getEnabledBuiltinSlugs;
|
|
10
|
+
exports.loadAppModels = loadAppModels;
|
|
11
|
+
exports.loadBuiltinModels = loadBuiltinModels;
|
|
12
|
+
exports.loadAllModels = loadAllModels;
|
|
13
|
+
exports.getModelFromRegistry = getModelFromRegistry;
|
|
14
|
+
exports.isInternalModel = isInternalModel;
|
|
15
|
+
exports.resolveModelFilterName = resolveModelFilterName;
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
/** Framework models loaded from the jxp package when absent from MODEL_DIR. */
|
|
19
|
+
exports.BUILTIN_MODEL_SLUGS = [
|
|
20
|
+
"user",
|
|
21
|
+
"apikey",
|
|
22
|
+
"token",
|
|
23
|
+
"refreshtoken",
|
|
24
|
+
"usergroups",
|
|
25
|
+
"indexquerylog",
|
|
26
|
+
];
|
|
27
|
+
function resolveModelDir(modelDir) {
|
|
28
|
+
return modelDir.charAt(0) === "/" ? modelDir : path_1.default.resolve(process.cwd(), modelDir);
|
|
29
|
+
}
|
|
30
|
+
/** Root of the installed jxp package (works with npm install and link:jxp). */
|
|
31
|
+
function getJxpPackageRoot() {
|
|
32
|
+
try {
|
|
33
|
+
return path_1.default.dirname(require.resolve("jxp/package.json"));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return path_1.default.join(__dirname, "..", "..");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Compiled built-in model files shipped with jxp. */
|
|
40
|
+
function getJxpBuiltinModelsDir() {
|
|
41
|
+
return path_1.default.join(getJxpPackageRoot(), "dist", "models");
|
|
42
|
+
}
|
|
43
|
+
function parseBuiltinSlugsFromEnv() {
|
|
44
|
+
const raw = process.env.JXP_BUILTIN_MODELS?.trim().toLowerCase();
|
|
45
|
+
if (!raw || raw === "default")
|
|
46
|
+
return null;
|
|
47
|
+
if (raw === "none" || raw === "false" || raw === "0")
|
|
48
|
+
return [];
|
|
49
|
+
return raw
|
|
50
|
+
.split(",")
|
|
51
|
+
.map((s) => s.trim())
|
|
52
|
+
.filter((s) => exports.BUILTIN_MODEL_SLUGS.includes(s));
|
|
53
|
+
}
|
|
54
|
+
function getEnabledBuiltinSlugs() {
|
|
55
|
+
const fromEnv = parseBuiltinSlugsFromEnv();
|
|
56
|
+
if (fromEnv !== null)
|
|
57
|
+
return fromEnv;
|
|
58
|
+
return [...exports.BUILTIN_MODEL_SLUGS];
|
|
59
|
+
}
|
|
60
|
+
/** Load `*_model.js` from the application MODEL_DIR. */
|
|
61
|
+
function loadAppModels(modelDir) {
|
|
62
|
+
const models = {};
|
|
63
|
+
const resolved = resolveModelDir(modelDir);
|
|
64
|
+
if (!fs_1.default.existsSync(resolved)) {
|
|
65
|
+
return models;
|
|
66
|
+
}
|
|
67
|
+
const files = fs_1.default.readdirSync(resolved).filter((f) => f.endsWith("_model.js"));
|
|
68
|
+
for (const fname of files) {
|
|
69
|
+
const slug = fname.replace("_model.js", "");
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
71
|
+
const mod = require(path_1.default.join(resolved, fname));
|
|
72
|
+
models[slug] = mod.default || mod;
|
|
73
|
+
}
|
|
74
|
+
return models;
|
|
75
|
+
}
|
|
76
|
+
/** Fill missing slugs from jxp package `dist/models`. App models always win. */
|
|
77
|
+
function loadBuiltinModels(models, slugs) {
|
|
78
|
+
const enabled = slugs ?? getEnabledBuiltinSlugs();
|
|
79
|
+
if (!enabled.length)
|
|
80
|
+
return;
|
|
81
|
+
const builtinDir = getJxpBuiltinModelsDir();
|
|
82
|
+
if (!fs_1.default.existsSync(builtinDir))
|
|
83
|
+
return;
|
|
84
|
+
for (const slug of enabled) {
|
|
85
|
+
if (models[slug])
|
|
86
|
+
continue;
|
|
87
|
+
const fname = `${slug}_model.js`;
|
|
88
|
+
const full = path_1.default.join(builtinDir, fname);
|
|
89
|
+
if (!fs_1.default.existsSync(full))
|
|
90
|
+
continue;
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
92
|
+
const mod = require(full);
|
|
93
|
+
models[slug] = mod.default || mod;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** App MODEL_DIR first, then jxp built-ins for any missing slugs. */
|
|
97
|
+
function loadAllModels(modelDir) {
|
|
98
|
+
const models = loadAppModels(modelDir);
|
|
99
|
+
loadBuiltinModels(models);
|
|
100
|
+
return models;
|
|
101
|
+
}
|
|
102
|
+
function getModelFromRegistry(models, slug) {
|
|
103
|
+
const model = models[slug];
|
|
104
|
+
if (!model) {
|
|
105
|
+
throw new Error(`Model "${slug}" is not loaded. Add ${slug}_model.js to MODEL_DIR or enable jxp built-in models.`);
|
|
106
|
+
}
|
|
107
|
+
return model;
|
|
108
|
+
}
|
|
109
|
+
function isInternalModel(model) {
|
|
110
|
+
return model.schema.opts?.internal === true;
|
|
111
|
+
}
|
|
112
|
+
/** Map slug or modelName input to the stored query-log model name (Mongoose modelName). */
|
|
113
|
+
function resolveModelFilterName(models, input) {
|
|
114
|
+
const t = input.trim();
|
|
115
|
+
if (!t)
|
|
116
|
+
return "";
|
|
117
|
+
if (models[t])
|
|
118
|
+
return models[t].modelName;
|
|
119
|
+
const bySlug = Object.entries(models).find(([slug]) => slug.toLowerCase() === t.toLowerCase());
|
|
120
|
+
if (bySlug)
|
|
121
|
+
return bySlug[1].modelName;
|
|
122
|
+
const byName = Object.values(models).find((m) => m.modelName.toLowerCase() === t.toLowerCase());
|
|
123
|
+
return byName?.modelName ?? t;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=builtin_models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin_models.js","sourceRoot":"","sources":["../../src/libs/builtin_models.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-auth.d.ts","sourceRoot":"","sources":["../../src/libs/docs-auth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE7D,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAGtD,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE3D;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"docs-auth.d.ts","sourceRoot":"","sources":["../../src/libs/docs-auth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE7D,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAGtD,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAKxD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAE3D;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAcD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAU5E;AAkCD,wBAAgB,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAE5C;AAED,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAEpC,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAuBxF;AAED,wBAAsB,SAAS,CAC9B,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,WAAW,EAChB,WAAW,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACpE,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,mGAAmG;AACnG,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjF;AAED,wBAAsB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAUzD"}
|
package/dist/libs/docs-auth.js
CHANGED
|
@@ -34,7 +34,11 @@ function getDocsAccess(config) {
|
|
|
34
34
|
}
|
|
35
35
|
/** Routes that require a docs session (model browser + interactive API). */
|
|
36
36
|
function isProtectedDocsPath(pathname) {
|
|
37
|
-
return pathname === "/docs/api" ||
|
|
37
|
+
return (pathname === "/docs/api" ||
|
|
38
|
+
pathname === "/docs/mcp" ||
|
|
39
|
+
pathname.startsWith("/docs/model/") ||
|
|
40
|
+
pathname === "/docs/diagnostics" ||
|
|
41
|
+
pathname === "/docs/mcp/call");
|
|
38
42
|
}
|
|
39
43
|
function isDocsLoginPath(pathname) {
|
|
40
44
|
return pathname === "/docs/login";
|
|
@@ -199,7 +203,7 @@ function logDocsAccessMode(config) {
|
|
|
199
203
|
console.log("API docs browser: public (no login for model explorer)");
|
|
200
204
|
}
|
|
201
205
|
else {
|
|
202
|
-
console.log("API docs browser: protected (login required for /docs/api and /docs/model/*)");
|
|
206
|
+
console.log("API docs browser: protected (login required for /docs/api, /docs/mcp, and /docs/model/*)");
|
|
203
207
|
}
|
|
204
208
|
}
|
|
205
209
|
//# sourceMappingURL=docs-auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-auth.js","sourceRoot":"","sources":["../../src/libs/docs-auth.ts"],"names":[],"mappings":";;;;;;AAkBA,0CAKC;AAED,sCAEC;AAGD,
|
|
1
|
+
{"version":3,"file":"docs-auth.js","sourceRoot":"","sources":["../../src/libs/docs-auth.ts"],"names":[],"mappings":"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"}
|