@autohq/cli 0.1.615 → 0.1.617

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.617",
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,14 @@ 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),
45149
+ // First durable snapshot timestamp for each UI part, aligned with
45150
+ // message.parts. This remains available on rows that predate part-level
45151
+ // cursor capture and lets read projections preserve their chronology.
45152
+ partCreatedAts: external_exports.array(external_exports.string().datetime()).nullable().default(null),
45126
45153
  createdAt: external_exports.string().datetime(),
45127
45154
  updatedAt: external_exports.string().datetime(),
45128
45155
  completedAt: external_exports.string().datetime().nullable()
@@ -94408,6 +94435,7 @@ var CODEX_OPENROUTER_PROVIDER_ID = "openrouter-responses-http";
94408
94435
  var CODEX_REASONING_SUMMARY = "detailed";
94409
94436
  var CODEX_REASONING_SUMMARY_MODEL_IDS = /* @__PURE__ */ new Set([
94410
94437
  CODEX_DEFAULT_MODEL,
94438
+ "gpt-5.6-terra",
94411
94439
  "gpt-5.6-luna",
94412
94440
  "gpt-5.5",
94413
94441
  "gpt-5.3-codex"
@@ -95745,6 +95773,13 @@ var CodexCommandHandler = class {
95745
95773
  autoMcpShim;
95746
95774
  askUserServer;
95747
95775
  injectedCommands = /* @__PURE__ */ new Set();
95776
+ // Message commands whose injection has started but not settled. A blocked
95777
+ // output drain or a slow codex warm can outlast the bridge's command-ack
95778
+ // window, so a redelivery may arrive while the first attempt is still in
95779
+ // flight; acking it "duplicate" then would let the worker accept a command
95780
+ // whose injection later fails, silently losing the turn (FRA-3458). The
95781
+ // duplicate branch awaits the in-flight outcome here and relays it instead.
95782
+ inFlightMessageCommands = /* @__PURE__ */ new Map();
95748
95783
  // itemId -> JSON-RPC request id of the parked approval request, so an `answer`
95749
95784
  // command keyed by toolCallId (= itemId) can resolve the right server request.
95750
95785
  pendingApprovals = /* @__PURE__ */ new Map();
@@ -95808,6 +95843,16 @@ var CodexCommandHandler = class {
95808
95843
  return commandAck({ delivery, socketId, status: "stale_lease" });
95809
95844
  }
95810
95845
  if (this.injectedCommands.has(delivery.commandId)) {
95846
+ const inFlight = this.inFlightMessageCommands.get(delivery.commandId);
95847
+ const outcome2 = inFlight ? await inFlight : { status: "injected" };
95848
+ if (outcome2.status === "failed") {
95849
+ return commandAck({
95850
+ delivery,
95851
+ socketId,
95852
+ status: "failed",
95853
+ error: outcome2.error
95854
+ });
95855
+ }
95811
95856
  return commandAck({ delivery, socketId, status: "duplicate" });
95812
95857
  }
95813
95858
  if (delivery.kind === "answer") {
@@ -95842,6 +95887,33 @@ var CodexCommandHandler = class {
95842
95887
  });
95843
95888
  }
95844
95889
  this.injectedCommands.add(delivery.commandId);
95890
+ const injection = this.injectMessageCommand(
95891
+ activeContext,
95892
+ delivery,
95893
+ message
95894
+ );
95895
+ this.inFlightMessageCommands.set(delivery.commandId, injection);
95896
+ let outcome;
95897
+ try {
95898
+ outcome = await injection;
95899
+ } finally {
95900
+ this.inFlightMessageCommands.delete(delivery.commandId);
95901
+ }
95902
+ if (outcome.status === "failed") {
95903
+ this.injectedCommands.delete(delivery.commandId);
95904
+ return commandAck({
95905
+ delivery,
95906
+ socketId,
95907
+ status: "failed",
95908
+ error: outcome.error
95909
+ });
95910
+ }
95911
+ return commandAck({ delivery, socketId, status: "injected" });
95912
+ }
95913
+ // Runs one message command's injection to a terminal outcome. Never rejects:
95914
+ // the returned promise is stored in the in-flight map and awaited by both the
95915
+ // original delivery and any redeliveries, so failures travel as values.
95916
+ async injectMessageCommand(activeContext, delivery, message) {
95845
95917
  try {
95846
95918
  this.applySelectionForMessage(delivery);
95847
95919
  await this.emitUserMessageEntry(
@@ -95859,15 +95931,9 @@ var CodexCommandHandler = class {
95859
95931
  commandId: delivery.commandId
95860
95932
  });
95861
95933
  } catch (error51) {
95862
- this.injectedCommands.delete(delivery.commandId);
95863
- return commandAck({
95864
- delivery,
95865
- socketId,
95866
- status: "failed",
95867
- error: errorMessage4(error51)
95868
- });
95934
+ return { status: "failed", error: errorMessage4(error51) };
95869
95935
  }
95870
- return commandAck({ delivery, socketId, status: "injected" });
95936
+ return { status: "injected" };
95871
95937
  }
95872
95938
  // ---------------------------------------------------------------------------
95873
95939
  // Answering parked approvals