botmux 2.88.1 → 2.90.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 (217) hide show
  1. package/README.en.md +3 -3
  2. package/README.md +3 -3
  3. package/dist/bot-registry.d.ts +2 -0
  4. package/dist/bot-registry.d.ts.map +1 -1
  5. package/dist/bot-registry.js +4 -0
  6. package/dist/bot-registry.js.map +1 -1
  7. package/dist/cli/dashboard-endpoint.d.ts.map +1 -1
  8. package/dist/cli/dashboard-endpoint.js +9 -3
  9. package/dist/cli/dashboard-endpoint.js.map +1 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +11 -3
  12. package/dist/cli.js.map +1 -1
  13. package/dist/core/command-handler.d.ts.map +1 -1
  14. package/dist/core/command-handler.js +9 -1
  15. package/dist/core/command-handler.js.map +1 -1
  16. package/dist/core/dashboard-command/groups.d.ts +20 -0
  17. package/dist/core/dashboard-command/groups.d.ts.map +1 -0
  18. package/dist/core/dashboard-command/groups.js +52 -0
  19. package/dist/core/dashboard-command/groups.js.map +1 -0
  20. package/dist/core/dashboard-command/index.d.ts +30 -0
  21. package/dist/core/dashboard-command/index.d.ts.map +1 -0
  22. package/dist/core/dashboard-command/index.js +81 -0
  23. package/dist/core/dashboard-command/index.js.map +1 -0
  24. package/dist/core/dashboard-command/overview.d.ts +29 -0
  25. package/dist/core/dashboard-command/overview.d.ts.map +1 -0
  26. package/dist/core/dashboard-command/overview.js +61 -0
  27. package/dist/core/dashboard-command/overview.js.map +1 -0
  28. package/dist/core/dashboard-command/owner-gate.d.ts +41 -0
  29. package/dist/core/dashboard-command/owner-gate.d.ts.map +1 -0
  30. package/dist/core/dashboard-command/owner-gate.js +40 -0
  31. package/dist/core/dashboard-command/owner-gate.js.map +1 -0
  32. package/dist/core/dashboard-command/schedules.d.ts +20 -0
  33. package/dist/core/dashboard-command/schedules.d.ts.map +1 -0
  34. package/dist/core/dashboard-command/schedules.js +47 -0
  35. package/dist/core/dashboard-command/schedules.js.map +1 -0
  36. package/dist/core/dashboard-command/sessions.d.ts +22 -0
  37. package/dist/core/dashboard-command/sessions.d.ts.map +1 -0
  38. package/dist/core/dashboard-command/sessions.js +43 -0
  39. package/dist/core/dashboard-command/sessions.js.map +1 -0
  40. package/dist/core/dashboard-command/settings.d.ts +21 -0
  41. package/dist/core/dashboard-command/settings.d.ts.map +1 -0
  42. package/dist/core/dashboard-command/settings.js +55 -0
  43. package/dist/core/dashboard-command/settings.js.map +1 -0
  44. package/dist/core/dashboard-command/stub.d.ts +16 -0
  45. package/dist/core/dashboard-command/stub.d.ts.map +1 -0
  46. package/dist/core/dashboard-command/stub.js +28 -0
  47. package/dist/core/dashboard-command/stub.js.map +1 -0
  48. package/dist/core/dashboard-command/workflows.d.ts +20 -0
  49. package/dist/core/dashboard-command/workflows.d.ts.map +1 -0
  50. package/dist/core/dashboard-command/workflows.js +45 -0
  51. package/dist/core/dashboard-command/workflows.js.map +1 -0
  52. package/dist/core/passthrough-commands.d.ts.map +1 -1
  53. package/dist/core/passthrough-commands.js +1 -1
  54. package/dist/core/passthrough-commands.js.map +1 -1
  55. package/dist/core/skills/discovery.d.ts +16 -0
  56. package/dist/core/skills/discovery.d.ts.map +1 -1
  57. package/dist/core/skills/discovery.js +48 -2
  58. package/dist/core/skills/discovery.js.map +1 -1
  59. package/dist/core/worker-pool.d.ts.map +1 -1
  60. package/dist/core/worker-pool.js +9 -2
  61. package/dist/core/worker-pool.js.map +1 -1
  62. package/dist/daemon-internal-client-wrapper.d.ts +41 -0
  63. package/dist/daemon-internal-client-wrapper.d.ts.map +1 -0
  64. package/dist/daemon-internal-client-wrapper.js +65 -0
  65. package/dist/daemon-internal-client-wrapper.js.map +1 -0
  66. package/dist/dashboard/aggregator.d.ts +12 -0
  67. package/dist/dashboard/aggregator.d.ts.map +1 -1
  68. package/dist/dashboard/aggregator.js +16 -0
  69. package/dist/dashboard/aggregator.js.map +1 -1
  70. package/dist/dashboard/auth.d.ts +7 -0
  71. package/dist/dashboard/auth.d.ts.map +1 -1
  72. package/dist/dashboard/auth.js +21 -0
  73. package/dist/dashboard/auth.js.map +1 -1
  74. package/dist/dashboard/card-model-types.d.ts +50 -0
  75. package/dist/dashboard/card-model-types.d.ts.map +1 -0
  76. package/dist/dashboard/card-model-types.js +9 -0
  77. package/dist/dashboard/card-model-types.js.map +1 -0
  78. package/dist/dashboard/daemon-internal-api.d.ts +90 -0
  79. package/dist/dashboard/daemon-internal-api.d.ts.map +1 -0
  80. package/dist/dashboard/daemon-internal-api.js +534 -0
  81. package/dist/dashboard/daemon-internal-api.js.map +1 -0
  82. package/dist/dashboard/daemon-internal-auth.d.ts +124 -0
  83. package/dist/dashboard/daemon-internal-auth.d.ts.map +1 -0
  84. package/dist/dashboard/daemon-internal-auth.js +188 -0
  85. package/dist/dashboard/daemon-internal-auth.js.map +1 -0
  86. package/dist/dashboard/daemon-internal-client.d.ts +67 -0
  87. package/dist/dashboard/daemon-internal-client.d.ts.map +1 -0
  88. package/dist/dashboard/daemon-internal-client.js +157 -0
  89. package/dist/dashboard/daemon-internal-client.js.map +1 -0
  90. package/dist/dashboard/dashboard-admins.d.ts +8 -0
  91. package/dist/dashboard/dashboard-admins.d.ts.map +1 -0
  92. package/dist/dashboard/dashboard-admins.js +15 -0
  93. package/dist/dashboard/dashboard-admins.js.map +1 -0
  94. package/dist/dashboard/federation-spoke-api.d.ts +3 -0
  95. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -1
  96. package/dist/dashboard/federation-spoke-api.js +11 -8
  97. package/dist/dashboard/federation-spoke-api.js.map +1 -1
  98. package/dist/dashboard/groups-action-helpers.d.ts +69 -0
  99. package/dist/dashboard/groups-action-helpers.d.ts.map +1 -0
  100. package/dist/dashboard/groups-action-helpers.js +141 -0
  101. package/dist/dashboard/groups-action-helpers.js.map +1 -0
  102. package/dist/dashboard/groups-card-model.d.ts +120 -0
  103. package/dist/dashboard/groups-card-model.d.ts.map +1 -0
  104. package/dist/dashboard/groups-card-model.js +175 -0
  105. package/dist/dashboard/groups-card-model.js.map +1 -0
  106. package/dist/dashboard/schedule-card-model.d.ts +172 -0
  107. package/dist/dashboard/schedule-card-model.d.ts.map +1 -0
  108. package/dist/dashboard/schedule-card-model.js +290 -0
  109. package/dist/dashboard/schedule-card-model.js.map +1 -0
  110. package/dist/dashboard/session-card-model.d.ts +83 -0
  111. package/dist/dashboard/session-card-model.d.ts.map +1 -0
  112. package/dist/dashboard/session-card-model.js +196 -0
  113. package/dist/dashboard/session-card-model.js.map +1 -0
  114. package/dist/dashboard/settings-card-model.d.ts +73 -0
  115. package/dist/dashboard/settings-card-model.d.ts.map +1 -0
  116. package/dist/dashboard/settings-card-model.js +94 -0
  117. package/dist/dashboard/settings-card-model.js.map +1 -0
  118. package/dist/dashboard/settings-owner-resolver.d.ts +32 -0
  119. package/dist/dashboard/settings-owner-resolver.d.ts.map +1 -0
  120. package/dist/dashboard/settings-owner-resolver.js +43 -0
  121. package/dist/dashboard/settings-owner-resolver.js.map +1 -0
  122. package/dist/dashboard/settings-write-applier.d.ts +84 -0
  123. package/dist/dashboard/settings-write-applier.d.ts.map +1 -0
  124. package/dist/dashboard/settings-write-applier.js +119 -0
  125. package/dist/dashboard/settings-write-applier.js.map +1 -0
  126. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  127. package/dist/dashboard/web/i18n.js +60 -2
  128. package/dist/dashboard/web/i18n.js.map +1 -1
  129. package/dist/dashboard/web/insights.d.ts.map +1 -1
  130. package/dist/dashboard/web/insights.js +514 -68
  131. package/dist/dashboard/web/insights.js.map +1 -1
  132. package/dist/dashboard/web/skills.d.ts.map +1 -1
  133. package/dist/dashboard/web/skills.js +1 -1
  134. package/dist/dashboard/web/skills.js.map +1 -1
  135. package/dist/dashboard/web/whiteboards.js +3 -3
  136. package/dist/dashboard/workflow-api.d.ts.map +1 -1
  137. package/dist/dashboard/workflow-api.js +38 -119
  138. package/dist/dashboard/workflow-api.js.map +1 -1
  139. package/dist/dashboard/workflow-card-model.d.ts +127 -0
  140. package/dist/dashboard/workflow-card-model.d.ts.map +1 -0
  141. package/dist/dashboard/workflow-card-model.js +186 -0
  142. package/dist/dashboard/workflow-card-model.js.map +1 -0
  143. package/dist/dashboard/workflows-action-helpers.d.ts +105 -0
  144. package/dist/dashboard/workflows-action-helpers.d.ts.map +1 -0
  145. package/dist/dashboard/workflows-action-helpers.js +196 -0
  146. package/dist/dashboard/workflows-action-helpers.js.map +1 -0
  147. package/dist/dashboard-web/app.js +883 -795
  148. package/dist/dashboard-web/style.css +105 -3
  149. package/dist/dashboard.js +196 -269
  150. package/dist/dashboard.js.map +1 -1
  151. package/dist/i18n/en.d.ts.map +1 -1
  152. package/dist/i18n/en.js +266 -0
  153. package/dist/i18n/en.js.map +1 -1
  154. package/dist/i18n/zh.d.ts.map +1 -1
  155. package/dist/i18n/zh.js +266 -0
  156. package/dist/i18n/zh.js.map +1 -1
  157. package/dist/im/lark/card-builder.d.ts +2 -0
  158. package/dist/im/lark/card-builder.d.ts.map +1 -1
  159. package/dist/im/lark/card-builder.js +2 -1
  160. package/dist/im/lark/card-builder.js.map +1 -1
  161. package/dist/im/lark/card-handler.d.ts +54 -2
  162. package/dist/im/lark/card-handler.d.ts.map +1 -1
  163. package/dist/im/lark/card-handler.js +127 -1
  164. package/dist/im/lark/card-handler.js.map +1 -1
  165. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  166. package/dist/im/lark/event-dispatcher.js +22 -0
  167. package/dist/im/lark/event-dispatcher.js.map +1 -1
  168. package/dist/im/lark/groups-card.d.ts +90 -0
  169. package/dist/im/lark/groups-card.d.ts.map +1 -0
  170. package/dist/im/lark/groups-card.js +832 -0
  171. package/dist/im/lark/groups-card.js.map +1 -0
  172. package/dist/im/lark/overview-card.d.ts +101 -0
  173. package/dist/im/lark/overview-card.d.ts.map +1 -0
  174. package/dist/im/lark/overview-card.js +475 -0
  175. package/dist/im/lark/overview-card.js.map +1 -0
  176. package/dist/im/lark/schedules-card.d.ts +96 -0
  177. package/dist/im/lark/schedules-card.d.ts.map +1 -0
  178. package/dist/im/lark/schedules-card.js +892 -0
  179. package/dist/im/lark/schedules-card.js.map +1 -0
  180. package/dist/im/lark/sessions-card.d.ts +117 -0
  181. package/dist/im/lark/sessions-card.d.ts.map +1 -0
  182. package/dist/im/lark/sessions-card.js +870 -0
  183. package/dist/im/lark/sessions-card.js.map +1 -0
  184. package/dist/im/lark/settings-card.d.ts +125 -0
  185. package/dist/im/lark/settings-card.d.ts.map +1 -0
  186. package/dist/im/lark/settings-card.js +433 -0
  187. package/dist/im/lark/settings-card.js.map +1 -0
  188. package/dist/im/lark/workflows-card.d.ts +102 -0
  189. package/dist/im/lark/workflows-card.d.ts.map +1 -0
  190. package/dist/im/lark/workflows-card.js +737 -0
  191. package/dist/im/lark/workflows-card.js.map +1 -0
  192. package/dist/services/insight/classify.d.ts +2 -0
  193. package/dist/services/insight/classify.d.ts.map +1 -1
  194. package/dist/services/insight/classify.js +25 -0
  195. package/dist/services/insight/classify.js.map +1 -1
  196. package/dist/services/insight/claude-span-reader.d.ts.map +1 -1
  197. package/dist/services/insight/claude-span-reader.js +7 -4
  198. package/dist/services/insight/claude-span-reader.js.map +1 -1
  199. package/dist/services/insight/report.d.ts.map +1 -1
  200. package/dist/services/insight/report.js +102 -23
  201. package/dist/services/insight/report.js.map +1 -1
  202. package/dist/services/insight/subagent-reader.d.ts +19 -0
  203. package/dist/services/insight/subagent-reader.d.ts.map +1 -0
  204. package/dist/services/insight/subagent-reader.js +111 -0
  205. package/dist/services/insight/subagent-reader.js.map +1 -0
  206. package/dist/services/insight/types.d.ts +43 -0
  207. package/dist/services/insight/types.d.ts.map +1 -1
  208. package/dist/services/insight/types.js.map +1 -1
  209. package/dist/skills/definitions.d.ts +8 -0
  210. package/dist/skills/definitions.d.ts.map +1 -1
  211. package/dist/skills/definitions.js +8 -2
  212. package/dist/skills/definitions.js.map +1 -1
  213. package/dist/skills/installer.d.ts +15 -0
  214. package/dist/skills/installer.d.ts.map +1 -1
  215. package/dist/skills/installer.js +39 -1
  216. package/dist/skills/installer.js.map +1 -1
  217. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `/dashboard settings` sub-handler.
