botmux 2.101.1 → 2.103.0

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 (145) hide show
  1. package/dist/adapters/backend/sandbox.d.ts +13 -1
  2. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  3. package/dist/adapters/backend/sandbox.js +33 -12
  4. package/dist/adapters/backend/sandbox.js.map +1 -1
  5. package/dist/adapters/cli/coco.d.ts.map +1 -1
  6. package/dist/adapters/cli/coco.js +6 -1
  7. package/dist/adapters/cli/coco.js.map +1 -1
  8. package/dist/adapters/cli/codex-app.d.ts.map +1 -1
  9. package/dist/adapters/cli/codex-app.js +3 -1
  10. package/dist/adapters/cli/codex-app.js.map +1 -1
  11. package/dist/adapters/cli/codex.d.ts.map +1 -1
  12. package/dist/adapters/cli/codex.js +7 -1
  13. package/dist/adapters/cli/codex.js.map +1 -1
  14. package/dist/adapters/cli/mtr.d.ts.map +1 -1
  15. package/dist/adapters/cli/mtr.js +4 -1
  16. package/dist/adapters/cli/mtr.js.map +1 -1
  17. package/dist/adapters/cli/opencode.d.ts.map +1 -1
  18. package/dist/adapters/cli/opencode.js +4 -1
  19. package/dist/adapters/cli/opencode.js.map +1 -1
  20. package/dist/adapters/cli/traex.d.ts.map +1 -1
  21. package/dist/adapters/cli/traex.js +4 -1
  22. package/dist/adapters/cli/traex.js.map +1 -1
  23. package/dist/adapters/cli/types.d.ts +4 -1
  24. package/dist/adapters/cli/types.d.ts.map +1 -1
  25. package/dist/bot-registry.d.ts +14 -0
  26. package/dist/bot-registry.d.ts.map +1 -1
  27. package/dist/bot-registry.js +9 -0
  28. package/dist/bot-registry.js.map +1 -1
  29. package/dist/cli.d.ts +9 -0
  30. package/dist/cli.d.ts.map +1 -1
  31. package/dist/cli.js +141 -6
  32. package/dist/cli.js.map +1 -1
  33. package/dist/core/command-handler.d.ts.map +1 -1
  34. package/dist/core/command-handler.js +22 -8
  35. package/dist/core/command-handler.js.map +1 -1
  36. package/dist/core/cost-calculator.d.ts.map +1 -1
  37. package/dist/core/cost-calculator.js +6 -0
  38. package/dist/core/cost-calculator.js.map +1 -1
  39. package/dist/core/dashboard-ipc-server.d.ts +9 -0
  40. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  41. package/dist/core/dashboard-ipc-server.js +96 -6
  42. package/dist/core/dashboard-ipc-server.js.map +1 -1
  43. package/dist/core/local-terminal-opener.d.ts +43 -0
  44. package/dist/core/local-terminal-opener.d.ts.map +1 -0
  45. package/dist/core/local-terminal-opener.js +221 -0
  46. package/dist/core/local-terminal-opener.js.map +1 -0
  47. package/dist/core/working-dir.d.ts +12 -1
  48. package/dist/core/working-dir.d.ts.map +1 -1
  49. package/dist/core/working-dir.js +20 -3
  50. package/dist/core/working-dir.js.map +1 -1
  51. package/dist/daemon.d.ts.map +1 -1
  52. package/dist/daemon.js +52 -8
  53. package/dist/daemon.js.map +1 -1
  54. package/dist/dashboard/bot-onboarding.d.ts +28 -0
  55. package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
  56. package/dist/dashboard/bot-onboarding.js +20 -0
  57. package/dist/dashboard/bot-onboarding.js.map +1 -1
  58. package/dist/dashboard/bot-payload.d.ts +2 -0
  59. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  60. package/dist/dashboard/bot-payload.js +4 -0
  61. package/dist/dashboard/bot-payload.js.map +1 -1
  62. package/dist/dashboard/feishu-login.d.ts +64 -0
  63. package/dist/dashboard/feishu-login.d.ts.map +1 -0
  64. package/dist/dashboard/feishu-login.js +99 -0
  65. package/dist/dashboard/feishu-login.js.map +1 -0
  66. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  67. package/dist/dashboard/web/bot-defaults.js +243 -1
  68. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  69. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  70. package/dist/dashboard/web/bot-onboarding.js +4 -1
  71. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  72. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  73. package/dist/dashboard/web/i18n.js +52 -8
  74. package/dist/dashboard/web/i18n.js.map +1 -1
  75. package/dist/dashboard-web/app.js +6 -6
  76. package/dist/dashboard-web/chunks/bot-defaults-page-ZVBKVYIG.js +380 -0
  77. package/dist/dashboard-web/chunks/chunk-HC7ANVX7.js +31 -0
  78. package/dist/dashboard-web/chunks/{chunk-ECXPBQ3J.js → chunk-NNXPEJ7S.js} +1 -1
  79. package/dist/dashboard-web/chunks/{connectors-UGTF4Q4I.js → connectors-POZADN75.js} +1 -1
  80. package/dist/dashboard-web/chunks/{groups-page-IKTCMQ4A.js → groups-page-UQFQ6DRE.js} +1 -1
  81. package/dist/dashboard-web/chunks/{insights-page-7CCSHEKM.js → insights-page-ATW2W5KP.js} +1 -1
  82. package/dist/dashboard-web/chunks/{overview-page-JOJW65P5.js → overview-page-Z7OV54XU.js} +1 -1
  83. package/dist/dashboard-web/chunks/{roles-page-E2VN2DLV.js → roles-page-4BJVXK2E.js} +1 -1
  84. package/dist/dashboard-web/chunks/{schedules-6QIHJIHX.js → schedules-XLETZ2EP.js} +1 -1
  85. package/dist/dashboard-web/chunks/{sessions-page-QN2TARF2.js → sessions-page-RMMQUGXJ.js} +1 -1
  86. package/dist/dashboard-web/chunks/{settings-page-WWTXB577.js → settings-page-PWKI4TWF.js} +1 -1
  87. package/dist/dashboard-web/chunks/{skills-page-2FAUPQ6H.js → skills-page-SH7KUD45.js} +1 -1
  88. package/dist/dashboard-web/chunks/{team-federation-page-PTBQQSFS.js → team-federation-page-JAJXFLXA.js} +1 -1
  89. package/dist/dashboard-web/chunks/{workflows-ZNBB5KFV.js → workflows-FRJ2DJAO.js} +1 -1
  90. package/dist/dashboard-web/style.css +99 -0
  91. package/dist/dashboard.js +170 -17
  92. package/dist/dashboard.js.map +1 -1
  93. package/dist/i18n/en.d.ts.map +1 -1
  94. package/dist/i18n/en.js +13 -4
  95. package/dist/i18n/en.js.map +1 -1
  96. package/dist/i18n/zh.d.ts.map +1 -1
  97. package/dist/i18n/zh.js +13 -4
  98. package/dist/i18n/zh.js.map +1 -1
  99. package/dist/im/lark/card-builder.d.ts.map +1 -1
  100. package/dist/im/lark/card-builder.js +20 -0
  101. package/dist/im/lark/card-builder.js.map +1 -1
  102. package/dist/im/lark/card-handler.d.ts.map +1 -1
  103. package/dist/im/lark/card-handler.js +36 -12
  104. package/dist/im/lark/card-handler.js.map +1 -1
  105. package/dist/im/lark/client.d.ts.map +1 -1
  106. package/dist/im/lark/client.js +25 -5
  107. package/dist/im/lark/client.js.map +1 -1
  108. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  109. package/dist/im/lark/event-dispatcher.js +36 -3
  110. package/dist/im/lark/event-dispatcher.js.map +1 -1
  111. package/dist/services/bot-config-store.d.ts +4 -1
  112. package/dist/services/bot-config-store.d.ts.map +1 -1
  113. package/dist/services/bot-config-store.js +19 -1
  114. package/dist/services/bot-config-store.js.map +1 -1
  115. package/dist/services/bot-union-ids-store.d.ts +15 -0
  116. package/dist/services/bot-union-ids-store.d.ts.map +1 -1
  117. package/dist/services/bot-union-ids-store.js +25 -5
  118. package/dist/services/bot-union-ids-store.js.map +1 -1
  119. package/dist/services/open-platform-rename.d.ts +45 -0
  120. package/dist/services/open-platform-rename.d.ts.map +1 -0
  121. package/dist/services/open-platform-rename.js +182 -0
  122. package/dist/services/open-platform-rename.js.map +1 -0
  123. package/dist/services/platform-team-store.d.ts +5 -0
  124. package/dist/services/platform-team-store.d.ts.map +1 -1
  125. package/dist/services/platform-team-store.js +16 -0
  126. package/dist/services/platform-team-store.js.map +1 -1
  127. package/dist/services/sandbox-land.d.ts.map +1 -1
  128. package/dist/services/sandbox-land.js +16 -4
  129. package/dist/services/sandbox-land.js.map +1 -1
  130. package/dist/services/usage-ledger.d.ts.map +1 -1
  131. package/dist/services/usage-ledger.js +14 -2
  132. package/dist/services/usage-ledger.js.map +1 -1
  133. package/dist/setup/open-platform-automation.d.ts +8 -0
  134. package/dist/setup/open-platform-automation.d.ts.map +1 -1
  135. package/dist/setup/open-platform-automation.js +5 -3
  136. package/dist/setup/open-platform-automation.js.map +1 -1
  137. package/dist/utils/bot-routing.d.ts +26 -3
  138. package/dist/utils/bot-routing.d.ts.map +1 -1
  139. package/dist/utils/bot-routing.js +38 -4
  140. package/dist/utils/bot-routing.js.map +1 -1
  141. package/dist/workflows/events/payloads.d.ts +6 -6
  142. package/dist/workflows/events/schema.d.ts +12 -12
  143. package/package.json +1 -1
  144. package/dist/dashboard-web/chunks/bot-defaults-page-HOGLABBC.js +0 -358
  145. package/dist/dashboard-web/chunks/chunk-MR57RUVP.js +0 -31
