feique 1.4.0 → 1.5.1

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.
package/README.en.md CHANGED
@@ -1,4 +1,4 @@
1
- # 飞鹊 (Feique) v1.4.0
1
+ # 飞鹊 (Feique) v1.5.1
2
2
 
3
3
  <div align="center">
4
4
 
@@ -33,7 +33,7 @@ Currently supports the full AI coding workflow: project bindings persist by `cha
33
33
  | **Memory System** | Supports project memory and group shared memory, SQLite + FTS5 retrieval, configurable TTL, pin strategies, and background cleanup. |
34
34
  | **Project Isolation** | Downloads, temp files, cache, and project audit logs default to `state/projects/<alias>/...`, with per-project overrides available. |
35
35
  | **Observability** | Built-in `/healthz`, `/readyz`, and `/metrics`, plus structured audit trails and Prometheus / Alertmanager / Grafana integration. |
36
- | **Multi-Backend** | A single bridge can manage both Codex and Claude Code backends, configurable globally via `[backend]` or per-project. The Claude backend supports `--model`, `--permission-mode`, `--max-budget-usd`, and other advanced options. **v1.4 adds startup-level failover**: if the default backend CLI is unavailable, runs auto-switch to the alternate backend for that turn. |
36
+ | **Multi-Backend** | **v1.5 ships three backends**: Codex, Claude Code, and Qwen Code. Configurable globally via `[backend]` or per-project. Claude supports `--model`/`--permission-mode`/`--max-budget-usd`; Qwen supports `--model`/`--approval-mode` (plan\|default\|auto-edit\|yolo). **Startup-level failover + configurable fallback chain**: if the primary CLI is unavailable, runs walk through `backend.fallback` until one probes ok. **Extensible registry**: adding a fourth backend is one file + one `registerBackend()` call. |
37
37
  | **Pairing UX (v1.4)** | Unauthorized chats knocking for the first time now get a friendly reply with their chat_id and instructions to contact an admin; admins get a one-shot notification. No more silent drops. |
38
38
  | **Team Awareness** | `/team` shows who is using AI on what in real time, with automatic conflict warnings. |
39
39
  | **Knowledge Loop** | `/learn` and `/recall` for team knowledge capture and semantic retrieval, with AI-powered auto-extraction. |
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # 飞鹊 (Feique) v1.4.0
1
+ # 飞鹊 (Feique) v1.5.1
2
2
 
3
3
  <div align="center">
4
4
 
@@ -33,7 +33,7 @@
33
33
  | **记忆系统 (Memory System)** | 支持项目记忆与群共享记忆,SQLite + FTS5 检索,可配置 TTL、置顶策略和后台定时清理。 |
34
34
  | **项目隔离 (Project Isolation)** | 下载、临时文件、缓存和项目审计默认落到 `state/projects/<alias>/...`,也可按项目单独指定。 |
35
35
  | **可观测性 (Observability)** | 内置 `/healthz`、`/readyz`、`/metrics`,支持 Prometheus / Alertmanager / Grafana,并补齐启动告警、运行链路日志和审计。 |
36
- | **多后端支持 (Multi-Backend)** | 同一桥接器可同时管理 CodexClaude Code 后端,通过 `[backend]` 配置全局默认或按项目覆盖。Claude 后端支持 `--model`、`--permission-mode`、`--max-budget-usd` 等高级选项。**v1.4 新增启动级 failover**:默认 backend CLI 不可用时自动临时切到另一个 backend 跑当前请求。 |
36
+ | **多后端支持 (Multi-Backend)** | **v1.5 支持三个后端**:CodexClaude Code、Qwen Code。通过 `[backend]` 配置全局默认或按项目覆盖。Claude 支持 `--model`/`--permission-mode`/`--max-budget-usd`;Qwen 支持 `--model`/`--approval-mode`(plan\|default\|auto-edit\|yolo)。**启动级 failover + 可配置 fallback 链**:主 backend CLI 不可用时按 `backend.fallback` 列表依次降级。**Backend registry 可扩展**:新增第四个后端只需新增一个文件 + 一个 `registerBackend()` 调用。 |
37
37
  | **Pairing UX (v1.4)** | 陌生 chat 首次 @ bot 时返回友好提示(附自己的 chat_id 和申请指引),同时一次性通知 admin,不再静默丢包。 |
38
38
  | **团队协作态势 (Team Awareness)** | `/team` 实时查看谁在用 AI 做什么,自动冲突预警。 |
39
39
  | **知识回路 (Knowledge Loop)** | `/learn` `/recall` 团队知识沉淀与语义检索,AI 自动提取。 |
@@ -1,4 +1,5 @@
1
1
  import type { Backend, BackendEvent, BackendRunOptions, BackendRunResult, IndexedSession } from './types.js';
2
+ import type { BackendDefinition } from './registry.js';
2
3
  export type ClaudePermissionMode = 'acceptEdits' | 'bypassPermissions' | 'default' | 'dontAsk' | 'plan' | 'auto';
3
4
  export interface ClaudeBackendConfig {
4
5
  bin: string;
@@ -34,3 +35,4 @@ export declare class ClaudeBackend implements Backend {
34
35
  private buildSpawnSpec;
35
36
  private scanSessions;
36
37
  }
38
+ export declare const claudeBackendDefinition: BackendDefinition;
@@ -2,6 +2,7 @@ import os from 'node:os';
2
2
  import path from 'node:path';
3
3
  import fs from 'node:fs/promises';
4
4
  import { spawn } from 'node:child_process';
5
+ import { registerBackend } from './registry.js';
5
6
  export class ClaudeBackend {
6
7
  config;
7
8
  claudeHomeDir;
@@ -329,4 +330,32 @@ function normalizeProjectName(input) {
329
330
  const filtered = tokens.filter(token => !FUZZY_SUFFIX_TOKENS.has(token));
330
331
  return (filtered.length > 0 ? filtered : tokens).join('-');
331
332
  }
333
+ // ---------------------------------------------------------------------------
334
+ // Registry definition
335
+ // ---------------------------------------------------------------------------
336
+ export const claudeBackendDefinition = {
337
+ name: 'claude',
338
+ create(config) {
339
+ return new ClaudeBackend({
340
+ bin: config.claude?.bin ?? 'claude',
341
+ shell: config.claude?.shell ?? config.codex.shell,
342
+ preExec: config.claude?.pre_exec ?? config.codex.pre_exec,
343
+ defaultPermissionMode: config.claude?.default_permission_mode ?? 'auto',
344
+ defaultModel: config.claude?.default_model,
345
+ maxBudgetUsd: config.claude?.max_budget_usd,
346
+ allowedTools: config.claude?.allowed_tools,
347
+ systemPromptAppend: config.claude?.system_prompt_append,
348
+ runTimeoutMs: config.claude?.run_timeout_ms ?? config.codex.run_timeout_ms,
349
+ });
350
+ },
351
+ probeSpec(config) {
352
+ return {
353
+ bin: config.claude?.bin ?? 'claude',
354
+ shell: config.claude?.shell ?? config.codex.shell,
355
+ preExec: config.claude?.pre_exec ?? config.codex.pre_exec,
356
+ };
357
+ },
358
+ defaultFallback: ['codex', 'qwen'],
359
+ };
360
+ registerBackend(claudeBackendDefinition);
332
361
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/backend/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/backend/claude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAI3C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA0ChD,MAAM,OAAO,aAAa;IAIL;IACA;IAJH,IAAI,GAAG,QAAiB,CAAC;IAEzC,YACmB,MAA2B,EAC3B,gBAAwB,oBAAoB,EAAE;QAD9C,WAAM,GAAN,MAAM,CAAqB;QAC3B,kBAAa,GAAb,aAAa,CAAiC;IAC9D,CAAC;IAEG,KAAK,CAAC,GAAG,CAAC,OAAoE;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,EAC9E,sBAAsB,CACvB,CAAC;QAEF,OAAO,MAAM,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE;gBAC1D,GAAG,EAAE,OAAO,CAAC,OAAO;gBACpB,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,QAAQ,EAAE,GAAG;iBACd;gBACD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAClC,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,WAA+B,CAAC;YACpC,IAAI,YAAgC,CAAC;YACrC,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,aAAyC,CAAC;YAC9C,IAAI,YAAsC,CAAC;YAE3C,MAAM,YAAY,GAAG,CAAC,KAAY,EAAE,EAAE;gBACpC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC;YAEF,MAAM,aAAa,GAAG,CAAC,MAAwB,EAAE,EAAE;gBACjD,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,aAAa;oBAAE,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC/C,YAAY,EAAE,EAAE,CAAC;gBACjB,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,CAAC,MAAe,EAAE,EAAE;gBACnC,IAAI,UAAU,CAAC,MAAM;oBAAE,OAAO;gBAC9B,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACtH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC;gBAC1B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,UAAU,CAAC,MAAM;wBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACjB,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC;YAEF,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBAC/C,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,QAAQ,CAAC,0BAA0B,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;gBAC5D,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBACtB,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,oBAAoB,CAAC,CAAC;gBAC/E,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC3B,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClE,YAAY,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7E,CAAC;YAED,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACvC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;YAED,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAa,EAAE,EAAE;gBACnD,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC1C,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAEvC,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;wBAEvD,uCAAuC;wBACvC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;4BAChD,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;wBAC/B,CAAC;wBAED,uDAAuD;wBACvD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;4BAChE,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;wBAC9B,CAAC;wBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC5B,IAAI,OAAO,KAAK,CAAC,kBAAkB,KAAK,QAAQ;gCAAE,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAC;4BACzF,IAAI,OAAO,KAAK,CAAC,mBAAmB,KAAK,QAAQ;gCAAE,YAAY,GAAG,KAAK,CAAC,mBAAmB,CAAC;wBAC9F,CAAC;wBAED,iDAAiD;wBACjD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;4BACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO;iCAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;iCAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC;iCACjB,IAAI,CAAC,IAAI,CAAC,CAAC;4BACd,IAAI,KAAK,EAAE,CAAC;gCACV,YAAY,GAAG,KAAK,CAAC;4BACvB,CAAC;wBACH,CAAC;wBAED,kCAAkC;wBAClC,MAAM,YAAY,GAAiB;4BACjC,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;4BACzC,OAAO,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;yBACrE,CAAC;wBACF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC;oBACxC,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,iCAAiC,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC7C,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC/B,YAAY,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAClC,IAAI,OAAO;oBAAE,OAAO;gBAEpB,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC3C,YAAY,CAAC,IAAI,KAAK,CAAC,2BAA2B,QAAQ,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC;oBAC5G,OAAO;gBACT,CAAC;gBAED,aAAa,CAAC;oBACZ,SAAS;oBACT,YAAY,EAAE,YAAY,CAAC,IAAI,EAAE;oBACjC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,QAAQ,EAAE,QAAQ,IAAI,CAAC;oBACvB,WAAW;oBACX,YAAY;iBACb,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,cAAc,CAAC,KAAmB;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChE,OAAO,aAAa,KAAK,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,QAAgB,EAAE;QACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,OAAO,CAAC,IAAI,CAAC;gBACX,GAAG,OAAO;gBACV,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,UAAU,EAAE,KAAK,CAAC,KAAK;aACxB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO;aACX,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;YAC7D,IAAI,UAAU,KAAK,CAAC;gBAAE,OAAO,UAAU,CAAC;YACxC,OAAO,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QAChD,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,OAAO,IAAI,IAAI,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,WAAmB,EAAE,SAAiB;QACjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1E,CAAC;IAEO,SAAS,CAAC,OAAoE;QACpF,MAAM,IAAI,GAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAE5C,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAClG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QACvE,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAClF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QACrF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,aAAa,EAAE,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACvG,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc,CAAC,UAAoB;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACxD,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,UAAU,CAAC;QACnE,MAAM,cAAc,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,OAAO,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;QAC1G,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEnD,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,gFAAgF;QAChF,mFAAmF;QACnF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;gBAAE,SAAS;YAE9B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAKhC,CAAC;gBAEF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBACnC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBACvB,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG;oBAAE,SAAS;gBAEjC,MAAM,SAAS,GAAG,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAC7D,CAAC,WAAW,EAAE,CAAC;gBAEhB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;oBAChD,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE;wBACtB,SAAS;wBACT,GAAG;wBACH,SAAS;wBACT,SAAS;wBACT,QAAQ;wBACR,MAAM,EAAE,UAAU;wBAClB,OAAO,EAAE,QAAQ;qBAClB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACvF,CAAC;CACF;AAED,SAAS,oBAAoB;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAe;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAEhF,SAAS,iBAAiB,CAAC,WAAmB,EAAE,UAAkB;IAChE,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1F,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEzF,IAAI,qBAAqB,KAAK,qBAAqB,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACzD,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChE,IAAI,qBAAqB,IAAI,qBAAqB,KAAK,qBAAqB,EAAE,CAAC;QAC7E,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,qBAAqB,CAAC,MAAM,IAAI,CAAC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC/F,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,MAAM,GAAG,KAAK;SACjB,WAAW,EAAE;SACb,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,YAAY,CAAC;SACnB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,IAAI,EAAE,QAAQ;IACd,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,aAAa,CAAC;YACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,QAAQ;YACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK;YACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ;YACzD,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,IAAI,MAAM;YACvE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;YAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc;YAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;YAC1C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB;YACvD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc;SAC3E,CAAC,CAAC;IACL,CAAC;IACD,SAAS,CAAC,MAAM;QACd,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,QAAQ;YACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK;YACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ;SAC1D,CAAC;IACJ,CAAC;IACD,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,eAAe,CAAC,uBAAuB,CAAC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { Backend, BackendRunOptions, BackendRunResult, BackendEvent, IndexedSession } from './types.js';
2
2
  import { CodexSessionIndex } from '../codex/session-index.js';
3
3
  import type { SandboxMode } from '../config/schema.js';
4
+ import type { BackendDefinition } from './registry.js';
4
5
  export interface CodexBackendConfig {
5
6
  bin: string;
6
7
  shell?: string;
@@ -30,3 +31,4 @@ export declare class CodexBackend implements Backend {
30
31
  findLatestSession(projectRoot: string): Promise<IndexedSession | null>;
31
32
  findSessionById(projectRoot: string, sessionId: string): Promise<IndexedSession | null>;
32
33
  }
34
+ export declare const codexBackendDefinition: BackendDefinition;
@@ -1,5 +1,6 @@
1
1
  import { runCodexTurn, summarizeCodexEvent } from '../codex/runner.js';
2
2
  import { CodexSessionIndex } from '../codex/session-index.js';
3
+ import { registerBackend } from './registry.js';
3
4
  export class CodexBackend {
4
5
  config;
5
6
  sessionIndex;
@@ -112,4 +113,30 @@ export class CodexBackend {
112
113
  };
113
114
  }
114
115
  }
116
+ // ---------------------------------------------------------------------------
117
+ // Registry definition
118
+ // ---------------------------------------------------------------------------
119
+ export const codexBackendDefinition = {
120
+ name: 'codex',
121
+ create(config, deps) {
122
+ return new CodexBackend({
123
+ bin: config.codex.bin,
124
+ shell: config.codex.shell,
125
+ preExec: config.codex.pre_exec,
126
+ defaultProfile: config.codex.default_profile,
127
+ defaultSandbox: config.codex.default_sandbox,
128
+ skipGitRepoCheck: config.codex.skip_git_repo_check,
129
+ runTimeoutMs: config.codex.run_timeout_ms,
130
+ }, deps.codexSessionIndex ?? new CodexSessionIndex());
131
+ },
132
+ probeSpec(config) {
133
+ return {
134
+ bin: config.codex.bin,
135
+ shell: config.codex.shell,
136
+ preExec: config.codex.pre_exec,
137
+ };
138
+ },
139
+ defaultFallback: ['claude', 'qwen'],
140
+ };
141
+ registerBackend(codexBackendDefinition);
115
142
  //# sourceMappingURL=codex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/backend/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/backend/codex.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import type { BridgeConfig } from '../config/schema.js';
2
2
  import type { Backend, BackendName } from './types.js';
3
3
  import { CodexSessionIndex } from '../codex/session-index.js';
4
+ import './codex.js';
5
+ import './claude.js';
6
+ import './qwen.js';
4
7
  export declare function createBackend(config: BridgeConfig, codexSessionIndex?: CodexSessionIndex): Backend;
5
8
  export declare function createBackendByName(name: BackendName, config: BridgeConfig, codexSessionIndex?: CodexSessionIndex): Backend;
6
9
  export declare function resolveDefaultBackend(config: BridgeConfig): BackendName;
@@ -17,21 +20,33 @@ export interface FailoverResolution {
17
20
  name: BackendName;
18
21
  failover?: FailoverInfo;
19
22
  }
23
+ /**
24
+ * Resolve the fallback chain for a given primary backend:
25
+ * 1. project.fallback (per-project override)
26
+ * 2. config.backend.fallback (global)
27
+ * 3. registry definition's defaultFallback (e.g. codex → ['claude'])
28
+ * 4. "all other registered backends in registration order"
29
+ *
30
+ * The returned list never contains the primary, is de-duplicated, and
31
+ * skips any names that are not registered.
32
+ */
33
+ export declare function resolveFallbackChain(config: BridgeConfig, projectAlias: string, primary: BackendName): BackendName[];
20
34
  /**
21
35
  * Resolve the backend to use for a run, with startup-only failover.
22
36
  *
23
- * Strategy (plan B):
37
+ * Strategy:
24
38
  * 1. Determine primary backend name (session override > project > default).
25
39
  * 2. If failover is disabled, return the primary without probing.
26
40
  * 3. Probe the primary. If it responds, return it.
27
- * 4. If the primary probe fails, probe the alternate. If it responds,
28
- * return it with a FailoverInfo describing the switch.
29
- * 5. If both probes fail, return the primary anyway — the real run will
30
- * surface the actual error with full context, and we avoid masking
31
- * configuration mistakes with silent rewrites.
41
+ * 4. Walk the fallback chain (see resolveFallbackChain) probing each
42
+ * candidate in order; first successful probe wins and the caller
43
+ * gets a FailoverInfo describing the switch.
44
+ * 5. If every candidate fails, return the primary so the real error
45
+ * surfaces on the actual run rather than being masked by a silent
46
+ * rewrite.
32
47
  *
33
- * Runtime failures during an actual run are NOT retried here. That is the
34
- * deliberate boundary of plan B: we save users from "binary missing" and
48
+ * Runtime failures during an actual run are NOT retried here. That is
49
+ * the deliberate boundary: we save users from "binary missing" and
35
50
  * PATH issues, but we never burn tokens on speculative re-runs.
36
51
  */
37
52
  export declare function resolveProjectBackendWithFailover(config: BridgeConfig, projectAlias: string, sessionOverride?: BackendName, codexSessionIndex?: CodexSessionIndex): Promise<FailoverResolution>;
@@ -1,38 +1,23 @@
1
- import { CodexBackend } from './codex.js';
2
- import { ClaudeBackend } from './claude.js';
3
- import { CodexSessionIndex } from '../codex/session-index.js';
4
- import { extractProbeSpec, probeBackend } from './probe.js';
1
+ import { probeBackend } from './probe.js';
2
+ import { getBackendDefinition, requireBackendDefinition, listBackendNames, } from './registry.js';
3
+ // Side-effect imports: these force the backend modules to load and call
4
+ // registerBackend() before the factory is first used. Adding a new
5
+ // backend means adding a matching import line here (and in
6
+ // src/bridge/service.ts for anything that uses BackendName before the
7
+ // factory is touched — rare).
8
+ import './codex.js';
9
+ import './claude.js';
10
+ import './qwen.js';
11
+ function toDeps(codexSessionIndex) {
12
+ return codexSessionIndex ? { codexSessionIndex } : {};
13
+ }
5
14
  export function createBackend(config, codexSessionIndex) {
6
15
  const backendName = resolveDefaultBackend(config);
7
16
  return createBackendByName(backendName, config, codexSessionIndex);
8
17
  }
9
18
  export function createBackendByName(name, config, codexSessionIndex) {
10
- switch (name) {
11
- case 'codex':
12
- return new CodexBackend({
13
- bin: config.codex.bin,
14
- shell: config.codex.shell,
15
- preExec: config.codex.pre_exec,
16
- defaultProfile: config.codex.default_profile,
17
- defaultSandbox: config.codex.default_sandbox,
18
- skipGitRepoCheck: config.codex.skip_git_repo_check,
19
- runTimeoutMs: config.codex.run_timeout_ms,
20
- }, codexSessionIndex ?? new CodexSessionIndex());
21
- case 'claude':
22
- return new ClaudeBackend({
23
- bin: config.claude?.bin ?? 'claude',
24
- shell: config.claude?.shell ?? config.codex.shell,
25
- preExec: config.claude?.pre_exec ?? config.codex.pre_exec,
26
- defaultPermissionMode: config.claude?.default_permission_mode ?? 'auto',
27
- defaultModel: config.claude?.default_model,
28
- maxBudgetUsd: config.claude?.max_budget_usd,
29
- allowedTools: config.claude?.allowed_tools,
30
- systemPromptAppend: config.claude?.system_prompt_append,
31
- runTimeoutMs: config.claude?.run_timeout_ms ?? config.codex.run_timeout_ms,
32
- });
33
- default:
34
- throw new Error(`Unknown backend: ${name}`);
35
- }
19
+ const def = requireBackendDefinition(name);
20
+ return def.create(config, toDeps(codexSessionIndex));
36
21
  }
37
22
  export function resolveDefaultBackend(config) {
38
23
  return config.backend?.default ?? 'codex';
@@ -54,30 +39,60 @@ export function resolveProjectBackendName(config, projectAlias, sessionOverride)
54
39
  const project = config.projects[projectAlias];
55
40
  return project?.backend ?? resolveDefaultBackend(config);
56
41
  }
57
- function otherBackend(name) {
58
- return name === 'codex' ? 'claude' : 'codex';
59
- }
60
42
  function isFailoverEnabled(config, projectAlias) {
61
43
  const project = config.projects[projectAlias];
62
44
  if (project?.failover !== undefined)
63
45
  return project.failover;
64
46
  return config.backend?.failover ?? true;
65
47
  }
48
+ /**
49
+ * Resolve the fallback chain for a given primary backend:
50
+ * 1. project.fallback (per-project override)
51
+ * 2. config.backend.fallback (global)
52
+ * 3. registry definition's defaultFallback (e.g. codex → ['claude'])
53
+ * 4. "all other registered backends in registration order"
54
+ *
55
+ * The returned list never contains the primary, is de-duplicated, and
56
+ * skips any names that are not registered.
57
+ */
58
+ export function resolveFallbackChain(config, projectAlias, primary) {
59
+ const project = config.projects[projectAlias];
60
+ let raw = project?.fallback ??
61
+ config.backend?.fallback ??
62
+ getBackendDefinition(primary)?.defaultFallback;
63
+ if (!raw) {
64
+ raw = listBackendNames();
65
+ }
66
+ const seen = new Set();
67
+ const chain = [];
68
+ for (const candidate of raw) {
69
+ if (candidate === primary)
70
+ continue;
71
+ if (seen.has(candidate))
72
+ continue;
73
+ if (!getBackendDefinition(candidate))
74
+ continue; // skip unknown
75
+ seen.add(candidate);
76
+ chain.push(candidate);
77
+ }
78
+ return chain;
79
+ }
66
80
  /**
67
81
  * Resolve the backend to use for a run, with startup-only failover.
68
82
  *
69
- * Strategy (plan B):
83
+ * Strategy:
70
84
  * 1. Determine primary backend name (session override > project > default).
71
85
  * 2. If failover is disabled, return the primary without probing.
72
86
  * 3. Probe the primary. If it responds, return it.
73
- * 4. If the primary probe fails, probe the alternate. If it responds,
74
- * return it with a FailoverInfo describing the switch.
75
- * 5. If both probes fail, return the primary anyway — the real run will
76
- * surface the actual error with full context, and we avoid masking
77
- * configuration mistakes with silent rewrites.
87
+ * 4. Walk the fallback chain (see resolveFallbackChain) probing each
88
+ * candidate in order; first successful probe wins and the caller
89
+ * gets a FailoverInfo describing the switch.
90
+ * 5. If every candidate fails, return the primary so the real error
91
+ * surfaces on the actual run rather than being masked by a silent
92
+ * rewrite.
78
93
  *
79
- * Runtime failures during an actual run are NOT retried here. That is the
80
- * deliberate boundary of plan B: we save users from "binary missing" and
94
+ * Runtime failures during an actual run are NOT retried here. That is
95
+ * the deliberate boundary: we save users from "binary missing" and
81
96
  * PATH issues, but we never burn tokens on speculative re-runs.
82
97
  */
83
98
  export async function resolveProjectBackendWithFailover(config, projectAlias, sessionOverride, codexSessionIndex) {
@@ -88,30 +103,34 @@ export async function resolveProjectBackendWithFailover(config, projectAlias, se
88
103
  name: primaryName,
89
104
  };
90
105
  }
91
- const primaryProbe = await probeBackend(primaryName, extractProbeSpec(config, primaryName));
106
+ const primaryDef = requireBackendDefinition(primaryName);
107
+ const primaryProbe = await probeBackend(primaryName, primaryDef.probeSpec(config));
92
108
  if (primaryProbe.ok) {
93
109
  return {
94
- backend: createBackendByName(primaryName, config, codexSessionIndex),
110
+ backend: primaryDef.create(config, toDeps(codexSessionIndex)),
95
111
  name: primaryName,
96
112
  };
97
113
  }
98
- const alternateName = otherBackend(primaryName);
99
- const alternateProbe = await probeBackend(alternateName, extractProbeSpec(config, alternateName));
100
- if (!alternateProbe.ok) {
101
- // Both failed let the primary run and report the real error.
102
- return {
103
- backend: createBackendByName(primaryName, config, codexSessionIndex),
104
- name: primaryName,
105
- };
114
+ const chain = resolveFallbackChain(config, projectAlias, primaryName);
115
+ for (const candidate of chain) {
116
+ const def = requireBackendDefinition(candidate);
117
+ const probe = await probeBackend(candidate, def.probeSpec(config));
118
+ if (probe.ok) {
119
+ return {
120
+ backend: def.create(config, toDeps(codexSessionIndex)),
121
+ name: candidate,
122
+ failover: {
123
+ from: primaryName,
124
+ to: candidate,
125
+ reason: primaryProbe.reason ?? 'unknown',
126
+ },
127
+ };
128
+ }
106
129
  }
130
+ // All probes failed — let the primary run and report the real error.
107
131
  return {
108
- backend: createBackendByName(alternateName, config, codexSessionIndex),
109
- name: alternateName,
110
- failover: {
111
- from: primaryName,
112
- to: alternateName,
113
- reason: primaryProbe.reason ?? 'unknown',
114
- },
132
+ backend: primaryDef.create(config, toDeps(codexSessionIndex)),
133
+ name: primaryName,
115
134
  };
116
135
  }
117
136
  //# sourceMappingURL=factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAoB,MAAM,YAAY,CAAC;AAE9E,MAAM,UAAU,aAAa,CAAC,MAAoB,EAAE,iBAAqC;IACvF,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAiB,EAAE,MAAoB,EAAE,iBAAqC;IAChH,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CACrB;gBACE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;gBACzB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;gBAC9B,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe;gBAC5C,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe;gBAC5C,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB;gBAClD,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;aAC1C,EACD,iBAAiB,IAAI,IAAI,iBAAiB,EAAE,CAC7C,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC;gBACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,QAAQ;gBACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK;gBACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ;gBACzD,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,IAAI,MAAM;gBACvE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;gBAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc;gBAC3C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa;gBAC1C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB;gBACvD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc;aAC3E,CAAC,CAAC;QACL;YACE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAoB,EAAE,YAAoB,EAAE,iBAAqC;IACrH,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAgB,OAAO,EAAE,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACnF,OAAO,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,MAAoB,EACpB,YAAoB,EACpB,eAA6B,EAC7B,iBAAqC;IAErC,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAoB,EAAE,YAAoB,EAAE,eAA6B;IACjH,IAAI,eAAe;QAAE,OAAO,eAAe,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC9C,OAAO,OAAO,EAAE,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC3D,CAAC;AAkBD,SAAS,YAAY,CAAC,IAAiB;IACrC,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/C,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAoB,EAAE,YAAoB;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,OAAO,EAAE,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC7D,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,MAAoB,EACpB,YAAoB,EACpB,eAA6B,EAC7B,iBAAqC;IAErC,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAErF,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL,OAAO,EAAE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC;YACpE,IAAI,EAAE,WAAW;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC5F,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC;YACpE,IAAI,EAAE,WAAW;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,cAAc,GAAgB,MAAM,YAAY,CAAC,aAAa,EAAE,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/G,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,+DAA+D;QAC/D,OAAO;YACL,OAAO,EAAE,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC;YACpE,IAAI,EAAE,WAAW;SAClB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,CAAC;QACtE,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE;YACR,IAAI,EAAE,WAAW;YACjB,EAAE,EAAE,aAAa;YACjB,MAAM,EAAE,YAAY,CAAC,MAAM,IAAI,SAAS;SACzC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { BridgeConfig } from '../config/schema.js';
2
1
  import type { BackendName } from './types.js';
3
2
  /**
4
3
  * Lightweight pre-run probe for a backend CLI.
@@ -25,5 +24,4 @@ export interface ProbeSpec {
25
24
  shell?: string | undefined;
26
25
  preExec?: string | undefined;
27
26
  }
28
- export declare function extractProbeSpec(config: BridgeConfig, backend: BackendName): ProbeSpec;
29
27
  export declare function probeBackend(backend: BackendName, spec: ProbeSpec): Promise<ProbeResult>;
@@ -9,20 +9,6 @@ function cacheKey(backend, bin, shell, preExec) {
9
9
  export function clearProbeCache() {
10
10
  cache.clear();
11
11
  }
12
- export function extractProbeSpec(config, backend) {
13
- if (backend === 'claude') {
14
- return {
15
- bin: config.claude?.bin ?? 'claude',
16
- shell: config.claude?.shell ?? config.codex.shell,
17
- preExec: config.claude?.pre_exec ?? config.codex.pre_exec,
18
- };
19
- }
20
- return {
21
- bin: config.codex.bin,
22
- shell: config.codex.shell,
23
- preExec: config.codex.pre_exec,
24
- };
25
- }
26
12
  function buildProbeCommand(spec) {
27
13
  if (!spec.preExec) {
28
14
  return { command: spec.bin, args: ['--version'] };
@@ -1 +1 @@
1
- {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/backend/probe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/backend/probe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { Backend, BackendEvent, BackendRunOptions, BackendRunResult, IndexedSession } from './types.js';
2
+ import type { BackendDefinition } from './registry.js';
3
+ /**
4
+ * Qwen Code CLI backend. Near-identical event + arg surface to
5
+ * ClaudeBackend — both CLIs speak `--output-format stream-json` with
6
+ * `system/init → assistant → result` event frames. The main differences:
7
+ *
8
+ * 1. `--approval-mode plan|default|auto-edit|yolo` instead of
9
+ * `--permission-mode ...`
10
+ * 2. Session storage layout: qwen writes JSONL chats under
11
+ * `~/.qwen/projects/<encoded-cwd>/chats/<uuid>.jsonl`. The first
12
+ * line of each chat is a `type: system` frame with `cwd`, `version`,
13
+ * and `timestamp`, which we parse to drive session adoption.
14
+ * 3. No `--max-budget-usd` equivalent.
15
+ *
16
+ * Qwen Code version validated against: 0.14.1.
17
+ */
18
+ export type QwenApprovalMode = 'plan' | 'default' | 'auto-edit' | 'yolo';
19
+ export interface QwenBackendConfig {
20
+ bin: string;
21
+ shell?: string;
22
+ preExec?: string;
23
+ defaultApprovalMode: QwenApprovalMode;
24
+ defaultModel?: string;
25
+ allowedTools?: string[];
26
+ systemPromptAppend?: string;
27
+ runTimeoutMs: number;
28
+ }
29
+ export interface QwenProjectConfig {
30
+ approvalMode?: QwenApprovalMode;
31
+ model?: string;
32
+ allowedTools?: string[];
33
+ systemPromptAppend?: string;
34
+ }
35
+ export declare class QwenBackend implements Backend {
36
+ private readonly config;
37
+ private readonly qwenHomeDir;
38
+ readonly name: "qwen";
39
+ constructor(config: QwenBackendConfig, qwenHomeDir?: string);
40
+ run(options: BackendRunOptions & {
41
+ projectConfig?: QwenProjectConfig;
42
+ }): Promise<BackendRunResult>;
43
+ summarizeEvent(event: BackendEvent): string | null;
44
+ listProjectSessions(projectRoot: string, limit?: number): Promise<IndexedSession[]>;
45
+ findLatestSession(projectRoot: string): Promise<IndexedSession | null>;
46
+ findSessionById(projectRoot: string, sessionId: string): Promise<IndexedSession | null>;
47
+ private buildArgs;
48
+ private buildSpawnSpec;
49
+ /**
50
+ * Walk `~/.qwen/projects/<slug>/chats/*.jsonl` and parse the first
51
+ * line of each file to extract `sessionId` + `cwd` + `timestamp`.
52
+ *
53
+ * Qwen encodes the project directory as the slug (e.g. `/Users/dh` →
54
+ * `-Users-dh`). We don't depend on that mapping — we walk every slug
55
+ * and match by parsed `cwd`.
56
+ */
57
+ private scanSessions;
58
+ }
59
+ export declare const qwenBackendDefinition: BackendDefinition;