@desplega.ai/agent-swarm 1.111.0 → 1.112.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 (69) hide show
  1. package/dist/{actions-a4crgvtd.js → actions-eckb4g8r.js} +6 -6
  2. package/dist/{app-va5mr9yw.js → app-b05sgm02.js} +3 -3
  3. package/dist/{assistant-0jm4vy8r.js → assistant-7255sbyw.js} +9 -9
  4. package/dist/{boot-reembed-50zzk97q.js → boot-reembed-y1bt3ttn.js} +4 -4
  5. package/dist/{boot-reembed-0t815mmm.js → boot-reembed-yv7awg4y.js} +3 -3
  6. package/dist/{boot-scrub-logs-r99nbmxh.js → boot-scrub-logs-ddyaeqar.js} +2 -2
  7. package/dist/{cli-aqr96mny.js → cli-0c3n0eba.js} +1 -1
  8. package/dist/{cli-dza5039b.js → cli-15598a4k.js} +299 -38
  9. package/dist/{cli-jrmjxsnk.js → cli-30d2ct3k.js} +3 -3
  10. package/dist/{cli-4f6vw5vy.js → cli-3r5y6ayj.js} +2 -2
  11. package/dist/{cli-3cm8ar1c.js → cli-52tbq17n.js} +1 -1
  12. package/dist/{cli-gchg43wt.js → cli-56s4ehzw.js} +1 -1
  13. package/dist/{cli-0d5xddf1.js → cli-709t753c.js} +1 -1
  14. package/dist/{cli-xqzvygxp.js → cli-76d1vtvq.js} +11 -2
  15. package/dist/{cli-0d404x64.js → cli-7xkwgkrs.js} +1 -1
  16. package/dist/{cli-kavm2cv5.js → cli-8f0dwca2.js} +1 -1
  17. package/dist/{cli-r3y5chyg.js → cli-94vzr3nq.js} +4 -4
  18. package/dist/{cli-4ke1amr9.js → cli-951w7c79.js} +1 -1
  19. package/dist/{cli-2b0ew5v8.js → cli-9p0qhead.js} +1 -1
  20. package/dist/{cli-z626gjqj.js → cli-a5e8n5hg.js} +1 -1
  21. package/dist/{cli-y7v6e7yr.js → cli-h9jx5mag.js} +4 -4
  22. package/dist/{cli-f1f82qgv.js → cli-hm27prrc.js} +5 -5
  23. package/dist/{cli-t8m00q3b.js → cli-pt7c7qxz.js} +3 -3
  24. package/dist/{cli-ee3fkebs.js → cli-r1btc895.js} +2 -2
  25. package/dist/{cli-6tfm5fr1.js → cli-rp8pca98.js} +1 -1
  26. package/dist/{cli-h3vhr1gj.js → cli-s9pj3c7z.js} +2 -2
  27. package/dist/{cli-8j1h9627.js → cli-tch0ypp6.js} +61 -14
  28. package/dist/{cli-1aqc46he.js → cli-tg0f2wmz.js} +5 -5
  29. package/dist/{cli-fdnpymsv.js → cli-tp7e60s3.js} +4 -2
  30. package/dist/cli.js +8 -8
  31. package/dist/{commands-t3rdvb55.js → commands-14g7taf4.js} +2 -2
  32. package/dist/{db-mjqc8hj6.js → db-3tge4jrn.js} +2 -2
  33. package/dist/{handlers-mcmg5qgc.js → handlers-sy64egg6.js} +9 -9
  34. package/dist/{hook-0p4q1tym.js → hook-rnkzw8vp.js} +1 -1
  35. package/dist/{http-gs6fk9sg.js → http-xx9xptcs.js} +33 -31
  36. package/dist/{index-w15fk28m.js → index-3wr6v2mm.js} +7 -7
  37. package/dist/{index-744yvc8x.js → index-brma88d4.js} +9 -9
  38. package/dist/{index-6zpajd9e.js → index-ha8e9xn2.js} +6 -6
  39. package/dist/{index-20mf9wvc.js → index-zfx5p959.js} +8 -8
  40. package/dist/{keepalive-3gvnbxaj.js → keepalive-rbz05zad.js} +4 -4
  41. package/dist/{lead-yjbmhj3g.js → lead-s790v7r0.js} +17 -17
  42. package/dist/{maintenance-jbvy2bfg.js → maintenance-420rmadb.js} +4 -4
  43. package/dist/{onboard-sexatejh.js → onboard-jgqamqnw.js} +2 -2
  44. package/dist/{otel-impl-sgqvcw0f.js → otel-impl-ch3n3783.js} +1 -1
  45. package/dist/{pricing-refresh-rat240yg.js → pricing-refresh-rmtrby6h.js} +4 -4
  46. package/dist/{seed-pricing-7yfaf123.js → seed-pricing-1szjzfj1.js} +3 -3
  47. package/dist/{setup-vm5vcc6c.js → setup-8jfzkyzv.js} +2 -2
  48. package/dist/{worker-02y2r0r2.js → worker-40vq0pm8.js} +17 -17
  49. package/openapi.json +1 -1
  50. package/package.json +1 -1
  51. package/src/be/scripts/typecheck.ts +2 -0
  52. package/src/commands/runner.ts +154 -8
  53. package/src/github/handlers.ts +128 -25
  54. package/src/scripts-runtime/sdk-allowlist.ts +2 -0
  55. package/src/scripts-runtime/types/swarm-sdk.d.ts +2 -0
  56. package/src/server.ts +4 -0
  57. package/src/slack/message-text.ts +25 -0
  58. package/src/tests/github-event-filter.test.ts +3 -2
  59. package/src/tests/github-handlers-inline-comments.test.ts +114 -24
  60. package/src/tests/runner-repo-autostash.test.ts +168 -1
  61. package/src/tests/slack-delete.test.ts +157 -0
  62. package/src/tests/slack-message-text.test.ts +37 -1
  63. package/src/tests/slack-update.test.ts +167 -0
  64. package/src/tests/tool-annotations.test.ts +3 -0
  65. package/src/tools/slack-delete.ts +102 -0
  66. package/src/tools/slack-reply.ts +11 -3
  67. package/src/tools/slack-start-thread.ts +2 -0
  68. package/src/tools/slack-update.ts +127 -0
  69. package/src/tools/tool-config.ts +3 -1
