botmux 3.9.0 → 3.9.2

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 (112) hide show
  1. package/dist/.runtime-build-id +1 -1
  2. package/dist/adapters/backend/tmux-pipe-backend.d.ts +7 -0
  3. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  4. package/dist/adapters/backend/tmux-pipe-backend.js +20 -0
  5. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  6. package/dist/adapters/backend/types.d.ts +12 -0
  7. package/dist/adapters/backend/types.d.ts.map +1 -1
  8. package/dist/adapters/backend/types.js.map +1 -1
  9. package/dist/adapters/cli/codex.d.ts.map +1 -1
  10. package/dist/adapters/cli/codex.js +40 -7
  11. package/dist/adapters/cli/codex.js.map +1 -1
  12. package/dist/adapters/cli/traex.d.ts.map +1 -1
  13. package/dist/adapters/cli/traex.js +87 -87
  14. package/dist/adapters/cli/traex.js.map +1 -1
  15. package/dist/cli/deferred-topic-send.d.ts +11 -0
  16. package/dist/cli/deferred-topic-send.d.ts.map +1 -1
  17. package/dist/cli/deferred-topic-send.js +21 -4
  18. package/dist/cli/deferred-topic-send.js.map +1 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +177 -38
  21. package/dist/cli.js.map +1 -1
  22. package/dist/core/command-handler.d.ts.map +1 -1
  23. package/dist/core/command-handler.js +40 -1
  24. package/dist/core/command-handler.js.map +1 -1
  25. package/dist/core/dispatch.d.ts +43 -5
  26. package/dist/core/dispatch.d.ts.map +1 -1
  27. package/dist/core/dispatch.js +104 -6
  28. package/dist/core/dispatch.js.map +1 -1
  29. package/dist/core/passthrough-commands.d.ts.map +1 -1
  30. package/dist/core/passthrough-commands.js +1 -1
  31. package/dist/core/passthrough-commands.js.map +1 -1
  32. package/dist/daemon.d.ts +11 -1
  33. package/dist/daemon.d.ts.map +1 -1
  34. package/dist/daemon.js +32 -3
  35. package/dist/daemon.js.map +1 -1
  36. package/dist/i18n/en.d.ts.map +1 -1
  37. package/dist/i18n/en.js +2 -0
  38. package/dist/i18n/en.js.map +1 -1
  39. package/dist/i18n/zh.d.ts.map +1 -1
  40. package/dist/i18n/zh.js +2 -0
  41. package/dist/i18n/zh.js.map +1 -1
  42. package/dist/im/lark/card-handler.d.ts.map +1 -1
  43. package/dist/im/lark/card-handler.js +9 -0
  44. package/dist/im/lark/card-handler.js.map +1 -1
  45. package/dist/im/lark/issue-card.d.ts +223 -0
  46. package/dist/im/lark/issue-card.d.ts.map +1 -0
  47. package/dist/im/lark/issue-card.js +542 -0
  48. package/dist/im/lark/issue-card.js.map +1 -0
  49. package/dist/im/lark/issue-command-deps.d.ts +41 -0
  50. package/dist/im/lark/issue-command-deps.d.ts.map +1 -0
  51. package/dist/im/lark/issue-command-deps.js +195 -0
  52. package/dist/im/lark/issue-command-deps.js.map +1 -0
  53. package/dist/im/lark/issue-command.d.ts +137 -0
  54. package/dist/im/lark/issue-command.d.ts.map +1 -0
  55. package/dist/im/lark/issue-command.js +335 -0
  56. package/dist/im/lark/issue-command.js.map +1 -0
  57. package/dist/platform/issue-client.d.ts +201 -0
  58. package/dist/platform/issue-client.d.ts.map +1 -0
  59. package/dist/platform/issue-client.js +142 -0
  60. package/dist/platform/issue-client.js.map +1 -0
  61. package/dist/platform/platform-http.d.ts +4 -0
  62. package/dist/platform/platform-http.d.ts.map +1 -1
  63. package/dist/platform/platform-http.js +38 -2
  64. package/dist/platform/platform-http.js.map +1 -1
  65. package/dist/services/codex-composer-state.d.ts +27 -0
  66. package/dist/services/codex-composer-state.d.ts.map +1 -0
  67. package/dist/services/codex-composer-state.js +53 -0
  68. package/dist/services/codex-composer-state.js.map +1 -0
  69. package/dist/services/codex-transcript.d.ts +33 -12
  70. package/dist/services/codex-transcript.d.ts.map +1 -1
  71. package/dist/services/codex-transcript.js +82 -20
  72. package/dist/services/codex-transcript.js.map +1 -1
  73. package/dist/services/issue-board-store.d.ts +214 -0
  74. package/dist/services/issue-board-store.d.ts.map +1 -0
  75. package/dist/services/issue-board-store.js +472 -0
  76. package/dist/services/issue-board-store.js.map +1 -0
  77. package/dist/services/issue-claim-flow.d.ts +160 -0
  78. package/dist/services/issue-claim-flow.d.ts.map +1 -0
  79. package/dist/services/issue-claim-flow.js +222 -0
  80. package/dist/services/issue-claim-flow.js.map +1 -0
  81. package/dist/services/issue-outbox-pump.d.ts +25 -0
  82. package/dist/services/issue-outbox-pump.d.ts.map +1 -0
  83. package/dist/services/issue-outbox-pump.js +102 -0
  84. package/dist/services/issue-outbox-pump.js.map +1 -0
  85. package/dist/services/issue-release.d.ts +78 -0
  86. package/dist/services/issue-release.d.ts.map +1 -0
  87. package/dist/services/issue-release.js +89 -0
  88. package/dist/services/issue-release.js.map +1 -0
  89. package/dist/services/issue-report.d.ts +72 -0
  90. package/dist/services/issue-report.d.ts.map +1 -0
  91. package/dist/services/issue-report.js +84 -0
  92. package/dist/services/issue-report.js.map +1 -0
  93. package/dist/services/issue-status-view.d.ts +52 -0
  94. package/dist/services/issue-status-view.d.ts.map +1 -0
  95. package/dist/services/issue-status-view.js +42 -0
  96. package/dist/services/issue-status-view.js.map +1 -0
  97. package/dist/services/issue-status-writer.d.ts +98 -0
  98. package/dist/services/issue-status-writer.d.ts.map +1 -0
  99. package/dist/services/issue-status-writer.js +123 -0
  100. package/dist/services/issue-status-writer.js.map +1 -0
  101. package/dist/services/traex-paths.d.ts +14 -2
  102. package/dist/services/traex-paths.d.ts.map +1 -1
  103. package/dist/services/traex-paths.js +16 -2
  104. package/dist/services/traex-paths.js.map +1 -1
  105. package/dist/services/traex-transcript.d.ts +33 -0
  106. package/dist/services/traex-transcript.d.ts.map +1 -1
  107. package/dist/services/traex-transcript.js +135 -28
  108. package/dist/services/traex-transcript.js.map +1 -1
  109. package/dist/setup/lark-scopes.json +0 -2
  110. package/dist/worker.js +269 -7
  111. package/dist/worker.js.map +1 -1
  112. package/package.json +1 -1