3
+ *
4
+ * The command-level admin gate has already passed. This handler fetches the
5
+ * live settings snapshot, projects it into a Feishu card, and DMs the invoking
6
+ * admin. The topic receives only a confirmation line. The card builder never
7
+ * receives sender union identity; `invokerOpenId` is the admin open_id used by
8
+ * callback invoker-lock.
9
+ */
10
+ import { localeForBot, t } from '../../i18n/index.js';
11
+ import { composeSections } from '../../dashboard/settings-card-model.js';
12
+ import { buildSettingsCard } from '../../im/lark/settings-card.js';
13
+ import { createDaemonClientFor } from '../../daemon-internal-client-wrapper.js';
14
+ import { sendUserMessage as defaultSendUserMessage } from '../../im/lark/client.js';
15
+ export async function handleDashboardSettings(message, _args, rootId, _chatId, deps, larkAppId, adminOpenId, testDeps = {}) {
16
+ if (!larkAppId)
17
+ return;
18
+ const locale = testDeps.locale ?? localeForBot(larkAppId);
19
+ const client = (testDeps.createClient ?? createDaemonClientFor)(larkAppId);
20
+ let snap;
21
+ try {
22
+ snap = await client.request({ method: 'GET', path: '/__daemon/settings-snapshot' });
23
+ }
24
+ catch (e) {
25
+ await deps.sessionReply(rootId, t('card.dashboard.settings.snapshot_failed', { reason: e?.message ?? String(e) }, locale), undefined, larkAppId);
26
+ return;
27
+ }
28
+ if (snap.status !== 200) {
29
+ await deps.sessionReply(rootId, t('card.dashboard.settings.snapshot_failed', { reason: `http_${snap.status}` }, locale), undefined, larkAppId);
30
+ return;
31
+ }
32
+ const settings = snap.body?.settings;
33
+ if (!settings || typeof settings !== 'object') {
34
+ await deps.sessionReply(rootId, t('card.dashboard.settings.snapshot_failed', { reason: 'malformed_body' }, locale), undefined, larkAppId);
35
+ return;
36
+ }
37
+ const dto = composeSections(settings, { canWrite: true });
38
+ // invokerOpenId doubles as the callback invoker-lock anchor.
39
+ const cardJson = buildSettingsCard(dto, {
40
+ invokerOpenId: adminOpenId,
41
+ locale,
42
+ canWrite: true,
43
+ });
44
+ // DM the card to the bot admin; the topic gets only a
45
+ // short confirmation. Matches `/card` (cmd.config.card_dmd) idiom.
46
+ const sendUserMessage = testDeps.sendUserMessage ?? defaultSendUserMessage;
47
+ try {
48
+ await sendUserMessage(larkAppId, adminOpenId, cardJson, 'interactive');
49
+ await deps.sessionReply(rootId, t('card.dashboard.settings.dm_sent', undefined, locale), undefined, larkAppId);
50
+ }
51
+ catch (e) {
52
+ await deps.sessionReply(rootId, t('card.dashboard.settings.dm_failed', { reason: e?.message ?? String(e) }, locale), undefined, larkAppId);
53
+ }
54
+ }
55
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/core/dashboard-command/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * `/dashboard <module>` module registry, help text, and fallback replies.
3
+ *
4
+ * The concrete handlers live in sibling files. `buildStubText` remains as a
5
+ * defensive fallback for future modules or partial refactors.
6
+ */
7
+ import { type Locale } from '../../i18n/index.js';
8
+ export type DashboardModule = 'overview' | 'sessions' | 'workflows' | 'groups' | 'schedules' | 'settings';
9
+ export declare const DASHBOARD_MODULES: ReadonlyArray<DashboardModule>;
10
+ /** Build the localised `not_implemented_yet` text for a given module. */
11
+ export declare function buildStubText(module: DashboardModule, locale: Locale): string;
12
+ /** Build the localised help text. */
13
+ export declare function buildHelpText(locale: Locale, opts?: {
14
+ unknownModule?: string;
15
+ }): string;
16
+ //# sourceMappingURL=stub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stub.d.ts","sourceRoot":"","sources":["../../../src/core/dashboard-command/stub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAK,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,UAAU,GACV,WAAW,GACX,QAAQ,GACR,WAAW,GACX,UAAU,CAAC;AAEf,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,eAAe,CAO5D,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,qCAAqC;AACrC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,MAAM,CAMR"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `/dashboard <module>` module registry, help text, and fallback replies.
3
+ *
4
+ * The concrete handlers live in sibling files. `buildStubText` remains as a
5
+ * defensive fallback for future modules or partial refactors.
6
+ */
7
+ import { t } from '../../i18n/index.js';
8
+ export const DASHBOARD_MODULES = [
9
+ 'overview',
10
+ 'sessions',
11
+ 'workflows',
12
+ 'groups',
13
+ 'schedules',
14
+ 'settings',
15
+ ];
16
+ /** Build the localised `not_implemented_yet` text for a given module. */
17
+ export function buildStubText(module, locale) {
18
+ return t(`card.dashboard.${module}.not_implemented_yet`, undefined, locale);
19
+ }
20
+ /** Build the localised help text. */
21
+ export function buildHelpText(locale, opts = {}) {
22
+ if (opts.unknownModule) {
23
+ return t('card.dashboard.help.unknown_module', { module: opts.unknownModule }, locale)
24
+ + '\n\n' + t('card.dashboard.help.body', undefined, locale);
25
+ }
26
+ return t('card.dashboard.help.body', undefined, locale);
27
+ }
28
+ //# sourceMappingURL=stub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stub.js","sourceRoot":"","sources":["../../../src/core/dashboard-command/stub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAe,MAAM,qBAAqB,CAAC;AAUrD,MAAM,CAAC,MAAM,iBAAiB,GAAmC;IAC/D,UAAU;IACV,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,UAAU;CACX,CAAC;AAEF,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,MAAuB,EAAE,MAAc;IACnE,OAAO,CAAC,CAAC,kBAAkB,MAAM,sBAAsB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,OAAmC,EAAE;IAErC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,oCAAoC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC;cAClF,MAAM,GAAG,CAAC,CAAC,0BAA0B,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,CAAC,CAAC,0BAA0B,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `/dashboard workflows` sub-handler.
3
+ *
4
+ * The command-level admin gate has already passed. This handler fetches the
5
+ * global workflow run list, builds the Feishu list card, and DMs the invoking
6
+ * admin. Per-run actions are handled by card callbacks from the detail view.
7
+ */
8
+ import type { LarkMessage } from '../../types.js';
9
+ import { type Locale } from '../../i18n/index.js';
10
+ import type { DaemonClient } from '../../dashboard/daemon-internal-client.js';
11
+ import type { CommandHandlerDeps } from '../command-handler.js';
12
+ export interface DashboardWorkflowsCommandDeps {
13
+ createClient?: (larkAppId: string) => DaemonClient;
14
+ sendUserMessage?: (larkAppId: string, openId: string, content: string, msgType?: string) => Promise<string>;
15
+ locale?: Locale;
16
+ /** Override `Date.now()` so tests are deterministic. */
17
+ nowMs?: () => number;
18
+ }
19
+ export declare function handleDashboardWorkflows(_message: LarkMessage, _args: string, rootId: string, _chatId: string, deps: CommandHandlerDeps, larkAppId: string | undefined, adminOpenId: string, testDeps?: DashboardWorkflowsCommandDeps): Promise<void>;
20
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../src/core/dashboard-command/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,CAAC;IACnD,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,EACxB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,6BAAkC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAqDf"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * `/dashboard workflows` sub-handler.
3
+ *
4
+ * The command-level admin gate has already passed. This handler fetches the
5
+ * global workflow run list, builds the Feishu list card, and DMs the invoking
6
+ * admin. Per-run actions are handled by card callbacks from the detail view.
7
+ */
8
+ import { localeForBot, t } from '../../i18n/index.js';
9
+ import { buildWorkflowsCard } from '../../im/lark/workflows-card.js';
10
+ import { createDaemonClientFor } from '../../daemon-internal-client-wrapper.js';
11
+ import { sendUserMessage as defaultSendUserMessage } from '../../im/lark/client.js';
12
+ export async function handleDashboardWorkflows(_message, _args, rootId, _chatId, deps, larkAppId, adminOpenId, testDeps = {}) {
13
+ if (!larkAppId)
14
+ return;
15
+ const locale = testDeps.locale ?? localeForBot(larkAppId);
16
+ const client = (testDeps.createClient ?? createDaemonClientFor)(larkAppId);
17
+ let snap;
18
+ try {
19
+ // listRuns defaults to non-terminal runs. `all=1` is required so the
20
+ // completed/failed counters and history rows include terminal runs.
21
+ snap = await client.request({ method: 'GET', path: '/__daemon/workflows-runs-snapshot?all=1&scope=global' });
22
+ }
23
+ catch (e) {
24
+ await deps.sessionReply(rootId, t('card.dashboard.workflows.list_failed', { reason: e?.message ?? String(e) }, locale), undefined, larkAppId);
25
+ return;
26
+ }
27
+ if (snap.status !== 200) {
28
+ const reason = String(snap.body?.error ?? `http_${snap.status}`);
29
+ await deps.sessionReply(rootId, t('card.dashboard.workflows.list_failed', { reason }, locale), undefined, larkAppId);
30
+ return;
31
+ }
32
+ const rows = (snap.body?.runs) ?? [];
33
+ const nowMs = testDeps.nowMs ? testDeps.nowMs() : Date.now();
34
+ // invokerOpenId = adminOpenId so subsequent clicks still pass the invoker lock.
35
+ const cardJson = buildWorkflowsCard(rows, { invokerOpenId: adminOpenId, locale, page: 1, scope: 'global' }, nowMs);
36
+ const sendUserMessage = testDeps.sendUserMessage ?? defaultSendUserMessage;
37
+ try {
38
+ await sendUserMessage(larkAppId, adminOpenId, cardJson, 'interactive');
39
+ await deps.sessionReply(rootId, t('card.dashboard.workflows.dm_sent', undefined, locale), undefined, larkAppId);
40
+ }
41
+ catch (e) {
42
+ await deps.sessionReply(rootId, t('card.dashboard.workflows.dm_failed', { reason: e?.message ?? String(e) }, locale), undefined, larkAppId);
43
+ }
44
+ }
45
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../src/core/dashboard-command/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,CAAC,EAAe,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAapF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAqB,EACrB,KAAa,EACb,MAAc,EACd,OAAe,EACf,IAAwB,EACxB,SAA6B,EAC7B,WAAmB,EACnB,WAA0C,EAAE;IAE5C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,MAAM,GAAW,QAAQ,CAAC,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sDAAsD,EAAE,CAAC,CAAC;IAC/G,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,IAAI,CAAC,YAAY,CACrB,MAAM,EACN,CAAC,CAAC,sCAAsC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EACtF,SAAS,EAAE,SAAS,CACrB,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAE,IAAI,CAAC,IAAY,EAAE,KAAK,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,IAAI,CAAC,YAAY,CACrB,MAAM,EACN,CAAC,CAAC,sCAAsC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAC7D,SAAS,EAAE,SAAS,CACrB,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,CAAE,IAAI,CAAC,IAAmD,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACrF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7D,gFAAgF;IAChF,MAAM,QAAQ,GAAG,kBAAkB,CACjC,IAAI,EACJ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAChE,KAAK,CACN,CAAC;IAEF,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,sBAAsB,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,YAAY,CACrB,MAAM,EACN,CAAC,CAAC,kCAAkC,EAAE,SAAS,EAAE,MAAM,CAAC,EACxD,SAAS,EAAE,SAAS,CACrB,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,IAAI,CAAC,YAAY,CACrB,MAAM,EACN,CAAC,CAAC,oCAAoC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EACpF,SAAS,EAAE,SAAS,CACrB,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-commands.d.ts","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAAgT,CAAC;AAE7U;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aAO/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAA6B,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUjE"}
1
+ {"version":3,"file":"passthrough-commands.d.ts","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,aAA8T,CAAC;AAE3V;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aAO/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAA6B,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAUjE"}
@@ -9,7 +9,7 @@
9
9
  * chat) rather than relayed to the CLI. Used both for routing and to reject