@@ -4,14 +4,14 @@ import {
4
4
  handleScheduleTrigger,
5
5
  runScript,
6
6
  startWorkflowExecution
7
- } from "./cli-1aqc46he.js";
7
+ } from "./cli-tg0f2wmz.js";
8
8
  import {
9
9
  getScript
10
- } from "./cli-4f6vw5vy.js";
10
+ } from "./cli-3r5y6ayj.js";
11
11
  import {
12
12
  createTaskWithSiblingAwareness,
13
13
  scheduleContextKey
14
- } from "./cli-aqr96mny.js";
14
+ } from "./cli-0c3n0eba.js";
15
15
  import {
16
16
  getDb,
17
17
  getDueScheduledTasks,
@@ -21,7 +21,7 @@ import {
21
21
  init_telemetry,
22
22
  telemetry,
23
23
  updateScheduledTask
24
- } from "./cli-4ke1amr9.js";
24
+ } from "./cli-951w7c79.js";
25
25
  import {
26
26
  __commonJS,
27
27
  __require,
@@ -25,7 +25,7 @@ import {
25
25
  import {
26
26
  init_package,
27
27
  package_default
28
- } from "./cli-kavm2cv5.js";
28
+ } from "./cli-8f0dwca2.js";
29
29
  import {
30
30
  init_secret_scrubber,
31
31
  scrubSecrets
@@ -3,7 +3,7 @@ import {
3
3
  incrKv,
4
4
  init_db,
5
5
  upsertKv
6
- } from "./cli-4ke1amr9.js";
6
+ } from "./cli-951w7c79.js";
7
7
 
8
8
  // src/be/unmapped-identities.ts
9
9
  init_db();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_package,
3
3
  package_default
4
- } from "./cli-kavm2cv5.js";
4
+ } from "./cli-8f0dwca2.js";
5
5
 
6
6
  // src/commands/shared/client-config.ts
7
7
  init_package();
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  createAdditiveBuffer,
3
3
  extractSlackMessageText
