@autohq/cli 0.1.615 → 0.1.616

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.
@@ -33878,8 +33878,13 @@ var AgentBridgeCodexConfigBaseSchema = AgentBridgeHarnessBaseConfigSchema.extend
33878
33878
  reasoningEffort: AgentBridgeCodexReasoningEffortSchema.optional(),
33879
33879
  approvals: AgentBridgeApprovalsSchema.optional()
33880
33880
  });
33881
+ var AGENT_BRIDGE_CODEX_MAX_REASONING_MODEL_IDS = /* @__PURE__ */ new Set([
33882
+ "gpt-5.6-sol",
33883
+ "gpt-5.6-terra",
33884
+ "gpt-5.6-luna"
33885
+ ]);
33881
33886
  function validateAgentBridgeCodexReasoningEffort(config2, context) {
33882
- if (config2.reasoningEffort !== "max" || config2.model?.provider === "openai" && config2.model.id === "gpt-5.6-luna") {
33887
+ if (config2.reasoningEffort !== "max" || config2.model?.provider === "openai" && AGENT_BRIDGE_CODEX_MAX_REASONING_MODEL_IDS.has(config2.model.id)) {
33883
33888
  return;
33884
33889
  }
33885
33890
  context.addIssue({
@@ -37765,7 +37770,7 @@ Object.assign(lookup, {
37765
37770
  // package.json
37766
37771
  var package_default = {
37767
37772
  name: "@autohq/cli",
37768
- version: "0.1.615",
37773
+ version: "0.1.616",
37769
37774
  license: "SEE LICENSE IN README.md",
37770
37775
  publishConfig: {
37771
37776
  access: "public"
@@ -41021,6 +41026,10 @@ var CODEX_REASONING_EFFORTS = [
41021
41026
  "high",
41022
41027
  "xhigh"
41023
41028
  ];
41029
+ var CODEX_MAX_REASONING_EFFORTS = [
41030
+ ...CODEX_REASONING_EFFORTS,
41031
+ "max"
41032
+ ];
41024
41033
  var ClaudeCodeReasoningEffortSchema = external_exports.enum(
41025
41034
  CLAUDE_CODE_REASONING_EFFORTS
41026
41035
  );
@@ -41109,7 +41118,13 @@ var HARNESS_MODEL_RULES = {
41109
41118
  providers: ["openai", "openrouter"],
41110
41119
  defaultModel: "gpt-5.6-sol",
41111
41120
  curatedModels: {
41112
- openai: ["gpt-5.6-sol", "gpt-5.6-luna", "gpt-5.5", "gpt-5.3-codex"]
41121
+ openai: [
41122
+ "gpt-5.6-sol",
41123
+ "gpt-5.6-terra",
41124
+ "gpt-5.6-luna",
41125
+ "gpt-5.5",
41126
+ "gpt-5.3-codex"
41127
+ ]
41113
41128
  },
41114
41129
  openProviderPatterns: {
41115
41130
  openrouter: OPENROUTER_MODEL_SLUG_PATTERN
@@ -41120,11 +41135,15 @@ var HARNESS_MODEL_RULES = {
41120
41135
  openai: {
41121
41136
  "gpt-5.6-sol": {
41122
41137
  defaultEffort: "medium",
41123
- efforts: CODEX_REASONING_EFFORTS
41138
+ efforts: CODEX_MAX_REASONING_EFFORTS
41139
+ },
41140
+ "gpt-5.6-terra": {
41141
+ defaultEffort: "medium",
41142
+ efforts: CODEX_MAX_REASONING_EFFORTS
41124
41143
  },
41125
41144
  "gpt-5.6-luna": {
41126
41145
  defaultEffort: "medium",
41127
- efforts: [...CODEX_REASONING_EFFORTS, "max"]
41146
+ efforts: CODEX_MAX_REASONING_EFFORTS
41128
41147
  },
41129
41148
  "gpt-5.5": {
41130
41149
  defaultEffort: "medium",
@@ -45123,6 +45142,10 @@ var SessionUiMessageRecordSchema = external_exports.object({
45123
45142
  // transcript renders the bundle as distinct trigger entries.
45124
45143
  bundle: SessionMessageBundleSchema.nullable().default(null),
45125
45144
  streamCursor: external_exports.number().int().positive().nullable().default(null),
45145
+ // Cursor of the first durable snapshot boundary recorded for each UI part,
45146
+ // aligned with message.parts. Null entries/field preserve legacy rows that
45147
+ // predate part-level cursor capture.
45148
+ partStreamCursors: external_exports.array(external_exports.number().int().positive().nullable()).nullable().default(null),
45126
45149
  createdAt: external_exports.string().datetime(),
45127
45150
  updatedAt: external_exports.string().datetime(),
45128
45151
  completedAt: external_exports.string().datetime().nullable()
@@ -94408,6 +94431,7 @@ var CODEX_OPENROUTER_PROVIDER_ID = "openrouter-responses-http";
94408
94431
  var CODEX_REASONING_SUMMARY = "detailed";
94409
94432
  var CODEX_REASONING_SUMMARY_MODEL_IDS = /* @__PURE__ */ new Set([
94410
94433
  CODEX_DEFAULT_MODEL,
94434
+ "gpt-5.6-terra",
94411
94435
  "gpt-5.6-luna",
94412
94436
  "gpt-5.5",
94413
94437
  "gpt-5.3-codex"
@@ -95745,6 +95769,13 @@ var CodexCommandHandler = class {
95745
95769
  autoMcpShim;
95746
95770
  askUserServer;
95747
95771
  injectedCommands = /* @__PURE__ */ new Set();
95772
+ // Message commands whose injection has started but not settled. A blocked
95773
+ // output drain or a slow codex warm can outlast the bridge's command-ack
95774
+ // window, so a redelivery may arrive while the first attempt is still in
95775
+ // flight; acking it "duplicate" then would let the worker accept a command
95776
+ // whose injection later fails, silently losing the turn (FRA-3458). The
95777
+ // duplicate branch awaits the in-flight outcome here and relays it instead.
95778
+ inFlightMessageCommands = /* @__PURE__ */ new Map();
95748
95779
  // itemId -> JSON-RPC request id of the parked approval request, so an `answer`
95749
95780
  // command keyed by toolCallId (= itemId) can resolve the right server request.
95750
95781
  pendingApprovals = /* @__PURE__ */ new Map();
@@ -95808,6 +95839,16 @@ var CodexCommandHandler = class {
95808
95839
  return commandAck({ delivery, socketId, status: "stale_lease" });
95809
95840
  }
95810
95841
  if (this.injectedCommands.has(delivery.commandId)) {
95842
+ const inFlight = this.inFlightMessageCommands.get(delivery.commandId);
95843
+ const outcome2 = inFlight ? await inFlight : { status: "injected" };
95844
+ if (outcome2.status === "failed") {
95845
+ return commandAck({
95846
+ delivery,
95847
+ socketId,
95848
+ status: "failed",
95849
+ error: outcome2.error
95850
+ });
95851
+ }
95811
95852
  return commandAck({ delivery, socketId, status: "duplicate" });
95812
95853
  }
95813
95854
  if (delivery.kind === "answer") {
@@ -95842,6 +95883,33 @@ var CodexCommandHandler = class {
95842
95883
  });
95843
95884
  }
95844
95885
  this.injectedCommands.add(delivery.commandId);
95886
+ const injection = this.injectMessageCommand(
95887
+ activeContext,
95888
+ delivery,
95889
+ message
95890
+ );
95891
+ this.inFlightMessageCommands.set(delivery.commandId, injection);
95892
+ let outcome;
95893
+ try {
95894
+ outcome = await injection;
95895
+ } finally {
95896
+ this.inFlightMessageCommands.delete(delivery.commandId);
95897
+ }
95898
+ if (outcome.status === "failed") {
95899
+ this.injectedCommands.delete(delivery.commandId);
95900
+ return commandAck({
95901
+ delivery,
95902
+ socketId,
95903
+ status: "failed",
95904
+ error: outcome.error
95905
+ });
95906
+ }
95907
+ return commandAck({ delivery, socketId, status: "injected" });
95908
+ }
95909
+ // Runs one message command's injection to a terminal outcome. Never rejects:
95910
+ // the returned promise is stored in the in-flight map and awaited by both the
95911
+ // original delivery and any redeliveries, so failures travel as values.
95912
+ async injectMessageCommand(activeContext, delivery, message) {
95845
95913
  try {
95846
95914
  this.applySelectionForMessage(delivery);
95847
95915
  await this.emitUserMessageEntry(
@@ -95859,15 +95927,9 @@ var CodexCommandHandler = class {
95859
95927
  commandId: delivery.commandId
95860
95928
  });
95861
95929
  } catch (error51) {
95862
- this.injectedCommands.delete(delivery.commandId);
95863
- return commandAck({
95864
- delivery,
95865
- socketId,
95866
- status: "failed",
95867
- error: errorMessage4(error51)
95868
- });
95930
+ return { status: "failed", error: errorMessage4(error51) };
95869
95931
  }
95870
- return commandAck({ delivery, socketId, status: "injected" });
95932
+ return { status: "injected" };
95871
95933
  }
95872
95934
  // ---------------------------------------------------------------------------
95873
95935
  // Answering parked approvals