summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-28 08:57:17 +0900
committerAdam Malczewski <[email protected]>2026-06-28 08:57:17 +0900
commit73ff84c606f5307e5f40e649cae9f93484c0d99d (patch)
tree67444812b587135eadb15316ec2a0467b9f289c0
parent1cd66da48f8c0a35b4208202d07bcd9f20fbc2c2 (diff)
downloaddispatch-73ff84c606f5307e5f40e649cae9f93484c0d99d.tar.gz
dispatch-73ff84c606f5307e5f40e649cae9f93484c0d99d.zip
fix: disable LSP + change memory telemetry interval to 15s
- Disable LSP extension (import + CORE_EXTENSIONS) due to crashes - Make transport-http tolerate LSP being absent (optional getService) - Remove lsp from transport-http dependsOn manifest - Change memory telemetry sample interval from 60s to 15s
-rw-r--r--packages/host-bin/src/main.ts6
-rw-r--r--packages/host-bin/src/mem-telemetry.ts10
-rw-r--r--packages/transport-http/src/extension.ts13
3 files changed, 19 insertions, 10 deletions
diff --git a/packages/host-bin/src/main.ts b/packages/host-bin/src/main.ts
index f892fe8..29e402e 100644
--- a/packages/host-bin/src/main.ts
+++ b/packages/host-bin/src/main.ts
@@ -21,7 +21,9 @@ import {
type SecretsAccess,
type StorageNamespace,
} from "@dispatch/kernel";
-import { extension as lspExt } from "@dispatch/lsp";
+// LSP temporarily disabled — crashes (unhandled JSON parse, ENOENT on
+// transient .old_modules dirs) and a memory leak. Re-enable after fix.
+// import { extension as lspExt } from "@dispatch/lsp";
import { extension as mcpExt } from "@dispatch/mcp";
import { extension as messageQueueExt } from "@dispatch/message-queue";
import { extension as providerConcurrencyExt } from "@dispatch/provider-concurrency";
@@ -106,7 +108,7 @@ const CORE_EXTENSIONS: readonly Extension[] = [
skillsExt,
systemPromptExt,
cacheWarmingExt,
- lspExt,
+ // lspExt, // LSP temporarily disabled — see import above
// ssh declares `dependsOn: ["exec-backend"]` and PROVIDES the remote
// exec-backend factory + the ComputerService the HTTP routes delegate to.
// Its lookups are lazy (tool-/request-time), but it is placed after
diff --git a/packages/host-bin/src/mem-telemetry.ts b/packages/host-bin/src/mem-telemetry.ts
index 7f0bb42..576347b 100644
--- a/packages/host-bin/src/mem-telemetry.ts
+++ b/packages/host-bin/src/mem-telemetry.ts
@@ -23,8 +23,8 @@ import {
memorySampleAttributes,
} from "@dispatch/session-orchestrator";
-/** Default periodic sample interval: every 60s. */
-export const DEFAULT_MEMORY_SAMPLE_INTERVAL_MS = 60_000;
+/** Default periodic sample interval: every 15s. */
+export const DEFAULT_MEMORY_SAMPLE_INTERVAL_MS = 15_000;
/** Default GC interval: every 5 min (longer than the sample interval). */
export const DEFAULT_GC_INTERVAL_MS = 5 * 60_000;
@@ -52,7 +52,7 @@ export interface MemoryTelemetryDeps {
* baseline.
*/
readonly getActiveConversationCount: () => number;
- /** Periodic sample interval (ms). Defaults to 60s. */
+ /** Periodic sample interval (ms). Defaults to 15s. */
readonly sampleIntervalMs?: number;
/** GC interval (ms). Defaults to 5 min. */
readonly gcIntervalMs?: number;
@@ -77,7 +77,7 @@ export interface MemoryTelemetryHandle {
/**
* Start periodic memory telemetry. Logs process.memoryUsage() every
- * `sampleIntervalMs` (default 60s) tagged with the active-conversation count,
+ * `sampleIntervalMs` (default 15s) tagged with the active-conversation count,
* and every `gcIntervalMs` (default 5 min) runs `gc()` and logs RSS
* before/after to distinguish live retained objects from GC fragmentation.
*
@@ -97,7 +97,7 @@ export function startMemoryTelemetry(deps: MemoryTelemetryDeps): MemoryTelemetry
let gcHandle: MemoryTimerHandle | undefined;
// Periodic sample: log rss/heap/external/arrayBuffers + active-conversation
- // count every 60s. Correlates RSS growth with active turns so the leak can
+ // count every 15s. Correlates RSS growth with active turns so the leak can
// be attributed to the streaming path vs an idle baseline.
const sampleHandle: MemoryTimerHandle | undefined = setIntervalFn(() => {
const sample = deps.sampleMemory();
diff --git a/packages/transport-http/src/extension.ts b/packages/transport-http/src/extension.ts
index f46fca5..5d394b8 100644
--- a/packages/transport-http/src/extension.ts
+++ b/packages/transport-http/src/extension.ts
@@ -11,6 +11,7 @@ import {
credentialStoreHandle,
heartbeatServiceHandle,
lspServiceHandle,
+ type LspService,
mcpServiceHandle,
sessionOrchestratorHandle,
systemPromptHandle,
@@ -27,7 +28,6 @@ export const manifest: Manifest = {
"conversation-store",
"credential-store",
"heartbeat",
- "lsp",
"mcp",
"session-orchestrator",
"throughput-store",
@@ -95,7 +95,14 @@ export function createTransportHttpExtension(): Extension & {
const throughputStore = host.getService(throughputStoreHandle);
const warmService = host.getService(cacheWarmHandle);
const compactionService = host.getService(compactionHandle);
- const lspService = host.getService(lspServiceHandle);
+ // Optional: the `lsp` extension may be disabled (hot-fix). Wrapped because
+ // getService throws for an unregistered handle — degrades to no diagnostics.
+ let lspService: LspService | undefined;
+ try {
+ lspService = host.getService(lspServiceHandle);
+ } catch {
+ lspService = undefined;
+ }
const mcpService = host.getService(mcpServiceHandle);
const systemPromptService = host.getService(systemPromptHandle);
const heartbeatService = host.getService(heartbeatServiceHandle);
@@ -128,7 +135,7 @@ export function createTransportHttpExtension(): Extension & {
throughputStore,
warmService,
compactionService,
- lspService,
+ ...(lspService !== undefined ? { lspService } : {}),
mcpService,
systemPromptService,
heartbeatService,