lark-remote 0.5.19 → 0.5.21

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 (136) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/bridge/approval-actions.d.ts +1 -1
  3. package/dist/bridge/approval-actions.js +1 -1
  4. package/dist/bridge/bash-run.d.ts +71 -0
  5. package/dist/bridge/bash-run.js +217 -0
  6. package/dist/bridge/compact.d.ts +155 -0
  7. package/dist/bridge/compact.js +450 -0
  8. package/dist/bridge/final-usage.js +4 -4
  9. package/dist/bridge/inbound-media.js +72 -46
  10. package/dist/bridge/index.d.ts +106 -153
  11. package/dist/bridge/index.js +400 -1000
  12. package/dist/bridge/job-watch.d.ts +68 -0
  13. package/dist/bridge/job-watch.js +146 -0
  14. package/dist/bridge/queue-manager.d.ts +3 -3
  15. package/dist/bridge/queue-manager.js +10 -29
  16. package/dist/card/approval-render.d.ts +2 -2
  17. package/dist/card/approval-render.js +141 -130
  18. package/dist/card/card-budget.js +123 -98
  19. package/dist/card/card-helpers.d.ts +3 -3
  20. package/dist/card/card-helpers.js +6 -6
  21. package/dist/card/final-answer-file.js +1 -1
  22. package/dist/card/run-renderer.d.ts +3 -3
  23. package/dist/card/run-renderer.js +114 -159
  24. package/dist/card/run-state.d.ts +1 -15
  25. package/dist/card/run-state.js +358 -292
  26. package/dist/card/tool-render.d.ts +1 -1
  27. package/dist/card/tool-render.js +21 -17
  28. package/dist/card/usage-format.d.ts +22 -7
  29. package/dist/card/usage-format.js +119 -100
  30. package/dist/cli.js +15 -3
  31. package/dist/clone.js +2 -2
  32. package/dist/common/text-width.js +36 -24
  33. package/dist/common/tool-summary.js +132 -90
  34. package/dist/config/codex-config.js +130 -106
  35. package/dist/config/index.d.ts +16 -2
  36. package/dist/config/index.js +23 -8
  37. package/dist/connector/index.js +6 -6
  38. package/dist/error-classification.js +3 -2
  39. package/dist/inbound/placeholder.d.ts +1 -1
  40. package/dist/inbound/placeholder.js +1 -1
  41. package/dist/index.js +387 -281
  42. package/dist/logger/index.js +6 -6
  43. package/dist/message-handlers.d.ts +0 -5
  44. package/dist/message-handlers.js +254 -237
  45. package/dist/model-catalog.d.ts +2 -2
  46. package/dist/model-catalog.js +3 -8
  47. package/dist/platform/identity.js +1 -1
  48. package/dist/platform/path.d.ts +1 -1
  49. package/dist/platform/path.js +1 -1
  50. package/dist/platform/sleep-blocker.js +1 -1
  51. package/dist/platform/terminator-win32.js +2 -1
  52. package/dist/router/commands/ls.d.ts +3 -0
  53. package/dist/router/commands/ls.js +256 -175
  54. package/dist/router/commands/order.js +184 -159
  55. package/dist/router/commands/resume.js +190 -152
  56. package/dist/router/commands/ws.js +219 -174
  57. package/dist/router/config/dsh.d.ts +4 -8
  58. package/dist/router/config/dsh.js +3 -10
  59. package/dist/router/config/kimi.js +1 -1
  60. package/dist/router/config/types.d.ts +1 -1
  61. package/dist/router/config-diff.js +1 -1
  62. package/dist/router/index.d.ts +56 -11
  63. package/dist/router/index.js +401 -391
  64. package/dist/runner/bash/runner.js +2 -4
  65. package/dist/runner/claude/session.d.ts +1 -1
  66. package/dist/runner/claude/session.js +6 -4
  67. package/dist/runner/codex/app-server/runner.d.ts +9 -2
  68. package/dist/runner/codex/app-server/runner.js +30 -25
  69. package/dist/runner/codex/app-server/translator.d.ts +2 -5
  70. package/dist/runner/codex/app-server/translator.js +291 -238
  71. package/dist/runner/common/acp/acp-approval.d.ts +1 -1
  72. package/dist/runner/common/acp/acp-approval.js +1 -1
  73. package/dist/runner/common/acp/base-acp-runner.d.ts +5 -2
  74. package/dist/runner/common/acp/base-acp-runner.js +26 -65
  75. package/dist/runner/common/acp/base-translator.d.ts +12 -2
  76. package/dist/runner/common/acp/base-translator.js +50 -26
  77. package/dist/runner/common/acp/protocol-types.d.ts +1 -1
  78. package/dist/runner/common/acp/protocol-types.js +2 -2
  79. package/dist/runner/common/connection-based-runner.d.ts +32 -1
  80. package/dist/runner/common/connection-based-runner.js +32 -2
  81. package/dist/runner/common/jsonl-stream.js +154 -187
  82. package/dist/runner/common/jsonrpc/client.d.ts +29 -0
  83. package/dist/runner/common/jsonrpc/client.js +43 -12
  84. package/dist/runner/common/jsonrpc/connection-manager.d.ts +2 -2
  85. package/dist/runner/common/jsonrpc/connection-manager.js +4 -4
  86. package/dist/runner/common/spawning-runner.d.ts +6 -1
  87. package/dist/runner/common/spawning-runner.js +9 -4
  88. package/dist/runner/common/turn-started.d.ts +8 -0
  89. package/dist/runner/common/turn-started.js +11 -0
  90. package/dist/runner/dsh/approval.js +84 -51
  91. package/dist/runner/dsh/catalog-probe.d.ts +17 -0
  92. package/dist/runner/dsh/catalog-probe.js +10 -0
  93. package/dist/runner/dsh/client.d.ts +7 -11
  94. package/dist/runner/dsh/client.js +356 -289
  95. package/dist/runner/dsh/exit-cancel.d.ts +2 -2
  96. package/dist/runner/dsh/exit-cancel.js +2 -2
  97. package/dist/runner/dsh/inflight.d.ts +1 -1
  98. package/dist/runner/dsh/inflight.js +1 -1
  99. package/dist/runner/dsh/mux-stream.js +28 -8
  100. package/dist/runner/dsh/runner.d.ts +44 -4
  101. package/dist/runner/dsh/runner.js +296 -199
  102. package/dist/runner/dsh/translator.d.ts +1 -31
  103. package/dist/runner/dsh/translator.js +180 -178
  104. package/dist/runner/index.d.ts +1 -1
  105. package/dist/runner/kimi/acp/runner.d.ts +1 -2
  106. package/dist/runner/kimi/acp/runner.js +82 -46
  107. package/dist/runner/kimi/acp/translator.d.ts +1 -1
  108. package/dist/runner/kimi/acp/translator.js +3 -4
  109. package/dist/runner/opencode/acp/error-monitor.js +5 -5
  110. package/dist/runner/opencode/acp/runner.d.ts +2 -2
  111. package/dist/runner/opencode/acp/runner.js +4 -4
  112. package/dist/runner/pi/rpc/client.js +4 -13
  113. package/dist/runner/pi/rpc/protocol-types.d.ts +1 -1
  114. package/dist/runner/pi/rpc/protocol-types.js +1 -1
  115. package/dist/runner/pi/rpc/runner.d.ts +3 -0
  116. package/dist/runner/pi/rpc/runner.js +27 -42
  117. package/dist/runner/pi/rpc/translator.js +61 -60
  118. package/dist/runner/types.d.ts +2 -2
  119. package/dist/runner/types.js +1 -1
  120. package/dist/session/claude/sessions.d.ts +45 -0
  121. package/dist/session/claude/sessions.js +160 -122
  122. package/dist/session/codex/rollout-reader.js +181 -182
  123. package/dist/session/common/throw-session-list-error.d.ts +10 -0
  124. package/dist/session/common/throw-session-list-error.js +16 -0
  125. package/dist/session/dsh/sessions.js +291 -235
  126. package/dist/session/kimi/sessions.d.ts +40 -8
  127. package/dist/session/kimi/sessions.js +373 -301
  128. package/dist/session/opencode/sessions.d.ts +142 -1
  129. package/dist/session/opencode/sessions.js +378 -321
  130. package/dist/session/pi/sessions.js +4 -5
  131. package/dist/session/session-store.d.ts +9 -1
  132. package/dist/session/session-store.js +99 -99
  133. package/dist/update/version-check.js +2 -1
  134. package/dist/workspace/index.d.ts +1 -1
  135. package/dist/workspace/index.js +1 -1
  136. package/package.json +1 -1
