@nimblebrain/api-spec
Advanced tools
+9
-3
| { | ||
| "name": "@nimblebrain/api-spec", | ||
| "version": "0.0.1", | ||
| "version": "0.0.3", | ||
| "main": "dist/index.js", | ||
@@ -18,5 +18,11 @@ "module": "dist/index.js", | ||
| "build": "tsc", | ||
| "clean": "npx rimraf dist", | ||
| "prepare": "npm run build", | ||
| "generate-docs": "ts-node src/generateDocs.ts", | ||
| "start": "http-server ./docs -p 9000" | ||
| "start": "http-server ./docs -p 9000", | ||
| "version": "git add -A", | ||
| "postversion": "git push && git push --tags", | ||
| "release:patch": "npm version patch && npm publish --access public", | ||
| "release:minor": "npm version minor && npm publish --access public", | ||
| "release:major": "npm version major && npm publish --access public" | ||
| }, | ||
@@ -33,2 +39,2 @@ "dependencies": { | ||
| } | ||
| } | ||
| } |
| export {}; | ||
| //# sourceMappingURL=generateDocs.d.ts.map |
| {"version":3,"file":"generateDocs.d.ts","sourceRoot":"","sources":["../src/generateDocs.ts"],"names":[],"mappings":""} |
| "use strict"; | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || (function () { | ||
| var ownKeys = function(o) { | ||
| ownKeys = Object.getOwnPropertyNames || function (o) { | ||
| var ar = []; | ||
| for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; | ||
| return ar; | ||
| }; | ||
| return ownKeys(o); | ||
| }; | ||
| return function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| })(); | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| // src/generateDocs.ts | ||
| const zod_to_openapi_1 = require("@asteasolutions/zod-to-openapi"); | ||
| const fs = __importStar(require("fs")); | ||
| const path = __importStar(require("path")); | ||
| const routes_1 = require("./routes"); | ||
| // Create registry | ||
| const registry = new zod_to_openapi_1.OpenAPIRegistry(); | ||
| // Register security scheme | ||
| registry.registerComponent("securitySchemes", "bearerAuth", { | ||
| type: "http", | ||
| scheme: "bearer", | ||
| bearerFormat: "JWT", | ||
| description: "Enter the agent access token (JWT)", | ||
| }); | ||
| // Register routes | ||
| (0, routes_1.registerRoutes)(registry); | ||
| // Create generator | ||
| const generator = new zod_to_openapi_1.OpenApiGeneratorV3(registry.definitions); | ||
| // Generate document | ||
| const document = generator.generateDocument({ | ||
| openapi: "3.0.0", | ||
| info: { | ||
| title: "NimbleBrain API", | ||
| version: "1.0.0", | ||
| description: "API specification for NimbleBrain", | ||
| }, | ||
| servers: [ | ||
| { | ||
| url: "https://api.nimblebrain.ai/v1", | ||
| description: "Production server", | ||
| }, | ||
| { | ||
| url: "http://localhost:3001/v1", | ||
| description: "Local development", | ||
| }, | ||
| ], | ||
| }); | ||
| const docsDir = path.join(__dirname, "../docs"); | ||
| if (!fs.existsSync(docsDir)) { | ||
| fs.mkdirSync(docsDir); | ||
| } | ||
| // Generate OpenAPI JSON | ||
| fs.writeFileSync(path.join(docsDir, "openapi.json"), JSON.stringify(document, null, 2)); | ||
| // Create SwaggerUI HTML | ||
| const swaggerHtml = ` | ||
| <!DOCTYPE html> | ||
| <html lang="en"> | ||
| <head> | ||
| <meta charset="utf-8" /> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
| <title>NimbleBrain API Documentation</title> | ||
| <link rel="stylesheet" href="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui.css" /> | ||
| </head> | ||
| <body> | ||
| <div id="swagger-ui"></div> | ||
| <script src="https://unpkg.com/swagger-ui-dist@5.11.0/swagger-ui-bundle.js"></script> | ||
| <script> | ||
| window.onload = () => { | ||
| window.ui = SwaggerUIBundle({ | ||
| url: 'openapi.json', | ||
| dom_id: '#swagger-ui', | ||
| }); | ||
| }; | ||
| </script> | ||
| </body> | ||
| </html> | ||
| `; | ||
| fs.writeFileSync(path.join(docsDir, "index.html"), swaggerHtml); | ||
| //# sourceMappingURL=generateDocs.js.map |
| {"version":3,"file":"generateDocs.js","sourceRoot":"","sources":["../src/generateDocs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sBAAsB;AACtB,mEAAqF;AACrF,uCAAyB;AACzB,2CAA6B;AAC7B,qCAA0C;AAE1C,kBAAkB;AAClB,MAAM,QAAQ,GAAG,IAAI,gCAAe,EAAE,CAAC;AAEvC,2BAA2B;AAC3B,QAAQ,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,YAAY,EAAE;IAC1D,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,oCAAoC;CAClD,CAAC,CAAC;AAEH,kBAAkB;AAClB,IAAA,uBAAc,EAAC,QAAQ,CAAC,CAAC;AAEzB,mBAAmB;AACnB,MAAM,SAAS,GAAG,IAAI,mCAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE/D,oBAAoB;AACpB,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC;IAC1C,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,mCAAmC;KACjD;IACD,OAAO,EAAE;QACP;YACE,GAAG,EAAE,+BAA+B;YACpC,WAAW,EAAE,mBAAmB;SACjC;QACD;YACE,GAAG,EAAE,0BAA0B;YAC/B,WAAW,EAAE,mBAAmB;SACjC;KACF;CACF,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAED,wBAAwB;AACxB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAExF,wBAAwB;AACxB,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBnB,CAAC;AAEF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,WAAW,CAAC,CAAC"} |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
1
-66.67%42221
-10.17%55
-6.78%673
-13.38%