@burtson-labs/bandit-engine 2.1.7 → 2.1.9

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 (89) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/AdvancedTab-D7SDAQEL.mjs +229 -0
  3. package/dist/AdvancedTab-D7SDAQEL.mjs.map +1 -0
  4. package/dist/CrewSection-N2J3TJGU.mjs +15 -0
  5. package/dist/InstructionsTab-MKOGBQ5L.mjs +195 -0
  6. package/dist/InstructionsTab-MKOGBQ5L.mjs.map +1 -0
  7. package/dist/PersonalizationTab-KPTVJKB3.mjs +179 -0
  8. package/dist/PersonalizationTab-KPTVJKB3.mjs.map +1 -0
  9. package/dist/{ProjectsPane-E5D72PUG.mjs → ProjectsPane-C63C6GW5.mjs} +17 -13
  10. package/dist/ProjectsPane-C63C6GW5.mjs.map +1 -0
  11. package/dist/{SchedulesTab-AKJ6WFZV.mjs → SchedulesTab-TEOM3NWQ.mjs} +13 -11
  12. package/dist/SchedulesTab-TEOM3NWQ.mjs.map +1 -0
  13. package/dist/{aiProviderStore-ANPQVHGD.mjs → aiProviderStore-GH4JZTMW.mjs} +3 -2
  14. package/dist/chat-QAEEYO73.mjs +29 -0
  15. package/dist/chunk-3CDCJJ4S.mjs +64 -0
  16. package/dist/chunk-3CDCJJ4S.mjs.map +1 -0
  17. package/dist/chunk-5JNKGMMN.mjs +5871 -0
  18. package/dist/chunk-5JNKGMMN.mjs.map +1 -0
  19. package/dist/{chunk-KWOUXBSF.mjs → chunk-5LXCZJLJ.mjs} +5 -213
  20. package/dist/chunk-5LXCZJLJ.mjs.map +1 -0
  21. package/dist/{chunk-GX4FVZNA.mjs → chunk-DHXSFFLX.mjs} +4 -26
  22. package/dist/chunk-DHXSFFLX.mjs.map +1 -0
  23. package/dist/chunk-F56OTXXR.mjs +17 -0
  24. package/dist/chunk-F56OTXXR.mjs.map +1 -0
  25. package/dist/{chunk-SQJ4OKWM.mjs → chunk-GN3X7IIZ.mjs} +18 -1734
  26. package/dist/chunk-GN3X7IIZ.mjs.map +1 -0
  27. package/dist/chunk-H2XUGGKV.mjs +168 -0
  28. package/dist/chunk-H2XUGGKV.mjs.map +1 -0
  29. package/dist/{chunk-4NUQYUZH.mjs → chunk-JGJRY4MR.mjs} +7 -569
  30. package/dist/chunk-JGJRY4MR.mjs.map +1 -0
  31. package/dist/chunk-KPT7NNNK.mjs +214 -0
  32. package/dist/chunk-KPT7NNNK.mjs.map +1 -0
  33. package/dist/chunk-LC64VSDS.mjs +541 -0
  34. package/dist/chunk-LC64VSDS.mjs.map +1 -0
  35. package/dist/{chunk-DH5A2HT2.mjs → chunk-LY3O7UWA.mjs} +45 -1
  36. package/dist/chunk-LY3O7UWA.mjs.map +1 -0
  37. package/dist/chunk-MR643IO6.mjs +294 -0
  38. package/dist/chunk-MR643IO6.mjs.map +1 -0
  39. package/dist/{chunk-4NHPLHXU.mjs → chunk-MX37LD3Z.mjs} +5469 -11527
  40. package/dist/chunk-MX37LD3Z.mjs.map +1 -0
  41. package/dist/chunk-MX7Z4RSP.mjs +1203 -0
  42. package/dist/chunk-MX7Z4RSP.mjs.map +1 -0
  43. package/dist/chunk-P42M52OW.mjs +1732 -0
  44. package/dist/chunk-P42M52OW.mjs.map +1 -0
  45. package/dist/{chunk-5URP2E5V.mjs → chunk-UT46TXNG.mjs} +42 -6
  46. package/dist/chunk-UT46TXNG.mjs.map +1 -0
  47. package/dist/{chunk-2HFSBPOE.mjs → chunk-WDFQG3RM.mjs} +21 -1
  48. package/dist/chunk-WDFQG3RM.mjs.map +1 -0
  49. package/dist/chunk-XWUHUDAV.mjs +814 -0
  50. package/dist/chunk-XWUHUDAV.mjs.map +1 -0
  51. package/dist/chunk-Y272M3D5.mjs +28 -0
  52. package/dist/chunk-Y272M3D5.mjs.map +1 -0
  53. package/dist/chunk-YY7BX2HM.mjs +566 -0
  54. package/dist/chunk-YY7BX2HM.mjs.map +1 -0
  55. package/dist/crew-delegate-card-I4SSZU5H.mjs +229 -0
  56. package/dist/crew-delegate-card-I4SSZU5H.mjs.map +1 -0
  57. package/dist/crew-mention-picker-OSJ2NHUB.mjs +118 -0
  58. package/dist/crew-mention-picker-OSJ2NHUB.mjs.map +1 -0
  59. package/dist/crew-task-card-ZCXFTR34.mjs +416 -0
  60. package/dist/crew-task-card-ZCXFTR34.mjs.map +1 -0
  61. package/dist/index.d.mts +121 -8
  62. package/dist/index.d.ts +121 -8
  63. package/dist/index.js +11313 -8127
  64. package/dist/index.js.map +1 -1
  65. package/dist/index.mjs +1222 -2217
  66. package/dist/index.mjs.map +1 -1
  67. package/dist/{modelStore-YNANSWCN.mjs → modelStore-KO45QAO2.mjs} +3 -2
  68. package/dist/modelStore-KO45QAO2.mjs.map +1 -0
  69. package/dist/{public-Tq2Pmw9m.d.mts → public-_W_Zew3C.d.mts} +14 -0
  70. package/dist/{public-Tq2Pmw9m.d.ts → public-_W_Zew3C.d.ts} +14 -0
  71. package/dist/public-types.d.mts +1 -1
  72. package/dist/public-types.d.ts +1 -1
  73. package/dist/{schedule-confirm-card-D4K76HEA.mjs → schedule-confirm-card-Y2JF2RBV.mjs} +5 -5
  74. package/package.json +1 -1
  75. package/dist/ProjectsPane-E5D72PUG.mjs.map +0 -1
  76. package/dist/SchedulesTab-AKJ6WFZV.mjs.map +0 -1
  77. package/dist/chat-MI4IL3WK.mjs +0 -19
  78. package/dist/chunk-2HFSBPOE.mjs.map +0 -1
  79. package/dist/chunk-4NHPLHXU.mjs.map +0 -1
  80. package/dist/chunk-4NUQYUZH.mjs.map +0 -1
  81. package/dist/chunk-5URP2E5V.mjs.map +0 -1
  82. package/dist/chunk-DH5A2HT2.mjs.map +0 -1
  83. package/dist/chunk-GX4FVZNA.mjs.map +0 -1
  84. package/dist/chunk-KWOUXBSF.mjs.map +0 -1
  85. package/dist/chunk-SQJ4OKWM.mjs.map +0 -1
  86. /package/dist/{aiProviderStore-ANPQVHGD.mjs.map → CrewSection-N2J3TJGU.mjs.map} +0 -0
  87. /package/dist/{chat-MI4IL3WK.mjs.map → aiProviderStore-GH4JZTMW.mjs.map} +0 -0
  88. /package/dist/{modelStore-YNANSWCN.mjs.map → chat-QAEEYO73.mjs.map} +0 -0
  89. /package/dist/{schedule-confirm-card-D4K76HEA.mjs.map → schedule-confirm-card-Y2JF2RBV.mjs.map} +0 -0
