botmux 2.44.0 → 2.45.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 (167) hide show
  1. package/README.en.md +1 -2
  2. package/README.md +1 -2
  3. package/dist/cli/bots-list-output.d.ts +8 -0
  4. package/dist/cli/bots-list-output.d.ts.map +1 -1
  5. package/dist/cli/bots-list-output.js +9 -0
  6. package/dist/cli/bots-list-output.js.map +1 -1
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +6 -0
  9. package/dist/cli.js.map +1 -1
  10. package/dist/core/command-handler.d.ts.map +1 -1
  11. package/dist/core/command-handler.js +132 -50
  12. package/dist/core/command-handler.js.map +1 -1
  13. package/dist/core/dashboard-ipc-server.d.ts +2 -0
  14. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  15. package/dist/core/dashboard-ipc-server.js +56 -0
  16. package/dist/core/dashboard-ipc-server.js.map +1 -1
  17. package/dist/core/role-resolver.d.ts +17 -1
  18. package/dist/core/role-resolver.d.ts.map +1 -1
  19. package/dist/core/role-resolver.js +64 -10
  20. package/dist/core/role-resolver.js.map +1 -1
  21. package/dist/core/session-manager.d.ts.map +1 -1
  22. package/dist/core/session-manager.js +14 -9
  23. package/dist/core/session-manager.js.map +1 -1
  24. package/dist/core/trigger-session.d.ts +9 -0
  25. package/dist/core/trigger-session.d.ts.map +1 -0
  26. package/dist/core/trigger-session.js +158 -0
  27. package/dist/core/trigger-session.js.map +1 -0
  28. package/dist/daemon.d.ts.map +1 -1
  29. package/dist/daemon.js +73 -44
  30. package/dist/daemon.js.map +1 -1
  31. package/dist/dashboard/connector-api.d.ts +3 -0
  32. package/dist/dashboard/connector-api.d.ts.map +1 -0
  33. package/dist/dashboard/connector-api.js +351 -0
  34. package/dist/dashboard/connector-api.js.map +1 -0
  35. package/dist/dashboard/federated-group-core.d.ts +54 -0
  36. package/dist/dashboard/federated-group-core.d.ts.map +1 -0
  37. package/dist/dashboard/federated-group-core.js +165 -0
  38. package/dist/dashboard/federated-group-core.js.map +1 -0
  39. package/dist/dashboard/federation-api.d.ts +42 -0
  40. package/dist/dashboard/federation-api.d.ts.map +1 -0
  41. package/dist/dashboard/federation-api.js +408 -0
  42. package/dist/dashboard/federation-api.js.map +1 -0
  43. package/dist/dashboard/federation-spoke-api.d.ts +76 -0
  44. package/dist/dashboard/federation-spoke-api.d.ts.map +1 -0
  45. package/dist/dashboard/federation-spoke-api.js +618 -0
  46. package/dist/dashboard/federation-spoke-api.js.map +1 -0
  47. package/dist/dashboard/team-group.d.ts +18 -0
  48. package/dist/dashboard/team-group.d.ts.map +1 -0
  49. package/dist/dashboard/team-group.js +7 -0
  50. package/dist/dashboard/team-group.js.map +1 -0
  51. package/dist/dashboard/trigger-api.d.ts +13 -0
  52. package/dist/dashboard/trigger-api.d.ts.map +1 -0
  53. package/dist/dashboard/trigger-api.js +77 -0
  54. package/dist/dashboard/trigger-api.js.map +1 -0
  55. package/dist/dashboard/web/app.js +8 -0
  56. package/dist/dashboard/web/app.js.map +1 -1
  57. package/dist/dashboard/web/connectors.d.ts +2 -0
  58. package/dist/dashboard/web/connectors.d.ts.map +1 -0
  59. package/dist/dashboard/web/connectors.js +187 -0
  60. package/dist/dashboard/web/connectors.js.map +1 -0
  61. package/dist/dashboard/web/team-federation.d.ts +3 -0
  62. package/dist/dashboard/web/team-federation.d.ts.map +1 -0
  63. package/dist/dashboard/web/team-federation.js +472 -0
  64. package/dist/dashboard/web/team-federation.js.map +1 -0
  65. package/dist/dashboard/webhook-routes.d.ts +19 -0
  66. package/dist/dashboard/webhook-routes.d.ts.map +1 -0
  67. package/dist/dashboard/webhook-routes.js +321 -0
  68. package/dist/dashboard/webhook-routes.js.map +1 -0
  69. package/dist/dashboard-web/app.js +509 -386
  70. package/dist/dashboard-web/index.html +2 -0
  71. package/dist/dashboard.js +152 -1
  72. package/dist/dashboard.js.map +1 -1
  73. package/dist/i18n/en.d.ts.map +1 -1
  74. package/dist/i18n/en.js +24 -8
  75. package/dist/i18n/en.js.map +1 -1
  76. package/dist/i18n/zh.d.ts.map +1 -1
  77. package/dist/i18n/zh.js +24 -8
  78. package/dist/i18n/zh.js.map +1 -1
  79. package/dist/im/lark/client.d.ts +21 -0
  80. package/dist/im/lark/client.d.ts.map +1 -1
  81. package/dist/im/lark/client.js +86 -18
  82. package/dist/im/lark/client.js.map +1 -1
  83. package/dist/services/bot-owner-store.d.ts +28 -0
  84. package/dist/services/bot-owner-store.d.ts.map +1 -0
  85. package/dist/services/bot-owner-store.js +82 -0
  86. package/dist/services/bot-owner-store.js.map +1 -0
  87. package/dist/services/bot-profile-store.d.ts +16 -0
  88. package/dist/services/bot-profile-store.d.ts.map +1 -0
  89. package/dist/services/bot-profile-store.js +98 -0
  90. package/dist/services/bot-profile-store.js.map +1 -0
  91. package/dist/services/connector-store.d.ts +58 -0
  92. package/dist/services/connector-store.d.ts.map +1 -0
  93. package/dist/services/connector-store.js +79 -0
  94. package/dist/services/connector-store.js.map +1 -0
  95. package/dist/services/deployment-identity.d.ts +22 -0
  96. package/dist/services/deployment-identity.d.ts.map +1 -0
  97. package/dist/services/deployment-identity.js +67 -0
  98. package/dist/services/deployment-identity.js.map +1 -0
  99. package/dist/services/federation-membership-store.d.ts +23 -0
  100. package/dist/services/federation-membership-store.d.ts.map +1 -0
  101. package/dist/services/federation-membership-store.js +66 -0
  102. package/dist/services/federation-membership-store.js.map +1 -0
  103. package/dist/services/federation-roster.d.ts +54 -0
  104. package/dist/services/federation-roster.d.ts.map +1 -0
  105. package/dist/services/federation-roster.js +51 -0
  106. package/dist/services/federation-roster.js.map +1 -0
  107. package/dist/services/federation-store.d.ts +76 -0
  108. package/dist/services/federation-store.d.ts.map +1 -0
  109. package/dist/services/federation-store.js +133 -0
  110. package/dist/services/federation-store.js.map +1 -0
  111. package/dist/services/group-creator.d.ts +6 -0
  112. package/dist/services/group-creator.d.ts.map +1 -1
  113. package/dist/services/group-creator.js +10 -1
  114. package/dist/services/group-creator.js.map +1 -1
  115. package/dist/services/groups-store.d.ts +11 -0
  116. package/dist/services/groups-store.d.ts.map +1 -1
  117. package/dist/services/groups-store.js +42 -0
  118. package/dist/services/groups-store.js.map +1 -1
  119. package/dist/services/invite-store.d.ts +28 -0
  120. package/dist/services/invite-store.d.ts.map +1 -0
  121. package/dist/services/invite-store.js +85 -0
  122. package/dist/services/invite-store.js.map +1 -0
  123. package/dist/services/pairing-store.d.ts +47 -0
  124. package/dist/services/pairing-store.d.ts.map +1 -0
  125. package/dist/services/pairing-store.js +132 -0
  126. package/dist/services/pairing-store.js.map +1 -0
  127. package/dist/services/team-roster.d.ts +38 -0
  128. package/dist/services/team-roster.d.ts.map +1 -0
  129. package/dist/services/team-roster.js +82 -0
  130. package/dist/services/team-roster.js.map +1 -0
  131. package/dist/services/team-store.d.ts +54 -0
  132. package/dist/services/team-store.d.ts.map +1 -0
  133. package/dist/services/team-store.js +156 -0
  134. package/dist/services/team-store.js.map +1 -0
  135. package/dist/services/trigger-log-store.d.ts +46 -0
  136. package/dist/services/trigger-log-store.d.ts.map +1 -0
  137. package/dist/services/trigger-log-store.js +132 -0
  138. package/dist/services/trigger-log-store.js.map +1 -0
  139. package/dist/services/trigger-types.d.ts +57 -0
  140. package/dist/services/trigger-types.d.ts.map +1 -0
  141. package/dist/services/trigger-types.js +28 -0
  142. package/dist/services/trigger-types.js.map +1 -0
  143. package/dist/services/webhook-key.d.ts +16 -0
  144. package/dist/services/webhook-key.d.ts.map +1 -0
  145. package/dist/services/webhook-key.js +123 -0
  146. package/dist/services/webhook-key.js.map +1 -0
  147. package/dist/services/webhook-lifecycle-extractors.d.ts +15 -0
  148. package/dist/services/webhook-lifecycle-extractors.d.ts.map +1 -0
  149. package/dist/services/webhook-lifecycle-extractors.js +59 -0
  150. package/dist/services/webhook-lifecycle-extractors.js.map +1 -0
  151. package/dist/services/webhook-lifecycle-store.d.ts +45 -0
  152. package/dist/services/webhook-lifecycle-store.d.ts.map +1 -0
  153. package/dist/services/webhook-lifecycle-store.js +159 -0
  154. package/dist/services/webhook-lifecycle-store.js.map +1 -0
  155. package/dist/setup/verify-permissions.d.ts.map +1 -1
  156. package/dist/setup/verify-permissions.js +4 -0
  157. package/dist/setup/verify-permissions.js.map +1 -1
  158. package/dist/skills/definitions.d.ts.map +1 -1
  159. package/dist/skills/definitions.js +64 -10
  160. package/dist/skills/definitions.js.map +1 -1
  161. package/dist/workflows/events/payloads.d.ts +2 -2
  162. package/dist/workflows/events/schema.d.ts +8 -8
  163. package/dist/workflows/trigger-from-envelope.d.ts +13 -0
  164. package/dist/workflows/trigger-from-envelope.d.ts.map +1 -0
  165. package/dist/workflows/trigger-from-envelope.js +67 -0
  166. package/dist/workflows/trigger-from-envelope.js.map +1 -0
  167. package/package.json +1 -1