10
10
  * `customPassthroughCommands` entries that would shadow a daemon command.
11
11
  */
12
- export const DAEMON_COMMANDS = new Set(['/close', '/restart', '/status', '/help', '/cd', '/repo', '/schedule', '/role', '/botconfig', '/skills', '/pair', '/login', '/adopt', '/detach', '/disconnect', '/oncall', '/group', '/g', '/relay', '/card', '/term', '/list-slash-command', '/slash', '/land', '/subscribe-lark-doc', '/insight']);
12
+ export const DAEMON_COMMANDS = new Set(['/close', '/restart', '/status', '/help', '/cd', '/repo', '/schedule', '/role', '/botconfig', '/skills', '/pair', '/login', '/adopt', '/detach', '/disconnect', '/oncall', '/group', '/g', '/relay', '/card', '/term', '/list-slash-command', '/slash', '/land', '/subscribe-lark-doc', '/insight', '/dashboard']);
13
13
  /**
14
14
  * Slash commands that are forwarded verbatim to the underlying CLI (e.g.
15
15
  * Claude Code's `/compact`, `/model`, `/usage`). The daemon does NOT handle
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-commands.js","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7U;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IACnD,yBAAyB;IACzB,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACpC,cAAc,EAAE,kBAAkB,EAAE,SAAS;IAC7C,8BAA8B;IAC9B,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"passthrough-commands.js","sourceRoot":"","sources":["../../src/core/passthrough-commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;AAE3V;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IAC1C,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;IACnD,yBAAyB;IACzB,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACpC,cAAc,EAAE,kBAAkB,EAAE,SAAS;IAC7C,8BAA8B;IAC9B,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC"}
@@ -4,7 +4,23 @@ export interface NativeCliSkillGroup {
4
4
  cliId: CliId;
5
5
  rootDir: string;
6
6
  skills: SkillPackage[];
7
+ /** Dashboard tab label. Absent → render `cliId` (a CLI's flat native skills
8
+ * tab). Set for Claude plugin / marketplace groups so they're distinguishable
9
+ * from — and from each other beside — the plain `claude` tab. */
10
+ label?: string;
7
11
  }
