codex-to-im 1.0.15 → 1.0.17

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.md CHANGED
@@ -86,7 +86,7 @@ codex-to-im stop
86
86
  /t all
87
87
  ```
88
88
 
89
- 查看全部桌面线程。
89
+ 查看最多 200 条桌面线程。
90
90
  再通过:
91
91
 
92
92
  ```text
@@ -120,8 +120,8 @@ codex-to-im stop
120
120
 
121
121
  - `/` 或 `/status`:查看当前会话、线程、模型、模式、思考级别、共享镜像状态。
122
122
  - `/t`:查看最近 10 条桌面线程。
123
- - `/t all`:查看全部桌面线程。
124
- - `/t n 100`:查看最近 100 条桌面线程。
123
+ - `/t all`:查看最多 200 条桌面线程。
124
+ - `/t n 100`:查看最近 100 条桌面线程,最多 200 条。
125
125
  - `/t 1`:切换到第 1 条桌面线程。
126
126
  - `/t 0`:切换到当前聊天的临时线程。
127
127
  - `/new`:在当前正式会话目录下新建线程。
@@ -150,7 +150,7 @@ codex-to-im stop
150
150
  - `/new` 创建的是 IM 线程,当前只保证在 IM 中可继续;不保证会自动出现在 Codex Desktop 会话列表中。
151
151
  - 一个会话只能绑定一个聊天,跨飞书/微信也互斥。
152
152
  - 飞书附件当前支持图片和文件;视频目前按文件发送,不承诺原生预览。
153
- - `/t` 默认只显示最近 10 条桌面线程;需要更多时用 `/t all` `/t n 100`。
153
+ - `/t` 默认只显示最近 10 条桌面线程;`/t all` 最多返回 200 条,`/t n 100` 也最多返回 200 条。
154
154
 
155
155
  ## 更多文档
156
156
 
package/README_EN.md CHANGED
@@ -136,7 +136,7 @@ Useful commands:
136
136
 
137
137
  - `/` / `/status` shows the current session
138
138
  - `/h` / `/help` shows help
139
- - `/t` / `/threads` lists the most recent 10 desktop threads, `/t all` / `/threads all` lists all of them, `/t n 100` / `/threads n 100` lists the most recent 100 desktop threads, and `/t 1` / `/thread 1` binds the first one
139
+ - `/t` / `/threads` lists the most recent 10 desktop threads, `/t all` / `/threads all` lists up to 200 of them, `/t n 100` / `/threads n 100` lists the most recent 100 desktop threads (also capped at 200), and `/t 1` / `/thread 1` binds the first one
140
140
  - `/n` / `/new` creates a new thread in the current formal session directory; these IM-created threads are only guaranteed to continue inside IM and will not automatically appear in the Codex Desktop thread list
141
141
  - `/n proj1` / `/new proj1` creates a new project session under the default workspace root
142
142
  - `/m` / `/mode` shows or changes the current mode; options: `code` / `plan` / `ask`
package/dist/cli.mjs CHANGED
@@ -86,7 +86,7 @@ function getBridgeStatus() {
86
86
  return {
87
87
  ...status,
88
88
  pid,
89
- running: status.running ?? true
89
+ running: true
90
90
  };
91
91
  }
92
92
  function getUiServerStatus() {
package/dist/daemon.mjs CHANGED
@@ -16759,6 +16759,8 @@ var HISTORY_SUMMARY_TTL_MS = 24 * 60 * 60 * 1e3;
16759
16759
  var REASONING_LEVELS = ["minimal", "low", "medium", "high", "xhigh"];
16760
16760
  var MODE_OPTIONS_TEXT = "\u53EF\u9009\uFF1A`code`\uFF08\u76F4\u63A5\u6267\u884C\uFF0C\u9ED8\u8BA4\uFF09 `plan`\uFF08\u5148\u5206\u6790\u518D\u884C\u52A8\uFF09 `ask`\uFF08\u8F7B\u5BF9\u8BDD / \u8349\u7A3F\uFF09";
16761
16761
  var REASONING_OPTIONS_TEXT = "\u53EF\u9009\uFF1A`1=minimal` `2=low` `3=medium` `4=high` `5=xhigh`";
16762
+ var DEFAULT_DESKTOP_THREAD_LIST_LIMIT = 10;
16763
+ var MAX_DESKTOP_THREAD_LIST_LIMIT = 200;
16762
16764
  var MIRROR_POLL_INTERVAL_MS = 2500;
16763
16765
  var MIRROR_WATCH_DEBOUNCE_MS = 350;
16764
16766
  var MIRROR_EVENT_BATCH_LIMIT = 8;
@@ -16830,20 +16832,21 @@ function resolveByIndexOrPrefix(raw, items, getId) {
16830
16832
  }
16831
16833
  return { match: null, ambiguous: false };
16832
16834
  }