@@ -1005,15 +1005,15 @@ export declare const ReconcileResultPayload: z.ZodObject<{
1005
1005
  decision: z.ZodEnum<["replayed", "completedByIdempotentSubmit", "manual", "freshRetry"]>;
1006
1006
  evidence: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1007
1007
  }, "strip", z.ZodTypeAny, {
1008
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
1008
1009
  activityId: string;
1009
1010
  idempotencyKey: string;
1010
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
1011
1011
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
1012
1012
  evidence: Record<string, unknown>;
1013
1013
  }, {
1014
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
1014
1015
  activityId: string;
1015
1016
  idempotencyKey: string;
1016
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
1017
1017
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
1018
1018
  evidence: Record<string, unknown>;
1019
1019
  }>;
@@ -2875,15 +2875,15 @@ export declare const ReconcileResultEventSchema: z.ZodObject<{
2875
2875
  decision: z.ZodEnum<["replayed", "completedByIdempotentSubmit", "manual", "freshRetry"]>;
2876
2876
  evidence: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2877
2877
  }, "strip", z.ZodTypeAny, {
2878
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2878
2879
  activityId: string;
2879
2880
  idempotencyKey: string;
2880
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2881
2881
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
2882
2882
  evidence: Record<string, unknown>;
2883
2883
  }, {
2884
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2884
2885
  activityId: string;
2885
2886
  idempotencyKey: string;
2886
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2887
2887
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
2888
2888
  evidence: Record<string, unknown>;
2889
2889
  }>, z.ZodObject<{
@@ -2911,9 +2911,9 @@ export declare const ReconcileResultEventSchema: z.ZodObject<{
2911
2911
  schemaVersion: 1;
2912
2912
  eventId: string;
2913
2913
  payload: {
2914
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2914
2915
  activityId: string;
2915
2916
  idempotencyKey: string;
2916
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2917
2917
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
2918
2918
  evidence: Record<string, unknown>;
2919
2919
  } | {
@@ -2930,9 +2930,9 @@ export declare const ReconcileResultEventSchema: z.ZodObject<{
2930
2930
  schemaVersion: 1;
2931
2931
  eventId: string;
2932
2932
  payload: {
2933
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2933
2934
  activityId: string;
2934
2935
  idempotencyKey: string;
2935
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
2936
2936
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
2937
2937
  evidence: Record<string, unknown>;
2938
2938
  } | {
@@ -5778,15 +5778,15 @@ export declare const EventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
5778
5778
  decision: z.ZodEnum<["replayed", "completedByIdempotentSubmit", "manual", "freshRetry"]>;
5779
5779
  evidence: z.ZodRecord<z.ZodString, z.ZodUnknown>;
5780
5780
  }, "strip", z.ZodTypeAny, {
5781
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5781
5782
  activityId: string;
5782
5783
  idempotencyKey: string;
5783
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5784
5784
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
5785
5785
  evidence: Record<string, unknown>;
5786
5786
  }, {
5787
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5787
5788
  activityId: string;
5788
5789
  idempotencyKey: string;
5789
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5790
5790
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
5791
5791
  evidence: Record<string, unknown>;
5792
5792
  }>, z.ZodObject<{
@@ -5814,9 +5814,9 @@ export declare const EventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
5814
5814
  schemaVersion: 1;
5815
5815
  eventId: string;
5816
5816
  payload: {
5817
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5817
5818
  activityId: string;
5818
5819
  idempotencyKey: string;
5819
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5820
5820
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
5821
5821
  evidence: Record<string, unknown>;
5822
5822
  } | {
@@ -5833,9 +5833,9 @@ export declare const EventSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
5833
5833
  schemaVersion: 1;
5834
5834
  eventId: string;
5835
5835
  payload: {
5836
+ capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5836
5837
  activityId: string;
5837
5838
  idempotencyKey: string;
5838
- capability: "none" | "readOnlyLookup" | "idempotentSubmit";
5839
5839
  decision: "manual" | "replayed" | "completedByIdempotentSubmit" | "freshRetry";
5840
5840
  evidence: Record<string, unknown>;
5841
5841
  } | {
@@ -0,0 +1,13 @@
1
+ import type { TriggerRequest, TriggerResponse } from '../services/trigger-types.js';
2
+ import type { TriggerInput, TriggerResult } from './trigger-run.js';
3
+ export interface EnvelopeWorkflowDeps {
4
+ larkAppId: string;
5
+ /** The daemon-wired triggerWorkflowRun closure (all heavy deps already bound). */
6
+ runWorkflow: (input: TriggerInput) => Promise<TriggerResult>;
7
+ /** Test seam. */
8
+ makeTriggerId?: () => string;
9
+ }
10
+ /** The well-known param name a webhook-triggerable workflow must declare (type string). */
11
+ export declare const EVENT_PARAM_NAME = "event";
12
+ export declare function triggerWorkflowFromEnvelope(req: TriggerRequest, deps: EnvelopeWorkflowDeps): Promise<TriggerResponse>;
13
+ //# sourceMappingURL=trigger-from-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-from-envelope.d.ts","sourceRoot":"","sources":["../../src/workflows/trigger-from-envelope.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7D,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;CAC9B;AAED,2FAA2F;AAC3F,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,eAAe,CAAC,CAuD1B"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Workflow thin layer for the shared `/api/trigger` boundary.
3
+ *
4
+ * When an external trigger targets `kind=workflow`, map its untrusted event
5
+ * envelope to a workflow run via the existing `triggerWorkflowRun`. The whole
6
+ * event is passed as a single **string** param named `event` (a JSON string),
7
+ * so a webhook-triggerable workflow just declares an `event: string` param and
8
+ * its first subagent reads `${params.event}` as untrusted event data — same
9
+ * pass-through philosophy as turns (the model understands the payload; we don't
10
+ * pre-map per-platform fields here).
11
+ *
12
+ * Pure + deps-injected: the daemon wires `runWorkflow` (the already-configured
13
+ * `triggerWorkflowRun` closure) so this stays unit-testable without the daemon.
14
+ */
15
+ import { randomUUID } from 'node:crypto';
16
+ /** The well-known param name a webhook-triggerable workflow must declare (type string). */
17
+ export const EVENT_PARAM_NAME = 'event';
18
+ export async function triggerWorkflowFromEnvelope(req, deps) {
19
+ const triggerId = (deps.makeTriggerId ?? (() => `trg_${randomUUID().slice(0, 12)}`))();
20
+ const workflowId = req.target.workflowId;
21
+ const chatId = req.target.chatId;
22
+ if (!workflowId) {
23
+ return { ok: false, triggerId, errorCode: 'target_required', error: 'workflow target requires workflowId' };
24
+ }
25
+ // chatBinding needs a chat to post the workflow's messages into.
26
+ if (!chatId) {
27
+ return { ok: false, triggerId, errorCode: 'target_required', error: 'workflow target requires chatId for chat binding' };
28
+ }
29
+ // The untrusted external event, serialized as a string param. Workflow nodes
30
+ // must treat it as event data, never as instructions.
31
+ const eventJson = JSON.stringify({
32
+ triggerId,
33
+ source: req.source,
34
+ envelope: req.envelope,
35
+ options: req.options ?? {},
36
+ });
37
+ if (req.options?.dryRun) {
38
+ return {
39
+ ok: true,
40
+ triggerId,
41
+ action: 'dry_run',
42
+ target: { kind: 'workflow', chatId },
43
+ message: `dry run: would start workflow "${workflowId}" with param "${EVENT_PARAM_NAME}" (${eventJson.length} bytes)`,
44
+ };
45
+ }
46
+ const result = await deps.runWorkflow({
47
+ workflowId,
48
+ rawParams: { [EVENT_PARAM_NAME]: { kind: 'string', value: eventJson } },
49
+ chatBinding: { chatId, larkAppId: deps.larkAppId },
50
+ initiator: req.source.connectorId ? `webhook:${req.source.connectorId}` : `external:${req.source.type}`,
51
+ });
52
+ if (result.ok) {
53
+ return {
54
+ ok: true,
55
+ triggerId,
56
+ action: 'queued',
57
+ target: { kind: 'workflow', workflowRunId: result.runId, chatId },
58
+ message: `workflow "${workflowId}" run ${result.runId} started`,
59
+ };
60
+ }
61
+ // Map workflow failure → stable trigger errorCode for the UI.
62
+ const errorCode = result.error === 'unknown_workflow' || result.error === 'invalid_params'
63
+ ? 'bad_request'
64
+ : 'trigger_failed';
65
+ return { ok: false, triggerId, errorCode, error: result.message };
66
+ }
67
+ //# sourceMappingURL=trigger-from-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-from-envelope.js","sourceRoot":"","sources":["../../src/workflows/trigger-from-envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAYzC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAmB,EACnB,IAA0B;IAE1B,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACvF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IAEjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;IAC9G,CAAC;IACD,iEAAiE;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;IAC3H,CAAC;IAED,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,SAAS;QACT,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;KAC3B,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,SAAS;YACT,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;YACpC,OAAO,EAAE,kCAAkC,UAAU,iBAAiB,gBAAgB,MAAM,SAAS,CAAC,MAAM,SAAS;SACtH,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;QACpC,UAAU;QACV,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QACvE,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;QAClD,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;KACxG,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO;YACL,EAAE,EAAE,IAAI;YACR,SAAS;YACT,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;YACjE,OAAO,EAAE,aAAa,UAAU,SAAS,MAAM,CAAC,KAAK,UAAU;SAChE,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,MAAM,SAAS,GACb,MAAM,CAAC,KAAK,KAAK,kBAAkB,IAAI,MAAM,CAAC,KAAK,KAAK,gBAAgB;QACtE,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,gBAAgB,CAAC;IACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AACpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botmux",
3
- "version": "2.44.0",
3
+ "version": "2.45.0",
4
4
  "description": "Bridge between IM platforms and AI coding CLIs — one topic, one CLI session with live streaming",
5
5
  "type": "module",
6
6
  "main": "dist/index-daemon.js",