12
+ /**
13
+ * Discover skills that live inside Claude Code's plugin system — which the flat
14
+ * `<claudeDataDir>/skills` scan never reaches. Two sources, each surfaced as its
15
+ * own labelled group so the dashboard can show + register them like any other
16
+ * discovered skill:
17
+ * 1. Enabled plugins in `plugins/installed_plugins.json` → each install's
18
+ * `<installPath>/skills/<name>/SKILL.md` (e.g. the `frontend-design` plugin).
19
+ * 2. Marketplace skill collections at `plugins/marketplaces/<m>/skills/`
20
+ * (e.g. `anthropic-agent-skills`, the anthropics/skills repo).
21
+ * Plugins with no `skills/` dir (e.g. gopls-lsp) contribute nothing.
22
+ */
23
+ export declare function discoverClaudePluginSkillGroups(claudeDataDir: string, cliId: CliId, seen?: Set<string>): NativeCliSkillGroup[];
8
24
  export declare function discoverNativeCliSkillGroups(cliIds: readonly CliId[]): NativeCliSkillGroup[];
9
25
  export declare function discoverProjectSkills(workingDir: string): SkillPackage[];
10
26
  //# sourceMappingURL=discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AA+BD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAyB5F;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAgBxE"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB;;sEAEkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+BD;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAC7C,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,KAAK,EACZ,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAC5B,mBAAmB,EAAE,CA+BvB;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,mBAAmB,EAAE,CA8B5F;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAgBxE"}
