@autohq/cli 0.1.612 → 0.1.614

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.
Files changed (3) hide show
  1. package/dist/agent-bridge.js +26527 -21081
  2. package/dist/index.js +70 -23
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -17971,7 +17971,7 @@ var init_model_selection = __esm({
17971
17971
  providers: ["openai", "openrouter"],
17972
17972
  defaultModel: "gpt-5.6-sol",
17973
17973
  curatedModels: {
17974
- openai: ["gpt-5.6-sol", "gpt-5.5", "gpt-5.3-codex"]
17974
+ openai: ["gpt-5.6-sol", "gpt-5.6-luna", "gpt-5.5", "gpt-5.3-codex"]
17975
17975
  },
17976
17976
  openProviderPatterns: {
17977
17977
  openrouter: OPENROUTER_MODEL_SLUG_PATTERN
@@ -17984,6 +17984,10 @@ var init_model_selection = __esm({
17984
17984
  defaultEffort: "medium",
17985
17985
  efforts: CODEX_REASONING_EFFORTS
17986
17986
  },
17987
+ "gpt-5.6-luna": {
17988
+ defaultEffort: "medium",
17989
+ efforts: [...CODEX_REASONING_EFFORTS, "max"]
17990
+ },
17987
17991
  "gpt-5.5": {
17988
17992
  defaultEffort: "medium",
17989
17993
  efforts: CODEX_REASONING_EFFORTS
@@ -18752,6 +18756,7 @@ var init_github_mcp_catalog = __esm({
18752
18756
  "enable_pull_request_auto_merge",
18753
18757
  "enqueue_pull_request",
18754
18758
  "rerun_failed_jobs",
18759
+ "rerun_failed_jobs_for_pr_head",
18755
18760
  "upsert_issue_comment"
18756
18761
  ];
18757
18762
  GITHUB_MCP_SELECTABLE_TOOL_NAMES = [
@@ -18771,7 +18776,8 @@ var init_github_mcp_catalog = __esm({
18771
18776
  "actions_secret_write"
18772
18777
  ];
18773
18778
  GITHUB_MCP_ACTIONS_WRITE_TOOLS = [
18774
- "rerun_failed_jobs"
18779
+ "rerun_failed_jobs",
18780
+ "rerun_failed_jobs_for_pr_head"
18775
18781
  ];
18776
18782
  GITHUB_MCP_WRITE_TOOLS = [
18777
18783
  "actions_run_trigger",
@@ -19676,7 +19682,7 @@ function remoteMcpToolSchema(input) {
19676
19682
  ]).default({ kind: "none" })
19677
19683
  });
19678
19684
  }
19679
- var REMOTE_MCP_TRANSPORTS, LOCAL_TOOL_IMPLEMENTATIONS, BILLING_CAPABILITY_LEVELS, BillingCapabilityLevelSchema, PROJECT_MEMBER_CAPABILITY_LEVELS, ProjectMemberCapabilityLevelSchema, TASK_CAPABILITY_LEVELS, TaskCapabilityLevelSchema, TASK_MANAGEMENT_CAPABILITY_LEVELS, TaskManagementCapabilityLevelSchema, CONNECTION_CAPABILITY_LEVELS, ConnectionCapabilityLevelSchema, SECRET_CAPABILITY_LEVELS, SecretCapabilityLevelSchema, WEBHOOK_CAPABILITY_LEVELS, WebhookCapabilityLevelSchema, BillingCapabilitySchema, ProjectMemberCapabilitySchema, TaskCapabilitySchema, ConnectionCapabilitySchema, SecretCapabilitySchema, WebhookCapabilitySchema, LocalAutoToolCapabilitiesSchema, SecretReferenceSchema, NoToolAuthSchema, OptionalConnectionField, McpOAuthToolAuthSchema, ConnectionToolAuthSchema, ConnectionsToolAuthSchema, ConnectionBackedToolSchema, ToolAliasSchema, RemoteMcpToolSchema, LocalAutoToolSchema, LocalPingToolSchema, LocalChatToolSchema, LocalToolSchema, GithubToolSchema, ToolSpecSchema, AgentToolConnectRequestSchema, AgentToolConnectResponseSchema, AgentToolConnectCompleteResponseSchema, InlineAgentToolSchema, AgentToolRefSchema, AgentToolsSchema;
19685
+ var REMOTE_MCP_TRANSPORTS, LOCAL_TOOL_IMPLEMENTATIONS, BILLING_CAPABILITY_LEVELS, BillingCapabilityLevelSchema, PROJECT_MEMBER_CAPABILITY_LEVELS, ProjectMemberCapabilityLevelSchema, RUNTIME_CAPABILITY_LEVELS, RuntimeCapabilityLevelSchema, TASK_CAPABILITY_LEVELS, TaskCapabilityLevelSchema, TASK_MANAGEMENT_CAPABILITY_LEVELS, TaskManagementCapabilityLevelSchema, CONNECTION_CAPABILITY_LEVELS, ConnectionCapabilityLevelSchema, SECRET_CAPABILITY_LEVELS, SecretCapabilityLevelSchema, WEBHOOK_CAPABILITY_LEVELS, WebhookCapabilityLevelSchema, BillingCapabilitySchema, ProjectMemberCapabilitySchema, RuntimeCapabilitySchema, TaskCapabilitySchema, ConnectionCapabilitySchema, SecretCapabilitySchema, WebhookCapabilitySchema, LocalAutoToolCapabilitiesSchema, SecretReferenceSchema, NoToolAuthSchema, OptionalConnectionField, McpOAuthToolAuthSchema, ConnectionToolAuthSchema, ConnectionsToolAuthSchema, ConnectionBackedToolSchema, ToolAliasSchema, RemoteMcpToolSchema, LocalAutoToolSchema, LocalPingToolSchema, LocalChatToolSchema, LocalToolSchema, GithubToolSchema, ToolSpecSchema, AgentToolConnectRequestSchema, AgentToolConnectResponseSchema, AgentToolConnectCompleteResponseSchema, InlineAgentToolSchema, AgentToolRefSchema, AgentToolsSchema;
19680
19686
  var init_tools = __esm({
19681
19687
  "../../packages/schemas/src/tools.ts"() {
19682
19688
  "use strict";
@@ -19694,6 +19700,8 @@ var init_tools = __esm({
19694
19700
  ProjectMemberCapabilityLevelSchema = external_exports.enum(
19695
19701
  PROJECT_MEMBER_CAPABILITY_LEVELS
19696
19702
  );
19703
+ RUNTIME_CAPABILITY_LEVELS = ["none", "read", "write"];
19704
+ RuntimeCapabilityLevelSchema = external_exports.enum(RUNTIME_CAPABILITY_LEVELS);
19697
19705
  TASK_CAPABILITY_LEVELS = ["none", "read", "write"];
19698
19706
  TaskCapabilityLevelSchema = external_exports.enum(TASK_CAPABILITY_LEVELS);
19699
19707
  TASK_MANAGEMENT_CAPABILITY_LEVELS = ["none", "write"];
@@ -19716,6 +19724,10 @@ var init_tools = __esm({
19716
19724
  levelSchema: ProjectMemberCapabilityLevelSchema,
19717
19725
  levels: PROJECT_MEMBER_CAPABILITY_LEVELS
19718
19726
  });
19727
+ RuntimeCapabilitySchema = attenuatedCapabilitySchema({
19728
+ levelSchema: RuntimeCapabilityLevelSchema,
19729
+ levels: RUNTIME_CAPABILITY_LEVELS
19730
+ });
19719
19731
  TaskCapabilitySchema = attenuatedCapabilitySchema({
19720
19732
  levelSchema: TaskCapabilityLevelSchema,
19721
19733
  levels: TASK_CAPABILITY_LEVELS
@@ -19735,6 +19747,7 @@ var init_tools = __esm({
19735
19747
  LocalAutoToolCapabilitiesSchema = external_exports.object({
19736
19748
  billing: BillingCapabilitySchema.default("none"),
19737
19749
  projectMembers: ProjectMemberCapabilitySchema.default("none"),
19750
+ runtimes: RuntimeCapabilitySchema.default("none"),
19738
19751
  tasks: TaskCapabilitySchema.default("none"),
19739
19752
  // Project-wide coordination is an explicit session-snapshot grant, not a
19740
19753
  // requester-attenuated form of ordinary Task access. Keeping it optional
@@ -19743,7 +19756,12 @@ var init_tools = __esm({
19743
19756
  connections: ConnectionCapabilitySchema.optional(),
19744
19757
  secrets: SecretCapabilitySchema.optional(),
19745
19758
  webhooks: WebhookCapabilitySchema.optional()
19746
- }).strict().default({ billing: "none", projectMembers: "none", tasks: "none" });
19759
+ }).strict().default({
19760
+ billing: "none",
19761
+ projectMembers: "none",
19762
+ runtimes: "none",
19763
+ tasks: "none"
19764
+ });
19747
19765
  SecretReferenceSchema = external_exports.object({
19748
19766
  $secret: ResourceNameSchema
19749
19767
  });
@@ -24506,6 +24524,9 @@ var init_session_turns = __esm({
24506
24524
  acceptedAt: external_exports.string().datetime().nullable(),
24507
24525
  startedAt: external_exports.string().datetime().nullable(),
24508
24526
  lastProgressAt: external_exports.string().datetime().nullable(),
24527
+ // Database receive time of the last runtime output durably applied to this
24528
+ // turn. Missing on rows read from before the settle clock was introduced.
24529
+ outputSettledAt: external_exports.string().datetime().nullable().default(null),
24509
24530
  // Last runtime liveness beat that vouched for this open turn (null before
24510
24531
  // the first beat, and always null on runtimes that predate liveness).
24511
24532
  // Distinct from lastProgressAt: pipeline liveness, not durable progress.
@@ -93207,7 +93228,7 @@ var init_package = __esm({
93207
93228
  "package.json"() {
93208
93229
  package_default = {
93209
93230
  name: "@autohq/cli",
93210
- version: "0.1.612",
93231
+ version: "0.1.614",
93211
93232
  license: "SEE LICENSE IN README.md",
93212
93233
  publishConfig: {
93213
93234
  access: "public"
@@ -93236,7 +93257,7 @@ var init_package = __esm({
93236
93257
  typecheck: "tsc --noEmit"
93237
93258
  },
93238
93259
  dependencies: {
93239
- "@anthropic-ai/claude-agent-sdk": "^0.3.153",
93260
+ "@anthropic-ai/claude-agent-sdk": "^0.3.221",
93240
93261
  "@inkjs/ui": "^2.0.0",
93241
93262
  "@modelcontextprotocol/sdk": "^1.29.0",
93242
93263
  "@tanstack/react-query": "^5.100.14",
@@ -104196,25 +104217,39 @@ var AgentBridgeCodexReasoningEffortSchema = external_exports.enum([
104196
104217
  "low",
104197
104218
  "medium",
104198
104219
  "high",
104199
- "xhigh"
104220
+ "xhigh",
104221
+ "max"
104200
104222
  ]);
104201
104223
  var AgentBridgeClaudeConfigSchema = AgentBridgeHarnessBaseConfigSchema.extend({
104202
104224
  model: AgentBridgeModelSelectionSchema.optional(),
104203
104225
  reasoningEffort: AgentBridgeClaudeReasoningEffortSchema.optional()
104204
104226
  });
104205
104227
  var AgentBridgeApprovalsSchema = external_exports.enum(["bypass", "prompt"]);
104206
- var AgentBridgeCodexConfigSchema = AgentBridgeHarnessBaseConfigSchema.extend({
104228
+ var AgentBridgeCodexConfigBaseSchema = AgentBridgeHarnessBaseConfigSchema.extend({
104207
104229
  model: AgentBridgeModelSelectionSchema.optional(),
104208
104230
  reasoningEffort: AgentBridgeCodexReasoningEffortSchema.optional(),
104209
104231
  approvals: AgentBridgeApprovalsSchema.optional()
104210
104232
  });
104233
+ function validateAgentBridgeCodexReasoningEffort(config2, context) {
104234
+ if (config2.reasoningEffort !== "max" || config2.model?.provider === "openai" && config2.model.id === "gpt-5.6-luna") {
104235
+ return;
104236
+ }
104237
+ context.addIssue({
104238
+ code: "custom",
104239
+ path: ["reasoningEffort"],
104240
+ message: 'codex does not support reasoning effort "max" for the selected model'
104241
+ });
104242
+ }
104243
+ var AgentBridgeCodexConfigSchema = AgentBridgeCodexConfigBaseSchema.superRefine(
104244
+ validateAgentBridgeCodexReasoningEffort
104245
+ );
104211
104246
  var AgentBridgeHarnessConfigSchema = external_exports.discriminatedUnion("kind", [
104212
104247
  AgentBridgeClaudeConfigSchema.extend({
104213
104248
  kind: external_exports.literal("claude-code")
104214
104249
  }),
104215
- AgentBridgeCodexConfigSchema.extend({
104250
+ AgentBridgeCodexConfigBaseSchema.extend({
104216
104251
  kind: external_exports.literal("codex")
104217
- })
104252
+ }).superRefine(validateAgentBridgeCodexReasoningEffort)
104218
104253
  ]);
104219
104254
  var RuntimeBridgeBootstrapPlaintextSchema = external_exports.object({
104220
104255
  version: external_exports.literal(1),
@@ -106441,7 +106476,7 @@ var AskUserServer = class {
106441
106476
  const server = this.createMcpServer();
106442
106477
  const transport = new StreamableHTTPServerTransport({
106443
106478
  sessionIdGenerator: void 0,
106444
- // Codex 0.145.0 requires ordinary initialize/list responses as JSON. A
106479
+ // Codex 0.146.0 requires ordinary initialize/list responses as JSON. A
106445
106480
  // parked tool call keeps SSE enabled so progress notifications can flow
106446
106481
  // over the held response without extending the hard client deadline.
106447
106482
  enableJsonResponse: body.method !== "tools/call"
@@ -111178,6 +111213,9 @@ var ClaudeCodeCommandHandler = class {
111178
111213
  }
111179
111214
  async emitUsageTurn(turnId) {
111180
111215
  const activeContext = this.context;
111216
+ if (!activeContext && turnId === null) {
111217
+ return;
111218
+ }
111181
111219
  if (!activeContext) {
111182
111220
  throw new Error("Cannot publish usage turn without bridge context");
111183
111221
  }
@@ -112239,9 +112277,10 @@ var CODEX_EXECUTABLE_PATH = "codex";
112239
112277
  var CODEX_DEFAULT_MODEL = "gpt-5.6-sol";
112240
112278
  var CODEX_HTTP_PROVIDER_ID = "openai-responses-http";
112241
112279
  var CODEX_OPENROUTER_PROVIDER_ID = "openrouter-responses-http";
112242
- var CODEX_REASONING_SUMMARY = "auto";
112280
+ var CODEX_REASONING_SUMMARY = "detailed";
112243
112281
  var CODEX_REASONING_SUMMARY_MODEL_IDS = /* @__PURE__ */ new Set([
112244
112282
  CODEX_DEFAULT_MODEL,
112283
+ "gpt-5.6-luna",
112245
112284
  "gpt-5.5",
112246
112285
  "gpt-5.3-codex"
112247
112286
  ]);
@@ -112643,7 +112682,7 @@ function runStep(input, step, action) {
112643
112682
  `agent_bridge_codex_edit_capability status=failed step=${step} error=${detail}`
112644
112683
  );
112645
112684
  throw new Error(
112646
- `Codex edit capability unavailable at ${step}: ${detail}. Codex 0.145.0's Auto custom-provider path declares no apply_patch tool; without the codex-path alias, exec invocations the interceptor does not recognize fail with command-not-found (codex-runtime-tool-loss-diagnostics).`
112685
+ `Codex edit capability unavailable at ${step}: ${detail}. Codex 0.146.0's Auto custom-provider path declares no apply_patch tool; without the codex-path alias, exec invocations the interceptor does not recognize fail with command-not-found (codex-runtime-tool-loss-diagnostics).`
112647
112686
  );
112648
112687
  }
112649
112688
  }
@@ -113682,8 +113721,13 @@ var CodexCommandHandler = class {
113682
113721
  delivery.commandId,
113683
113722
  message
113684
113723
  );
113724
+ if (requestedDeferredDelivery(delivery)) {
113725
+ this.input.writeOutput?.(
113726
+ "agent_bridge_codex_deferred_mapped_to_interrupt"
113727
+ );
113728
+ }
113685
113729
  await this.ensureSession().sendMessage(message, {
113686
- mode: deliveryMode2(delivery),
113730
+ mode: "interrupt",
113687
113731
  commandId: delivery.commandId
113688
113732
  });
113689
113733
  } catch (error51) {
@@ -113836,6 +113880,9 @@ var CodexCommandHandler = class {
113836
113880
  }
113837
113881
  async emitUsageTurn(turnId) {
113838
113882
  const activeContext = this.context;
113883
+ if (!activeContext && turnId === null) {
113884
+ return;
113885
+ }
113839
113886
  if (!activeContext) {
113840
113887
  throw new Error("Cannot publish usage turn without bridge context");
113841
113888
  }
@@ -113896,7 +113943,13 @@ var CodexCommandHandler = class {
113896
113943
  if (sameCodexConfigSelection(this.codexConfig, next)) {
113897
113944
  return;
113898
113945
  }
113899
- this.codexConfig = next;
113946
+ const parsed = AgentBridgeCodexConfigSchema.safeParse(next);
113947
+ if (!parsed.success) {
113948
+ throw new Error(
113949
+ parsed.error.issues[0]?.message ?? "Invalid Codex model selection"
113950
+ );
113951
+ }
113952
+ this.codexConfig = parsed.data;
113900
113953
  this.skipResumeForNextSession = true;
113901
113954
  this.session?.close();
113902
113955
  this.session = null;
@@ -113964,15 +114017,9 @@ function deliverySelection2(delivery) {
113964
114017
  function sameCodexConfigSelection(current, next) {
113965
114018
  return current.model?.provider === next.model?.provider && current.model?.id === next.model?.id && current.reasoningEffort === next.reasoningEffort;
113966
114019
  }
113967
- function deliveryMode2(delivery) {
114020
+ function requestedDeferredDelivery(delivery) {
113968
114021
  const payload = delivery.payload;
113969
- if (payload && typeof payload === "object" && "deliveryMode" in payload) {
113970
- const parsed = MessageDeliveryModeSchema.safeParse(payload.deliveryMode);
113971
- if (parsed.success) {
113972
- return parsed.data;
113973
- }
113974
- }
113975
- return "interrupt";
114022
+ return typeof payload === "object" && payload !== null && "deliveryMode" in payload && payload.deliveryMode === "deferred";
113976
114023
  }
113977
114024
  function errorMessage4(error51) {
113978
114025
  return error51 instanceof Error ? error51.message : String(error51);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autohq/cli",
3
- "version": "0.1.612",
3
+ "version": "0.1.614",
4
4
  "license": "SEE LICENSE IN README.md",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -29,7 +29,7 @@
29
29
  "typecheck": "tsc --noEmit"
30
30
  },
31
31
  "dependencies": {
32
- "@anthropic-ai/claude-agent-sdk": "^0.3.153",
32
+ "@anthropic-ai/claude-agent-sdk": "^0.3.221",
33
33
  "@inkjs/ui": "^2.0.0",
34
34
  "@modelcontextprotocol/sdk": "^1.29.0",
35
35
  "@tanstack/react-query": "^5.100.14",