@@ -0,0 +1,142 @@
1
+ /**
2
+ * 平台 Issue Board 的 machine-auth 客户端(打 `/v1/machine/*`,Bearer = machineToken)。
3
+ *
4
+ * 平台侧入口见 platform 仓 `src/server/machine-issues-http.ts` / DESIGN-issue-board.md §三之二。
5
+ * 只有五个端点:teams / issues(list) / claim / bind / status。创建、编辑、force-detach、
6
+ * 归档是**人的决策**,只在平台 Web 上做,这里没有也不该有。
7
+ *
8
+ * 鉴权材料全部来自 `~/.botmux/platform.json`([[platform/binding]]):未绑定平台时所有调用
9
+ * 直接返回 `{ ok:false, reason:'unbound' }`,调用方据此把整个 issue board 功能关掉。
10
+ *
11
+ * 错误分型是这层的重点——上层 outbox pump 要据此决定「退避重试」还是「就此打住」:
12
+ * - `network` :连不上/超时 → **必须重试**(daemon 离线期间状态照样变,回来要补上)
13
+ * - `conflict` :平台返回 409(state_rev_conflict / stale_epoch / claim_expired…)
14
+ * → 重新投影后再发,不是简单重试
15
+ * - `forbidden`:401/403(token 失效、解绑、machine_mismatch)→ **停手**,重试无意义
16
+ * - `server` :5xx → 退避重试(含平台 ByteDoc 降级的 503)
17
+ */
18
+ import { getJson, postJson } from './platform-http.js';
19
+ import { readPlatformBinding } from './binding.js';
20
+ /**
21
+ * 该失败是否值得退避后重投。
22
+ *
23
+ * 只有 `network` 与**真正的 5xx** 值得:4xx 全都是「再发一次结果不变」——401/403 是凭证/
24
+ * 归属问题,409 要先重新投影再发(不是盲重试),400/404 是请求本身错了。把它们混进可重试
25
+ * 一类,pump 会对着一个永远不会成功的请求指数退避到天荒地老,日志里还只看得到"在重试"。
26
+ */
27
+ export function isRetriable(f) {
28
+ return f.reason === 'network' || (f.reason === 'server' && f.status >= 500);
29
+ }
30
+ /**
31
+ * 这次失败是否**永远**不会成功——发件箱据此把行标 fatal,彻底停止重投。
32
+ *
33
+ * 注意它**不是** `!isRetriable`,那两个的补集差着两类,混用会把好行判死:
34
+ * - `conflict`(409):是竞争不是错误。上层先重新对账再重发,对账本身可能因为网络问题
35
+ * 没做成,此时判死等于把一条完全正常的回写扔了。留给下一轮。
36
+ * - `unbound`:本机当前没绑平台。绑回来之后这条行照样该发,判死就再也发不出去了。
37
+ *
38
+ * 剩下的两类才是真死:`forbidden`(401/403,凭证失效 / machine_mismatch / claim 被 revoke)
39
+ * 与 `client`(400 参数错 / 404 issue 被删或归档)。对它们退避重投,就是每 5 分钟朝一个
40
+ * 永远不会变的死端点打一发,同时 `/issue status` 上那句「N 条回写没发出去」永不清零。
41
+ */
42
+ export function isPermanentFailure(f) {
43
+ return f.reason === 'forbidden' || f.reason === 'client';
44
+ }
45
+ function resolveBinding(opts) {
46
+ if (opts.binding !== undefined)
47
+ return opts.binding;
48
+ const b = readPlatformBinding();
49
+ return b ? { platformUrl: b.platformUrl, machineToken: b.machineToken, machineId: b.machineId } : null;
50
+ }
51
+ function classify(status, json) {
52
+ const error = typeof json?.error === 'string' ? String(json.error) : `http_${status}`;
53
+ if (status === 401 || status === 403)
54
+ return { ok: false, reason: 'forbidden', status, error };
55
+ if (status === 409)
56
+ return { ok: false, reason: 'conflict', status, error };
57
+ // 其余 4xx 单列一类:既不是鉴权问题(别误导排查方向),也绝不该被重试。
58
+ if (status >= 400 && status < 500)
59
+ return { ok: false, reason: 'client', status, error };
60
+ return { ok: false, reason: 'server', status, error };
61
+ }
62
+ async function call(opts, method, path, body, pick = (j) => j) {
63
+ const binding = resolveBinding(opts);
64
+ if (!binding)
65
+ return { ok: false, reason: 'unbound' };
66
+ const http = opts.http ?? { get: getJson, post: postJson };
67
+ const url = `${binding.platformUrl.replace(/\/+$/, '')}${path}`;
68
+ const reqOpts = {
69
+ headers: { authorization: `Bearer ${binding.machineToken}` },
70
+ ...(opts.timeoutMs !== undefined ? { timeoutMs: opts.timeoutMs } : {}),
71
+ };
72
+ let res;
73
+ try {
74
+ res = method === 'GET' ? await http.get(url, reqOpts) : await http.post(url, body ?? {}, reqOpts);
75
+ }
76
+ catch (e) {
77
+ return { ok: false, reason: 'network', error: String(e?.message ?? e) };
78
+ }
79
+ // 2xx 之外一律走分型;平台的成功响应恒为 200。
80
+ if (res.status < 200 || res.status >= 300)
81
+ return classify(res.status, res.json);
82
+ return { ok: true, value: pick(res.json) };
83
+ }
84
+ /** 本机 owner 所属的平台团队。注意:日常判断「本机在不在团队里」应读本地
85
+ * `platform-team-sync.json`([[platform-team-store]]),这个接口是不依赖 team-sync
86
+ * 是否已收敛的权威兜底。 */
87
+ export function fetchTeams(opts = {}) {
88
+ return call(opts, 'GET', '/v1/machine/teams', undefined, (j) => (Array.isArray(j?.teams) ? j.teams : []));
89
+ }
90
+ export function fetchIssues(teamId, opts = {}) {
91
+ return call(opts, 'GET', `/v1/machine/issues?teamId=${encodeURIComponent(teamId)}`, undefined, (j) => (j?.sections ?? { needsAttention: [], todo: [], inProgress: [], inReview: [], done: [] }));
92
+ }
93
+ /**
94
+ * 按 id 单查一条 issue。
95
+ *
96
+ * 平台**没有**「按 id 单查」的机器接口,只能从分段列表里捞——这是唯一的实现方式,所以收口
97
+ * 在这里,别让每个调用方各抄一遍(回写的 409 对账、领取确认、交付都要用它)。
98
+ *
99
+ * 返回 null 有两种含义且**无法区分**:拉列表失败,或 issue 不在活跃分段里(已归档)。
100
+ * 调用方一律按「无法判定」处理,不要把 null 当成「平台上没有/不是我的」——那会让
101
+ * 409 对账做出相反的决定。
102
+ */
103
+ export async function findIssueById(teamId, issueId, opts = {}) {
104
+ const list = await fetchIssues(teamId, opts);
105
+ if (!list.ok)
106
+ return null;
107
+ for (const section of Object.values(list.value)) {
108
+ const hit = section.find((i) => i._id === issueId);
109
+ if (hit)
110
+ return hit;
111
+ }
112
+ return null;
113
+ }
114
+ /**
115
+ * 领取。`claimId` 必须是**高熵随机**(`crypto.randomBytes(16).toString('hex')`),
116
+ * 绝不能由 issueId 派生——平台的幂等分支现在会连 machineId/unionId 一起校验,派生键在
117
+ * 多机场景下会直接撞 409 `already_claimed`(早失败,好过静默把别人的 claim 当成自己的)。
118
+ *
119
+ * `machineId` 不用传:平台以 token 为准(传了且不一致会 403 machine_mismatch)。
120
+ */
121
+ export function claimIssue(issueId, args, opts = {}) {
122
+ return call(opts, 'POST', `/v1/machine/issues/${encodeURIComponent(issueId)}/claim`, args);
123
+ }
124
+ /**
125
+ * 绑定本地任务。`localTaskRef` = `<anchorId>::<larkAppId>`(见 [[issue-board-store]] 的
126
+ * `buildLocalTaskRef`)。
127
+ *
128
+ * `localTaskLabel` / `localTaskUrl` 是**纯展示**的可选项:前者给人看(群名),后者是点进去
129
+ * 的深链。平台只接受 https 深链,其余静默丢弃且**不会**让 bind 失败——展示字段不该有能力
130
+ * 弄砸一次真实绑定。
131
+ */
132
+ export function bindIssue(issueId, args, opts = {}) {
133
+ return call(opts, 'POST', `/v1/machine/issues/${encodeURIComponent(issueId)}/bind`, args);
134
+ }
135
+ /**
136
+ * 状态回写。幂等只认 `sourceSeq`(每 binding 单调、串行发送),所以同一条 outbox 行重发
137
+ * 是安全的:平台见到 `sourceSeq <= lastSourceSeq` 直接回当前态、零副作用。
138
+ */
139
+ export function writeIssueStatus(issueId, args, opts = {}) {
140
+ return call(opts, 'POST', `/v1/machine/issues/${encodeURIComponent(issueId)}/status`, args);
141
+ }
142
+ //# sourceMappingURL=issue-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-client.js","sourceRoot":"","sources":["../../src/platform/issue-client.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,10 @@ export interface PostJsonOptions {
6
6
  /** 强制 IP 协议族:4 / 6;缺省跟随系统默认解析(含 net 层 happy-eyeballs)。 */
