botmux 2.82.0 → 2.82.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/adapters/backend/tmux-backend.d.ts +30 -6
- package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
- package/dist/adapters/backend/tmux-backend.js +40 -6
- package/dist/adapters/backend/tmux-backend.js.map +1 -1
- package/dist/adapters/backend/zellij-backend.d.ts +11 -0
- package/dist/adapters/backend/zellij-backend.d.ts.map +1 -1
- package/dist/adapters/backend/zellij-backend.js +16 -0
- package/dist/adapters/backend/zellij-backend.js.map +1 -1
- package/dist/adapters/cli/pi.d.ts.map +1 -1
- package/dist/adapters/cli/pi.js +1 -0
- package/dist/adapters/cli/pi.js.map +1 -1
- package/dist/adapters/cli/relay.d.ts +16 -22
- package/dist/adapters/cli/relay.d.ts.map +1 -1
- package/dist/adapters/cli/relay.js +27 -42
- package/dist/adapters/cli/relay.js.map +1 -1
- package/dist/adapters/cli/seed.d.ts.map +1 -1
- package/dist/adapters/cli/seed.js +4 -1
- package/dist/adapters/cli/seed.js.map +1 -1
- package/dist/adapters/cli/traex.d.ts.map +1 -1
- package/dist/adapters/cli/traex.js +4 -1
- package/dist/adapters/cli/traex.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +9 -0
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/bot-registry.d.ts +12 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +5 -0
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1 -84
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -0
- package/dist/config.js.map +1 -1
- package/dist/core/command-handler.d.ts +2 -9
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +42 -30
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.js +2 -2
- package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
- package/dist/core/dashboard-ipc-server.js +47 -1
- package/dist/core/dashboard-ipc-server.js.map +1 -1
- package/dist/core/idle-worker-sweeper.d.ts +30 -4
- package/dist/core/idle-worker-sweeper.d.ts.map +1 -1
- package/dist/core/idle-worker-sweeper.js +32 -12
- package/dist/core/idle-worker-sweeper.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts +48 -0
- package/dist/core/passthrough-commands.d.ts.map +1 -0
- package/dist/core/passthrough-commands.js +76 -0
- package/dist/core/passthrough-commands.js.map +1 -0
- package/dist/core/persistent-backend.d.ts +12 -0
- package/dist/core/persistent-backend.d.ts.map +1 -1
- package/dist/core/persistent-backend.js +18 -0
- package/dist/core/persistent-backend.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +37 -4
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +18 -1
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +12 -4
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +100 -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 +18 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard-web/app.js +371 -354
- package/dist/dashboard.js +20 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +0 -7
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +0 -21
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +4 -2
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +4 -2
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +2 -0
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +20 -2
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +63 -53
- package/dist/im/lark/client.js.map +1 -1
- package/dist/services/bot-config-store.d.ts +6 -4
- package/dist/services/bot-config-store.d.ts.map +1 -1
- package/dist/services/bot-config-store.js +21 -7
- package/dist/services/bot-config-store.js.map +1 -1
- package/dist/services/git-worktree.d.ts +19 -4
- package/dist/services/git-worktree.d.ts.map +1 -1
- package/dist/services/git-worktree.js +47 -2
- package/dist/services/git-worktree.js.map +1 -1
- package/dist/services/worktree-slug-ai.d.ts +3 -0
- package/dist/services/worktree-slug-ai.d.ts.map +1 -0
- package/dist/services/worktree-slug-ai.js +80 -0
- package/dist/services/worktree-slug-ai.js.map +1 -0
- package/dist/skills/definitions.d.ts.map +1 -1
- package/dist/skills/definitions.js +4 -25
- package/dist/skills/definitions.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/pending-input-queue.d.ts +6 -0
- package/dist/utils/pending-input-queue.d.ts.map +1 -0
- package/dist/utils/pending-input-queue.js +9 -0
- package/dist/utils/pending-input-queue.js.map +1 -0
- package/dist/worker.js +103 -5
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/worker-budget.d.ts +0 -19
- package/dist/core/worker-budget.d.ts.map +0 -1
- package/dist/core/worker-budget.js +0 -50
- package/dist/core/worker-budget.js.map +0 -1
package/dist/config.d.ts
CHANGED
|
@@ -73,6 +73,23 @@ export declare const config: {
|
|
|
73
73
|
/** Extra body params for the API request (JSON string, e.g. '{"thinking":{"type":"disabled"}}') */
|
|
74
74
|
extraBody: Record<string, unknown>;
|
|
75
75
|
};
|
|
76
|
+
worktreeSlugAI: {
|
|
77
|
+
/**
|
|
78
|
+
* Optional AI slugger for `/repo wt` auto branch/worktree naming. Disabled
|
|
79
|
+
* by default because it sends the topic title / first prompt to the
|
|
80
|
+
* configured OpenAI-compatible endpoint. When disabled or misconfigured,
|
|
81
|
+
* botmux falls back to deterministic local slugification.
|
|
82
|
+
*/
|
|
83
|
+
enabled: boolean;
|
|
84
|
+
baseUrl: string;
|
|
85
|
+
apiKey: string;
|
|
86
|
+
model: string;
|
|
87
|
+
timeoutMs: number;
|
|
88
|
+
/** Extra headers for the API request (JSON string). */
|
|
89
|
+
extraHeaders: Record<string, string>;
|
|
90
|
+
/** Extra body params for the API request (JSON string). */
|
|
91
|
+
extraBody: Record<string, unknown>;
|
|
92
|
+
};
|
|
76
93
|
};
|
|
77
94
|
export type Config = typeof config;
|
|
78
95
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAkB/D,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAuBD,eAAO,MAAM,MAAM;;;;;;iBAUI,MAAM;;;QAGzB;;;4CAGoC;;;;eAIY,OAAO,yBAAyB,EAAE,KAAK;;qBAElB,WAAW;QAChF;;;;;6CAKqC;;;;;;;;;;;;;;;;;;;QA6BrC;;;;;;;;;;sEAU8D;;;;;;;;QAQ9D,sCAAsC;;QAEtC,iEAAiE;;QAEjE,2CAA2C;;QAE3C,mFAAmF;sBAI3E,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAC9B,mGAAmG;mBAI3F,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;CAElC,CAAC;AAGF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAkB/D,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAuBD,eAAO,MAAM,MAAM;;;;;;iBAUI,MAAM;;;QAGzB;;;4CAGoC;;;;eAIY,OAAO,yBAAyB,EAAE,KAAK;;qBAElB,WAAW;QAChF;;;;;6CAKqC;;;;;;;;;;;;;;;;;;;QA6BrC;;;;;;;;;;sEAU8D;;;;;;;;QAQ9D,sCAAsC;;QAEtC,iEAAiE;;QAEjE,2CAA2C;;QAE3C,mFAAmF;sBAI3E,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAC9B,mGAAmG;mBAI3F,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;QAG/B;;;;;WAKG;;;;;;QAMH,uDAAuD;sBAI/C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAC9B,2DAA2D;mBAInD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;CAElC,CAAC;AAGF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -138,5 +138,36 @@ export const config = {
|
|
|
138
138
|
}
|
|
139
139
|
})(),
|
|
140
140
|
},
|
|
141
|
+
worktreeSlugAI: {
|
|
142
|
+
/**
|
|
143
|
+
* Optional AI slugger for `/repo wt` auto branch/worktree naming. Disabled
|
|
144
|
+
* by default because it sends the topic title / first prompt to the
|
|
145
|
+
* configured OpenAI-compatible endpoint. When disabled or misconfigured,
|
|
146
|
+
* botmux falls back to deterministic local slugification.
|
|
147
|
+
*/
|
|
148
|
+
enabled: (process.env.BOTMUX_WORKTREE_SLUG_AI_ENABLED ?? '').toLowerCase() === 'true',
|
|
149
|
+
baseUrl: process.env.BOTMUX_WORKTREE_SLUG_AI_BASE_URL ?? '',
|
|
150
|
+
apiKey: process.env.BOTMUX_WORKTREE_SLUG_AI_API_KEY ?? '',
|
|
151
|
+
model: process.env.BOTMUX_WORKTREE_SLUG_AI_MODEL ?? '',
|
|
152
|
+
timeoutMs: Number(process.env.BOTMUX_WORKTREE_SLUG_AI_TIMEOUT_MS) || 5_000,
|
|
153
|
+
/** Extra headers for the API request (JSON string). */
|
|
154
|
+
extraHeaders: (() => {
|
|
155
|
+
try {
|
|
156
|
+
return JSON.parse(process.env.BOTMUX_WORKTREE_SLUG_AI_EXTRA_HEADERS ?? '{}');
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
return {};
|
|
160
|
+
}
|
|
161
|
+
})(),
|
|
162
|
+
/** Extra body params for the API request (JSON string). */
|
|
163
|
+
extraBody: (() => {
|
|
164
|
+
try {
|
|
165
|
+
return JSON.parse(process.env.BOTMUX_WORKTREE_SLUG_AI_EXTRA_BODY ?? '{}');
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
return {};
|
|
169
|
+
}
|
|
170
|
+
})(),
|
|
171
|
+
},
|
|
141
172
|
};
|
|
142
173
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,sEAAsE;AACtE,SAAS,UAAU;IACjB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACpE,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAChE,MAAM,+BAA+B,GACnC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAE9E,MAAM,UAAU,kBAAkB;IAChC,OAAO,yBAAyB,IAAI,UAAU,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,+BAA+B,IAAI,UAAU,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB;IAC3B,OAAO,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,iDAAiD;AACjD,4EAA4E;AAC5E,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAErE,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;QACpC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE;KAC7C;IACD,OAAO,EAAE;QACP,IAAI,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC,CAAC;QACzE,gEAAgE;QAChE,0EAA0E;QAC1E,qEAAqE;QACrE,IAAI,OAAO,CAAC,KAAa,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC;KACrE;IACD,IAAI,EAAE;QACJ;;;4CAGoC;QACpC,sBAAsB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO;KAC1G;IACD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,aAAa,CAA4C;QACvF,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;QACrC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,oBAAoB,EAAE,CAAgB;QAChF;;;;;6CAKqC;QACrC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACvF,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,GAAG,CAAC,CAAC;QAC1F,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;QACpG,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC3F,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;KAC9F;IACD,GAAG,EAAE;QACH,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS;QACvC,UAAU,EAAE,qBAAqB,EAAE;QACnC,IAAI,YAAY,KAAK,OAAO,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACnD,uEAAuE;QACvE,2EAA2E;QAC3E,gFAAgF;QAChF,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,IAAI;QACrE,0EAA0E;QAC1E,4EAA4E;QAC5E,6EAA6E;QAC7E,yEAAyE;QACzE,8EAA8E;QAC9E,8EAA8E;QAC9E,kEAAkE;QAClE,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC;KACzD;IACD,SAAS,EAAE;QACT,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;QACpD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,IAAI;QACvD,IAAI,YAAY,KAAK,OAAO,wBAAwB,EAAE,CAAC,CAAC,CAAC;QACzD,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,IAAI;QACpE;;;;;;;;;;sEAU8D;QAC9D,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO;KACnG;IACD,cAAc,EAAE;QACd,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAC7E,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE;QACjD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE;QAC9C,sCAAsC;QACtC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,IAAI,KAAK;QACpE,iEAAiE;QACjE,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC;QAClE,2CAA2C;QAC3C,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,IAAI,KAAK;QACjF,mFAAmF;QACnF,YAAY,EAAE,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YAC7E,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QACtB,CAAC,CAAC,EAA4B;QAC9B,mGAAmG;QACnG,SAAS,EAAE,CAAC,GAAG,EAAE;YACf,IAAI,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,IAAI,CAAC,CAAC;YAAC,CAAC;YAC1E,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QACtB,CAAC,CAAC,EAA6B;KAChC;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@ import { type ZellijAdoptableSession } from './zellij-adopt-discovery.js';
|
|
|
5
5
|
import { type CodexAppThreadSummary } from '../services/codex-app-threads.js';
|
|
6
6
|
import type { LarkMessage } from '../types.js';
|
|
7
7
|
import type { DaemonSession } from './types.js';
|
|
8
|
-
|
|
8
|
+
import { DAEMON_COMMANDS, PASSTHROUGH_COMMANDS } from './passthrough-commands.js';
|
|
9
|
+
export { DAEMON_COMMANDS, PASSTHROUGH_COMMANDS };
|
|
9
10
|
/**
|
|
10
11
|
* Daemon commands that act on the chat itself rather than opening a
|
|
11
12
|
* conversation. `/group` (`/g`) just creates a Lark group and replies once —
|
|
@@ -15,14 +16,6 @@ export declare const DAEMON_COMMANDS: Set<string>;
|
|
|
15
16
|
* that pollutes the dashboard's session list. Handle them without a session.
|
|
16
17
|
*/
|
|
17
18
|
export declare const SESSIONLESS_DAEMON_COMMANDS: Set<string>;
|
|
18
|
-
/**
|
|
19
|
-
* Slash commands that are forwarded verbatim to the underlying CLI (e.g.
|
|
20
|
-
* Claude Code's `/compact`, `/model`, `/usage`). The daemon does NOT handle
|
|
21
|
-
* these — it just relays them to the worker via a raw_input IPC message,
|
|
22
|
-
* bypassing the normal prompt-wrapping and bracketed-paste path so the CLI's
|
|
23
|
-
* own slash-command parser sees them.
|
|
24
|
-
*/
|
|
25
|
-
export declare const PASSTHROUGH_COMMANDS: Set<string>;
|
|
26
19
|
export declare function resolveAdapterDefaultPassthroughCommands(larkAppId?: string): string[];
|
|
27
20
|
/**
|
|
28
21
|
* Effective passthrough set for a bot: the fixed {@link PASSTHROUGH_COMMANDS}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/core/command-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import * as scheduleStore from '../services/schedule-store.js';
|
|
|
13
13
|
import * as scheduler from './scheduler.js';
|
|
14
14
|
import { scanMultipleProjects, describeProjectDir } from '../services/project-scanner.js';
|
|
15
15
|
import { createRepoWorktree } from '../services/git-worktree.js';
|
|
16
|
+
import { worktreeSlugFromContextAI } from '../services/worktree-slug-ai.js';
|
|
16
17
|
import { buildRepoSelectCard, buildAdoptSelectCard, buildCodexAppThreadSelectCard, buildSlashListCard, getCliDisplayName, buildConfigCard, buildLandCard } from '../im/lark/card-builder.js';
|
|
17
18
|
import { computeSandboxDiff } from '../services/sandbox-land.js';
|
|
18
19
|
import { createCliAdapterSync } from '../adapters/cli/registry.js';
|
|
@@ -32,7 +33,7 @@ import { resolveDocFile, subscribeDocFile, unsubscribeDocFile } from '../im/lark
|
|
|
32
33
|
import { UserTokenMissingError } from '../im/lark/client.js';
|
|
33
34
|
import { putDocSubscription, removeDocSubscription, listDocSubscriptionsForSession, } from '../services/doc-subs-store.js';
|
|
34
35
|
import { bindOncall, unbindOncall, getOncallStatus } from '../services/oncall-store.js';
|
|
35
|
-
import { CONFIG_FIELDS, findConfigField, settableFieldKeys, parseBooleanValue, applyConfigField, setBotAllowedUsers, getConfigSnapshot, getConfigCardData, } from '../services/bot-config-store.js';
|
|
36
|
+
import { CONFIG_FIELDS, findConfigField, settableFieldKeys, parseBooleanValue, applyConfigField, setBotAllowedUsers, getConfigSnapshot, getConfigCardData, coerceConfigValue, } from '../services/bot-config-store.js';
|
|
36
37
|
import { resolveCliId, findInvalidAllowedUserEntries } from '../setup/bot-config-editor.js';
|
|
37
38
|
import { buildClosedSessionCard } from './closed-session-card.js';
|
|
38
39
|
import { ttadkConfigModelChoices } from '../setup/cli-selection.js';
|
|
@@ -45,7 +46,13 @@ import { getBotCapability, setBotCapability, clearBotCapability } from '../servi
|
|
|
45
46
|
import { sessionKey, sessionAnchorId } from './types.js';
|
|
46
47
|
import { t, localeForBot } from '../i18n/index.js';
|
|
47
48
|
// ─── Exported constants ──────────────────────────────────────────────────────
|
|
48
|
-
|
|
49
|
+
// DAEMON_COMMANDS / PASSTHROUGH_COMMANDS / normalizePassthroughCommand now live
|
|
50
|
+
// in the leaf ./passthrough-commands.js so the config store can share the
|
|
51
|
+
// normalization without a circular import; imported for internal use and
|
|
52
|
+
// re-exported to keep callers (daemon.ts, tests) importing from command-handler
|
|
53
|
+
// unchanged.
|
|
54
|
+
import { DAEMON_COMMANDS, PASSTHROUGH_COMMANDS, normalizePassthroughCommand, parseCustomPassthroughInput } from './passthrough-commands.js';
|
|
55
|
+
export { DAEMON_COMMANDS, PASSTHROUGH_COMMANDS };
|
|
49
56
|
/**
|
|
50
57
|
* Daemon commands that act on the chat itself rather than opening a
|
|
51
58
|
* conversation. `/group` (`/g`) just creates a Lark group and replies once —
|
|
@@ -55,31 +62,6 @@ export const DAEMON_COMMANDS = new Set(['/close', '/restart', '/status', '/help'
|
|
|
55
62
|
* that pollutes the dashboard's session list. Handle them without a session.
|
|
56
63
|
*/
|
|
57
64
|
export const SESSIONLESS_DAEMON_COMMANDS = new Set(['/group', '/g', '/list-slash-command', '/slash', '/botconfig']);
|
|
58
|
-
/**
|
|
59
|
-
* Slash commands that are forwarded verbatim to the underlying CLI (e.g.
|
|
60
|
-
* Claude Code's `/compact`, `/model`, `/usage`). The daemon does NOT handle
|
|
61
|
-
* these — it just relays them to the worker via a raw_input IPC message,
|
|
62
|
-
* bypassing the normal prompt-wrapping and bracketed-paste path so the CLI's
|
|
63
|
-
* own slash-command parser sees them.
|
|
64
|
-
*/
|
|
65
|
-
export const PASSTHROUGH_COMMANDS = new Set([
|
|
66
|
-
'/compact', '/model', '/clear', '/plugin', '/usage',
|
|
67
|
-
// 只读 / 低副作用,飞书卡片里能直接吐文本:
|
|
68
|
-
'/context', '/cost', '/mcp', '/diff',
|
|
69
|
-
'/code-review', '/security-review', '/review',
|
|
70
|
-
// Codex:/btw 向当前会话追加一条旁注/引导消息
|
|
71
|
-
'/btw',
|
|
72
|
-
]);
|
|
73
|
-
function normalizePassthroughCommand(cmd) {
|
|
74
|
-
if (typeof cmd !== 'string')
|
|
75
|
-
return null;
|
|
76
|
-
const normalized = cmd.trim().toLowerCase();
|
|
77
|
-
if (!/^\/[a-z0-9][a-z0-9:_-]*$/.test(normalized))
|
|
78
|
-
return null;
|
|
79
|
-
if (DAEMON_COMMANDS.has(normalized))
|
|
80
|
-
return null;
|
|
81
|
-
return normalized;
|
|
82
|
-
}
|
|
83
65
|
export function resolveAdapterDefaultPassthroughCommands(larkAppId) {
|
|
84
66
|
if (!larkAppId)
|
|
85
67
|
return [];
|
|
@@ -695,6 +677,26 @@ async function handleConfigCommand(message, rootId, larkAppId, deps) {
|
|
|
695
677
|
}
|
|
696
678
|
let value;
|
|
697
679
|
switch (spec.kind) {
|
|
680
|
+
case 'stringList': {
|
|
681
|
+
const arr = parseCustomPassthroughInput(rawValue);
|
|
682
|
+
if (arr.length === 0) {
|
|
683
|
+
await reply(t('cmd.config.value_required', { field: spec.key }, loc));
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
value = arr;
|
|
687
|
+
break;
|
|
688
|
+
}
|
|
689
|
+
case 'number': {
|
|
690
|
+
// 统一走 coerceConfigValue 的 number 校验(正整数),避免文字路径把 '6'
|
|
691
|
+
// 当字符串写进 maxLiveWorkers(与 card/API 路径同口径)。
|
|
692
|
+
const coerced = coerceConfigValue(spec, rawValue);
|
|
693
|
+
if (!coerced.ok) {
|
|
694
|
+
await reply(t('cmd.config.invalid_number', { field: spec.key, value: rawValue }, loc));
|
|
695
|
+
return;
|
|
696
|
+
}
|
|
697
|
+
value = coerced.value;
|
|
698
|
+
break;
|
|
699
|
+
}
|
|
698
700
|
case 'boolean': {
|
|
699
701
|
const b = parseBooleanValue(rawValue);
|
|
700
702
|
if (b === undefined) {
|
|
@@ -1132,7 +1134,8 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
1132
1134
|
};
|
|
1133
1135
|
// `/repo wt <N|name|path> [branch]` → create a worktree off the repo's
|
|
1134
1136
|
// remote default branch and open THAT as the session repo. Without a
|
|
1135
|
-
// branch arg the branch/dir are auto-named
|
|
1137
|
+
// branch arg the branch/dir are auto-named from the topic title / first
|
|
1138
|
+
// pending prompt when possible (fallback: wt/N, <repo>-wt-N).
|
|
1136
1139
|
if (ds && /^wt(\s|$)/i.test(repoArg)) {
|
|
1137
1140
|
const rest = repoArg.replace(/^wt\s*/i, '').trim().split(/\s+/).filter(Boolean);
|
|
1138
1141
|
if (rest.length < 1 || rest.length > 2) {
|
|
@@ -1184,7 +1187,11 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
1184
1187
|
await sessionReply(rootId, t('cmd.repo.worktree_creating', { repo: repoPath }, loc));
|
|
1185
1188
|
let creation;
|
|
1186
1189
|
try {
|
|
1187
|
-
|
|
1190
|
+
const slug = branchArg ? undefined : await worktreeSlugFromContextAI(ds.session.title, ds.pendingPrompt);
|
|
1191
|
+
creation = await createRepoWorktree(repoPath, {
|
|
1192
|
+
branch: branchArg,
|
|
1193
|
+
slug,
|
|
1194
|
+
});
|
|
1188
1195
|
}
|
|
1189
1196
|
catch (e) {
|
|
1190
1197
|
await sessionReply(rootId, t('cmd.repo.worktree_failed', { error: e instanceof Error ? e.message : String(e) }, loc));
|
|
@@ -2321,7 +2328,12 @@ export async function handleCommand(cmd, rootId, message, deps, larkAppId) {
|
|
|
2321
2328
|
const workingDir = getSessionWorkingDir(ds);
|
|
2322
2329
|
const builtin = [...PASSTHROUGH_COMMANDS];
|
|
2323
2330
|
const adapterDefaults = resolveAdapterDefaultPassthroughCommands(larkAppId);
|
|
2324
|
-
|
|
2331
|
+
// 只展示「实际生效」的 custom 命令:用与 resolvePassthroughCommands 同一套
|
|
2332
|
+
// normalize 过滤掉手写 bots.json 里遮蔽 daemon 命令 / 非法的项(parser 出于
|
|
2333
|
+
// 兼容会保留它们,但路由会丢弃),避免 `/status` 之类被展示成可用却走 daemon。
|
|
2334
|
+
const custom = [...new Set((botCfg?.customPassthroughCommands ?? [])
|
|
2335
|
+
.map(normalizePassthroughCommand)
|
|
2336
|
+
.filter((c) => !!c))];
|
|
2325
2337
|
let cliAdapter;
|
|
2326
2338
|
try {
|
|
2327
2339
|
cliAdapter = createCliAdapterSync(cliId, botCfg?.cliPathOverride);
|