@@ -1,6 +1,6 @@
1
- import { existsSync, readdirSync } from 'node:fs';
1
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
- import { join } from 'node:path';
3
+ import { basename, join } from 'node:path';
4
4
  import { createCliAdapterSync } from '../../adapters/cli/registry.js';
5
5
  import { loadSkillPackage } from './package.js';
6
6
  function expandHome(path) {
@@ -34,6 +34,47 @@ function discoverSkillRoot(root) {
34
34
  }
35
35
  return out.sort((a, b) => a.name.localeCompare(b.name));
36
36
  }
37
+ /**
38
+ * Discover skills that live inside Claude Code's plugin system — which the flat
39
+ * `<claudeDataDir>/skills` scan never reaches. Two sources, each surfaced as its
40
+ * own labelled group so the dashboard can show + register them like any other
41
+ * discovered skill:
42
+ * 1. Enabled plugins in `plugins/installed_plugins.json` → each install's
43
+ * `<installPath>/skills/<name>/SKILL.md` (e.g. the `frontend-design` plugin).
44
+ * 2. Marketplace skill collections at `plugins/marketplaces/<m>/skills/`
45
+ * (e.g. `anthropic-agent-skills`, the anthropics/skills repo).
46
+ * Plugins with no `skills/` dir (e.g. gopls-lsp) contribute nothing.
47
+ */
48
+ export function discoverClaudePluginSkillGroups(claudeDataDir, cliId, seen = new Set()) {
49
+ const pluginsRoot = join(claudeDataDir, 'plugins');
50
+ const out = [];
51
+ const addGroup = (skillsRoot, label) => {
52
+ if (seen.has(skillsRoot))
53
+ return;
54
+ const skills = discoverSkillRoot(skillsRoot);
55
+ if (skills.length === 0)
56
+ return; // no SKILL.md under here — nothing to show
57
+ seen.add(skillsRoot);
58
+ out.push({ cliId, rootDir: skillsRoot, label, skills });
59
+ };
60
+ // 1. Enabled plugins (installed_plugins.json → <installPath>/skills).
61
+ try {
62
+ const parsed = JSON.parse(readFileSync(join(pluginsRoot, 'installed_plugins.json'), 'utf-8'));
63
+ for (const [key, entries] of Object.entries(parsed.plugins ?? {})) {
64
+ const pluginName = key.split('@')[0]; // "frontend-design@marketplace" → "frontend-design"
65
+ for (const entry of entries ?? []) {
66
+ if (entry?.installPath)
67
+ addGroup(join(entry.installPath, 'skills'), `${pluginName} (plugin)`);
68
+ }
69
+ }
70
+ }
71
+ catch { /* no/unreadable installed_plugins.json — fine */ }
72
+ // 2. Marketplace-level skill collections (marketplaces/<m>/skills).
73
+ for (const marketplace of listSkillDirs(join(pluginsRoot, 'marketplaces'))) {
74
+ addGroup(join(marketplace, 'skills'), `${basename(marketplace)} (marketplace)`);
75
+ }
76
+ return out;
77
+ }
37
78
  export function discoverNativeCliSkillGroups(cliIds) {
38
79
  const out = [];
39
80
  const seen = new Set();
@@ -61,6 +102,11 @@ export function discoverNativeCliSkillGroups(cliIds) {
61
102
  seen.add(root);
62
103
  out.push({ cliId, rootDir: root, skills: discoverSkillRoot(root) });
63
104
  }
105
+ // Claude Code plugin system: skills bundled inside enabled plugins or
106
+ // marketplaces, which the flat native-skills scan above never reaches.
107
+ if (adapter.claudeDataDir) {
108
+ out.push(...discoverClaudePluginSkillGroups(expandHome(adapter.claudeDataDir), cliId, seen));
109
+ }
64
110
  }