@@ -2,177 +2,202 @@ import { cardButton } from '../../card/card-shared.js';
2
2
  import { paginationBar } from '../../card/card-helpers.js';
3
3
  import { pageSlice } from '../paging.js';
4
4
  export const ORDER_PAGE_SIZE = 8;
5
- export function buildOrderCommand(args, ctx, offset, deps) {
6
- const sub = args[0]?.toLowerCase();
7
- if (!sub || sub === 'list') {
8
- deps.reload();
9
- const allOrders = deps.list();
10
- const elements = [];
11
- if (allOrders.length === 0) {
12
- elements.push({ tag: 'div', text: { tag: 'lark_md', content: '暂无指令' } });
13
- }
14
- else {
15
- const { totalCount, totalPages, safeOffset, currentPage, pageItems: pageOrders, hasPagination, } = pageSlice(allOrders, offset, ORDER_PAGE_SIZE);
16
- for (let i = 0; i < pageOrders.length; i++) {
17
- const order = pageOrders[i];
18
- const displayText = order.text.length > 100 ? order.text.slice(0, 97) + '...' : order.text;
19
- elements.push({
20
- tag: 'div',
21
- text: {
22
- tag: 'lark_md',
23
- content: order.alias ? `\`$${order.alias}\` ${displayText}` : displayText,
24
- },
25
- });
26
- const leftColumn = order.alias
27
- ? [
28
- cardButton(`$${order.alias}`, { cmd: 'order.aliasEdit', orderId: order.id, offset: safeOffset }, { type: 'default', size: 'small' }),
29
- cardButton('✕', {
30
- cmd: 'order.aliasRemove',
31
- orderId: order.id,
32
- aliasName: order.alias,
33
- offset: safeOffset,
34
- }, { type: 'default', size: 'small' }),
35
- ]
36
- : [
37
- cardButton('+别名', { cmd: 'order.aliasEdit', orderId: order.id, offset: safeOffset }, { type: 'default', size: 'small' }),
38
- ];
39
- elements.push({
40
- tag: 'column_set',
41
- columns: [
42
- { tag: 'column', width: 'weighted', weight: 1, elements: leftColumn },
5
+ const ORDER_USAGE_TEXT = '用法: /order [list|save <text>|edit <orderId|序号> <新文本>|alias add <orderId|序号> <别名名>|alias rm <orderId|序号>]';
6
+ const ORDER_ALIAS_USAGE_TEXT = '用法: /order alias [add <orderId|序号> <别名名> | rm <orderId|序号> | list]';
7
+ // ── 模块级命名原语(crapper 把函数内部闭包/三元的决策点也算进外层)──────────
8
+ /** 单行指令的 3 个元素(div + column_set + 行间 hr)。 */
9
+ function orderRowElements(order, safeOffset, isLast) {
10
+ const displayText = order.text.length > 100 ? order.text.slice(0, 97) + '...' : order.text;
11
+ const leftColumn = order.alias
12
+ ? [
13
+ cardButton(`$${order.alias}`, { cmd: 'order.aliasEdit', orderId: order.id, offset: safeOffset }, { type: 'default', size: 'small' }),
14
+ cardButton('✕', {
15
+ cmd: 'order.aliasRemove',
16
+ orderId: order.id,
17
+ aliasName: order.alias,
18
+ offset: safeOffset,
19
+ }, { type: 'default', size: 'small' }),
20
+ ]
21
+ : [
22
+ cardButton('+别名', { cmd: 'order.aliasEdit', orderId: order.id, offset: safeOffset }, { type: 'default', size: 'small' }),
23
+ ];
24
+ const row = [
25
+ {
26
+ tag: 'div',
27
+ text: {
28
+ tag: 'lark_md',
29
+ content: order.alias ? `\`$${order.alias}\` ${displayText}` : displayText,
30
+ },
31
+ },
32
+ {
33
+ tag: 'column_set',
34
+ columns: [
35
+ { tag: 'column', width: 'weighted', weight: 1, elements: leftColumn },
36
+ {
37
+ tag: 'column',
38
+ width: 'weighted',
39
+ weight: 1,
40
+ vertical_align: 'center',
41
+ elements: [
43
42
  {
44
- tag: 'column',
45
- width: 'weighted',
46
- weight: 1,
47
- vertical_align: 'center',
48
- elements: [
43
+ tag: 'column_set',
44
+ columns: [
45
+ {
46
+ tag: 'column',
47
+ width: 'auto',
48
+ elements: [
49
+ cardButton('▶ 执行', { cmd: 'order.exec', orderId: order.id }, { type: 'primary', size: 'small' }),
50
+ ],
51
+ },
52
+ {
53
+ tag: 'column',
54
+ width: 'auto',
55
+ elements: [
56
+ cardButton('编辑', { cmd: 'order.textEdit', orderId: order.id, offset: safeOffset }, { type: 'default', size: 'small' }),
57
+ ],
58
+ },
49
59
  {
50
- tag: 'column_set',
51
- columns: [
52
- {
53
- tag: 'column',
54
- width: 'auto',
55
- elements: [
56
- cardButton('▶ 执行', { cmd: 'order.exec', orderId: order.id }, { type: 'primary', size: 'small' }),
57
- ],
58
- },
59
- {
60
- tag: 'column',
61
- width: 'auto',
62
- elements: [
63
- cardButton('编辑', { cmd: 'order.textEdit', orderId: order.id, offset: safeOffset }, { type: 'default', size: 'small' }),
64
- ],
65
- },
66
- {
67
- tag: 'column',
68
- width: 'auto',
69
- elements: [
70
- cardButton('删除', { cmd: 'order.delete', orderId: order.id, offset: safeOffset }, { type: 'danger', size: 'small' }),
71
- ],
72
- },
60
+ tag: 'column',
61
+ width: 'auto',
62
+ elements: [
63
+ cardButton('删除', { cmd: 'order.delete', orderId: order.id, offset: safeOffset }, { type: 'danger', size: 'small' }),
73
64
  ],
74
65
  },
75
66
  ],
76
67
  },
77
68
  ],
78
- });
79
- if (i < pageOrders.length - 1)
80
- elements.push({ tag: 'hr' });
81
- }
82
- if (hasPagination) {
83
- elements.push({ tag: 'hr' }, ...paginationBar({
84
- cmd: 'order.page',
85
- offset: safeOffset,
86
- pageSize: ORDER_PAGE_SIZE,
87
- total: totalCount,
88
- label: `**第 ${currentPage}/${totalPages} 页**(共 ${totalCount} 条)`,
89
- }));
90
- }
91
- }
92
- return {
93
- card: {
94
- schema: '2.0',
95
- config: { wide_screen_mode: true, update_multi: true },
96
- header: { title: { tag: 'plain_text', content: '📋 指令' }, template: 'turquoise' },
97
- body: { elements },
98
- },
99
- };
100
- }
101
- if (sub === 'alias') {
102
- const op = args[1];
103
- if (op === 'add') {
104
- const target = args[2];
105
- const name = args[3];
106
- if (!target || !name) {
107
- return { text: '用法: /order alias add <orderId|序号> <别名名>' };
108
- }
109
- const order = deps.resolveTarget(target);
110
- if (!order)
111
- return { text: `指令不存在: ${target}` };
112
- try {
113
- deps.setAlias(order.id, name);
114
- return { text: `✅ 已给指令绑定别名 $${name}` };
115
- }
116
- catch (err) {
117
- return { text: `保存失败: ${err.message}` };
118
- }
119
- }
120
- if (op === 'rm') {
121
- const target = args[2];
122
- if (!target)
123
- return { text: '用法: /order alias rm <orderId|序号>' };
124
- const order = deps.resolveTarget(target);
125
- if (!order)
126
- return { text: `指令不存在: ${target}` };
127
- if (!order.alias)
128
- return { text: '该指令没有别名' };
129
- const aliasName = order.alias;
130
- try {
131
- deps.setAlias(order.id, undefined);
132
- return { text: `✅ 已移除别名 $${aliasName}` };
133
- }
134
- catch (err) {
135
- return { text: `保存失败: ${err.message}` };
136
- }
137
- }
138
- if (!op || op === 'list')
139
- return buildOrderCommand([], ctx, offset, deps);
140
- return {
141
- text: '用法: /order alias [add <orderId|序号> <别名名> | rm <orderId|序号> | list]',
142
- };
69
+ },
70
+ ],
71
+ },
72
+ ];
73
+ if (!isLast)
74
+ row.push({ tag: 'hr' });
75
+ return row;
76
+ }
77
+ function orderPagination(totalCount, totalPages, safeOffset, currentPage) {
78
+ return [
79
+ { tag: 'hr' },
80
+ ...paginationBar({
81
+ cmd: 'order.page',
82
+ offset: safeOffset,
83
+ pageSize: ORDER_PAGE_SIZE,
84
+ total: totalCount,
85
+ label: `**第 ${currentPage}/${totalPages} 页**(共 ${totalCount} 条)`,
86
+ }),
87
+ ];
88
+ }
89
+ function orderList(_args, _ctx, offset, deps) {
90
+ deps.reload();
91
+ const allOrders = deps.list();
92
+ const elements = [];
93
+ if (allOrders.length === 0) {
94
+ elements.push({ tag: 'div', text: { tag: 'lark_md', content: '暂无指令' } });
143
95
  }
144
- if (sub === 'save') {
145
- const text = args.slice(1).join(' ');
146
- if (!text)
147
- return { text: '用法: /order save <指令文本>' };
148
- try {
149
- deps.save(text);
150
- return { text: `✅ 已保存指令: ${text.slice(0, 50)}${text.length > 50 ? '...' : ''}` };
96
+ else {
97
+ const { totalCount, totalPages, safeOffset, currentPage, pageItems: pageOrders, hasPagination, } = pageSlice(allOrders, offset, ORDER_PAGE_SIZE);
98
+ for (let i = 0; i < pageOrders.length; i++) {
99
+ elements.push(...orderRowElements(pageOrders[i], safeOffset, i === pageOrders.length - 1));
151
100
  }
152
- catch (err) {
153
- return { text: `保存失败: ${err.message}` };
154
- }
155
- }
156
- if (sub === 'edit') {
157
- const target = args[1];
158
- const newText = args.slice(2).join(' ').trim();
159
- if (!target || !newText) {
160
- return { text: '用法: /order edit <orderId|序号> <新文本>' };
161
- }
162
- const order = deps.resolveTarget(target);
163
- if (!order)
164
- return { text: `指令不存在: ${target}` };
165
- try {
166
- deps.updateText(order.id, newText);
167
- const preview = newText.length > 50 ? newText.slice(0, 50) + '...' : newText;
168
- return { text: `✅ 已更新指令: ${preview}` };
169
- }
170
- catch (err) {
171
- return { text: `保存失败: ${err.message}` };
101
+ if (hasPagination) {
102
+ elements.push(...orderPagination(totalCount, totalPages, safeOffset, currentPage));
172
103
  }
173
104
  }
174
105
  return {
175
- text: '用法: /order [list|save <text>|edit <orderId|序号> <新文本>|alias add <orderId|序号> <别名名>|alias rm <orderId|序号>]',
106
+ card: {
107
+ schema: '2.0',
108
+ config: { wide_screen_mode: true, update_multi: true },
109
+ header: { title: { tag: 'plain_text', content: '📋 指令' }, template: 'turquoise' },
110
+ body: { elements },
111
+ },
176
112
  };
177
113
  }
114
+ function orderAliasAdd(args, _ctx, _offset, deps) {
115
+ const target = args[2];
116
+ const name = args[3];
117
+ if (!target || !name) {
118
+ return { text: '用法: /order alias add <orderId|序号> <别名名>' };
119
+ }
120
+ const order = deps.resolveTarget(target);
121
+ if (!order)
122
+ return { text: `指令不存在: ${target}` };
123
+ try {
124
+ deps.setAlias(order.id, name);
125
+ return { text: `✅ 已给指令绑定别名 $${name}` };
126
+ }
127
+ catch (err) {
128
+ return { text: `保存失败: ${err.message}` };
129
+ }
130
+ }
131
+ function orderAliasRemove(args, _ctx, _offset, deps) {
132
+ const target = args[2];
133
+ if (!target)
134
+ return { text: '用法: /order alias rm <orderId|序号>' };
135
+ const order = deps.resolveTarget(target);
136
+ if (!order)
137
+ return { text: `指令不存在: ${target}` };
138
+ if (!order.alias)
139
+ return { text: '该指令没有别名' };
140
+ const aliasName = order.alias;
141
+ try {
142
+ deps.setAlias(order.id, undefined);
143
+ return { text: `✅ 已移除别名 $${aliasName}` };
144
+ }
145
+ catch (err) {
146
+ return { text: `保存失败: ${err.message}` };
147
+ }
148
+ }
149
+ /** alias 子操作 → handler。用 Map 而非对象字面量:`constructor` 这类键会命中 Object.prototype。 */
150
+ const ORDER_ALIAS_HANDLERS = new Map([
151
+ ['add', orderAliasAdd],
152
+ ['rm', orderAliasRemove],
153
+ ]);
154
+ function orderAlias(args, ctx, offset, deps) {
155
+ const op = args[1];
156
+ if (!op || op === 'list')
157
+ return buildOrderCommand([], ctx, offset, deps);
158
+ const handler = ORDER_ALIAS_HANDLERS.get(op);
159
+ return handler ? handler(args, ctx, offset, deps) : { text: ORDER_ALIAS_USAGE_TEXT };
160
+ }
161
+ function orderSave(args, _ctx, _offset, deps) {
162
+ const text = args.slice(1).join(' ');
163
+ if (!text)
164
+ return { text: '用法: /order save <指令文本>' };
165
+ try {
166
+ deps.save(text);
167
+ return { text: `✅ 已保存指令: ${text.slice(0, 50)}${text.length > 50 ? '...' : ''}` };
168
+ }
169
+ catch (err) {
170
+ return { text: `保存失败: ${err.message}` };
171
+ }
172
+ }
173
+ function orderEdit(args, _ctx, _offset, deps) {
174
+ const target = args[1];
175
+ const newText = args.slice(2).join(' ').trim();
176
+ if (!target || !newText) {
177
+ return { text: '用法: /order edit <orderId|序号> <新文本>' };
178
+ }
179
+ const order = deps.resolveTarget(target);
180
+ if (!order)
181
+ return { text: `指令不存在: ${target}` };
182
+ try {
183
+ deps.updateText(order.id, newText);
184
+ const preview = newText.length > 50 ? newText.slice(0, 50) + '...' : newText;
185
+ return { text: `✅ 已更新指令: ${preview}` };
186
+ }
187
+ catch (err) {
188
+ return { text: `保存失败: ${err.message}` };
189
+ }
190
+ }
191
+ /** 子命令 → handler。未知 sub 回退到长用法文案(与拆分前一致)。 */
192
+ const ORDER_SUB_HANDLERS = new Map([
193
+ ['list', orderList],
194
+ ['alias', orderAlias],
195
+ ['save', orderSave],
196
+ ['edit', orderEdit],
197
+ ]);
198
+ export function buildOrderCommand(args, ctx, offset, deps) {
199
+ const sub = args[0]?.toLowerCase();
200
+ const handler = sub === undefined ? orderList : ORDER_SUB_HANDLERS.get(sub);
201
+ return handler ? handler(args, ctx, offset, deps) : { text: ORDER_USAGE_TEXT };
202
+ }
178
203
  //# sourceMappingURL=order.js.map