summaryrefslogtreecommitdiffhomepage
path: root/packages/host-bin/src/main.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/host-bin/src/main.ts')
-rw-r--r--packages/host-bin/src/main.ts39
1 files changed, 23 insertions, 16 deletions
diff --git a/packages/host-bin/src/main.ts b/packages/host-bin/src/main.ts
index 1261df4..c045e6b 100644
--- a/packages/host-bin/src/main.ts
+++ b/packages/host-bin/src/main.ts
@@ -1,4 +1,4 @@
-import { mkdirSync } from "node:fs";
+import { existsSync, mkdirSync } from "node:fs";
import { dirname } from "node:path";
import { extension as authApikeyExt } from "@dispatch/auth-apikey";
import { extension as cacheWarmingExt } from "@dispatch/cache-warming";
@@ -28,6 +28,7 @@ import { extension as skillsExt } from "@dispatch/skills";
import { createSqliteStorage, extension as storageSqliteExt } from "@dispatch/storage-sqlite";
import { createLoadedExtensionsExtension } from "@dispatch/surface-loaded-extensions";
import { createSurfaceRegistryExtension } from "@dispatch/surface-registry";
+import { extension as systemPromptExt } from "@dispatch/system-prompt";
import { extension as throughputStoreExt } from "@dispatch/throughput-store";
import { extension as todoExt } from "@dispatch/todo";
import { extension as toolEditFileExt } from "@dispatch/tool-edit-file";
@@ -85,6 +86,7 @@ const CORE_EXTENSIONS: readonly Extension[] = [
messageQueueExt,
sessionOrchestratorExt,
skillsExt,
+ systemPromptExt,
cacheWarmingExt,
lspExt,
createTransportHttpExtension(),
@@ -111,20 +113,25 @@ async function boot(): Promise<void> {
const traceDbPath = process.env.DISPATCH_TRACE_DB ?? "./.dispatch-data/traces.db";
- const supervisor = createCollectorSupervisor({
- spawn: (cmd: string[]) => {
- const proc = Bun.spawn(cmd, { stdout: "inherit", stderr: "inherit" });
- const handle: ChildHandle = {
- kill: (signal?: string) => proc.kill(signal as NodeJS.Signals),
- exited: proc.exited,
- };
- return handle;
- },
- journalPath,
- dbPath: traceDbPath,
- logger: logger.child({ extensionId: "collector-supervisor" }),
- });
- supervisor.start();
+ // Only start the collector supervisor in dev mode (source files available).
+ // Compiled binaries don't have the source tree, so the collector can't spawn.
+ let supervisor: ReturnType<typeof createCollectorSupervisor> | undefined;
+ if (existsSync("packages/observability-collector/src/main.ts")) {
+ supervisor = createCollectorSupervisor({
+ spawn: (cmd: string[]) => {
+ const proc = Bun.spawn(cmd, { stdout: "inherit", stderr: "inherit" });
+ const handle: ChildHandle = {
+ kill: (signal?: string) => proc.kill(signal as NodeJS.Signals),
+ exited: proc.exited,
+ };
+ return handle;
+ },
+ journalPath,
+ dbPath: traceDbPath,
+ logger: logger.child({ extensionId: "collector-supervisor" }),
+ });
+ supervisor.start();
+ }
const dbPath = process.env.DISPATCH_DB ?? "./.dispatch-data/dispatch.db";
mkdirSync(dirname(dbPath), { recursive: true });
@@ -196,7 +203,7 @@ async function boot(): Promise<void> {
logger.info("Shutting down — deactivating extensions");
await host.deactivate();
logger.info("Draining collector");
- await supervisor.stop();
+ await supervisor?.stop();
process.exit(0);
};
process.on("SIGINT", shutdown);