7
7
  family?: 4 | 6;
8
8
  timeoutMs?: number;
9
+ /** 附加请求头(如 `Authorization: Bearer <machineToken>`)。不能覆盖 content-* 两个。 */
10
+ headers?: Record<string, string>;
9
11
  }
10
12
  export declare function postJson(url: string, body: unknown, opts?: PostJsonOptions): Promise<PostJsonResult>;
13
+ /** 同 {@link postJson} 的连接口径(含 family 钉死),只是不带请求体的 GET。 */
14
+ export declare function getJson(url: string, opts?: PostJsonOptions): Promise<PostJsonResult>;
11
15
  //# sourceMappingURL=platform-http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-http.d.ts","sourceRoot":"","sources":["../../src/platform/platform-http.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAmCxG"}
1
+ {"version":3,"file":"platform-http.d.ts","sourceRoot":"","sources":["../../src/platform/platform-http.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqCxG;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkCxF"}
@@ -5,7 +5,7 @@
5
5
  import { request as httpsRequest } from 'node:https';
6
6
  import { request as httpRequest } from 'node:http';
7
7
  export function postJson(url, body, opts = {}) {
8
- const { family, timeoutMs = 10_000 } = opts;
8
+ const { family, timeoutMs = 10_000, headers } = opts;
9
9
  const u = new URL(url);
10
10
  const doRequest = u.protocol === 'https:' ? httpsRequest : httpRequest;
11
11
  const payload = Buffer.from(JSON.stringify(body), 'utf8');
@@ -17,7 +17,9 @@ export function postJson(url, body, opts = {}) {
17
17
  method: 'POST',
18
18
  family,
19
19
  timeout: timeoutMs,
20
- headers: { 'content-type': 'application/json', 'content-length': payload.length },
20
+ // content-* 放在扩展头之后:调用方传错 content-length 会让请求体被截断/挂死,
21
+ // 这两个必须由本函数说了算。
22
+ headers: { ...headers, 'content-type': 'application/json', 'content-length': payload.length },
21
23
  }, (res) => {
22
24
  const chunks = [];
23
25
  res.on('data', (c) => chunks.push(c));
@@ -38,4 +40,38 @@ export function postJson(url, body, opts = {}) {
38
40
  req.end(payload);
39
41
  });
40
42
  }
43
+ /** 同 {@link postJson} 的连接口径(含 family 钉死),只是不带请求体的 GET。 */
44
+ export function getJson(url, opts = {}) {
45
+ const { family, timeoutMs = 10_000, headers } = opts;
46
+ const u = new URL(url);
47
+ const doRequest = u.protocol === 'https:' ? httpsRequest : httpRequest;
48
+ return new Promise((resolve, reject) => {
49
+ const req = doRequest({
50
+ host: u.hostname,
51
+ port: u.port || (u.protocol === 'https:' ? 443 : 80),
52
+ path: `${u.pathname}${u.search}`,
53
+ method: 'GET',
54
+ family,
55
+ timeout: timeoutMs,
56
+ headers: { ...headers, accept: 'application/json' },
57
+ }, (res) => {
58
+ const chunks = [];
59
+ res.on('data', (c) => chunks.push(c));
60
+ res.on('end', () => {
61
+ let json = {};
62
+ try {
63
+ json = JSON.parse(Buffer.concat(chunks).toString('utf8'));
64
+ }
65
+ catch {
66
+ /* 非 JSON 响应按空对象处理,调用方看 status */
67
+ }
68
+ resolve({ status: res.statusCode || 0, json });
69
+ });
70
+ res.on('error', reject);
71
+ });
72
+ req.on('timeout', () => req.destroy(new Error(`连接超时(${timeoutMs}ms)`)));
73
+ req.on('error', reject);
74
+ req.end();
75
+ });
76
+ }
41
77
  //# sourceMappingURL=platform-http.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platform-http.js","sourceRoot":"","sources":["../../src/platform/platform-http.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,wDAAwD;AACxD,2DAA2D;AAC3D,gDAAgD;AAChD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAanD,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAa,EAAE,OAAwB,EAAE;IAC7E,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,SAAS,CACnB;YACE,IAAI,EAAE,CAAC,CAAC,QAAQ;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,MAAM;YACN,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,OAAO,CAAC,MAAM,EAAE;SAClF,EACD,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,IAAI,GAAY,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5D,CAAC;gBAAC,MAAM,CAAC;oBACP,iCAAiC;gBACnC,CAAC;gBACD,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC;QACxE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"platform-http.js","sourceRoot":"","sources":["../../src/platform/platform-http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface CodexComposerInputState {
2
+ viewport: string;
3
+ cursor: {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ }
8
+ export type CodexComposerState = 'empty' | 'draft' | 'unknown';
9
+ /**
10
+ * Infer whether the cursor is inside a non-empty Codex composer.
11
+ *
12
+ * Codex leaves the cursor immediately after the `› ` marker while its empty
13
+ * placeholder is visible. A real single-line draft moves the cursor to the
14
+ * right; a multi-line draft moves it below the marker row. This lets botmux
15
+ * distinguish the placeholder from user-authored text without depending on
16
+ * the placeholder copy, color, or locale.
17
+ *
18
+ * KNOWN LIMITATION (fail-open, accepted): the signal is cursor position alone.
19
+ * A single-line draft whose cursor the user moved back to the very start
20
+ * (`cursor.x` at the empty-composer column) is indistinguishable from an empty
21
+ * composer and reports 'empty' — the Lark message would still be appended. A
22
+ * truly fail-closed detector would need composer content evidence (ANSI style
23
+ * runs / a stronger Codex state probe), not just the cursor. This guard only
24
+ * covers the common case where the cursor is still at/after the draft it typed.
25
+ */
26
+ export declare function detectCodexComposerState(input: CodexComposerInputState | null | undefined): CodexComposerState;
27
+ //# sourceMappingURL=codex-composer-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-composer-state.d.ts","sourceRoot":"","sources":["../../src/services/codex-composer-state.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,GAChD,kBAAkB,CAkCpB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Infer whether the cursor is inside a non-empty Codex composer.
3
+ *
4
+ * Codex leaves the cursor immediately after the `› ` marker while its empty
5
+ * placeholder is visible. A real single-line draft moves the cursor to the
6
+ * right; a multi-line draft moves it below the marker row. This lets botmux
7
+ * distinguish the placeholder from user-authored text without depending on
8
+ * the placeholder copy, color, or locale.
9
+ *
10
+ * KNOWN LIMITATION (fail-open, accepted): the signal is cursor position alone.
11
+ * A single-line draft whose cursor the user moved back to the very start
12
+ * (`cursor.x` at the empty-composer column) is indistinguishable from an empty
13
+ * composer and reports 'empty' — the Lark message would still be appended. A
14
+ * truly fail-closed detector would need composer content evidence (ANSI style
15
+ * runs / a stronger Codex state probe), not just the cursor. This guard only
16
+ * covers the common case where the cursor is still at/after the draft it typed.
17
+ */
18
+ export function detectCodexComposerState(input) {
19
+ if (!input)
20
+ return 'unknown';
21
+ const { cursor } = input;
22
+ if (!Number.isInteger(cursor.x) || !Number.isInteger(cursor.y) || cursor.x < 0 || cursor.y < 0) {
23
+ return 'unknown';
24
+ }
25
+ const lines = input.viewport.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n');
26
+ if (cursor.y >= lines.length)
27
+ return 'unknown';
28
+ // Codex keeps the composer compact. Limit the backward scan so an old user
29
+ // prompt higher in the viewport cannot be mistaken for the live composer.
30
+ const firstCandidateRow = Math.max(0, cursor.y - 12);
31
+ for (let row = cursor.y; row >= firstCandidateRow; row -= 1) {
32
+ const line = lines[row] ?? '';
33
+ const marker = /^(\s*)›/.exec(line);
34
+ if (!marker)
35
+ continue;
36
+ // NOTE on Codex's update picker (`› 1. Update now` / `› 2. Skip`): we do
37
+ // NOT special-case it. The adapter's readyPattern excludes it so a queued
38
+ // message can't auto-select a menu item, but here the only consequence of
39
+ // treating a picker row as a composer is the state we return, and BOTH
40
+ // outcomes are safe: a picker is never something a Lark message should be
41
+ // injected into, so classifying it as 'draft' (refuse) is fine, and 'empty'
42
+ // merely falls through to the normal write. Adding a `\d+.` exclusion here
43
+ // would instead turn a legitimate numbered draft (e.g. `› 1. 买牛奶`) into
44
+ // 'unknown' → the message gets appended and clobbers the draft: the exact
45
+ // fail-open bug this guard exists to prevent. So the bare marker stays.
46
+ if (row < cursor.y)
47
+ return 'draft';
48
+ const emptyCursorX = marker[1].length + 2; // visible `› ` prefix
49
+ return cursor.x > emptyCursorX ? 'draft' : 'empty';
50
+ }
51
+ return 'unknown';
52
+ }
53
+ //# sourceMappingURL=codex-composer-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-composer-state.js","sourceRoot":"","sources":["../../src/services/codex-composer-state.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAiD;IAEjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/F,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE/C,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,GAAG,IAAI,iBAAiB,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,yEAAyE;QACzE,0EAA0E;QAC1E,0EAA0E;QAC1E,uEAAuE;QACvE,0EAA0E;QAC1E,4EAA4E;QAC5E,2EAA2E;QAC3E,wEAAwE;QACxE,0EAA0E;QAC1E,wEAAwE;QAExE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC;YAAE,OAAO,OAAO,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,sBAAsB;QAClE,OAAO,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACrD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -5,20 +5,40 @@ import type { CodexThreadSettings } from './codex-service-tier.js';
5
5
  * contains its own dashes that would otherwise let a greedy match swallow
6
6
  * parts of the sid. Returns undefined for paths that don't match. */
7
7
  export declare function codexSessionIdFromRolloutPath(path: string): string | undefined;
8
- /** Find the rollout file an externally-running Codex process has open. The
9
- * Codex process keeps fd open on its current rollout for the entire
10
- * lifetime of the session, so this is the authoritative way to bind a
11
- * Codex pid to its sessionId — far more reliable than scanning
12
- * `~/.codex/sessions` by mtime (which would race with sibling Codex panes
13
- * in the same project).
14
- *
15
- * Linux: `/proc/<pid>/fd/*` fast path.
16
- * macOS / BSD: `lsof -p <pid> -Fn` 兜底(同 session-discovery 里的 readCwd)。
17
- * 两种平台都用 `codexSessionIdFromRolloutPath` 提取 sid。 */
18
- export declare function findCodexRolloutByPid(pid: number): {
8
+ type CodexRolloutRef = {
19
9
  path: string;
20
10
  cliSessionId: string;
21
- } | undefined;
11
+ };
12
+ /** Find the rollout file an externally-running Codex process has open. A
13
+ * single open rollout is authoritative for that pid. Multiple open rollouts
14
+ * are ambiguous: current Codex versions can keep parent and sibling-agent
15
+ * transcripts open in the same process, so choosing the first fd can bind
16
+ * an adopted pane to the wrong conversation.
17
+ *
18
+ * 两种平台都用 `codexSessionIdFromRolloutPath` 提取 sid。 */
19
+ export declare function findCodexRolloutByPid(pid: number): CodexRolloutRef | undefined;
20
+ /** Enumerate ALL rollouts a Codex pid currently has open, keyed by lowercased
21
+ * sessionId. Unlike `findCodexRolloutByPid`, this does NOT collapse the
22
+ * parent+sibling multi-rollout case to `undefined` — it returns every match so
23
+ * a caller can test membership (`historySid ∈ set`).
24
+ *
25
+ * This is the ownership gate for post-submit rollout re-attach: `history.jsonl`
26
+ * is a single global file shared by every Codex pane under one CODEX_HOME, so a
27
+ * concurrent sibling pane submitting identical text can make writeInput return
28
+ * the WRONG session id. Only a sid this exact pid actually holds open is safe to
29
+ * re-attach to; a foreign sid (another pane's) is rejected, leaving the current
30
+ * binding untouched. Returns an empty Set when the pid holds no rollout, and
31
+ * undefined only when the fd enumeration itself is unavailable — callers must
32
+ * treat undefined as "cannot prove ownership" (fail closed: do not re-attach). */
33
+ export declare function findCodexRolloutSetByPid(pid: number): Set<string> | undefined;
34
+ /** Pure ownership decision: is `cliSessionId` one of the rollouts the observed
35
+ * pid holds open? `ownedRollouts` is the lowercased sid set from
36
+ * findCodexRolloutSetByPid (undefined when fd enumeration was unavailable).
37
+ * FAIL CLOSED — a missing set or a non-member id returns false so the caller
38
+ * never binds the bridge to a session it can't prove the pid owns. Extracted so
39
+ * the exact predicate the worker's attach entry points use is unit-testable
40
+ * without a live pid. */
41
+ export declare function codexHistorySidIsOwned(cliSessionId: string, ownedRollouts: Set<string> | undefined): boolean;
22
42
  export interface CodexBridgeEvent {
23
43
  /** Synthetic uuid for dedup: `<absPath>:<byteOffset>` of the line start.
24
44
  * Stable across re-drains because rollout files are append-only. */
@@ -116,4 +136,5 @@ export declare function drainCodexRollout(path: string, fromOffset: number): Cod
116
136
  export declare function scanCodexThreadSettings(path: string, opts?: {
117
137
  chunkBytes?: number;
118
138
  }): CodexThreadSettings | undefined;
139
+ export {};
119
140
  //# sourceMappingURL=codex-transcript.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-transcript.d.ts","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAMnE;;;;sEAIsE;AACtE,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED;;;;;;;;;qDASqD;AACrD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmCrG;AAUD,MAAM,WAAW,gBAAgB;IAC/B;yEACqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb;;4CAEwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB;;oEAEgE;IAChE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACjC;4CACwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb;;;mBAGe;IACf,cAAc,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;6DAEyD;IACzD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;6DAS6D;AAC7D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GACpE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAezD;AAED;;;;;;;gEAOgE;AAChE,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,gBAAgB,EAAE,EACnC,WAAW,EAAE,MAAM,GAClB;IAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAAC,IAAI,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAQ3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B;qDACiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB;8DAC0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,oBAAoB,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;;oDAGoD;AACpD,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAChD,MAAM,GAAG,SAAS,CAkEpB;AAYD;;;gFAGgF;AAChF,wBAAgB,mCAAmC,CACjD,eAAe,EAAE,MAAM,EACvB,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE,MAAM,GAAG,SAAS,CAuDpB;AA6BD;;mEAEmE;AACnE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAkGpF;AAWD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,mBAAmB,GAAG,SAAS,CA2CjC"}
1
+ {"version":3,"file":"codex-transcript.d.ts","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"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"}
@@ -50,17 +50,16 @@ export function codexSessionIdFromRolloutPath(path) {
50
50
  const m = /rollout-.*-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i.exec(path);
51
51
  return m ? m[1] : undefined;
52
52
  }
53
- /** Find the rollout file an externally-running Codex process has open. The
54
- * Codex process keeps fd open on its current rollout for the entire
55
- * lifetime of the session, so this is the authoritative way to bind a
56
- * Codex pid to its sessionId far more reliable than scanning
57
- * `~/.codex/sessions` by mtime (which would race with sibling Codex panes
58
- * in the same project).
53
+ /** Enumerate the filesystem paths a process currently has open, normalised to
54
+ * a plain string[] regardless of platform. Returns undefined only when the
55
+ * enumeration itself is unavailable (unreadable /proc, lsof failed); an empty
56
+ * array means "readable, but no matching fds". Both `findCodexRolloutByPid`
57
+ * and `findCodexRolloutSetByPid` derive from THIS single source so their
58
+ * Linux `/proc` and macOS/BSD `lsof` normalisation can never drift apart.
59
59
  *
60
60
  * Linux: `/proc/<pid>/fd/*` fast path.
61
- * macOS / BSD: `lsof -p <pid> -Fn` 兜底(同 session-discovery 里的 readCwd)。
62
- * 两种平台都用 `codexSessionIdFromRolloutPath` 提取 sid。 */
63
- export function findCodexRolloutByPid(pid) {
61
+ * macOS / BSD: `lsof -p <pid> -Fn` 兜底(同 session-discovery 里的 readCwd)。 */
62
+ function codexProcessOpenTargets(pid) {
64
63
  if (!Number.isInteger(pid) || pid <= 0)
65
64
  return undefined;
66
65
  if (IS_LINUX) {
@@ -73,6 +72,7 @@ export function findCodexRolloutByPid(pid) {
73
72
  catch {
74
73
  return undefined;
75
74
  }
75
+ const targets = [];
76
76
  for (const fd of entries) {
77
77
  let target;
78
78
  try {
@@ -81,11 +81,9 @@ export function findCodexRolloutByPid(pid) {
81
81
  catch {
82
82
  continue;
83
83
  }
84
- const hit = matchCodexRolloutPath(target);
85
- if (hit)
86
- return hit;
84
+ targets.push(target);
87
85
  }
88
- return undefined;
86
+ return targets;
89
87
  }
90
88
  // /proc 不可读时落到下面的 lsof 兜底(极少见,但兜一下)
91
89
  }
@@ -101,20 +99,84 @@ export function findCodexRolloutByPid(pid) {
101
99
  catch {
102
100
  return undefined;
103
101
  }
104
- for (const line of out.split('\n')) {
105
- if (!line.startsWith('n/'))
106
- continue;
107
- const target = line.slice(1);
102
+ return out.split('\n').flatMap(line => line.startsWith('n/') ? [line.slice(1)] : []);
103
+ }
104
+ /** Find the rollout file an externally-running Codex process has open. A
105
+ * single open rollout is authoritative for that pid. Multiple open rollouts
106
+ * are ambiguous: current Codex versions can keep parent and sibling-agent
107
+ * transcripts open in the same process, so choosing the first fd can bind
108
+ * an adopted pane to the wrong conversation.
109
+ *
110
+ * 两种平台都用 `codexSessionIdFromRolloutPath` 提取 sid。 */
111
+ export function findCodexRolloutByPid(pid) {
112
+ const targets = codexProcessOpenTargets(pid);
113
+ if (!targets)
114
+ return undefined;
115
+ return findSingleCodexRollout(targets);
116
+ }
117
+ /** Enumerate ALL rollouts a Codex pid currently has open, keyed by lowercased
118
+ * sessionId. Unlike `findCodexRolloutByPid`, this does NOT collapse the
119
+ * parent+sibling multi-rollout case to `undefined` — it returns every match so
120
+ * a caller can test membership (`historySid ∈ set`).
121
+ *
122
+ * This is the ownership gate for post-submit rollout re-attach: `history.jsonl`
123
+ * is a single global file shared by every Codex pane under one CODEX_HOME, so a
124
+ * concurrent sibling pane submitting identical text can make writeInput return
125
+ * the WRONG session id. Only a sid this exact pid actually holds open is safe to
126
+ * re-attach to; a foreign sid (another pane's) is rejected, leaving the current
127
+ * binding untouched. Returns an empty Set when the pid holds no rollout, and
128
+ * undefined only when the fd enumeration itself is unavailable — callers must
129
+ * treat undefined as "cannot prove ownership" (fail closed: do not re-attach). */
130
+ export function findCodexRolloutSetByPid(pid) {
131
+ const targets = codexProcessOpenTargets(pid);
132
+ if (!targets)
133
+ return undefined;
134
+ const set = new Set();
135
+ for (const target of targets) {
108
136
  const hit = matchCodexRolloutPath(target);
109
137
  if (hit)
110
- return hit;
138
+ set.add(hit.cliSessionId.toLowerCase());
111
139
  }
112
- return undefined;
140
+ return set;
141
+ }
142
+ /** Pure ownership decision: is `cliSessionId` one of the rollouts the observed
143
+ * pid holds open? `ownedRollouts` is the lowercased sid set from
144
+ * findCodexRolloutSetByPid (undefined when fd enumeration was unavailable).
145
+ * FAIL CLOSED — a missing set or a non-member id returns false so the caller
146
+ * never binds the bridge to a session it can't prove the pid owns. Extracted so
147
+ * the exact predicate the worker's attach entry points use is unit-testable
148
+ * without a live pid. */
149
+ export function codexHistorySidIsOwned(cliSessionId, ownedRollouts) {
150
+ if (!ownedRollouts)
151
+ return false;
152
+ return ownedRollouts.has(cliSessionId.toLowerCase());
153
+ }
154
+ function findSingleCodexRollout(targets) {
155
+ let found;
156
+ for (const target of targets) {
157
+ const hit = matchCodexRolloutPath(target);
158
+ if (!hit)
159
+ continue;
160
+ if (found && found.path !== hit.path)
161
+ return undefined;
162
+ found = hit;
163
+ }
164
+ return found;
113
165
  }
114
166
  function matchCodexRolloutPath(target) {
115
167
  if (!target.endsWith('.jsonl'))
116
168
  return undefined;
117
- if (!target.includes('/.codex/sessions/'))
169
+ // The rollout lives under `<CODEX_HOME>/sessions/<YYYY>/<MM>/<DD>/`. CODEX_HOME
170
+ // defaults to ~/.codex but can be a custom / per-bot-isolated root, and an
171
+ // ADOPTED external Codex may have started under a CODEX_HOME the worker never
172
+ // inherited — so anchoring on the literal `/.codex/sessions/` (or on the
173
+ // worker's own codexSessionsRoot()) would make that rollout invisible. Once fd
174
+ // ownership is a hard gate for bridge attach, an invisible rollout means the
175
+ // legitimate session can never pass the gate. The path already came from the
176
+ // target PID's open fds (that IS the ownership proof), so anchor only on the
177
+ // env-independent structural shape: a `sessions/` path segment plus the
178
+ // distinctive `rollout-<ts>-<uuid>.jsonl` filename (validated below).
179
+ if (!/(^|\/)sessions\//.test(target))
118
180
  return undefined;
119
181
  const sid = codexSessionIdFromRolloutPath(target);
120
182
  if (!sid)
@@ -1 +1 @@
1
- {"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../../src/services/codex-transcript.ts"],"names":[],"mappings":"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"}