botmux 2.93.1 → 2.94.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.
- package/dist/adapters/cli/claude-code.d.ts.map +1 -1
- package/dist/adapters/cli/claude-code.js +6 -1
- package/dist/adapters/cli/claude-code.js.map +1 -1
- package/dist/bot-registry.d.ts +10 -1
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +2 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +11 -4
- package/dist/cli/workflow.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +133 -1
- package/dist/cli.js.map +1 -1
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +3 -0
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/inherit-peer.d.ts +5 -0
- package/dist/core/inherit-peer.d.ts.map +1 -1
- package/dist/core/inherit-peer.js +3 -0
- package/dist/core/inherit-peer.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +29 -0
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +282 -12
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +7 -1
- package/dist/dashboard/auth.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +1 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +1 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/v3-runs-api.d.ts +26 -0
- package/dist/dashboard/v3-runs-api.d.ts.map +1 -0
- package/dist/dashboard/v3-runs-api.js +67 -0
- package/dist/dashboard/v3-runs-api.js.map +1 -0
- package/dist/dashboard/web/app.js +21 -9
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +24 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +12 -4
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/legacy-workflow-link.d.ts +2 -0
- package/dist/dashboard/web/legacy-workflow-link.d.ts.map +1 -0
- package/dist/dashboard/web/legacy-workflow-link.js +12 -0
- package/dist/dashboard/web/legacy-workflow-link.js.map +1 -0
- package/dist/dashboard/web/v3-terminal.d.ts +11 -0
- package/dist/dashboard/web/v3-terminal.d.ts.map +1 -0
- package/dist/dashboard/web/v3-terminal.js +143 -0
- package/dist/dashboard/web/v3-terminal.js.map +1 -0
- package/dist/dashboard/web/v3.d.ts +2 -0
- package/dist/dashboard/web/v3.d.ts.map +1 -0
- package/dist/dashboard/web/v3.js +564 -0
- package/dist/dashboard/web/v3.js.map +1 -0
- package/dist/dashboard/web/workflows.d.ts.map +1 -1
- package/dist/dashboard/web/workflows.js +12 -8
- package/dist/dashboard/web/workflows.js.map +1 -1
- package/dist/dashboard-web/app.js +787 -699
- package/dist/dashboard-web/index.html +1 -1
- package/dist/dashboard-web/style.css +223 -0
- package/dist/dashboard.js +7 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.js +3 -3
- package/dist/i18n/zh.js +3 -3
- package/dist/im/lark/card-handler.d.ts +12 -0
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +28 -0
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/v3-blocked-card-handler.d.ts +28 -0
- package/dist/im/lark/v3-blocked-card-handler.d.ts.map +1 -0
- package/dist/im/lark/v3-blocked-card-handler.js +134 -0
- package/dist/im/lark/v3-blocked-card-handler.js.map +1 -0
- package/dist/im/lark/v3-blocked-card.d.ts +75 -0
- package/dist/im/lark/v3-blocked-card.d.ts.map +1 -0
- package/dist/im/lark/v3-blocked-card.js +206 -0
- package/dist/im/lark/v3-blocked-card.js.map +1 -0
- package/dist/im/lark/v3-gate-card-handler.d.ts +31 -0
- package/dist/im/lark/v3-gate-card-handler.d.ts.map +1 -0
- package/dist/im/lark/v3-gate-card-handler.js +110 -0
- package/dist/im/lark/v3-gate-card-handler.js.map +1 -0
- package/dist/im/lark/v3-gate-card.d.ts +47 -0
- package/dist/im/lark/v3-gate-card.d.ts.map +1 -0
- package/dist/im/lark/v3-gate-card.js +119 -0
- package/dist/im/lark/v3-gate-card.js.map +1 -0
- package/dist/im/lark/v3-loop-grant-card-handler.d.ts +28 -0
- package/dist/im/lark/v3-loop-grant-card-handler.d.ts.map +1 -0
- package/dist/im/lark/v3-loop-grant-card-handler.js +90 -0
- package/dist/im/lark/v3-loop-grant-card-handler.js.map +1 -0
- package/dist/im/lark/v3-loop-grant-card.d.ts +46 -0
- package/dist/im/lark/v3-loop-grant-card.d.ts.map +1 -0
- package/dist/im/lark/v3-loop-grant-card.js +119 -0
- package/dist/im/lark/v3-loop-grant-card.js.map +1 -0
- package/dist/im/lark/v3-revisit-grant-card-handler.d.ts +29 -0
- package/dist/im/lark/v3-revisit-grant-card-handler.d.ts.map +1 -0
- package/dist/im/lark/v3-revisit-grant-card-handler.js +96 -0
- package/dist/im/lark/v3-revisit-grant-card-handler.js.map +1 -0
- package/dist/im/lark/v3-revisit-grant-card.d.ts +52 -0
- package/dist/im/lark/v3-revisit-grant-card.d.ts.map +1 -0
- package/dist/im/lark/v3-revisit-grant-card.js +123 -0
- package/dist/im/lark/v3-revisit-grant-card.js.map +1 -0
- package/dist/im/lark/workflow-cards.d.ts.map +1 -1
- package/dist/im/lark/workflow-cards.js +5 -1
- package/dist/im/lark/workflow-cards.js.map +1 -1
- package/dist/im/lark/workflow-progress-card.d.ts +1 -1
- package/dist/im/lark/workflow-progress-card.js +1 -1
- package/dist/im/lark/workflow-slash-command.d.ts +28 -0
- package/dist/im/lark/workflow-slash-command.d.ts.map +1 -1
- package/dist/im/lark/workflow-slash-command.js +61 -5
- package/dist/im/lark/workflow-slash-command.js.map +1 -1
- package/dist/services/card-prefs-store.d.ts +4 -0
- package/dist/services/card-prefs-store.d.ts.map +1 -1
- package/dist/services/card-prefs-store.js +19 -0
- package/dist/services/card-prefs-store.js.map +1 -1
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +208 -4
- package/dist/skills/definitions.js.map +1 -1
- package/dist/worker.js +10 -1
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +80 -80
- package/dist/workflows/events/payloads.d.ts +4 -4
- package/dist/workflows/events/schema.d.ts +16 -16
- package/dist/workflows/v3/architect.d.ts +37 -0
- package/dist/workflows/v3/architect.d.ts.map +1 -0
- package/dist/workflows/v3/architect.js +226 -0
- package/dist/workflows/v3/architect.js.map +1 -0
- package/dist/workflows/v3/bot-resolve.d.ts +21 -0
- package/dist/workflows/v3/bot-resolve.d.ts.map +1 -0
- package/dist/workflows/v3/bot-resolve.js +47 -0
- package/dist/workflows/v3/bot-resolve.js.map +1 -0
- package/dist/workflows/v3/cli-run.d.ts +24 -0
- package/dist/workflows/v3/cli-run.d.ts.map +1 -0
- package/dist/workflows/v3/cli-run.js +265 -0
- package/dist/workflows/v3/cli-run.js.map +1 -0
- package/dist/workflows/v3/contract.d.ts +302 -0
- package/dist/workflows/v3/contract.d.ts.map +1 -0
- package/dist/workflows/v3/contract.js +91 -0
- package/dist/workflows/v3/contract.js.map +1 -0
- package/dist/workflows/v3/daemon-run.d.ts +311 -0
- package/dist/workflows/v3/daemon-run.d.ts.map +1 -0
- package/dist/workflows/v3/daemon-run.js +775 -0
- package/dist/workflows/v3/daemon-run.js.map +1 -0
- package/dist/workflows/v3/dag.d.ts +332 -0
- package/dist/workflows/v3/dag.d.ts.map +1 -0
- package/dist/workflows/v3/dag.js +1040 -0
- package/dist/workflows/v3/dag.js.map +1 -0
- package/dist/workflows/v3/ephemeral-pool.d.ts +29 -0
- package/dist/workflows/v3/ephemeral-pool.d.ts.map +1 -0
- package/dist/workflows/v3/ephemeral-pool.js +331 -0
- package/dist/workflows/v3/ephemeral-pool.js.map +1 -0
- package/dist/workflows/v3/grill-state.d.ts +92 -0
- package/dist/workflows/v3/grill-state.d.ts.map +1 -0
- package/dist/workflows/v3/grill-state.js +151 -0
- package/dist/workflows/v3/grill-state.js.map +1 -0
- package/dist/workflows/v3/host.d.ts +88 -0
- package/dist/workflows/v3/host.d.ts.map +1 -0
- package/dist/workflows/v3/host.js +349 -0
- package/dist/workflows/v3/host.js.map +1 -0
- package/dist/workflows/v3/human-gate.d.ts +85 -0
- package/dist/workflows/v3/human-gate.d.ts.map +1 -0
- package/dist/workflows/v3/human-gate.js +153 -0
- package/dist/workflows/v3/human-gate.js.map +1 -0
- package/dist/workflows/v3/journal.d.ts +207 -0
- package/dist/workflows/v3/journal.d.ts.map +1 -0
- package/dist/workflows/v3/journal.js +74 -0
- package/dist/workflows/v3/journal.js.map +1 -0
- package/dist/workflows/v3/manifest.d.ts +17 -0
- package/dist/workflows/v3/manifest.d.ts.map +1 -0
- package/dist/workflows/v3/manifest.js +266 -0
- package/dist/workflows/v3/manifest.js.map +1 -0
- package/dist/workflows/v3/ops-projection.d.ts +110 -0
- package/dist/workflows/v3/ops-projection.d.ts.map +1 -0
- package/dist/workflows/v3/ops-projection.js +0 -0
- package/dist/workflows/v3/ops-projection.js.map +1 -0
- package/dist/workflows/v3/orchestrator.d.ts +168 -0
- package/dist/workflows/v3/orchestrator.d.ts.map +1 -0
- package/dist/workflows/v3/orchestrator.js +417 -0
- package/dist/workflows/v3/orchestrator.js.map +1 -0
- package/dist/workflows/v3/runtime.d.ts +193 -0
- package/dist/workflows/v3/runtime.d.ts.map +1 -0
- package/dist/workflows/v3/runtime.js +1284 -0
- package/dist/workflows/v3/runtime.js.map +1 -0
- package/dist/workflows/v3/spec.d.ts +32 -0
- package/dist/workflows/v3/spec.d.ts.map +1 -0
- package/dist/workflows/v3/spec.js +173 -0
- package/dist/workflows/v3/spec.js.map +1 -0
- package/dist/workflows/v3/state.d.ts +74 -0
- package/dist/workflows/v3/state.d.ts.map +1 -0
- package/dist/workflows/v3/state.js +353 -0
- package/dist/workflows/v3/state.js.map +1 -0
- package/package.json +1 -1
- package/dist/dashboard/web/workflow-catalog.d.ts +0 -2
- package/dist/dashboard/web/workflow-catalog.d.ts.map +0 -1
- package/dist/dashboard/web/workflow-catalog.js +0 -323
- package/dist/dashboard/web/workflow-catalog.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -2321,6 +2321,113 @@ function findDaemon(larkAppId) {
|
|
|
2321
2321
|
return all.find(d => d.larkAppId === larkAppId) ?? null;
|
|
2322
2322
|
return all[0] ?? null;
|
|
2323
2323
|
}
|
|
2324
|
+
/** `botmux workflow start <runId>` — POST the daemon's v3 start IPC so the run
|
|
2325
|
+
* is daemon-driven (humanGate → 飞书审批卡). The grill skill calls this after
|
|
2326
|
+
* approve-dag instead of the standalone `botmux v3 run` (which has no card
|
|
2327
|
+
* layer). Defaults the bot to the grill worker's BOTMUX_LARK_APP_ID env. */
|
|
2328
|
+
async function cmdWorkflowStart(runId, rest) {
|
|
2329
|
+
if (!runId) {
|
|
2330
|
+
console.error('用法: botmux workflow start <runId> [--bot <larkAppId>]');
|
|
2331
|
+
process.exit(1);
|
|
2332
|
+
}
|
|
2333
|
+
const larkAppId = argValue(rest, '--bot') ?? process.env.BOTMUX_LARK_APP_ID;
|
|
2334
|
+
const daemon = findDaemon(larkAppId);
|
|
2335
|
+
if (!daemon) {
|
|
2336
|
+
console.error('❌ 没有在线 daemon;v3 humanGate run 需要 daemon 驱动(审批卡是 daemon 的活)。');
|
|
2337
|
+
process.exit(1);
|
|
2338
|
+
}
|
|
2339
|
+
let res;
|
|
2340
|
+
try {
|
|
2341
|
+
res = await fetch(`http://127.0.0.1:${daemon.ipcPort}/api/v3/runs/${encodeURIComponent(runId)}/start`, {
|
|
2342
|
+
method: 'POST',
|
|
2343
|
+
headers: { 'content-type': 'application/json' },
|
|
2344
|
+
body: '{}',
|
|
2345
|
+
});
|
|
2346
|
+
}
|
|
2347
|
+
catch (err) {
|
|
2348
|
+
console.error(`❌ 无法连接 daemon (port=${daemon.ipcPort}): ${err?.message ?? err}`);
|
|
2349
|
+
process.exit(1);
|
|
2350
|
+
}
|
|
2351
|
+
const txt = await res.text();
|
|
2352
|
+
if (!res.ok) {
|
|
2353
|
+
console.error(`❌ start 失败 (HTTP ${res.status}): ${txt}`);
|
|
2354
|
+
process.exit(1);
|
|
2355
|
+
}
|
|
2356
|
+
console.log(`✅ v3 run "${runId}" 已交 daemon 驱动;humanGate 会在话题里弹审批卡,点了才继续。`);
|
|
2357
|
+
}
|
|
2358
|
+
/** `botmux workflow retry <runId> [--node <id>]` — blocked 节点重试入口(CLI 侧)。
|
|
2359
|
+
* 走 daemon 的 retry IPC(journal 写入留在 daemon 进程内,单写者),daemon append
|
|
2360
|
+
* `nodeRetryRequested` 后以新 attempt 重驱动。`resume` 动词归 v0.2,v3 用 retry 避撞。 */
|
|
2361
|
+
async function cmdWorkflowRetry(runId, rest) {
|
|
2362
|
+
if (!runId) {
|
|
2363
|
+
console.error('用法: botmux workflow retry <runId> [--node <nodeId>] [--bot <larkAppId>]');
|
|
2364
|
+
process.exit(1);
|
|
2365
|
+
}
|
|
2366
|
+
const larkAppId = argValue(rest, '--bot') ?? process.env.BOTMUX_LARK_APP_ID;
|
|
2367
|
+
const nodeId = argValue(rest, '--node');
|
|
2368
|
+
const daemon = findDaemon(larkAppId);
|
|
2369
|
+
if (!daemon) {
|
|
2370
|
+
console.error('❌ 没有在线 daemon;blocked 重试需要 daemon 驱动。');
|
|
2371
|
+
process.exit(1);
|
|
2372
|
+
}
|
|
2373
|
+
let res;
|
|
2374
|
+
try {
|
|
2375
|
+
res = await fetch(`http://127.0.0.1:${daemon.ipcPort}/api/v3/runs/${encodeURIComponent(runId)}/retry`, {
|
|
2376
|
+
method: 'POST',
|
|
2377
|
+
headers: { 'content-type': 'application/json' },
|
|
2378
|
+
body: JSON.stringify(nodeId ? { nodeId } : {}),
|
|
2379
|
+
});
|
|
2380
|
+
}
|
|
2381
|
+
catch (err) {
|
|
2382
|
+
console.error(`❌ 无法连接 daemon (port=${daemon.ipcPort}): ${err?.message ?? err}`);
|
|
2383
|
+
process.exit(1);
|
|
2384
|
+
}
|
|
2385
|
+
const txt = await res.text();
|
|
2386
|
+
if (!res.ok) {
|
|
2387
|
+
if (txt.includes('loop_node_use_grant')) {
|
|
2388
|
+
console.error(`❌ 该受阻的是一个 loop(轮数耗尽),不是节点 attempt——用 \`botmux workflow grant ${runId}\` 追加一轮。`);
|
|
2389
|
+
}
|
|
2390
|
+
else {
|
|
2391
|
+
console.error(`❌ retry 失败 (HTTP ${res.status}): ${txt}`);
|
|
2392
|
+
}
|
|
2393
|
+
process.exit(1);
|
|
2394
|
+
}
|
|
2395
|
+
console.log(`🔄 v3 run "${runId}" 重试已受理,节点将以新 attempt 重跑。`);
|
|
2396
|
+
}
|
|
2397
|
+
/** `botmux workflow grant <runId> [--loop <id>]` — 耗尽 loop 追加一轮入口(CLI 侧)。
|
|
2398
|
+
* 与 retry 同构:走 daemon 的 grant IPC(单写者),daemon append
|
|
2399
|
+
* `loopIterationGranted` 后重驱动,loop 带上一轮反馈再跑一轮。 */
|
|
2400
|
+
async function cmdWorkflowGrant(runId, rest) {
|
|
2401
|
+
if (!runId) {
|
|
2402
|
+
console.error('用法: botmux workflow grant <runId> [--loop <loopId>] [--bot <larkAppId>]');
|
|
2403
|
+
process.exit(1);
|
|
2404
|
+
}
|
|
2405
|
+
const larkAppId = argValue(rest, '--bot') ?? process.env.BOTMUX_LARK_APP_ID;
|
|
2406
|
+
const loopId = argValue(rest, '--loop');
|
|
2407
|
+
const daemon = findDaemon(larkAppId);
|
|
2408
|
+
if (!daemon) {
|
|
2409
|
+
console.error('❌ 没有在线 daemon;loop 追加需要 daemon 驱动。');
|
|
2410
|
+
process.exit(1);
|
|
2411
|
+
}
|
|
2412
|
+
let res;
|
|
2413
|
+
try {
|
|
2414
|
+
res = await fetch(`http://127.0.0.1:${daemon.ipcPort}/api/v3/runs/${encodeURIComponent(runId)}/grant`, {
|
|
2415
|
+
method: 'POST',
|
|
2416
|
+
headers: { 'content-type': 'application/json' },
|
|
2417
|
+
body: JSON.stringify(loopId ? { loopId } : {}),
|
|
2418
|
+
});
|
|
2419
|
+
}
|
|
2420
|
+
catch (err) {
|
|
2421
|
+
console.error(`❌ 无法连接 daemon (port=${daemon.ipcPort}): ${err?.message ?? err}`);
|
|
2422
|
+
process.exit(1);
|
|
2423
|
+
}
|
|
2424
|
+
const txt = await res.text();
|
|
2425
|
+
if (!res.ok) {
|
|
2426
|
+
console.error(`❌ grant 失败 (HTTP ${res.status}): ${txt}`);
|
|
2427
|
+
process.exit(1);
|
|
2428
|
+
}
|
|
2429
|
+
console.log(`➕ v3 run "${runId}" 已追加一轮,loop 将带上一轮反馈重跑。`);
|
|
2430
|
+
}
|
|
2324
2431
|
async function cmdResume() {
|
|
2325
2432
|
const target = process.argv[3];
|
|
2326
2433
|
if (!target) {
|
|
@@ -5524,8 +5631,33 @@ switch (command) {
|
|
|
5524
5631
|
break;
|
|
5525
5632
|
}
|
|
5526
5633
|
case 'workflow': {
|
|
5634
|
+
const wfSub = process.argv[3] ?? '';
|
|
5635
|
+
if (wfSub === 'start') {
|
|
5636
|
+
// `botmux workflow start <runId>` — kick a daemon-driven v3 run (so
|
|
5637
|
+
// humanGate posts approval cards). Needs a live daemon; findDaemon is
|
|
5638
|
+
// cli.ts-local so this case handles it instead of cmdWorkflow.
|
|
5639
|
+
await cmdWorkflowStart(process.argv[4], process.argv.slice(5));
|
|
5640
|
+
break;
|
|
5641
|
+
}
|
|
5642
|
+
if (wfSub === 'retry') {
|
|
5643
|
+
// v3 blocked-node retry (the `resume` verb belongs to v0.2).
|
|
5644
|
+
await cmdWorkflowRetry(process.argv[4], process.argv.slice(5));
|
|
5645
|
+
break;
|
|
5646
|
+
}
|
|
5647
|
+
if (wfSub === 'grant') {
|
|
5648
|
+
// v3 exhausted-loop grant (+1 iteration).
|
|
5649
|
+
await cmdWorkflowGrant(process.argv[4], process.argv.slice(5));
|
|
5650
|
+
break;
|
|
5651
|
+
}
|
|
5527
5652
|
const { cmdWorkflow } = await import('./cli/workflow.js');
|
|
5528
|
-
await cmdWorkflow(
|
|
5653
|
+
await cmdWorkflow(wfSub, process.argv.slice(4));
|
|
5654
|
+
break;
|
|
5655
|
+
}
|
|
5656
|
+
case 'v3': {
|
|
5657
|
+
// `botmux v3 run <dag.json>` — run a hand-written next-gen (v3) DAG on the
|
|
5658
|
+
// real ephemeral worker pool, daemon-independent (dogfood path).
|
|
5659
|
+
const { cmdV3 } = await import('./workflows/v3/cli-run.js');
|
|
5660
|
+
await cmdV3(process.argv[3] ?? '', process.argv.slice(4));
|
|
5529
5661
|
break;
|
|
5530
5662
|
}
|
|
5531
5663
|
case 'send':
|