@posthog/agent 2.3.126 → 2.3.137

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.
@@ -904,7 +904,7 @@ var import_hono = require("hono");
904
904
  // package.json
905
905
  var package_default = {
906
906
  name: "@posthog/agent",
907
- version: "2.3.126",
907
+ version: "2.3.137",
908
908
  repository: "https://github.com/PostHog/code",
909
909
  description: "TypeScript agent framework wrapping Claude Agent SDK with Git-based task execution for PostHog",
910
910
  exports: {
@@ -4631,42 +4631,70 @@ var ClaudeAcpAgent = class extends BaseAcpAgent {
4631
4631
  isResume ? "Session query initialized, awaiting resumption" : "Session query initialized, awaiting initialization",
4632
4632
  { sessionId, taskId, taskRunId: meta?.taskRunId }
4633
4633
  );
4634
- try {
4635
- const result = await withTimeout(
4636
- q.initializationResult(),
4637
- SESSION_VALIDATION_TIMEOUT_MS
4638
- );
4639
- if (result.result === "timeout") {
4640
- throw new Error(
4641
- `Session ${isResume ? forkSession ? "fork" : "resumption" : "initialization"} timed out for sessionId=${sessionId}`
4634
+ if (isResume) {
4635
+ try {
4636
+ const result = await withTimeout(
4637
+ q.initializationResult(),
4638
+ SESSION_VALIDATION_TIMEOUT_MS
4642
4639
  );
4640
+ if (result.result === "timeout") {
4641
+ throw new Error(
4642
+ `Session ${forkSession ? "fork" : "resumption"} timed out for sessionId=${sessionId}`
4643
+ );
4644
+ }
4645
+ } catch (err) {
4646
+ settingsManager.dispose();
4647
+ if (err instanceof Error && err.message === "Query closed before response received") {
4648
+ throw import_sdk2.RequestError.resourceNotFound(sessionId);
4649
+ }
4650
+ this.logger.error(
4651
+ forkSession ? "Session fork failed" : "Session resumption failed",
4652
+ {
4653
+ sessionId,
4654
+ taskId,
4655
+ taskRunId: meta?.taskRunId,
4656
+ error: err instanceof Error ? err.message : String(err)
4657
+ }
4658
+ );
4659
+ throw err;
4643
4660
  }
4644
- } catch (err) {
4645
- settingsManager.dispose();
4646
- if (isResume && err instanceof Error && err.message === "Query closed before response received") {
4647
- throw import_sdk2.RequestError.resourceNotFound(sessionId);
4648
- }
4649
- this.logger.error(
4650
- isResume ? forkSession ? "Session fork failed" : "Session resumption failed" : "Session initialization failed",
4651
- {
4661
+ }
4662
+ const initPromise = !isResume ? withTimeout(q.initializationResult(), SESSION_VALIDATION_TIMEOUT_MS) : void 0;
4663
+ const [modelOptions] = await Promise.all([
4664
+ this.getModelConfigOptions(
4665
+ settingsManager.getSettings().model || meta?.model || void 0
4666
+ ),
4667
+ ...meta?.taskRunId ? [
4668
+ this.client.extNotification("_posthog/sdk_session", {
4669
+ taskRunId: meta.taskRunId,
4670
+ sessionId,
4671
+ adapter: "claude"
4672
+ })
4673
+ ] : []
4674
+ ]);
4675
+ if (initPromise) {
4676
+ try {
4677
+ const initResult = await initPromise;
4678
+ if (initResult.result === "timeout") {
4679
+ settingsManager.dispose();
4680
+ throw new Error(
4681
+ `Session initialization timed out for sessionId=${sessionId}`
4682
+ );
4683
+ }
4684
+ } catch (err) {
4685
+ settingsManager.dispose();
4686
+ this.logger.error("Session initialization failed", {
4652
4687
  sessionId,
4653
4688
  taskId,
4654
4689
  taskRunId: meta?.taskRunId,
4655
4690
  error: err instanceof Error ? err.message : String(err)
4656
- }
4657
- );
4658
- throw err;
4659
- }
4660
- if (meta?.taskRunId) {
4661
- await this.client.extNotification("_posthog/sdk_session", {
4662
- taskRunId: meta.taskRunId,
4663
- sessionId,
4664
- adapter: "claude"
4665
- });
4691
+ });
4692
+ throw err;
4693
+ }
4666
4694
  }
4667
4695
  const settingsModel = settingsManager.getSettings().model;
4668
- const modelOptions = await this.getModelConfigOptions();
4669
- const resolvedModelId = settingsModel || modelOptions.currentModelId;
4696
+ const metaModel = meta?.model;
4697
+ const resolvedModelId = settingsModel || metaModel || modelOptions.currentModelId;
4670
4698
  session.modelId = resolvedModelId;
4671
4699
  session.lastContextWindowSize = this.getContextWindowForModel(resolvedModelId);
4672
4700
  const resolvedSdkModel = toSdkModelId(resolvedModelId);
@@ -11908,6 +11936,11 @@ var AgentServer = class _AgentServer {
11908
11936
  // causing a second session to be created and duplicate Slack messages to be sent.
11909
11937
  initializationPromise = null;
11910
11938
  pendingEvents = [];
11939
+ detachSseController(controller) {
11940
+ if (this.session?.sseController === controller) {
11941
+ this.session.sseController = null;
11942
+ }
11943
+ }
11911
11944
  emitConsoleLog = (level, _scope, message, data) => {
11912
11945
  if (!this.session) return;
11913
11946
  const formatted = data !== void 0 ? `${message} ${JSON.stringify(data)}` : message;
@@ -11968,18 +12001,15 @@ var AgentServer = class _AgentServer {
11968
12001
 
11969
12002
  `)
11970
12003
  );
11971
- } catch (error) {
11972
- this.logger.debug(
11973
- "SSE send failed (stream may be closed)",
11974
- error
11975
- );
12004
+ } catch {
12005
+ this.detachSseController(sseController);
11976
12006
  }
11977
12007
  },
11978
12008
  close: () => {
11979
12009
  try {
11980
12010
  controller.close();
11981
- } catch (error) {
11982
- this.logger.debug("SSE close failed (already closed)", error);
12011
+ } catch {
12012
+ this.detachSseController(sseController);
11983
12013
  }
11984
12014
  }
11985
12015
  };
@@ -12984,7 +13014,11 @@ Important:
12984
13014
  }
12985
13015
  }
12986
13016
  sendSseEvent(controller, data) {
12987
- controller.send(data);
13017
+ try {
13018
+ controller.send(data);
13019
+ } catch {
13020
+ this.detachSseController(controller);
13021
+ }
12988
13022
  }
12989
13023
  };
12990
13024