16833
- function getDisplayedDesktopThreads(limit = 10) {
16835
+ function getDisplayedDesktopThreads(limit = DEFAULT_DESKTOP_THREAD_LIST_LIMIT) {
16834
16836
  return listDesktopSessions(limit);
16835
16837
  }
16836
16838
  function parseDesktopThreadListArgs(args) {
16837
16839
  const trimmed = args.trim().toLowerCase();
16838
16840
  if (!trimmed) {
16839
- return { showAll: false, limit: 10 };
16841
+ return { showAll: false, limit: DEFAULT_DESKTOP_THREAD_LIST_LIMIT };
16840
16842
  }
16841
16843
  if (trimmed === "all") {
16842
- return { showAll: true, limit: 0 };
16844
+ return { showAll: true, limit: MAX_DESKTOP_THREAD_LIST_LIMIT };
16843
16845
  }
16844
16846
  const match2 = trimmed.match(/^n\s+(\d+)$/);
16845
16847
  if (!match2) return null;
16846
- const limit = Number(match2[1]);
16848
+ const requestedLimit = Number(match2[1]);
16849
+ const limit = Math.min(requestedLimit, MAX_DESKTOP_THREAD_LIST_LIMIT);
16847
16850
  if (!Number.isInteger(limit) || limit < 1) return null;
16848
16851
  return { showAll: false, limit };
16849
16852
  }
@@ -16957,7 +16960,7 @@ function buildIndexedCommandList(title, items, footer = [], markdown = false) {
16957
16960
  }
16958
16961
  function buildDesktopThreadsCommandResponse(desktopSessions, markdown, showAll, limit = 10) {
16959
16962
  return buildIndexedCommandList(
16960
- showAll ? "\u5168\u90E8\u684C\u9762\u4F1A\u8BDD" : `\u6700\u8FD1 ${limit} \u6761\u684C\u9762\u4F1A\u8BDD`,
16963
+ showAll ? `\u684C\u9762\u4F1A\u8BDD\uFF08\u6700\u591A ${MAX_DESKTOP_THREAD_LIST_LIMIT} \u6761\uFF09` : `\u6700\u8FD1 ${limit} \u6761\u684C\u9762\u4F1A\u8BDD`,
16961
16964
  desktopSessions.map((session) => ({
16962
16965
  heading: session.title || "\u672A\u547D\u540D\u7EBF\u7A0B",
16963
16966
  details: [
@@ -16967,11 +16970,11 @@ function buildDesktopThreadsCommandResponse(desktopSessions, markdown, showAll,
16967
16970
  })),
16968
16971
  showAll ? [
16969
16972
  "\u53D1\u9001 `/t 1` \u53EF\u63A5\u7BA1\u7B2C 1 \u6761\u684C\u9762\u4F1A\u8BDD\u3002",
16970
- "\u53D1\u9001 `/t` \u53EF\u53EA\u770B\u6700\u8FD1 10 \u6761\u3002"
16973
+ `\u53D1\u9001 \`/t\` \u53EF\u53EA\u770B\u6700\u8FD1 ${DEFAULT_DESKTOP_THREAD_LIST_LIMIT} \u6761\u3002`
16971
16974
  ] : [
16972
16975
  "\u53D1\u9001 `/t 1` \u53EF\u63A5\u7BA1\u7B2C 1 \u6761\u684C\u9762\u4F1A\u8BDD\u3002",
16973
- "\u53D1\u9001 `/t all` \u53EF\u67E5\u770B\u5168\u90E8\u684C\u9762\u4F1A\u8BDD\u3002",
16974
- "\u53D1\u9001 `/t n 100` \u53EF\u67E5\u770B\u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD\u3002"
16976
+ `\u53D1\u9001 \`/t all\` \u53EF\u67E5\u770B\u6700\u591A ${MAX_DESKTOP_THREAD_LIST_LIMIT} \u6761\u684C\u9762\u4F1A\u8BDD\u3002`,
16977
+ `\u53D1\u9001 \`/t n 100\` \u53EF\u67E5\u770B\u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD\uFF08\u6700\u591A ${MAX_DESKTOP_THREAD_LIST_LIMIT} \u6761\uFF09\u3002`
16975
16978
  ],
16976
16979
  markdown
16977
16980
  );
@@ -18959,11 +18962,11 @@ async function handleCommand(adapter, msg, text2) {
18959
18962
  break;
18960
18963
  }
18961
18964
  if (!args) {
18962
- response = "\u7528\u6CD5\uFF1A/thread <\u5E8F\u53F7>\uFF0C\u6216 /thread 0 \u8FDB\u5165\u4E34\u65F6\u8349\u7A3F\u7EBF\u7A0B\uFF1B\u53D1\u9001 /t all \u67E5\u770B\u5168\u90E8\uFF0C\u6216 /t n 100 \u67E5\u770B\u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD";
18965
+ response = `\u7528\u6CD5\uFF1A/thread <\u5E8F\u53F7>\uFF0C\u6216 /thread 0 \u8FDB\u5165\u4E34\u65F6\u8349\u7A3F\u7EBF\u7A0B\uFF1B\u53D1\u9001 /t all \u67E5\u770B\u6700\u591A ${MAX_DESKTOP_THREAD_LIST_LIMIT} \u6761\uFF0C\u6216 /t n 100 \u67E5\u770B\u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD`;
18963
18966
  break;
18964
18967
  }
18965
18968
  if (args === "all") {
18966
- const desktopSessions = getDisplayedDesktopThreads(void 0);
18969
+ const desktopSessions = getDisplayedDesktopThreads(MAX_DESKTOP_THREAD_LIST_LIMIT);
18967
18970
  if (desktopSessions.length === 0) {
18968
18971
  response = "\u6CA1\u6709\u627E\u5230\u684C\u9762\u4F1A\u8BDD\u3002\u5148\u5728 Codex Desktop App \u4E2D\u6253\u5F00\u4E00\u4E2A\u4F1A\u8BDD\uFF0C\u518D\u56DE\u6765\u8BD5\u4E00\u6B21\u3002";
18969
18972
  break;
@@ -18975,7 +18978,7 @@ async function handleCommand(adapter, msg, text2) {
18975
18978
  );
18976
18979
  break;
18977
18980
  }
18978
- const displayedThreads = getDisplayedDesktopThreads(10);
18981
+ const displayedThreads = getDisplayedDesktopThreads(DEFAULT_DESKTOP_THREAD_LIST_LIMIT);
18979
18982
  const threadPick = resolveByIndexOrPrefix(args, displayedThreads, (session) => session.threadId);
18980
18983
  if (threadPick.ambiguous) {
18981
18984
  response = "\u5339\u914D\u5230\u591A\u4E2A\u684C\u9762\u4F1A\u8BDD\uFF0C\u8BF7\u5148\u53D1\u9001 `/t` \u67E5\u770B\u5217\u8868\uFF0C\u518D\u7528 `/t 1` \u8FD9\u79CD\u5E8F\u53F7\u5207\u6362\u3002";
@@ -19033,11 +19036,11 @@ async function handleCommand(adapter, msg, text2) {
19033
19036
  case "/threads": {
19034
19037
  const listArgs = parseDesktopThreadListArgs(args);
19035
19038
  if (!listArgs) {
19036
- response = "\u7528\u6CD5\uFF1A/threads\u3001/threads all\u3001/threads n 100";
19039
+ response = `\u7528\u6CD5\uFF1A/threads\u3001/threads all\u3001/threads n 100\uFF08\u6700\u591A ${MAX_DESKTOP_THREAD_LIST_LIMIT} \u6761\uFF09`;
19037
19040
  break;
19038
19041
  }
19039
19042
  const { showAll, limit } = listArgs;
19040
- const desktopSessions = getDisplayedDesktopThreads(showAll ? void 0 : limit);
19043
+ const desktopSessions = getDisplayedDesktopThreads(limit);
19041
19044
  if (desktopSessions.length === 0) {
19042
19045
  response = showAll ? "\u6CA1\u6709\u627E\u5230\u684C\u9762\u4F1A\u8BDD\u3002\u5148\u5728 Codex Desktop App \u4E2D\u6253\u5F00\u4E00\u4E2A\u4F1A\u8BDD\uFF0C\u518D\u56DE\u6765\u8BD5\u4E00\u6B21\u3002" : "\u6CA1\u6709\u627E\u5230\u6700\u8FD1\u684C\u9762\u4F1A\u8BDD\u3002\u5148\u5728 Codex Desktop App \u4E2D\u6253\u5F00\u4E00\u4E2A\u4F1A\u8BDD\uFF0C\u518D\u56DE\u6765\u8BD5\u4E00\u6B21\u3002";
19043
19046
  break;
@@ -19417,9 +19420,9 @@ ${truncateHistoryContent(formatStoredMessageContent(message.content))}`;
19417
19420
  "**\u5E38\u7528**",
19418
19421
  "- `/` \u5F53\u524D\u4F1A\u8BDD",
19419
19422
  "- `/h` \u5E2E\u52A9",
19420
- "- `/t` \u6700\u8FD1 10 \u6761\u684C\u9762\u4F1A\u8BDD",
19421
- "- `/t all` \u5168\u90E8\u684C\u9762\u4F1A\u8BDD",
19422
- "- `/t n 100` \u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD",
19423
+ `- \`/t\` \u6700\u8FD1 ${DEFAULT_DESKTOP_THREAD_LIST_LIMIT} \u6761\u684C\u9762\u4F1A\u8BDD`,
19424
+ `- \`/t all\` \u6700\u591A ${MAX_DESKTOP_THREAD_LIST_LIMIT} \u6761\u684C\u9762\u4F1A\u8BDD`,
19425
+ `- \`/t n 100\` \u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD\uFF08\u6700\u591A ${MAX_DESKTOP_THREAD_LIST_LIMIT} \u6761\uFF09`,
19423
19426
  "- `/t 1` \u63A5\u7BA1\u7B2C 1 \u6761\u4F1A\u8BDD",
19424
19427
  "- `/n` \u5728\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u4E0B\u65B0\u5EFA\u7EBF\u7A0B\uFF08\u4EC5\u4FDD\u8BC1 IM \u53EF\u7EE7\u7EED\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u51FA\u73B0\u5728\u684C\u9762\u4F1A\u8BDD\u5217\u8868\uFF09",
19425
19428
  "- `/n proj1` \u5728\u9ED8\u8BA4\u5DE5\u4F5C\u7A7A\u95F4\u4E0B\u65B0\u5EFA\u9879\u76EE\u4F1A\u8BDD",
@@ -5838,7 +5838,7 @@ function getBridgeStatus() {
5838
5838
  return {
5839
5839
  ...status,
5840
5840
  pid,
5841
- running: status.running ?? true
5841
+ running: true
5842
5842
  };
5843
5843
  }
5844
5844
  function getUiServerStatus() {
@@ -8767,8 +8767,8 @@ function renderHtml() {
8767
8767
  <div class="command-item"><div class="command-col-command"><code>/</code></div><div class="command-col-original"><code>/status</code></div><div class="command-col-desc">\u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u3002</div></div>
8768
8768
  <div class="command-item"><div class="command-col-command"><code>/h</code></div><div class="command-col-original"><code>/help</code></div><div class="command-col-desc">\u67E5\u770B\u5E2E\u52A9\u3002</div></div>
8769
8769
  <div class="command-item"><div class="command-col-command"><code>/t</code></div><div class="command-col-original"><code>/threads</code></div><div class="command-col-desc">\u5217\u51FA\u6700\u8FD1 10 \u6761\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
8770
- <div class="command-item"><div class="command-col-command"><code>/t all</code></div><div class="command-col-original"><code>/threads all</code></div><div class="command-col-desc">\u5217\u51FA\u5168\u90E8\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
8771
- <div class="command-item"><div class="command-col-command"><code>/t n 100</code></div><div class="command-col-original"><code>/threads n 100</code></div><div class="command-col-desc">\u5217\u51FA\u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
8770
+ <div class="command-item"><div class="command-col-command"><code>/t all</code></div><div class="command-col-original"><code>/threads all</code></div><div class="command-col-desc">\u6700\u591A\u5217\u51FA 200 \u6761\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
8771
+ <div class="command-item"><div class="command-col-command"><code>/t n 100</code></div><div class="command-col-original"><code>/threads n 100</code></div><div class="command-col-desc">\u5217\u51FA\u6700\u8FD1 100 \u6761\u684C\u9762\u4F1A\u8BDD\uFF0C\u6700\u591A 200 \u6761\u3002</div></div>
8772
8772
  <div class="command-item"><div class="command-col-command"><code>/t &lt;\u5E8F\u53F7&gt;</code></div><div class="command-col-original"><code>/thread &lt;\u5E8F\u53F7&gt;</code></div><div class="command-col-desc">\u6309\u5E8F\u53F7\u63A5\u7BA1\u684C\u9762\u4F1A\u8BDD\u3002</div></div>
8773
8773
  <div class="command-item"><div class="command-col-command"><code>/n [\u7EDD\u5BF9\u8DEF\u5F84 | \u9879\u76EE\u540D]</code></div><div class="command-col-original"><code>/new [\u7EDD\u5BF9\u8DEF\u5F84 | \u9879\u76EE\u540D]</code></div><div class="command-col-desc">\u4E0D\u5E26\u53C2\u6570\u65F6\u5728\u5F53\u524D\u6B63\u5F0F\u4F1A\u8BDD\u76EE\u5F55\u4E0B\u65B0\u5EFA\u7EBF\u7A0B\uFF1B\u76F8\u5BF9\u9879\u76EE\u540D\u4F1A\u5728\u201C\u9ED8\u8BA4\u5DE5\u4F5C\u7A7A\u95F4\u201D\u4E0B\u521B\u5EFA\u76EE\u5F55\uFF1B\u5F53\u524D\u82E5\u662F\u4E34\u65F6\u8349\u7A3F\u7EBF\u7A0B\u5219\u4F1A\u62A5\u9519\u3002\u901A\u8FC7 IM \u521B\u5EFA\u7684\u65B0\u7EBF\u7A0B\u5F53\u524D\u53EA\u4FDD\u8BC1\u5728 IM \u4E2D\u53EF\u7EE7\u7EED\uFF0C\u4E0D\u4F1A\u81EA\u52A8\u51FA\u73B0\u5728 Codex Desktop \u4F1A\u8BDD\u5217\u8868\u4E2D\u3002</div></div>
8774
8774
  <div class="command-item"><div class="command-col-command"><code>\u76F4\u63A5\u53D1\u9001\u6587\u672C</code></div><div class="command-col-original">\u2014</div><div class="command-col-desc">\u7EE7\u7EED\u5F53\u524D\u5DF2\u7ED1\u5B9A\u4F1A\u8BDD\uFF1B\u672A\u7ED1\u5B9A\u65F6\u4F1A\u81EA\u52A8\u8FDB\u5165\u4E34\u65F6\u8349\u7A3F\u7EBF\u7A0B\u3002</div></div>
@@ -227,7 +227,7 @@ codex-to-im stop
227
227
  - IM 里也支持一组短命令别名:
228
228
  - `/` / `/status` 当前会话
229
229
  - `/h` / `/help` 帮助
230
- - `/t` / `/threads` 最近 10 条桌面会话,`/t all` / `/threads all` 查看全部,`/t n 100` / `/threads n 100` 查看最近 100 条,`/t 1` / `/thread 1` 接管
230
+ - `/t` / `/threads` 最近 10 条桌面会话,`/t all` / `/threads all` 最多查看 200 条,`/t n 100` / `/threads n 100` 查看最近 100 条(同样最多 200 条),`/t 1` / `/thread 1` 接管
231
231
  - `/n` / `/new` 在当前正式会话目录下新建线程;这类线程当前只保证在 IM 中可继续,不会自动出现在 Codex Desktop 会话列表中
232
232
  - `/n proj1` / `/new proj1` 新建项目会话
233
233
  - `/m` / `/mode` 查看或切换模式,可选 `code` / `plan` / `ask`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-to-im",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "Installable Codex-to-IM bridge with local setup UI and background service",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/zhangle1987/codex-to-im#readme",