pilotswarm-sdk 0.1.3

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 (183) hide show
  1. package/dist/agent-loader.d.ts +61 -0
  2. package/dist/agent-loader.d.ts.map +1 -0
  3. package/dist/agent-loader.js +212 -0
  4. package/dist/agent-loader.js.map +1 -0
  5. package/dist/artifact-tools.d.ts +31 -0
  6. package/dist/artifact-tools.d.ts.map +1 -0
  7. package/dist/artifact-tools.js +190 -0
  8. package/dist/artifact-tools.js.map +1 -0
  9. package/dist/blob-store.d.ts +73 -0
  10. package/dist/blob-store.d.ts.map +1 -0
  11. package/dist/blob-store.js +220 -0
  12. package/dist/blob-store.js.map +1 -0
  13. package/dist/client.d.ts +159 -0
  14. package/dist/client.d.ts.map +1 -0
  15. package/dist/client.js +676 -0
  16. package/dist/client.js.map +1 -0
  17. package/dist/cms.d.ts +129 -0
  18. package/dist/cms.d.ts.map +1 -0
  19. package/dist/cms.js +313 -0
  20. package/dist/cms.js.map +1 -0
  21. package/dist/index.d.ts +44 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +42 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/managed-session.d.ts +70 -0
  26. package/dist/managed-session.d.ts.map +1 -0
  27. package/dist/managed-session.js +717 -0
  28. package/dist/managed-session.js.map +1 -0
  29. package/dist/management-client.d.ts +171 -0
  30. package/dist/management-client.d.ts.map +1 -0
  31. package/dist/management-client.js +401 -0
  32. package/dist/management-client.js.map +1 -0
  33. package/dist/mcp-loader.d.ts +50 -0
  34. package/dist/mcp-loader.d.ts.map +1 -0
  35. package/dist/mcp-loader.js +83 -0
  36. package/dist/mcp-loader.js.map +1 -0
  37. package/dist/model-providers.d.ts +143 -0
  38. package/dist/model-providers.d.ts.map +1 -0
  39. package/dist/model-providers.js +228 -0
  40. package/dist/model-providers.js.map +1 -0
  41. package/dist/orchestration-registry.d.ts +7 -0
  42. package/dist/orchestration-registry.d.ts.map +1 -0
  43. package/dist/orchestration-registry.js +49 -0
  44. package/dist/orchestration-registry.js.map +1 -0
  45. package/dist/orchestration.d.ts +36 -0
  46. package/dist/orchestration.d.ts.map +1 -0
  47. package/dist/orchestration.js +1357 -0
  48. package/dist/orchestration.js.map +1 -0
  49. package/dist/orchestration_1_0_0.d.ts +20 -0
  50. package/dist/orchestration_1_0_0.d.ts.map +1 -0
  51. package/dist/orchestration_1_0_0.js +497 -0
  52. package/dist/orchestration_1_0_0.js.map +1 -0
  53. package/dist/orchestration_1_0_1.d.ts +19 -0
  54. package/dist/orchestration_1_0_1.d.ts.map +1 -0
  55. package/dist/orchestration_1_0_1.js +546 -0
  56. package/dist/orchestration_1_0_1.js.map +1 -0
  57. package/dist/orchestration_1_0_10.d.ts +36 -0
  58. package/dist/orchestration_1_0_10.d.ts.map +1 -0
  59. package/dist/orchestration_1_0_10.js +1253 -0
  60. package/dist/orchestration_1_0_10.js.map +1 -0
  61. package/dist/orchestration_1_0_11.d.ts +36 -0
  62. package/dist/orchestration_1_0_11.d.ts.map +1 -0
  63. package/dist/orchestration_1_0_11.js +1255 -0
  64. package/dist/orchestration_1_0_11.js.map +1 -0
  65. package/dist/orchestration_1_0_12.d.ts +36 -0
  66. package/dist/orchestration_1_0_12.d.ts.map +1 -0
  67. package/dist/orchestration_1_0_12.js +1250 -0
  68. package/dist/orchestration_1_0_12.js.map +1 -0
  69. package/dist/orchestration_1_0_13.d.ts +36 -0
  70. package/dist/orchestration_1_0_13.d.ts.map +1 -0
  71. package/dist/orchestration_1_0_13.js +1260 -0
  72. package/dist/orchestration_1_0_13.js.map +1 -0
  73. package/dist/orchestration_1_0_14.d.ts +36 -0
  74. package/dist/orchestration_1_0_14.d.ts.map +1 -0
  75. package/dist/orchestration_1_0_14.js +1258 -0
  76. package/dist/orchestration_1_0_14.js.map +1 -0
  77. package/dist/orchestration_1_0_15.d.ts +36 -0
  78. package/dist/orchestration_1_0_15.d.ts.map +1 -0
  79. package/dist/orchestration_1_0_15.js +1266 -0
  80. package/dist/orchestration_1_0_15.js.map +1 -0
  81. package/dist/orchestration_1_0_16.d.ts +36 -0
  82. package/dist/orchestration_1_0_16.d.ts.map +1 -0
  83. package/dist/orchestration_1_0_16.js +1275 -0
  84. package/dist/orchestration_1_0_16.js.map +1 -0
  85. package/dist/orchestration_1_0_17.d.ts +36 -0
  86. package/dist/orchestration_1_0_17.d.ts.map +1 -0
  87. package/dist/orchestration_1_0_17.js +1314 -0
  88. package/dist/orchestration_1_0_17.js.map +1 -0
  89. package/dist/orchestration_1_0_18.d.ts +36 -0
  90. package/dist/orchestration_1_0_18.d.ts.map +1 -0
  91. package/dist/orchestration_1_0_18.js +1328 -0
  92. package/dist/orchestration_1_0_18.js.map +1 -0
  93. package/dist/orchestration_1_0_19.d.ts +36 -0
  94. package/dist/orchestration_1_0_19.d.ts.map +1 -0
  95. package/dist/orchestration_1_0_19.js +1324 -0
  96. package/dist/orchestration_1_0_19.js.map +1 -0
  97. package/dist/orchestration_1_0_2.d.ts +19 -0
  98. package/dist/orchestration_1_0_2.d.ts.map +1 -0
  99. package/dist/orchestration_1_0_2.js +749 -0
  100. package/dist/orchestration_1_0_2.js.map +1 -0
  101. package/dist/orchestration_1_0_20.d.ts +36 -0
  102. package/dist/orchestration_1_0_20.d.ts.map +1 -0
  103. package/dist/orchestration_1_0_20.js +1347 -0
  104. package/dist/orchestration_1_0_20.js.map +1 -0
  105. package/dist/orchestration_1_0_3.d.ts +19 -0
  106. package/dist/orchestration_1_0_3.d.ts.map +1 -0
  107. package/dist/orchestration_1_0_3.js +826 -0
  108. package/dist/orchestration_1_0_3.js.map +1 -0
  109. package/dist/orchestration_1_0_4.d.ts +19 -0
  110. package/dist/orchestration_1_0_4.d.ts.map +1 -0
  111. package/dist/orchestration_1_0_4.js +1020 -0
  112. package/dist/orchestration_1_0_4.js.map +1 -0
  113. package/dist/orchestration_1_0_5.d.ts +19 -0
  114. package/dist/orchestration_1_0_5.d.ts.map +1 -0
  115. package/dist/orchestration_1_0_5.js +1027 -0
  116. package/dist/orchestration_1_0_5.js.map +1 -0
  117. package/dist/orchestration_1_0_6.d.ts +19 -0
  118. package/dist/orchestration_1_0_6.d.ts.map +1 -0
  119. package/dist/orchestration_1_0_6.js +1034 -0
  120. package/dist/orchestration_1_0_6.js.map +1 -0
  121. package/dist/orchestration_1_0_7.d.ts +19 -0
  122. package/dist/orchestration_1_0_7.d.ts.map +1 -0
  123. package/dist/orchestration_1_0_7.js +1085 -0
  124. package/dist/orchestration_1_0_7.js.map +1 -0
  125. package/dist/orchestration_1_0_8.d.ts +36 -0
  126. package/dist/orchestration_1_0_8.d.ts.map +1 -0
  127. package/dist/orchestration_1_0_8.js +1106 -0
  128. package/dist/orchestration_1_0_8.js.map +1 -0
  129. package/dist/orchestration_1_0_9.d.ts +36 -0
  130. package/dist/orchestration_1_0_9.d.ts.map +1 -0
  131. package/dist/orchestration_1_0_9.js +1207 -0
  132. package/dist/orchestration_1_0_9.js.map +1 -0
  133. package/dist/prompt-layering.d.ts +16 -0
  134. package/dist/prompt-layering.d.ts.map +1 -0
  135. package/dist/prompt-layering.js +60 -0
  136. package/dist/prompt-layering.js.map +1 -0
  137. package/dist/resourcemgr-tools.d.ts +27 -0
  138. package/dist/resourcemgr-tools.d.ts.map +1 -0
  139. package/dist/resourcemgr-tools.js +638 -0
  140. package/dist/resourcemgr-tools.js.map +1 -0
  141. package/dist/session-dumper.d.ts +26 -0
  142. package/dist/session-dumper.d.ts.map +1 -0
  143. package/dist/session-dumper.js +272 -0
  144. package/dist/session-dumper.js.map +1 -0
  145. package/dist/session-manager.d.ts +152 -0
  146. package/dist/session-manager.d.ts.map +1 -0
  147. package/dist/session-manager.js +493 -0
  148. package/dist/session-manager.js.map +1 -0
  149. package/dist/session-proxy.d.ts +68 -0
  150. package/dist/session-proxy.d.ts.map +1 -0
  151. package/dist/session-proxy.js +665 -0
  152. package/dist/session-proxy.js.map +1 -0
  153. package/dist/session-store.d.ts +35 -0
  154. package/dist/session-store.d.ts.map +1 -0
  155. package/dist/session-store.js +88 -0
  156. package/dist/session-store.js.map +1 -0
  157. package/dist/skills.d.ts +31 -0
  158. package/dist/skills.d.ts.map +1 -0
  159. package/dist/skills.js +93 -0
  160. package/dist/skills.js.map +1 -0
  161. package/dist/sweeper-tools.d.ts +28 -0
  162. package/dist/sweeper-tools.d.ts.map +1 -0
  163. package/dist/sweeper-tools.js +332 -0
  164. package/dist/sweeper-tools.js.map +1 -0
  165. package/dist/types.d.ts +498 -0
  166. package/dist/types.d.ts.map +1 -0
  167. package/dist/types.js +9 -0
  168. package/dist/types.js.map +1 -0
  169. package/dist/worker.d.ts +128 -0
  170. package/dist/worker.d.ts.map +1 -0
  171. package/dist/worker.js +562 -0
  172. package/dist/worker.js.map +1 -0
  173. package/package.json +74 -0
  174. package/plugins/mgmt/agents/pilotswarm.agent.md +59 -0
  175. package/plugins/mgmt/agents/resourcemgr.agent.md +111 -0
  176. package/plugins/mgmt/agents/sweeper.agent.md +67 -0
  177. package/plugins/mgmt/skills/resourcemgr/SKILL.md +41 -0
  178. package/plugins/mgmt/skills/resourcemgr/tools.json +1 -0
  179. package/plugins/mgmt/skills/sweeper/SKILL.md +44 -0
  180. package/plugins/mgmt/skills/sweeper/tools.json +1 -0
  181. package/plugins/system/agents/default.agent.md +58 -0
  182. package/plugins/system/skills/durable-timers/SKILL.md +39 -0
  183. package/plugins/system/skills/sub-agents/SKILL.md +75 -0
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Sweeper Agent Tools — system maintenance tools for scanning and cleaning
3
+ * up completed/zombie sessions.
4
+ *
5
+ * Leverages duroxide's bulk prune APIs (deleteInstanceBulk, pruneExecutionsBulk)
6
+ * for efficient cleanup, plus CMS-level soft-delete for session metadata.
7
+ *
8
+ * These are registered as worker-level tools and referenced by the Sweeper
9
+ * Agent session via toolNames.
10
+ *
11
+ * @module
12
+ * @internal
13
+ */
14
+ import { defineTool } from "@github/copilot-sdk";
15
+ /**
16
+ * Create sweeper tools bound to the given CMS catalog and duroxide client.
17
+ *
18
+ * Call this after the worker has initialized the catalog and duroxide provider,
19
+ * then register the returned tools via `worker.registerTools(tools)`.
20
+ */
21
+ export function createSweeperTools(opts) {
22
+ const { catalog, duroxideClient } = opts;
23
+ // ── scan_completed_sessions ───────────────────────────────
24
+ const scanTool = defineTool("scan_completed_sessions", {
25
+ description: "Scan for completed, failed, or orphaned sessions that are eligible for cleanup. " +
26
+ "Returns a list of sessions that have been idle/completed longer than the specified grace period.",
27
+ parameters: {
28
+ type: "object",
29
+ properties: {
30
+ graceMinutes: {
31
+ type: "number",
32
+ description: "Only return sessions that completed/failed more than this many minutes ago. Default: 5",
33
+ },
34
+ includeOrphans: {
35
+ type: "boolean",
36
+ description: "Include orphaned sub-agents whose parent session no longer exists. Default: true",
37
+ },
38
+ },
39
+ },
40
+ handler: async (args) => {
41
+ const graceMinutes = args.graceMinutes ?? 5;
42
+ const includeOrphans = args.includeOrphans ?? true;
43
+ const results = [];
44
+ try {
45
+ const allSessions = await catalog.listSessions();
46
+ const sessionIds = new Set(allSessions.map(s => s.sessionId));
47
+ const cutoff = new Date(Date.now() - graceMinutes * 60 * 1000);
48
+ for (const session of allSessions) {
49
+ // Never touch system sessions
50
+ if (session.isSystem)
51
+ continue;
52
+ let orchStatus = {};
53
+ let customStatus = {};
54
+ try {
55
+ orchStatus = await duroxideClient.getStatus(`session-${session.sessionId}`);
56
+ if (orchStatus.customStatus) {
57
+ customStatus = typeof orchStatus.customStatus === "string"
58
+ ? JSON.parse(orchStatus.customStatus)
59
+ : orchStatus.customStatus;
60
+ }
61
+ }
62
+ catch {
63
+ // Orchestration not found — treat as completed
64
+ orchStatus = { status: "NotFound" };
65
+ }
66
+ const ageMs = Date.now() - session.updatedAt.getTime();
67
+ const ageStr = ageMs > 3_600_000
68
+ ? `${Math.round(ageMs / 3_600_000)}h`
69
+ : `${Math.round(ageMs / 60_000)}m`;
70
+ // Check for completed/failed orchestrations
71
+ if (orchStatus.status === "Completed" ||
72
+ orchStatus.status === "Failed" ||
73
+ orchStatus.status === "Terminated" ||
74
+ orchStatus.status === "NotFound") {
75
+ if (session.updatedAt < cutoff) {
76
+ results.push({
77
+ sessionId: session.sessionId,
78
+ parentSessionId: session.parentSessionId ?? undefined,
79
+ status: orchStatus.status,
80
+ title: session.title ?? undefined,
81
+ age: ageStr,
82
+ reason: `Orchestration ${orchStatus.status.toLowerCase()}`,
83
+ });
84
+ }
85
+ continue;
86
+ }
87
+ // Check for idle sub-agents (completed their task but orch still running)
88
+ if (session.parentSessionId &&
89
+ customStatus.status === "idle" &&
90
+ session.updatedAt < cutoff) {
91
+ results.push({
92
+ sessionId: session.sessionId,
93
+ parentSessionId: session.parentSessionId,
94
+ status: "zombie",
95
+ title: session.title ?? undefined,
96
+ age: ageStr,
97
+ reason: "Sub-agent idle (zombie)",
98
+ });
99
+ continue;
100
+ }
101
+ // Check for orphaned sub-agents
102
+ if (includeOrphans &&
103
+ session.parentSessionId &&
104
+ !sessionIds.has(session.parentSessionId) &&
105
+ session.updatedAt < cutoff) {
106
+ results.push({
107
+ sessionId: session.sessionId,
108
+ parentSessionId: session.parentSessionId,
109
+ status: "orphan",
110
+ title: session.title ?? undefined,
111
+ age: ageStr,
112
+ reason: "Parent session no longer exists",
113
+ });
114
+ }
115
+ }
116
+ return {
117
+ found: results.length,
118
+ graceMinutes,
119
+ sessions: results,
120
+ };
121
+ }
122
+ catch (err) {
123
+ return { error: err.message, found: 0, sessions: [] };
124
+ }
125
+ },
126
+ });
127
+ // ── cleanup_session ──────────────────────────────────────
128
+ const cleanupTool = defineTool("cleanup_session", {
129
+ description: "Delete a completed/zombie session and all its descendants. " +
130
+ "Removes from CMS (soft-delete) and deletes the duroxide orchestration instance. " +
131
+ "Refuses to delete system sessions.",
132
+ parameters: {
133
+ type: "object",
134
+ properties: {
135
+ sessionId: {
136
+ type: "string",
137
+ description: "The session ID to clean up",
138
+ },
139
+ reason: {
140
+ type: "string",
141
+ description: "Reason for cleanup (logged for auditing)",
142
+ },
143
+ },
144
+ required: ["sessionId"],
145
+ },
146
+ handler: async (args) => {
147
+ const { sessionId, reason } = args;
148
+ const deleteReason = reason ?? "Cleaned up by Sweeper Agent";
149
+ try {
150
+ // Check if session exists and is not a system session
151
+ const session = await catalog.getSession(sessionId);
152
+ if (!session) {
153
+ return { ok: false, error: "Session not found" };
154
+ }
155
+ if (session.isSystem) {
156
+ return { ok: false, error: "Cannot delete system session" };
157
+ }
158
+ // Find and delete all descendants first
159
+ const descendants = await catalog.getDescendantSessionIds(sessionId);
160
+ let deletedCount = 0;
161
+ for (const descId of descendants) {
162
+ try {
163
+ await catalog.softDeleteSession(descId);
164
+ try {
165
+ await duroxideClient.deleteInstance(`session-${descId}`, true);
166
+ }
167
+ catch { }
168
+ deletedCount++;
169
+ }
170
+ catch { }
171
+ }
172
+ // Delete the session itself
173
+ await catalog.softDeleteSession(sessionId);
174
+ try {
175
+ await duroxideClient.deleteInstance(`session-${sessionId}`, true);
176
+ }
177
+ catch { }
178
+ deletedCount++;
179
+ return {
180
+ ok: true,
181
+ sessionId,
182
+ deletedCount,
183
+ reason: deleteReason,
184
+ descendants: descendants.length,
185
+ };
186
+ }
187
+ catch (err) {
188
+ return { ok: false, error: err.message };
189
+ }
190
+ },
191
+ });
192
+ // ── prune_orchestrations ─────────────────────────────────
193
+ // Uses duroxide's bulk APIs for efficient cleanup at the orchestration level.
194
+ // Modeled after toygres's system-pruner pattern.
195
+ const pruneTool = defineTool("prune_orchestrations", {
196
+ description: "Bulk prune duroxide orchestration state. " +
197
+ "Two operations: (1) delete terminal (Completed/Failed/Terminated) orchestration " +
198
+ "instances older than N minutes, and (2) prune old executions from all instances, " +
199
+ "keeping only the last N executions per instance. " +
200
+ "This is a system-level operation that cleans up duroxide storage directly.",
201
+ parameters: {
202
+ type: "object",
203
+ properties: {
204
+ deleteTerminalOlderThanMinutes: {
205
+ type: "number",
206
+ description: "Delete completed/failed orchestration instances older than this many minutes. Default: 5",
207
+ },
208
+ keepExecutions: {
209
+ type: "number",
210
+ description: "Keep only the last N executions per instance (current execution is never pruned). Default: 3",
211
+ },
212
+ batchLimit: {
213
+ type: "number",
214
+ description: "Max instances to process per batch. Default: 1000",
215
+ },
216
+ },
217
+ },
218
+ handler: async (args) => {
219
+ const deleteMinutes = args.deleteTerminalOlderThanMinutes ?? 5;
220
+ const keepExecutions = args.keepExecutions ?? 3;
221
+ const batchLimit = args.batchLimit ?? 1000;
222
+ try {
223
+ const cutoffMs = Date.now() - deleteMinutes * 60 * 1000;
224
+ // Step 1: Delete terminal instances older than cutoff
225
+ const deleteResult = await duroxideClient.deleteInstanceBulk({
226
+ completedBefore: cutoffMs,
227
+ limit: batchLimit,
228
+ });
229
+ // Step 2: Prune old executions across all instances
230
+ const pruneResult = await duroxideClient.pruneExecutionsBulk({ limit: batchLimit }, { keepLast: keepExecutions });
231
+ // Step 3: Also soft-delete CMS rows for deleted terminal instances
232
+ // (CMS may have stale rows for instances duroxide just deleted)
233
+ let cmsCleanedUp = 0;
234
+ try {
235
+ const cmsSessions = await catalog.listSessions();
236
+ for (const s of cmsSessions) {
237
+ if (s.isSystem)
238
+ continue;
239
+ try {
240
+ await duroxideClient.getStatus(`session-${s.sessionId}`);
241
+ }
242
+ catch {
243
+ // Instance no longer exists in duroxide — clean up CMS
244
+ try {
245
+ await catalog.softDeleteSession(s.sessionId);
246
+ cmsCleanedUp++;
247
+ }
248
+ catch { }
249
+ }
250
+ }
251
+ }
252
+ catch { }
253
+ return {
254
+ ok: true,
255
+ deleteTerminal: {
256
+ instancesDeleted: deleteResult.instancesDeleted ?? 0,
257
+ executionsDeleted: deleteResult.executionsDeleted ?? 0,
258
+ eventsDeleted: deleteResult.eventsDeleted ?? 0,
259
+ },
260
+ pruneExecutions: {
261
+ instancesProcessed: pruneResult.instancesProcessed ?? 0,
262
+ executionsDeleted: pruneResult.executionsDeleted ?? 0,
263
+ eventsDeleted: pruneResult.eventsDeleted ?? 0,
264
+ },
265
+ cmsCleanedUp,
266
+ };
267
+ }
268
+ catch (err) {
269
+ return { ok: false, error: err.message };
270
+ }
271
+ },
272
+ });
273
+ // ── get_system_stats ─────────────────────────────────────
274
+ const statsTool = defineTool("get_system_stats", {
275
+ description: "Get runtime statistics: total sessions, active count, completed count, " +
276
+ "zombie count, memory usage, uptime, and database connection info.",
277
+ parameters: {
278
+ type: "object",
279
+ properties: {},
280
+ },
281
+ handler: async () => {
282
+ try {
283
+ const allSessions = await catalog.listSessions();
284
+ // Parse database host/name from store URL (strip credentials)
285
+ let database = {};
286
+ if (opts.storeUrl) {
287
+ try {
288
+ const url = new URL(opts.storeUrl);
289
+ database.host = url.hostname;
290
+ database.port = url.port || "5432";
291
+ database.name = url.pathname.replace(/^\//, "") || "postgres";
292
+ // Detect provider from hostname
293
+ if (url.hostname.includes(".horizondb.azure.com"))
294
+ database.provider = "Azure HorizonDB";
295
+ else if (url.hostname.includes(".postgres.database.azure.com"))
296
+ database.provider = "Azure Flexible Server";
297
+ else if (url.hostname.includes(".azure.com"))
298
+ database.provider = "Azure";
299
+ else
300
+ database.provider = "PostgreSQL";
301
+ }
302
+ catch { }
303
+ }
304
+ const stats = {
305
+ total: allSessions.length,
306
+ byState: {},
307
+ systemSessions: 0,
308
+ subAgents: 0,
309
+ rootSessions: 0,
310
+ memoryMB: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),
311
+ uptimeMinutes: Math.round(process.uptime() / 60),
312
+ database,
313
+ };
314
+ for (const s of allSessions) {
315
+ stats.byState[s.state] = (stats.byState[s.state] ?? 0) + 1;
316
+ if (s.isSystem)
317
+ stats.systemSessions++;
318
+ if (s.parentSessionId)
319
+ stats.subAgents++;
320
+ else
321
+ stats.rootSessions++;
322
+ }
323
+ return stats;
324
+ }
325
+ catch (err) {
326
+ return { error: err.message };
327
+ }
328
+ },
329
+ });
330
+ return [scanTool, cleanupTool, pruneTool, statsTool];
331
+ }
332
+ //# sourceMappingURL=sweeper-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sweeper-tools.js","sourceRoot":"","sources":["../src/sweeper-tools.ts"],"names":[],"mappings":"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"}