@@ -1 +1 @@
1
- {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
@@ -898,8 +898,16 @@ async function handleConfigCommand(message, rootId, larkAppId, deps) {
898
898
  value = coerced.value;
899
899
  break;
900
900
  }
901
- default: // 'string'
902
- value = rawValue;
901
+ default: { // 'string'
902
+ // dashboard PUT 同口径:string 字段也过 coerceConfigValue(长度上限
903
+ // maxLen 等约束在 spec 上,避免 IM 文本入口绕过校验)。
904
+ const coerced = coerceConfigValue(spec, rawValue);
905
+ if (!coerced.ok) {
906
+ await reply(t('cmd.config.write_failed', { reason: coerced.reason }, loc));
907
+ return;
908
+ }
909
+ value = coerced.value;
910
+ }
903
911
  }
904
912
  const r = await applyConfigField(larkAppId, spec, value);
905
913
  if (!r.ok) {
@@ -1217,7 +1225,7 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
1217
1225
  await sessionReply(rootId, t('cmd.no_active_session', undefined, loc));
1218
1226
  break;
1219
1227
  }
1220
- const validation = validateWorkingDir(targetPath, loc);
1228
+ const validation = validateWorkingDir(targetPath, loc, { autoCreate: true });
1221
1229
  if (!validation.ok) {
1222
1230
  await sessionReply(rootId, validation.error);
1223
1231
  break;
@@ -1227,8 +1235,13 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
1227
1235
  ds.workingDir = targetPath;
1228
1236
  ds.session.workingDir = targetPath;
1229
1237
  sessionStore.updateSession(ds.session);
1230
- await sessionReply(rootId, t('cmd.cd.switched', { path: resolvedPath }, loc));
1231
- logger.info(`[${logTag}] Working directory changed to ${resolvedPath} by /cd command`);
1238
+ if (validation.created) {
1239
+ await sessionReply(rootId, t('cmd.cd.created_switched', { path: resolvedPath }, loc));
1240
+ }
1241
+ else {
1242
+ await sessionReply(rootId, t('cmd.cd.switched', { path: resolvedPath }, loc));
1243
+ }
1244
+ logger.info(`[${logTag}] Working directory changed to ${resolvedPath} by /cd command${validation.created ? ' (auto-created)' : ''}`);
1232
1245
  break;
1233
1246
  }
