@kb-labs/shared-daemon 2.119.0-canary.e120bc0ee → 2.119.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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/daemon.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import {\n launchPlatform,\n type PlatformAssemblyHook,\n type PlatformContainer,\n type PlatformFailurePolicy,\n type PlatformRuntime,\n type PlatformUiProvider,\n} from \"@kb-labs/core-runtime\";\nimport type { IContextLogger, IServiceTransport } from \"@kb-labs/core-platform\";\n\nexport interface ServiceContext {\n platform: PlatformContainer;\n logger: IContextLogger;\n port: number;\n host: string;\n runtime: PlatformRuntime;\n platformRoot: string;\n projectRoot: string;\n}\n\ninterface NetworkServiceConfig {\n appId: string;\n /**\n * serviceId in the declarative transport map. Defaults to appId.\n * Edge services that are not in the map use defaultPort + KB_NET_OFFSET.\n */\n serviceId?: string;\n defaultPort: number;\n portEnvVar: string;\n defaultHost?: string;\n hostEnvVar?: string;\n}\n\nexport interface ServiceConfig extends NetworkServiceConfig {\n /** Starting directory for project/platform root resolution. */\n startDir?: string;\n /** Entrypoint import.meta.url for installed-mode platform discovery. */\n moduleUrl?: string;\n platform: {\n assemblyHook: PlatformAssemblyHook;\n failurePolicy?: PlatformFailurePolicy;\n loadEnv?: boolean;\n storeRawConfig?: boolean;\n uiProvider?: PlatformUiProvider;\n };\n /**\n * Runs after the platform is ready. The returned teardown is always called\n * before PlatformRuntime.shutdown().\n */\n setup(ctx: ServiceContext): Promise<() => Promise<void>>;\n}\n\ninterface ManagedRuntime {\n platform: PlatformContainer;\n logger: IContextLogger;\n projectRoot: string;\n platformRoot: string;\n shutdown(reason?: string): Promise<void>;\n runtime: PlatformRuntime;\n}\n\nfunction resolveNetwork(\n config: NetworkServiceConfig,\n platform: PlatformContainer,\n): { port: number; host: string } {\n const serviceId = config.serviceId ?? config.appId;\n const transport = platform.getAdapter<IServiceTransport>(\"serviceTransport\");\n const address = transport?.listenAddress?.(serviceId);\n const netOffset = Number(process.env.KB_NET_OFFSET) || 0;\n\n const port =\n address && \"port\" in address\n ? address.port\n : (process.env[config.portEnvVar]\n ? parseInt(process.env[config.portEnvVar]!, 10)\n : config.defaultPort) + netOffset;\n\n const transportHost = address && \"host\" in address ? address.host : undefined;\n const host =\n config.hostEnvVar && process.env[config.hostEnvVar]\n ? process.env[config.hostEnvVar]!\n : (transportHost ?? config.defaultHost ?? \"0.0.0.0\");\n\n return { port, host };\n}\n\nasync function runManagedService(\n config: NetworkServiceConfig,\n managed: ManagedRuntime,\n setup: (context: ServiceContext) => Promise<() => Promise<void>>,\n): Promise<void> {\n const { port, host } = resolveNetwork(config, managed.platform);\n const logger = managed.logger.forComponent(\"service-bootstrap\");\n\n logger.event(\"info\", {\n event: \"service.starting\",\n message: \"Service starting\",\n fields: { port, host },\n });\n\n let teardown: (() => Promise<void>) | undefined;\n try {\n teardown = await setup({\n runtime: managed.runtime as PlatformRuntime,\n platform: managed.platform,\n logger,\n port,\n host,\n projectRoot: managed.projectRoot,\n platformRoot: managed.platformRoot,\n });\n } catch (error) {\n logger.error(\n \"Service setup failed\",\n error instanceof Error ? error : undefined,\n {\n event: \"service.failed\",\n error: error instanceof Error ? error.message : String(error),\n },\n );\n await managed.shutdown(\"service.setup-failed\");\n throw error;\n }\n\n logger.event(\"info\", {\n event: \"service.ready\",\n message: \"Service ready\",\n fields: { port, host, outcome: \"success\" },\n });\n\n let shutdownPromise: Promise<void> | undefined;\n const shutdown = (signal: string): Promise<void> => {\n shutdownPromise ??= (async () => {\n logger.event(\"info\", {\n event: \"service.stopping\",\n message: \"Service stopping\",\n fields: { signal },\n });\n let shutdownError: unknown;\n\n try {\n await teardown?.();\n } catch (error) {\n shutdownError = error;\n logger.error(\n \"Service teardown failed\",\n error instanceof Error ? error : undefined,\n {\n event: \"service.failed\",\n phase: \"teardown\",\n },\n );\n }\n\n try {\n await managed.shutdown(`signal:${signal}`);\n } catch (error) {\n shutdownError ??= error;\n logger.error(\n \"Platform shutdown failed\",\n error instanceof Error ? error : undefined,\n {\n event: \"service.failed\",\n phase: \"platform-shutdown\",\n },\n );\n }\n\n const exitCode = shutdownError ? 1 : 0;\n logger.event(shutdownError ? \"error\" : \"info\", {\n event: shutdownError ? \"service.failed\" : \"service.stopped\",\n message: shutdownError\n ? \"Service stopped with errors\"\n : \"Service stopped\",\n fields: {\n signal,\n exitCode,\n outcome: shutdownError ? \"failure\" : \"success\",\n },\n });\n process.exit(exitCode);\n })();\n return shutdownPromise;\n };\n\n process.once(\"SIGTERM\", () => shutdown(\"SIGTERM\"));\n process.once(\"SIGINT\", () => shutdown(\"SIGINT\"));\n}\n\n/**\n * Canonical service process launcher.\n *\n * Every service gets the same roots/env/config/platform lifecycle. Service code\n * starts only inside setup(), after PlatformRuntime is ready.\n */\nexport async function runService(config: ServiceConfig): Promise<void> {\n const runtime = await launchPlatform({\n applicationId: config.appId,\n serviceId: config.serviceId ?? config.appId,\n kind: \"service\",\n startDir: config.startDir,\n moduleUrl: config.moduleUrl,\n assemblyHook: config.platform.assemblyHook,\n failurePolicy: config.platform.failurePolicy,\n loadEnv: config.platform.loadEnv,\n storeRawConfig: config.platform.storeRawConfig,\n uiProvider: config.platform.uiProvider,\n });\n\n await runManagedService(\n config,\n {\n runtime,\n platform: runtime.platform,\n logger: runtime.logger,\n projectRoot: runtime.roots.projectRoot,\n platformRoot: runtime.roots.platformRoot,\n shutdown: (reason) => runtime.shutdown(reason),\n },\n config.setup,\n );\n}\n"]}
1
+ {"version":3,"sources":["../../home/runner/work/kb-labs/kb-labs/shared/daemon/src/daemon.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import {\n launchPlatform,\n type PlatformAssemblyHook,\n type PlatformContainer,\n type PlatformFailurePolicy,\n type PlatformRuntime,\n type PlatformUiProvider,\n} from \"@kb-labs/core-runtime\";\nimport type { IContextLogger, IServiceTransport } from \"@kb-labs/core-platform\";\n\nexport interface ServiceContext {\n platform: PlatformContainer;\n logger: IContextLogger;\n port: number;\n host: string;\n runtime: PlatformRuntime;\n platformRoot: string;\n projectRoot: string;\n}\n\ninterface NetworkServiceConfig {\n appId: string;\n /**\n * serviceId in the declarative transport map. Defaults to appId.\n * Edge services that are not in the map use defaultPort + KB_NET_OFFSET.\n */\n serviceId?: string;\n defaultPort: number;\n portEnvVar: string;\n defaultHost?: string;\n hostEnvVar?: string;\n}\n\nexport interface ServiceConfig extends NetworkServiceConfig {\n /** Starting directory for project/platform root resolution. */\n startDir?: string;\n /** Entrypoint import.meta.url for installed-mode platform discovery. */\n moduleUrl?: string;\n platform: {\n assemblyHook: PlatformAssemblyHook;\n failurePolicy?: PlatformFailurePolicy;\n loadEnv?: boolean;\n storeRawConfig?: boolean;\n uiProvider?: PlatformUiProvider;\n };\n /**\n * Runs after the platform is ready. The returned teardown is always called\n * before PlatformRuntime.shutdown().\n */\n setup(ctx: ServiceContext): Promise<() => Promise<void>>;\n}\n\ninterface ManagedRuntime {\n platform: PlatformContainer;\n logger: IContextLogger;\n projectRoot: string;\n platformRoot: string;\n shutdown(reason?: string): Promise<void>;\n runtime: PlatformRuntime;\n}\n\nfunction resolveNetwork(\n config: NetworkServiceConfig,\n platform: PlatformContainer,\n): { port: number; host: string } {\n const serviceId = config.serviceId ?? config.appId;\n const transport = platform.getAdapter<IServiceTransport>(\"serviceTransport\");\n const address = transport?.listenAddress?.(serviceId);\n const netOffset = Number(process.env.KB_NET_OFFSET) || 0;\n\n const port =\n address && \"port\" in address\n ? address.port\n : (process.env[config.portEnvVar]\n ? parseInt(process.env[config.portEnvVar]!, 10)\n : config.defaultPort) + netOffset;\n\n const transportHost = address && \"host\" in address ? address.host : undefined;\n const host =\n config.hostEnvVar && process.env[config.hostEnvVar]\n ? process.env[config.hostEnvVar]!\n : (transportHost ?? config.defaultHost ?? \"0.0.0.0\");\n\n return { port, host };\n}\n\nasync function runManagedService(\n config: NetworkServiceConfig,\n managed: ManagedRuntime,\n setup: (context: ServiceContext) => Promise<() => Promise<void>>,\n): Promise<void> {\n const { port, host } = resolveNetwork(config, managed.platform);\n const logger = managed.logger.forComponent(\"service-bootstrap\");\n\n logger.event(\"info\", {\n event: \"service.starting\",\n message: \"Service starting\",\n fields: { port, host },\n });\n\n let teardown: (() => Promise<void>) | undefined;\n try {\n teardown = await setup({\n runtime: managed.runtime as PlatformRuntime,\n platform: managed.platform,\n logger,\n port,\n host,\n projectRoot: managed.projectRoot,\n platformRoot: managed.platformRoot,\n });\n } catch (error) {\n logger.error(\n \"Service setup failed\",\n error instanceof Error ? error : undefined,\n {\n event: \"service.failed\",\n error: error instanceof Error ? error.message : String(error),\n },\n );\n await managed.shutdown(\"service.setup-failed\");\n throw error;\n }\n\n logger.event(\"info\", {\n event: \"service.ready\",\n message: \"Service ready\",\n fields: { port, host, outcome: \"success\" },\n });\n\n let shutdownPromise: Promise<void> | undefined;\n const shutdown = (signal: string): Promise<void> => {\n shutdownPromise ??= (async () => {\n logger.event(\"info\", {\n event: \"service.stopping\",\n message: \"Service stopping\",\n fields: { signal },\n });\n let shutdownError: unknown;\n\n try {\n await teardown?.();\n } catch (error) {\n shutdownError = error;\n logger.error(\n \"Service teardown failed\",\n error instanceof Error ? error : undefined,\n {\n event: \"service.failed\",\n phase: \"teardown\",\n },\n );\n }\n\n try {\n await managed.shutdown(`signal:${signal}`);\n } catch (error) {\n shutdownError ??= error;\n logger.error(\n \"Platform shutdown failed\",\n error instanceof Error ? error : undefined,\n {\n event: \"service.failed\",\n phase: \"platform-shutdown\",\n },\n );\n }\n\n const exitCode = shutdownError ? 1 : 0;\n logger.event(shutdownError ? \"error\" : \"info\", {\n event: shutdownError ? \"service.failed\" : \"service.stopped\",\n message: shutdownError\n ? \"Service stopped with errors\"\n : \"Service stopped\",\n fields: {\n signal,\n exitCode,\n outcome: shutdownError ? \"failure\" : \"success\",\n },\n });\n process.exit(exitCode);\n })();\n return shutdownPromise;\n };\n\n process.once(\"SIGTERM\", () => shutdown(\"SIGTERM\"));\n process.once(\"SIGINT\", () => shutdown(\"SIGINT\"));\n}\n\n/**\n * Canonical service process launcher.\n *\n * Every service gets the same roots/env/config/platform lifecycle. Service code\n * starts only inside setup(), after PlatformRuntime is ready.\n */\nexport async function runService(config: ServiceConfig): Promise<void> {\n const runtime = await launchPlatform({\n applicationId: config.appId,\n serviceId: config.serviceId ?? config.appId,\n kind: \"service\",\n startDir: config.startDir,\n moduleUrl: config.moduleUrl,\n assemblyHook: config.platform.assemblyHook,\n failurePolicy: config.platform.failurePolicy,\n loadEnv: config.platform.loadEnv,\n storeRawConfig: config.platform.storeRawConfig,\n uiProvider: config.platform.uiProvider,\n });\n\n await runManagedService(\n config,\n {\n runtime,\n platform: runtime.platform,\n logger: runtime.logger,\n projectRoot: runtime.roots.projectRoot,\n platformRoot: runtime.roots.platformRoot,\n shutdown: (reason) => runtime.shutdown(reason),\n },\n config.setup,\n );\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kb-labs/shared-daemon",
3
3
  "description": "Universal process-lifecycle bootstrapper for KB Labs daemon services",
4
- "version": "2.119.0-canary.e120bc0ee",
4
+ "version": "2.119.0",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -16,8 +16,8 @@
16
16
  "README.md"
17
17
  ],
18
18
  "dependencies": {
19
- "@kb-labs/core-platform": "2.119.0-canary.e120bc0ee",
20
- "@kb-labs/core-runtime": "2.119.0-canary.e120bc0ee"
19
+ "@kb-labs/core-platform": "2.119.0",
20
+ "@kb-labs/core-runtime": "2.119.0"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/node": "^24.3.3",
@@ -25,10 +25,10 @@
25
25
  "tsup": "^8.5.0",
26
26
  "typescript": "^5.6.3",
27
27
  "vitest": "^3.2.6",
28
- "@kb-labs/devkit": "2.119.0-canary.e120bc0ee"
28
+ "@kb-labs/devkit": "2.119.0"
29
29
  },
30
30
  "engines": {
31
- "node": ">=22.0.0",
31
+ "node": ">=24.0.0",
32
32
  "pnpm": ">=9.0.0"
33
33
  },
34
34
  "publishConfig": {