4
- } from "./cli-xqzvygxp.js";
4
+ } from "./cli-76d1vtvq.js";
5
5
  import {
6
6
  getSlackApp,
7
7
  registerTreeMessage
8
- } from "./cli-f1f82qgv.js";
8
+ } from "./cli-hm27prrc.js";
9
9
  import {
10
10
  buildBufferFlushBlocks
11
11
  } from "./cli-6xd0bvf8.js";
12
12
  import {
13
13
  createTaskWithSiblingAwareness,
14
14
  slackContextKey
15
- } from "./cli-aqr96mny.js";
15
+ } from "./cli-0c3n0eba.js";
16
16
  import {
17
17
  getLatestActiveTaskInThread,
18
18
  getLeadAgent,
@@ -20,7 +20,7 @@ import {
20
20
  init_db,
21
21
  init_registry,
22
22
  registerTemplate
23
- } from "./cli-4ke1amr9.js";
23
+ } from "./cli-951w7c79.js";
24
24
 
25
25
  // src/slack/event-dedup.ts
26
26
  var DEFAULT_TTL_MS = 300000;
@@ -25,7 +25,7 @@ import {
25
25
  getTaskById,
26
26
  init_db,
27
27
  setSlackMessageTracking
28
- } from "./cli-4ke1amr9.js";
28
+ } from "./cli-951w7c79.js";
29
29
  import {
30
30
  require_receiver,
31
31
  require_sender,
@@ -54988,13 +54988,13 @@ async function initSlackApp() {
54988
54988
  socketMode: true,
54989
54989
  logLevel: import_bolt.LogLevel.DEBUG
54990
54990
  });
54991
- const { registerMessageHandler } = await import("./handlers-mcmg5qgc.js");
54992
- const { registerCommandHandler } = await import("./commands-t3rdvb55.js");
54993
- const { registerActionHandlers } = await import("./actions-a4crgvtd.js");
54991
+ const { registerMessageHandler } = await import("./handlers-sy64egg6.js");
54992
+ const { registerCommandHandler } = await import("./commands-14g7taf4.js");
54993
+ const { registerActionHandlers } = await import("./actions-eckb4g8r.js");
54994
54994
  registerMessageHandler(app);
54995
54995
  registerCommandHandler(app);
54996
54996
  registerActionHandlers(app);
54997
- const { createAssistant } = await import("./assistant-0jm4vy8r.js");
54997
+ const { createAssistant } = await import("./assistant-7255sbyw.js");
54998
54998
  app.assistant(createAssistant());
54999
54999
  return app;
55000
55000
  }
@@ -4,11 +4,11 @@ import {
4
4
  getNextResumeGeneration,
5
5
  getResumeGeneration,
6
6
  repointTrackerSyncBySwarmId
7
- } from "./cli-gchg43wt.js";
7
+ } from "./cli-56s4ehzw.js";
8
8
  import {
9
9
  getExecutorRegistry,
10
10
  recoverIncompleteRuns
11
- } from "./cli-1aqc46he.js";
11
+ } from "./cli-tg0f2wmz.js";
12
12
  import {
13
13
  MAX_EMPTY_POLLS,
14
14
  assignUnassignedTaskPending,
@@ -44,7 +44,7 @@ import {
44
44
  resolveTemplate,
45
45
  supersedeTask,
46
46
  updateAgentStatus
47
- } from "./cli-4ke1amr9.js";
47
+ } from "./cli-951w7c79.js";
48
48
 
49
49
  // src/heartbeat/heartbeat.ts
50
50
  init_db();
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  buildModelsDevSeedRows
3
- } from "./cli-6tfm5fr1.js";
3
+ } from "./cli-rp8pca98.js";
4
4
  import {
5
5
  createLogEntry,
6
6
  getActivePricingRow,
7
7
  getDb,
8
8
  init_db,
9
9
  insertPricingRow
10
- } from "./cli-4ke1amr9.js";
10
+ } from "./cli-951w7c79.js";
11
11
  import {
12
12
  init_secret_scrubber,
13
13
  scrubSecrets
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getDb,
3
3
  init_db
4
- } from "./cli-4ke1amr9.js";
4
+ } from "./cli-951w7c79.js";
5
5
 
6
6
  // src/be/seed-pricing.ts