@@ -0,0 +1,294 @@
1
+ import {
2
+ usePackageSettingsStore
3
+ } from "./chunk-K7SQWDNF.mjs";
4
+ import {
5
+ authenticationService
6
+ } from "./chunk-S3DWWUBD.mjs";
7
+
8
+ // src/services/crew/crewService.ts
9
+ var CREW_ACTIVE_STATUSES = [
10
+ "queued",
11
+ "running",
12
+ "awaiting_approval"
13
+ ];
14
+ var isCrewTaskActive = (status) => !!status && CREW_ACTIVE_STATUSES.includes(status);
15
+ var gatewayBase = () => {
16
+ const settings = usePackageSettingsStore.getState().settings;
17
+ const url = settings?.gatewayApiUrl?.replace(/\/$/, "");
18
+ if (!url) throw new Error("Gateway API is not configured.");
19
+ return url;
20
+ };
21
+ var authHeaders = () => {
22
+ const headers = { "Content-Type": "application/json" };
23
+ const token = authenticationService.getToken();
24
+ if (token) headers["Authorization"] = `Bearer ${token}`;
25
+ return headers;
26
+ };
27
+ var parse = async (res) => {
28
+ const text = await res.text();
29
+ const body = text ? JSON.parse(text) : null;
30
+ if (!res.ok) {
31
+ const message = body && typeof body === "object" && (body.error || body.message) || `Request failed (${res.status})`;
32
+ throw new Error(String(message));
33
+ }
34
+ return body;
35
+ };
36
+ var scoped = (path, scope) => `${gatewayBase()}/crew/${path}${scope ? `${path.includes("?") ? "&" : "?"}scope=${encodeURIComponent(scope)}` : ""}`;
37
+ var listBandits = async (scope) => parse(await fetch(scoped("bandits", scope), { headers: authHeaders() }));
38
+ var createBandit = async (input, scope) => parse(
39
+ await fetch(scoped("bandits", scope), {
40
+ method: "POST",
41
+ headers: authHeaders(),
42
+ body: JSON.stringify(input)
43
+ })
44
+ );
45
+ var deleteBandit = async (id, scope) => {
46
+ const res = await fetch(scoped(`bandits/${encodeURIComponent(id)}`, scope), {
47
+ method: "DELETE",
48
+ headers: authHeaders()
49
+ });
50
+ if (!res.ok && res.status !== 204) {
51
+ throw new Error(`Could not remove the Bandit (${res.status}).`);
52
+ }
53
+ };
54
+ var listCrewTasks = async (scope, limit = 8, filters = {}) => {
55
+ const query = new URLSearchParams({ limit: String(limit) });
56
+ if (filters.status) query.set("status", filters.status);
57
+ if (filters.banditId) query.set("banditId", filters.banditId);
58
+ return parse(
59
+ await fetch(scoped(`tasks?${query.toString()}`, scope), { headers: authHeaders() })
60
+ );
61
+ };
62
+ var getCrewTask = async (id) => parse(
63
+ await fetch(scoped(`tasks/${encodeURIComponent(id)}`), { headers: authHeaders() })
64
+ );
65
+ var runCrewTask = async (input, scope) => parse(
66
+ await fetch(scoped("tasks", scope), {
67
+ method: "POST",
68
+ headers: authHeaders(),
69
+ body: JSON.stringify({
70
+ banditId: input.banditId,
71
+ banditName: input.banditName,
72
+ prompt: input.prompt,
73
+ context: input.context,
74
+ origin: input.origin ?? "web"
75
+ })
76
+ })
77
+ );
78
+ var decideCrewApproval = async (taskId, approvalId, approve) => parse(
79
+ await fetch(
80
+ scoped(
81
+ `tasks/${encodeURIComponent(taskId)}/approvals/${encodeURIComponent(approvalId)}`
82
+ ),
83
+ {
84
+ method: "POST",
85
+ headers: authHeaders(),
86
+ body: JSON.stringify({ approve })
87
+ }
88
+ )
89
+ );
90
+ var cancelCrewTask = async (taskId) => {
91
+ const res = await fetch(scoped(`tasks/${encodeURIComponent(taskId)}/cancel`), {
92
+ method: "POST",
93
+ headers: authHeaders()
94
+ });
95
+ if (!res.ok) await parse(res);
96
+ };
97
+ var createSseParser = () => {
98
+ let buffer = "";
99
+ return (chunk) => {
100
+ buffer += chunk.replace(/\r\n?/g, "\n");
101
+ const events = [];
102
+ let boundary = buffer.indexOf("\n\n");
103
+ while (boundary !== -1) {
104
+ const block = buffer.slice(0, boundary);
105
+ buffer = buffer.slice(boundary + 2);
106
+ let event = "message";
107
+ let id;
108
+ const data = [];
109
+ for (const line of block.split("\n")) {
110
+ if (!line || line.startsWith(":")) continue;
111
+ const colon = line.indexOf(":");
112
+ const field = colon === -1 ? line : line.slice(0, colon);
113
+ const value = colon === -1 ? "" : line.slice(colon + 1).replace(/^ /, "");
114
+ if (field === "event") event = value;
115
+ else if (field === "data") data.push(value);
116
+ else if (field === "id") id = value;
117
+ }
118
+ if (data.length > 0) events.push({ event, data: data.join("\n"), id });
119
+ boundary = buffer.indexOf("\n\n");
120
+ }
121
+ return events;
122
+ };
123
+ };
124
+ var streamCrewTask = (taskId, handlers, options = {}) => {
125
+ const fetchImpl = options.fetchImpl ?? fetch;
126
+ const pollMs = options.pollMs ?? 2500;
127
+ const controller = new AbortController();
128
+ let stopped = false;
129
+ let pollTimer;
130
+ let lastStatus;
131
+ const finish = (info) => {
132
+ if (stopped) return;
133
+ stopped = true;
134
+ handlers.onEnd?.(info);
135
+ };
136
+ const poll = async () => {
137
+ if (stopped) return;
138
+ try {
139
+ const task = await getCrewTask(taskId);
140
+ if (stopped) return;
141
+ lastStatus = task.status;
142
+ handlers.onTask(task);
143
+ if (!isCrewTaskActive(task.status)) {
144
+ finish({ id: task.id, status: task.status, error: task.error });
145
+ return;
146
+ }
147
+ } catch (error) {
148
+ if (stopped) return;
149
+ handlers.onError?.(error instanceof Error ? error : new Error(String(error)));
150
+ }
151
+ pollTimer = setTimeout(() => void poll(), pollMs);
152
+ };
153
+ const fallBackToPolling = () => {
154
+ if (stopped || pollTimer) return;
155
+ pollTimer = setTimeout(() => void poll(), 0);
156
+ };
157
+ const run = async () => {
158
+ let response;
159
+ try {
160
+ response = await fetchImpl(scoped(`tasks/${encodeURIComponent(taskId)}/events`), {
161
+ headers: { ...authHeaders(), Accept: "text/event-stream" },
162
+ signal: controller.signal
163
+ });
164
+ } catch (error) {
165
+ if (stopped) return;
166
+ handlers.onError?.(error instanceof Error ? error : new Error(String(error)));
167
+ fallBackToPolling();
168
+ return;
169
+ }
170
+ if (stopped) return;
171
+ if (!response.ok || !response.body) {
172
+ if (response.status === 404 || response.status === 401 || response.status === 403) {
173
+ handlers.onError?.(new Error(`This task is not available (${response.status}).`));
174
+ stopped = true;
175
+ return;
176
+ }
177
+ fallBackToPolling();
178
+ return;
179
+ }
180
+ const reader = response.body.getReader();
181
+ const decoder = new TextDecoder();
182
+ const parse2 = createSseParser();
183
+ try {
184
+ for (; ; ) {
185
+ const { value, done } = await reader.read();
186
+ if (stopped) return;
187
+ if (done) break;
188
+ for (const evt of parse2(decoder.decode(value, { stream: true }))) {
189
+ if (evt.event === "task") {
190
+ try {
191
+ const task = JSON.parse(evt.data);
192
+ lastStatus = task.status;
193
+ handlers.onTask(task);
194
+ } catch {
195
+ }
196
+ } else if (evt.event === "end") {
197
+ try {
198
+ finish(JSON.parse(evt.data));
199
+ } catch {
200
+ finish({ id: taskId, status: lastStatus ?? "unknown" });
201
+ }
202
+ return;
203
+ }
204
+ }
205
+ }
206
+ } catch (error) {
207
+ if (stopped) return;
208
+ handlers.onError?.(error instanceof Error ? error : new Error(String(error)));
209
+ }
210
+ if (!stopped && (lastStatus === void 0 || isCrewTaskActive(lastStatus)))
211
+ fallBackToPolling();
212
+ };
213
+ void run();
214
+ return () => {
215
+ stopped = true;
216
+ controller.abort();
217
+ if (pollTimer) clearTimeout(pollTimer);
218
+ };
219
+ };
220
+ var crewStatusLabel = (status) => {
221
+ switch (status) {
222
+ case "queued":
223
+ return "Queued";
224
+ case "running":
225
+ return "Working";
226
+ case "awaiting_approval":
227
+ return "Needs your approval";
228
+ case "completed":
229
+ return "Done";
230
+ case "failed":
231
+ return "Failed";
232
+ case "cancelled":
233
+ return "Stopped";
234
+ case "expired":
235
+ return "Timed out";
236
+ default:
237
+ return status;
238
+ }
239
+ };
240
+ var workspacesUrl = (path = "") => `${gatewayBase()}/chat-workspaces${path}`;
241
+ var listChatWorkspaces = async () => parse(await fetch(workspacesUrl(), { headers: authHeaders() }));
242
+ var startSlackInstall = async (returnTo) => parse(
243
+ await fetch(workspacesUrl("/slack/install"), {
244
+ method: "POST",
245
+ headers: authHeaders(),
246
+ body: JSON.stringify({ returnTo })
247
+ })
248
+ );
249
+ var claimSlackWorkspace = async (id) => parse(
250
+ await fetch(workspacesUrl(`/slack/${encodeURIComponent(id)}/org`), {
251
+ method: "POST",
252
+ headers: authHeaders(),
253
+ body: "{}"
254
+ })
255
+ );
256
+ var disconnectSlackWorkspace = async (id) => parse(
257
+ await fetch(workspacesUrl(`/slack/${encodeURIComponent(id)}/org`), {
258
+ method: "DELETE",
259
+ headers: authHeaders()
260
+ })
261
+ );
262
+ var claimTeamsTenant = async (tenantId) => parse(
263
+ await fetch(workspacesUrl(`/teams/${encodeURIComponent(tenantId)}/org`), {
264
+ method: "POST",
265
+ headers: authHeaders(),
266
+ body: "{}"
267
+ })
268
+ );
269
+ var disconnectTeamsTenant = async (tenantId) => parse(
270
+ await fetch(workspacesUrl(`/teams/${encodeURIComponent(tenantId)}/org`), {
271
+ method: "DELETE",
272
+ headers: authHeaders()
273
+ })
274
+ );
275
+
276
+ export {
277
+ isCrewTaskActive,
278
+ listBandits,
279
+ createBandit,
280
+ deleteBandit,
281
+ listCrewTasks,
282
+ runCrewTask,
283
+ decideCrewApproval,
284
+ cancelCrewTask,
285
+ streamCrewTask,
286
+ crewStatusLabel,
287
+ listChatWorkspaces,
288
+ startSlackInstall,
289
+ claimSlackWorkspace,
290
+ disconnectSlackWorkspace,
291
+ claimTeamsTenant,
292
+ disconnectTeamsTenant
293
+ };
294
+ //# sourceMappingURL=chunk-MR643IO6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/crew/crewService.ts"],"mappings":"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","names":["parse"]}