65
111
  return out;
66
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/core/skills/discovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../../src/core/worker-pool.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@ import { homedir } from 'node:os';
8
8
  import { readFileSync, readdirSync, mkdirSync, existsSync, realpathSync, unlinkSync } from 'node:fs';
9
9
  import { atomicWriteFileSync } from '../utils/atomic-write.js';
10
10
  import { fileURLToPath } from 'node:url';
11
- import { ensureSkills, ensureAskSkill, ensurePluginSkills, removeGlobalBotmuxSkills } from '../skills/installer.js';
11
+ import { ensureSkills, ensureAskSkill, ensurePluginSkills, ensureWhiteboardSkill, removeGlobalBotmuxSkills } from '../skills/installer.js';
12
+ import { whiteboardEnabled } from '../services/whiteboard-store.js';
12
13
  import { installHook } from '../adapters/hook-installer.js';
13
14
  import { hookCommandFor } from '../adapters/hook-command.js';
14
15
  import { randomBytes } from 'node:crypto';
@@ -691,9 +692,15 @@ const skillsInstalledCliIds = new Set();
691
692
  * Synchronous and idempotent — runs once per CLI per daemon lifecycle.
692
693
  */
693
694
  export function ensureCliSkills(cliId, cliPathOverride) {
695
+ const adapter = createCliAdapterSync(cliId, cliPathOverride);
696
+ // botmux-whiteboard skill 跟随白板能力开关,且**每次 spawn 都重新评估**(不进
697
+ // 下面 skillsInstalledCliIds 的一次性缓存)——这样运行时在 dashboard/CLI 切换白板
698
+ // 开关,下一个会话即生效,无需重启 daemon。skill 落点与其它内置 skill 同目录
699
+ // (plugin 模式下是 {pluginDir}/skills),spawn 时一并经 --plugin-dir 注入。
700
+ const wbSkillsDir = adapter.pluginDir ? join(adapter.pluginDir, 'skills') : adapter.skillsDir;
701
+ ensureWhiteboardSkill(cliId, wbSkillsDir, whiteboardEnabled());
694
702
  if (skillsInstalledCliIds.has(cliId))
695
703
  return;
696
- const adapter = createCliAdapterSync(cliId, cliPathOverride);
697
704
  if (adapter.pluginDir) {
698
705
  // 动态注入:skill 写进插件目录,spawn 时用 --plugin-dir 注入,仅本次会话可见。
699
706
  // 不再写全局 skillsDir。(全局 ~/.claude/skills 的历史残留清理改由