7
7
  init_db();
@@ -4,11 +4,11 @@ import {
4
4
  getEmbeddingProvider,
5
5
  init_embedding,
6
6
  serializeEmbedding
7
- } from "./cli-0d5xddf1.js";
7
+ } from "./cli-709t753c.js";
8
8
  import {
9
9
  getDb,
10
10
  init_db
11
- } from "./cli-4ke1amr9.js";
11
+ } from "./cli-951w7c79.js";
12
12
  import {
13
13
  init_secret_scrubber,
14
14
  scrubSecrets
@@ -18,7 +18,7 @@ import {
18
18
  withSpan,
19
19
  withSpanContext,
20
20
  writeSkillsToFilesystem
21
- } from "./cli-dza5039b.js";
21
+ } from "./cli-15598a4k.js";
22
22
  import {
23
23
  authJsonToCredentialSelection,
24
24
  credentialsToAuthJson,
@@ -40,10 +40,10 @@ import {
40
40
  import {
41
41
  ensure,
42
42
  initialize
43
- } from "./cli-r3y5chyg.js";
43
+ } from "./cli-94vzr3nq.js";
44
44
  import {
45
45
  validateJsonSchema
46
- } from "./cli-1aqc46he.js";
46
+ } from "./cli-tg0f2wmz.js";
47
47
  import {
48
48
  getApiKey
49
49
  } from "./cli-f14fvzag.js";
@@ -79,7 +79,7 @@ import {
79
79
  resolveTaskModelSelection,
80
80
  resolveTemplateAsync,
81
81
  telemetry
82
- } from "./cli-4ke1amr9.js";
82
+ } from "./cli-951w7c79.js";
83
83
  import {
84
84
  init_credentials,
85
85
  resolveCredentialPools
@@ -1558,7 +1558,42 @@ async function listSwarmAutostashes(clonePath, role) {
1558
1558
  return [];
1559
1559
  }
1560
1560
  }