1234
1247
  case '/repo': {
@@ -1854,7 +1867,7 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
1854
1867
  await sessionReply(rootId, t('cmd.oncall.bind_usage', undefined, loc));
1855
1868
  break;
1856
1869
  }
1857
- const validation = validateWorkingDir(target, loc);
1870
+ const validation = validateWorkingDir(target, loc, { autoCreate: true });
1858
1871
  if (!validation.ok) {
1859
1872
  await sessionReply(rootId, validation.error);
1860
1873
  break;
@@ -1873,13 +1886,14 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
1873
1886
  const verb = result.created
1874
1887
  ? t('cmd.oncall.verb_bound', undefined, loc)
1875
1888
  : t('cmd.oncall.verb_updated', undefined, loc);
1889
+ const createdNote = validation.created ? `\n\n${t('cmd.oncall.bind_created_note', undefined, loc)}` : '';
1876
1890
  await sessionReply(rootId, t('cmd.oncall.bind_success', {
1877
1891
  verb,
1878
1892
  chatId,
1879
1893
  target,
1880
1894
  resolved: resolvedPath,
1881
- }, loc));
1882
- logger.info(`[${logTag}] /oncall bind chat=${chatId} dir=${target}`);
1895
+ }, loc) + createdNote);
1896
+ logger.info(`[${logTag}] /oncall bind chat=${chatId} dir=${target}${validation.created ? ' (auto-created)' : ''}`);
1883
1897
  break;
1884
1898
  }
1885
1899
  if (sub === 'unbind' || sub === '解绑') {