@kb-labs/marketplace-registry-app 2.96.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.
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1,52 @@
1
+ import { getPlatformRoot, createServiceBootstrap } from '@kb-labs/core-runtime';
2
+ import { makeAssemblyHook } from '@kb-labs/plugin-runtime';
3
+ import { runDaemon } from '@kb-labs/shared-daemon';
4
+ import { getListenOptions } from '@kb-labs/shared-http';
5
+ import { RegistryService } from '@kb-labs/marketplace-registry-core';
6
+ import { createRegistryServer } from '@kb-labs/marketplace-registry-api';
7
+
8
+ // src/bootstrap.ts
9
+ var DEV_JWT_SECRET = "dev-insecure-secret-change-me";
10
+ async function main() {
11
+ await runDaemon(
12
+ {
13
+ appId: "marketplace-registry",
14
+ defaultPort: 5071,
15
+ portEnvVar: "KB_REGISTRY_PORT",
16
+ defaultHost: "0.0.0.0",
17
+ hostEnvVar: "KB_REGISTRY_HOST",
18
+ async setup({ platform, logger, port, host }) {
19
+ getPlatformRoot() ?? process.cwd();
20
+ const service = new RegistryService({
21
+ storage: platform.storage,
22
+ cache: platform.cache,
23
+ logger: platform.logger,
24
+ baseUrl: process.env.KB_REGISTRY_URL ?? `http://localhost:${port}`,
25
+ signingPrivateKey: process.env.KB_REGISTRY_SIGNING_KEY,
26
+ siteUrl: process.env.KB_SITE_URL ?? "https://kblabs.ru"
27
+ });
28
+ const jwtSecret = process.env.GATEWAY_JWT_SECRET;
29
+ const isProduction = process.env.NODE_ENV === "production";
30
+ if (!jwtSecret && isProduction) {
31
+ throw new Error("GATEWAY_JWT_SECRET must be set in production");
32
+ }
33
+ if (!jwtSecret) {
34
+ logger.warn("GATEWAY_JWT_SECRET not set \u2014 using insecure default (dev only, never use in production!)");
35
+ }
36
+ const jwtConfig = { secret: jwtSecret ?? DEV_JWT_SECRET };
37
+ const server = await createRegistryServer({ port, host, logger: platform.logger, registry: service, jwtConfig });
38
+ await server.listen(getListenOptions(port, host));
39
+ return async () => {
40
+ await server.close();
41
+ };
42
+ }
43
+ },
44
+ (appId, repoRoot) => createServiceBootstrap({ appId, repoRoot, assemblyHook: makeAssemblyHook() })
45
+ );
46
+ }
47
+ main().catch((err) => {
48
+ console.error("marketplace-registry failed to start", err);
49
+ process.exit(1);
50
+ });
51
+ //# sourceMappingURL=bootstrap.js.map
52
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bootstrap.ts"],"names":[],"mappings":";;;;;;;;AAQA,IAAM,cAAA,GAAiB,+BAAA;AAEvB,eAAe,IAAA,GAAsB;AACnC,EAAA,MAAM,SAAA;AAAA,IACJ;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EAAa,IAAA;AAAA,MACb,UAAA,EAAY,kBAAA;AAAA,MACZ,WAAA,EAAa,SAAA;AAAA,MACb,UAAA,EAAY,kBAAA;AAAA,MACZ,MAAM,KAAA,CAAM,EAAE,UAAU,MAAA,EAAQ,IAAA,EAAM,MAAK,EAAG;AAC5C,QAAqB,eAAA,EAAgB,IAAK,OAAA,CAAQ,GAAA;AAGlD,QAAA,MAAM,OAAA,GAAU,IAAI,eAAA,CAAgB;AAAA,UAClC,SAAS,QAAA,CAAS,OAAA;AAAA,UAClB,OAAO,QAAA,CAAS,KAAA;AAAA,UAChB,QAAQ,QAAA,CAAS,MAAA;AAAA,UACjB,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,eAAA,IAAmB,oBAAoB,IAAI,CAAA,CAAA;AAAA,UAChE,iBAAA,EAAmB,QAAQ,GAAA,CAAI,uBAAA;AAAA,UAC/B,OAAA,EAAS,OAAA,CAAQ,GAAA,CAAI,WAAA,IAAe;AAAA,SACrC,CAAA;AAED,QAAA,MAAM,SAAA,GAAY,QAAQ,GAAA,CAAI,kBAAA;AAC9B,QAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,YAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,YAAA,EAAc;AAC9B,UAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,QAChE;AACA,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,MAAA,CAAO,KAAK,+FAA0F,CAAA;AAAA,QACxG;AACA,QAAA,MAAM,SAAA,GAAuB,EAAE,MAAA,EAAQ,SAAA,IAAa,cAAA,EAAe;AAEnE,QAAA,MAAM,MAAA,GAAS,MAAM,oBAAA,CAAqB,EAAE,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,QAAA,CAAS,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,CAAA;AAC/G,QAAA,MAAM,MAAA,CAAO,MAAA,CAAO,gBAAA,CAAiB,IAAA,EAAM,IAAI,CAAC,CAAA;AAIhD,QAAA,OAAO,YAAY;AACjB,UAAA,MAAM,OAAO,KAAA,EAAM;AAAA,QACrB,CAAA;AAAA,MACF;AAAA,KACF;AAAA,IACA,CAAC,KAAA,EAAO,QAAA,KACN,sBAAA,CAAuB,EAAE,OAAO,QAAA,EAAU,YAAA,EAAc,gBAAA,EAAiB,EAAG;AAAA,GAChF;AACF;AAEA,IAAA,EAAK,CAAE,KAAA,CAAM,CAAC,GAAA,KAAQ;AACpB,EAAA,OAAA,CAAQ,KAAA,CAAM,wCAAwC,GAAG,CAAA;AACzD,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB,CAAC,CAAA","file":"bootstrap.js","sourcesContent":["import { createServiceBootstrap, getPlatformRoot } from '@kb-labs/core-runtime';\nimport { makeAssemblyHook } from '@kb-labs/plugin-runtime';\nimport { runDaemon } from '@kb-labs/shared-daemon';\nimport { getListenOptions } from '@kb-labs/shared-http';\nimport type { JwtConfig } from '@kb-labs/gateway-auth';\nimport { RegistryService } from '@kb-labs/marketplace-registry-core';\nimport { createRegistryServer } from '@kb-labs/marketplace-registry-api';\n\nconst DEV_JWT_SECRET = 'dev-insecure-secret-change-me';\n\nasync function main(): Promise<void> {\n await runDaemon(\n {\n appId: 'marketplace-registry',\n defaultPort: 5071,\n portEnvVar: 'KB_REGISTRY_PORT',\n defaultHost: '0.0.0.0',\n hostEnvVar: 'KB_REGISTRY_HOST',\n async setup({ platform, logger, port, host }) {\n const platformRoot = getPlatformRoot() ?? process.cwd();\n void platformRoot; // reserved for future per-project scoping\n\n const service = new RegistryService({\n storage: platform.storage,\n cache: platform.cache,\n logger: platform.logger,\n baseUrl: process.env.KB_REGISTRY_URL ?? `http://localhost:${port}`,\n signingPrivateKey: process.env.KB_REGISTRY_SIGNING_KEY,\n siteUrl: process.env.KB_SITE_URL ?? 'https://kblabs.ru',\n });\n\n const jwtSecret = process.env.GATEWAY_JWT_SECRET;\n const isProduction = process.env.NODE_ENV === 'production';\n if (!jwtSecret && isProduction) {\n throw new Error('GATEWAY_JWT_SECRET must be set in production');\n }\n if (!jwtSecret) {\n logger.warn('GATEWAY_JWT_SECRET not set — using insecure default (dev only, never use in production!)');\n }\n const jwtConfig: JwtConfig = { secret: jwtSecret ?? DEV_JWT_SECRET };\n\n const server = await createRegistryServer({ port, host, logger: platform.logger, registry: service, jwtConfig });\n await server.listen(getListenOptions(port, host));\n\n // Note: actual binding may be via Unix socket (KB_SOCKET_PATH) — see getListenOptions()\n\n return async () => {\n await server.close();\n };\n },\n },\n (appId, repoRoot) =>\n createServiceBootstrap({ appId, repoRoot, assemblyHook: makeAssemblyHook() }),\n );\n}\n\nmain().catch((err) => {\n console.error('marketplace-registry failed to start', err);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,5 @@
1
+ import { ServiceManifest } from '@kb-labs/plugin-contracts';
2
+
3
+ declare const manifest: ServiceManifest;
4
+
5
+ export { manifest as default, manifest };
@@ -0,0 +1,24 @@
1
+ // src/manifest.ts
2
+ var manifest = {
3
+ schema: "kb.service/1",
4
+ id: "marketplace-registry",
5
+ name: "Marketplace Registry",
6
+ version: "1.0.0",
7
+ description: "Registry for kb:handle/name packages \u2014 publish, install, share",
8
+ runtime: {
9
+ entry: "dist/bootstrap.js",
10
+ port: 5071,
11
+ healthCheck: "/health",
12
+ socket: "/tmp/kb-${KB_SOCKET_HASH}/marketplace-registry.sock"
13
+ },
14
+ dependsOn: ["state-daemon"],
15
+ env: {
16
+ KB_REGISTRY_PORT: { description: "HTTP port", default: "5071" },
17
+ KB_REGISTRY_HOST: { description: "Bind host", default: "127.0.0.1" }
18
+ }
19
+ };
20
+ var manifest_default = manifest;
21
+
22
+ export { manifest_default as default, manifest };
23
+ //# sourceMappingURL=manifest.js.map
24
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/manifest.ts"],"names":[],"mappings":";AAEO,IAAM,QAAA,GAA4B;AAAA,EACvC,MAAA,EAAQ,cAAA;AAAA,EACR,EAAA,EAAI,sBAAA;AAAA,EACJ,IAAA,EAAM,sBAAA;AAAA,EACN,OAAA,EAAS,OAAA;AAAA,EACT,WAAA,EAAa,qEAAA;AAAA,EACb,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,mBAAA;AAAA,IACP,IAAA,EAAM,IAAA;AAAA,IACN,WAAA,EAAa,SAAA;AAAA,IACb,MAAA,EAAQ;AAAA,GACV;AAAA,EACA,SAAA,EAAW,CAAC,cAAc,CAAA;AAAA,EAC1B,GAAA,EAAK;AAAA,IACH,gBAAA,EAAkB,EAAE,WAAA,EAAa,WAAA,EAAa,SAAS,MAAA,EAAO;AAAA,IAC9D,gBAAA,EAAkB,EAAE,WAAA,EAAa,WAAA,EAAa,SAAS,WAAA;AAAY;AAEvE;AAEA,IAAO,gBAAA,GAAQ","file":"manifest.js","sourcesContent":["import type { ServiceManifest } from '@kb-labs/plugin-contracts';\n\nexport const manifest: ServiceManifest = {\n schema: 'kb.service/1',\n id: 'marketplace-registry',\n name: 'Marketplace Registry',\n version: '1.0.0',\n description: 'Registry for kb:handle/name packages — publish, install, share',\n runtime: {\n entry: 'dist/bootstrap.js',\n port: 5071,\n healthCheck: '/health',\n socket: '/tmp/kb-${KB_SOCKET_HASH}/marketplace-registry.sock',\n },\n dependsOn: ['state-daemon'],\n env: {\n KB_REGISTRY_PORT: { description: 'HTTP port', default: '5071' },\n KB_REGISTRY_HOST: { description: 'Bind host', default: '127.0.0.1' },\n },\n};\n\nexport default manifest;\n"]}
@@ -0,0 +1,26 @@
1
+ {
2
+ "schema": "kb.service/1",
3
+ "id": "marketplace-registry",
4
+ "name": "Marketplace Registry",
5
+ "version": "1.0.0",
6
+ "description": "Registry for kb:handle/name packages — publish, install, share",
7
+ "runtime": {
8
+ "entry": "dist/bootstrap.js",
9
+ "port": 5071,
10
+ "healthCheck": "/health",
11
+ "socket": "/tmp/kb-${KB_SOCKET_HASH}/marketplace-registry.sock"
12
+ },
13
+ "dependsOn": [
14
+ "state-daemon"
15
+ ],
16
+ "env": {
17
+ "KB_REGISTRY_PORT": {
18
+ "description": "HTTP port",
19
+ "default": "5071"
20
+ },
21
+ "KB_REGISTRY_HOST": {
22
+ "description": "Bind host",
23
+ "default": "127.0.0.1"
24
+ }
25
+ }
26
+ }
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@kb-labs/marketplace-registry-app",
3
+ "description": "KB Labs Marketplace Registry daemon",
4
+ "version": "2.96.0",
5
+ "type": "module",
6
+ "main": "./dist/bootstrap.js",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "kb": {
11
+ "manifest": "./dist/manifest.js"
12
+ },
13
+ "dependencies": {
14
+ "@kb-labs/plugin-runtime": "2.96.0",
15
+ "@kb-labs/plugin-contracts": "2.96.0",
16
+ "@kb-labs/core-sys": "2.96.0",
17
+ "@kb-labs/shared-daemon": "2.96.0",
18
+ "@kb-labs/gateway-auth": "2.96.0",
19
+ "@kb-labs/marketplace-registry-api": "2.96.0",
20
+ "@kb-labs/shared-http": "2.96.0",
21
+ "@kb-labs/core-platform": "2.96.0",
22
+ "@kb-labs/marketplace-registry-core": "2.96.0",
23
+ "@kb-labs/core-runtime": "2.96.0",
24
+ "@kb-labs/adapters-s3": "2.96.0"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "^24.3.3",
28
+ "tsup": "^8.5.0",
29
+ "tsx": "^4.20.5",
30
+ "typescript": "^5",
31
+ "vitest": "^3.2.6",
32
+ "@kb-labs/devkit": "2.96.0"
33
+ },
34
+ "engines": {
35
+ "node": ">=20.0.0",
36
+ "pnpm": ">=9.0.0"
37
+ },
38
+ "scripts": {
39
+ "build": "tsup",
40
+ "clean": "rimraf dist",
41
+ "dev": "tsx watch src/bootstrap.ts",
42
+ "lint": "eslint src --ext .ts",
43
+ "lint:fix": "eslint src --ext .ts --fix",
44
+ "start": "node dist/bootstrap.js",
45
+ "test": "vitest run --passWithNoTests -c ../../vitest.config.ts",
46
+ "type-check": "tsc --noEmit"
47
+ }
48
+ }