1561
- async function refreshExistingRepoForTask(repoConfig, role) {
1561
+ var CONTINUATION_TASK_TYPES = new Set([
1562
+ "resume",
1563
+ "follow-up",
1564
+ "reroute-decision",
1565
+ "agentmail-reply",
1566
+ "github-comment",
1567
+ "github-review",
1568
+ "gitlab-comment",
1569
+ "gitlab-ci"
1570
+ ]);
1571
+ var ACTIVE_PARENT_STATUSES = new Set(["pending", "in_progress", "offered", "paused"]);
1572
+ async function isFirstKickoffTask(task, fetchParentTaskStatus) {
1573
+ if (task?.taskType && CONTINUATION_TASK_TYPES.has(task.taskType))
1574
+ return false;
1575
+ if (task?.parentTaskId && fetchParentTaskStatus) {
1576
+ const parentStatus = await fetchParentTaskStatus(task.parentTaskId);
1577
+ if (parentStatus && ACTIVE_PARENT_STATUSES.has(parentStatus))
1578
+ return false;
1579
+ }
1580
+ return true;
1581
+ }
1582
+ async function fetchTaskStatus(apiUrl, apiKey, taskId) {
1583
+ const headers = {};
1584
+ if (apiKey)
1585
+ headers.Authorization = `Bearer ${apiKey}`;
1586
+ try {
1587
+ const response = await fetch(`${apiUrl}/api/tasks/${taskId}`, { headers });
1588
+ if (!response.ok)
1589
+ return null;
1590
+ const data = await response.json();
1591
+ return data.status ?? null;
1592
+ } catch {
1593
+ return null;
1594
+ }
1595
+ }
1596
+ async function refreshExistingRepoForTask(repoConfig, role, isFirstKickoff) {
1562
1597
  const { name, clonePath, defaultBranch } = repoConfig;
1563
1598
  const statusResult = await Bun.$`env -u GIT_DIR -u GIT_WORK_TREE -u GIT_INDEX_FILE -u GIT_PREFIX git -C ${clonePath} status --porcelain`.quiet();
1564
1599
  const statusOutput = statusResult.text().trim();
@@ -1575,13 +1610,24 @@ async function refreshExistingRepoForTask(repoConfig, role) {
1575
1610
  return `The repo "${name}" at ${clonePath} has uncommitted changes, but auto-stash failed: ${errorMsg}. A git pull was skipped to avoid losing work.`;
1576
1611
  }
1577
1612
  }
1613
+ const fetchSpec = `${defaultBranch}:refs/remotes/origin/${defaultBranch}`;
1614
+ const remoteRef = `refs/remotes/origin/${defaultBranch}`;
1578
1615
  try {
1579
- console.log(`[${role}] Refreshing ${name} from origin/${defaultBranch}...`);
1580
- const fetchSpec = `${defaultBranch}:refs/remotes/origin/${defaultBranch}`;
1581
- const remoteRef = `refs/remotes/origin/${defaultBranch}`;
1582
1616
  await Bun.$`env -u GIT_DIR -u GIT_WORK_TREE -u GIT_INDEX_FILE -u GIT_PREFIX git -C ${clonePath} fetch origin ${fetchSpec}`.quiet();
1583
- await Bun.$`env -u GIT_DIR -u GIT_WORK_TREE -u GIT_INDEX_FILE -u GIT_PREFIX git -C ${clonePath} merge --no-edit --no-stat ${remoteRef}`.quiet();
1584
- console.log(`[${role}] Refreshed ${name}`);
1617
+ if (isFirstKickoff) {
1618
+ console.log(`[${role}] First kickoff for ${name} — resetting to ${remoteRef}...`);
1619
+ try {
1620
+ await Bun.$`env -u GIT_DIR -u GIT_WORK_TREE -u GIT_INDEX_FILE -u GIT_PREFIX git -C ${clonePath} checkout ${defaultBranch}`.quiet();
1621
+ } catch {
1622
+ await Bun.$`env -u GIT_DIR -u GIT_WORK_TREE -u GIT_INDEX_FILE -u GIT_PREFIX git -C ${clonePath} checkout -B ${defaultBranch} ${remoteRef}`.quiet();
1623
+ }
1624
+ await Bun.$`env -u GIT_DIR -u GIT_WORK_TREE -u GIT_INDEX_FILE -u GIT_PREFIX git -C ${clonePath} reset --hard ${remoteRef}`.quiet();
1625
+ console.log(`[${role}] Reset ${name} to ${remoteRef}`);
1626
+ } else {
1627
+ console.log(`[${role}] Refreshing ${name} from ${remoteRef}...`);
1628
+ await Bun.$`env -u GIT_DIR -u GIT_WORK_TREE -u GIT_INDEX_FILE -u GIT_PREFIX git -C ${clonePath} merge --no-edit --no-stat ${remoteRef}`.quiet();
1629
+ console.log(`[${role}] Refreshed ${name}`);
1630
+ }
1585
1631
  return null;
1586
1632
  } catch (err) {
1587
1633
  const errorMsg = scrubSecrets(err.message);
@@ -1611,7 +1657,7 @@ async function installRepoHooksForTask(repoConfig, role) {
1611
1657
  console.warn(`[${role}] Could not install git hooks for ${repoConfig.name}: ${errorMsg}`);
1612
1658
  }
1613
1659
  }
1614
- async function ensureRepoForTask(repoConfig, role) {
1660
+ async function ensureRepoForTask(repoConfig, role, isFirstKickoff = false) {
1615
1661
  const { url, name, clonePath, defaultBranch } = repoConfig;
1616
1662
  try {
1617
1663
  const gitHeadExists = await Bun.file(`${clonePath}/.git/HEAD`).exists();
@@ -1632,7 +1678,7 @@ async function ensureRepoForTask(repoConfig, role) {
1632
1678
  console.log(`[${role}] Cloned ${name}`);
1633
1679
  } else {
1634
1680
  console.log(`[${role}] Repo ${name} already cloned at ${clonePath}`);
1635
- warning = await refreshExistingRepoForTask({ name, clonePath, defaultBranch }, role);
1681
+ warning = await refreshExistingRepoForTask({ name, clonePath, defaultBranch }, role, isFirstKickoff);
1636
1682
  }
1637
1683
  await installRepoHooksForTask(repoConfig, role);
1638
1684
  const claudeMd = await readClaudeMd(clonePath, role);
@@ -4510,7 +4556,7 @@ ${additionalSystemPrompt}` : basePrompt;
4510
4556
  clonePath: `/workspace/personal/repos/${task.vcsRepo.split("/").pop() || task.vcsRepo}`,
4511
4557
  defaultBranch: "main"
4512
4558
  };
4513
- const repoContext = await ensureRepoForTask(effectiveConfig, role);
4559
+ const repoContext = await ensureRepoForTask(effectiveConfig, role, false);
4514
4560
  if (repoContext?.clonePath) {
4515
4561
  resumeCwd = repoContext.clonePath;
4516
4562
  }
@@ -4740,7 +4786,8 @@ ${additionalSystemPrompt}` : basePrompt;
4740
4786
  clonePath: `/workspace/personal/repos/${taskVcsRepo.split("/").pop() || taskVcsRepo}`,
4741
4787
  defaultBranch: "main"
4742
4788
  };
4743
- const repoResult = await ensureRepoForTask(effectiveConfig, role);
4789
+ const isFirstKickoff = await isFirstKickoffTask(taskObj, (parentTaskId) => fetchTaskStatus(apiUrl, apiKey, parentTaskId));
4790
+ const repoResult = await ensureRepoForTask(effectiveConfig, role, isFirstKickoff);
4744
4791
  currentRepoContext = {
4745
4792
  ...repoResult,
4746
4793
  guidelines: repoConfig?.guidelines ?? null
@@ -9,11 +9,11 @@ import {
9
9
  getScriptVersion,
10
10
  listRelationalCredentialBindings,
11
11
  validateScriptImports
12
- } from "./cli-4f6vw5vy.js";
12
+ } from "./cli-3r5y6ayj.js";
13
13
  import {
14
14
  withSiblingAwareness,
15
15
  workflowContextKey
16
- } from "./cli-aqr96mny.js";
16
+ } from "./cli-0c3n0eba.js";
17
17
  import {
18
18
  getAppUrl
19
19
  } from "./cli-dh55d5fg.js";
@@ -62,7 +62,7 @@ import {
62
62
  telemetry,
63
63
  updateWorkflowRun,
64
64
  updateWorkflowRunStep
65
- } from "./cli-4ke1amr9.js";
65
+ } from "./cli-951w7c79.js";
66
66
  import {
67
67
  init_zod
68
68
  } from "./cli-q21d49ac.js";
@@ -2515,7 +2515,7 @@ class HumanInTheLoopExecutor extends BaseExecutor {
2515
2515
  }
2516
2516
  if (notification.channel === "slack") {
2517
2517
  try {
2518
- const { getSlackApp } = await import("./app-va5mr9yw.js");
2518
+ const { getSlackApp } = await import("./app-b05sgm02.js");
2519
2519
  const slackApp = getSlackApp();
2520
2520
  if (!slackApp) {
2521
2521
  console.warn("[HITL] Slack not initialized — cannot send notification");
@@ -2629,7 +2629,7 @@ class NotifyExecutor extends BaseExecutor {
2629
2629
  }
2630
2630
  }
2631
2631
  case "slack": {
2632
- const { getSlackApp } = await import("./app-va5mr9yw.js");
2632
+ const { getSlackApp } = await import("./app-b05sgm02.js");
2633
2633
  const app = getSlackApp();
2634
2634
  if (!app) {
2635
2635
  return {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getScriptApiTypes,
3
3
  require_typescript
4
- } from "./cli-4f6vw5vy.js";
4
+ } from "./cli-3r5y6ayj.js";
5
5
  import {
6
6
  deleteSwarmConfigByKey,
7
7
  getAgentById,
@@ -10,7 +10,7 @@ import {
10
10
  getSwarmConfigs,
11
11
  init_db,
12
12
  upsertSwarmConfig
13
- } from "./cli-4ke1amr9.js";
13
+ } from "./cli-951w7c79.js";
14
14
  import {
15
15
  init_secret_scrubber,
16
16
  scrubSecrets
@@ -468,6 +468,8 @@ export interface SwarmSdk {
468
468
  slack_startThread(args: { channelId: string; message: string }): Promise<unknown>;
469
469
  slack_uploadFile(args: Record<string, unknown>): Promise<unknown>;
470
470
  slack_downloadFile(args: { url: string }): Promise<unknown>;
471
+ slack_delete(args: { channelId: string; messageTs: string }): Promise<unknown>;
472
+ slack_update(args: { channelId: string; messageTs: string; message: string }): Promise<unknown>;
471
473
 
472
474
  // --- write: messaging (internal) ---
473
475
  message_post(args: { channel?: string; content: string; to?: string }): Promise<unknown>;
package/dist/cli.js CHANGED
@@ -64,7 +64,7 @@ var import_react = __toESM(require_react(), 1);
64
64
  // package.json
65
65
  var package_default = {
66
66
  name: "@desplega.ai/agent-swarm",
67
- version: "1.111.0",
67
+ version: "1.112.0",
68
68
  description: "Multi-agent orchestration for Claude Code, Codex, Gemini CLI, and other AI coding assistants",
69
69
  license: "MIT",
70
70
  author: "desplega.sh <contact@desplega.sh>",
@@ -645,7 +645,7 @@ function McpServer({ port, apiKey, dbPath }) {
645
645
  if (dbPath) {
646
646
  process.env.DATABASE_PATH = dbPath;
647
647
  }
648
- import("./http-gs6fk9sg.js").then(() => {
648
+ import("./http-xx9xptcs.js").then(() => {
649
649
  setStatus("running");
650
650
  }).catch((err) => {
651
651
  setStatus("error");
@@ -731,7 +731,7 @@ function WorkerRunner({
731
731
  }) {
732
732
  const { exit } = use_app_default();
733
733
  import_react.useEffect(() => {
734
- import("./worker-02y2r0r2.js").then(({ runWorker }) => runWorker({
734
+ import("./worker-40vq0pm8.js").then(({ runWorker }) => runWorker({
735
735
  prompt: prompt || undefined,
736
736
  yolo,
737
737
  systemPrompt: systemPrompt || undefined,
@@ -748,7 +748,7 @@ function WorkerRunner({
748
748
  function LeadRunner({ prompt, yolo, systemPrompt, systemPromptFile, additionalArgs }) {
749
749
  const { exit } = use_app_default();
750
750
  import_react.useEffect(() => {
751
- import("./lead-yjbmhj3g.js").then(({ runLead }) => runLead({
751
+ import("./lead-s790v7r0.js").then(({ runLead }) => runLead({
752
752
  prompt: prompt || undefined,
753
753
  yolo,
754
754
  systemPrompt: systemPrompt || undefined,
@@ -788,8 +788,8 @@ function LazyComponent({
788
788
  }
789
789
  return import_react.createElement(Component, props);
790
790
  }
791
- var loadOnboard = () => import("./onboard-sexatejh.js").then(({ Onboard }) => Onboard);
792
- var loadConnect = () => import("./setup-vm5vcc6c.js").then(({ Setup }) => Setup);
791
+ var loadOnboard = () => import("./onboard-jgqamqnw.js").then(({ Onboard }) => Onboard);
792
+ var loadConnect = () => import("./setup-8jfzkyzv.js").then(({ Setup }) => Setup);
793
793
  function UnknownCommand({ command }) {
794
794
  const { exit } = use_app_default();
795
795
  import_react.useEffect(() => {
@@ -902,7 +902,7 @@ ${binName} docs \u2014 v${package_default.version}
902
902
  }
903
903
  process.exit(0);
904
904
  } else if (args.command === "hook") {
905
- const { runHook } = await import("./hook-0p4q1tym.js");
905
+ const { runHook } = await import("./hook-rnkzw8vp.js");
906
906
  await runHook();
907
907
  } else if (args.command === "artifact") {
908
908
  const artifactArgs = process.argv.slice(process.argv.indexOf("artifact") + 1);
@@ -922,7 +922,7 @@ ${binName} docs \u2014 v${package_default.version}
922
922
  printHelp("scripts");
923
923
  process.exit(scriptsArgs[0] === "reembed" || args.showHelp ? 0 : 1);
924
924
  }
925
- const { runScriptsMaintenanceCommand } = await import("./maintenance-jbvy2bfg.js");
925
+ const { runScriptsMaintenanceCommand } = await import("./maintenance-420rmadb.js");
926
926
  await runScriptsMaintenanceCommand(scriptsArgs);
927
927
  console.log("Scripts re-embedded.");
928
928
  } else if (args.command === "codex-login") {
@@ -2,11 +2,11 @@ import {
2
2
  getAllAgents,
3
3
  getAllTasks,
4
4
  init_db
5
- } from "./cli-4ke1amr9.js";
5
+ } from "./cli-951w7c79.js";
6
6
  import"./cli-z2zcxes1.js";
7
7
  import"./cli-q21d49ac.js";
8
8
  import"./cli-anrj584m.js";
9
- import"./cli-kavm2cv5.js";
9
+ import"./cli-8f0dwca2.js";
10
10
  import"./cli-4j2mrzag.js";
11
11
  import"./cli-p9swy5t3.js";
12
12
 
@@ -385,11 +385,11 @@ import {
385
385
  upsertSkillFiles,
386
386
  upsertSwarmConfig,
387
387
  withFavoriteFlags
388
- } from "./cli-4ke1amr9.js";
388
+ } from "./cli-951w7c79.js";
389
389
  import"./cli-z2zcxes1.js";
390
390
  import"./cli-q21d49ac.js";
391
391
  import"./cli-anrj584m.js";
392
- import"./cli-kavm2cv5.js";
392
+ import"./cli-8f0dwca2.js";
393
393
  import"./cli-4j2mrzag.js";
394
394
  import"./cli-p9swy5t3.js";
395
395
  init_db();
@@ -3,24 +3,24 @@ import {
3
3
  getBufferMessageCount,
4
4
  instantFlush,
5
5
  wasEventSeen
6
- } from "./cli-y7v6e7yr.js";
6
+ } from "./cli-h9jx5mag.js";
7
7
  import {
8
8
  extractSlackMessageText,
9
9
  extractTaskFromMessage,
10
10
  hasOtherUserMention,
11
11
  routeMessage
12
- } from "./cli-xqzvygxp.js";
12
+ } from "./cli-76d1vtvq.js";
13
13
  import {
14
14
  registerTreeMessage
15
- } from "./cli-f1f82qgv.js";
15
+ } from "./cli-hm27prrc.js";
16
16
  import"./cli-rkndnn90.js";
17
17
  import"./cli-b0p7rfnd.js";
18
18
  import {
19
19
  enrichSlackUserEmail,
20
20
  resolveSlackUserId
21
- } from "./cli-jrmjxsnk.js";
22
- import"./cli-2b0ew5v8.js";
23
- import"./cli-0d404x64.js";
21
+ } from "./cli-30d2ct3k.js";
22
+ import"./cli-9p0qhead.js";
23
+ import"./cli-7xkwgkrs.js";
24
24
  import {
25
25
  buildTreeBlocks
26
26
  } from "./cli-6xd0bvf8.js";
@@ -28,7 +28,7 @@ import"./cli-wspgs9bt.js";
28
28
  import {
29
29
  createTaskWithSiblingAwareness,
30
30
  slackContextKey
31
- } from "./cli-aqr96mny.js";
31
+ } from "./cli-0c3n0eba.js";
32
32
  import"./cli-dh55d5fg.js";
33
33
  import {
34
34
  getAgentById,
@@ -39,11 +39,11 @@ import {
39
39
  init_db,
40
40
  init_resolver,
41
41
  resolveTemplate
42
- } from "./cli-4ke1amr9.js";
42
+ } from "./cli-951w7c79.js";
43
43
  import"./cli-z2zcxes1.js";
44
44
  import"./cli-q21d49ac.js";
45
45
  import"./cli-anrj584m.js";
46
- import"./cli-kavm2cv5.js";
46
+ import"./cli-8f0dwca2.js";
47
47
  import"./cli-4j2mrzag.js";
48
48
  import"./cli-e15jhafb.js";
49
49
  import {
@@ -30,7 +30,7 @@ import"./cli-anrj584m.js";
30
30
  import {
31
31
  init_package,
32
32
  package_default
33
- } from "./cli-kavm2cv5.js";
33
+ } from "./cli-8f0dwca2.js";
34
34
  import"./cli-4j2mrzag.js";
35
35
  import"./cli-xw7p4wkq.js";
36
36
  import"./cli-4wgngmwv.js";