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.
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.d.ts +7 -0
- package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-pipe-backend.js +20 -0
- package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
- package/dist/adapters/backend/types.d.ts +12 -0
- package/dist/adapters/backend/types.d.ts.map +1 -1
- package/dist/adapters/backend/types.js.map +1 -1
- package/dist/adapters/cli/codex.d.ts.map +1 -1
- package/dist/adapters/cli/codex.js +40 -7
- package/dist/adapters/cli/codex.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +87 -87
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/cli/deferred-topic-send.d.ts +11 -0
- package/dist/cli/deferred-topic-send.d.ts.map +1 -1
- package/dist/cli/deferred-topic-send.js +21 -4
- package/dist/cli/deferred-topic-send.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +177 -38
- package/dist/cli.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +40 -1
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/dispatch.d.ts +43 -5
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +104 -6
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +1 -1
- package/dist/core/passthrough-commands.js.map +1 -1
- package/dist/daemon.d.ts +11 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +32 -3
- package/dist/daemon.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +2 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +2 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +9 -0
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/issue-card.d.ts +223 -0
- package/dist/im/lark/issue-card.d.ts.map +1 -0
- package/dist/im/lark/issue-card.js +542 -0
- package/dist/im/lark/issue-card.js.map +1 -0
- package/dist/im/lark/issue-command-deps.d.ts +41 -0
- package/dist/im/lark/issue-command-deps.d.ts.map +1 -0
- package/dist/im/lark/issue-command-deps.js +195 -0
- package/dist/im/lark/issue-command-deps.js.map +1 -0
- package/dist/im/lark/issue-command.d.ts +137 -0
- package/dist/im/lark/issue-command.d.ts.map +1 -0
- package/dist/im/lark/issue-command.js +335 -0
- package/dist/im/lark/issue-command.js.map +1 -0
- package/dist/platform/issue-client.d.ts +201 -0
- package/dist/platform/issue-client.d.ts.map +1 -0
- package/dist/platform/issue-client.js +142 -0
- package/dist/platform/issue-client.js.map +1 -0
- package/dist/platform/platform-http.d.ts +4 -0
- package/dist/platform/platform-http.d.ts.map +1 -1
- package/dist/platform/platform-http.js +38 -2
- package/dist/platform/platform-http.js.map +1 -1
- package/dist/services/codex-composer-state.d.ts +27 -0
- package/dist/services/codex-composer-state.d.ts.map +1 -0
- package/dist/services/codex-composer-state.js +53 -0
- package/dist/services/codex-composer-state.js.map +1 -0
- package/dist/services/codex-transcript.d.ts +33 -12
- package/dist/services/codex-transcript.d.ts.map +1 -1
- package/dist/services/codex-transcript.js +82 -20
- package/dist/services/codex-transcript.js.map +1 -1
- package/dist/services/issue-board-store.d.ts +214 -0
- package/dist/services/issue-board-store.d.ts.map +1 -0
- package/dist/services/issue-board-store.js +472 -0
- package/dist/services/issue-board-store.js.map +1 -0
- package/dist/services/issue-claim-flow.d.ts +160 -0
- package/dist/services/issue-claim-flow.d.ts.map +1 -0
- package/dist/services/issue-claim-flow.js +222 -0
- package/dist/services/issue-claim-flow.js.map +1 -0
- package/dist/services/issue-outbox-pump.d.ts +25 -0
- package/dist/services/issue-outbox-pump.d.ts.map +1 -0
- package/dist/services/issue-outbox-pump.js +102 -0
- package/dist/services/issue-outbox-pump.js.map +1 -0
- package/dist/services/issue-release.d.ts +78 -0
- package/dist/services/issue-release.d.ts.map +1 -0
- package/dist/services/issue-release.js +89 -0
- package/dist/services/issue-release.js.map +1 -0
- package/dist/services/issue-report.d.ts +72 -0
- package/dist/services/issue-report.d.ts.map +1 -0
- package/dist/services/issue-report.js +84 -0
- package/dist/services/issue-report.js.map +1 -0
- package/dist/services/issue-status-view.d.ts +52 -0
- package/dist/services/issue-status-view.d.ts.map +1 -0
- package/dist/services/issue-status-view.js +42 -0
- package/dist/services/issue-status-view.js.map +1 -0
- package/dist/services/issue-status-writer.d.ts +98 -0
- package/dist/services/issue-status-writer.d.ts.map +1 -0
- package/dist/services/issue-status-writer.js +123 -0
- package/dist/services/issue-status-writer.js.map +1 -0
- package/dist/services/traex-paths.d.ts +14 -2
- package/dist/services/traex-paths.d.ts.map +1 -1
- package/dist/services/traex-paths.js +16 -2
- package/dist/services/traex-paths.js.map +1 -1
- package/dist/services/traex-transcript.d.ts +33 -0
- package/dist/services/traex-transcript.d.ts.map +1 -1
- package/dist/services/traex-transcript.js +135 -28
- package/dist/services/traex-transcript.js.map +1 -1
- package/dist/setup/lark-scopes.json +0 -2
- package/dist/worker.js +269 -7
- package/dist/worker.js.map +1 -1
- 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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA+DnD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,CAAqB;IAC/C,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAqB;IACtD,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AAC3D,CAAC;AAaD,SAAS,cAAc,CAAC,IAAwB;IAC9C,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IACpD,MAAM,CAAC,GAAG,mBAAmB,EAAE,CAAC;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzG,CAAC;AAED,SAAS,QAAQ,CAAC,MAAc,EAAE,IAAa;IAC7C,MAAM,KAAK,GAAG,OAAQ,IAA4B,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAE,IAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC;IACtI,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC/F,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC5E,wCAAwC;IACxC,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACzF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,IAAI,CACjB,IAAwB,EACxB,MAAsB,EACtB,IAAY,EACZ,IAAc,EACd,OAAyB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAM;IAEtC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC3D,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,YAAY,EAAE,EAAE;QAC5D,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAC;IACF,IAAI,GAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IACpG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAE,CAAW,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC;IACrF,CAAC;IACD,6BAA6B;IAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACjF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED;;kBAEkB;AAClB,MAAM,UAAU,UAAU,CACxB,OAA2B,EAAE;IAE7B,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,OAA2B,EAAE;IAE7B,OAAO,IAAI,CACT,IAAI,EACJ,KAAK,EACL,6BAA6B,kBAAkB,CAAC,MAAM,CAAC,EAAE,EACzD,SAAS,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAA0B,CAC1H,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,OAAe,EACf,OAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,MAAM,GAAG,GAAI,OAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;QACxE,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,IAAuF,EACvF,OAA2B,EAAE;IAE7B,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,OAAe,EACf,IAMC,EACD,OAA2B,EAAE;IAE7B,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,IAOC,EACD,OAA2B,EAAE;IAE7B,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9F,CAAC"}
|
|
@@ -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;
|
|
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
|
-
|
|
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;
|
|
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
|
-
|
|
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
|
-
}
|
|
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
|
|
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
|
-
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
85
|
-
if (hit)
|
|
86
|
-
return hit;
|
|
84
|
+
targets.push(target);
|
|
87
85
|
}
|
|
88
|
-
return
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
138
|
+
set.add(hit.cliSessionId.toLowerCase());
|
|
111
139
|
}
|
|
112
|
-
return
|
|
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
|
-
|
|
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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"}
|