@desplega.ai/agent-swarm 1.116.0 → 1.118.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 (113) hide show
  1. package/README.md +3 -2
  2. package/dist/{actions-brtj223f.js → actions-fsdthmby.js} +10 -8
  3. package/dist/{app-00sngzz7.js → app-d48rk7pp.js} +3 -3
  4. package/dist/{artifact-0874w6js.js → artifact-x7e6f41t.js} +1 -1
  5. package/dist/{assistant-j2ser3vg.js → assistant-nqwh132h.js} +13 -11
  6. package/dist/{boot-reembed-v4n0jphx.js → boot-reembed-vztw3kmn.js} +4 -4
  7. package/dist/{boot-reembed-fv3r1kqg.js → boot-reembed-z229xeg8.js} +3 -3
  8. package/dist/{boot-scrub-logs-72sy5z1r.js → boot-scrub-logs-yqpj4x5g.js} +2 -2
  9. package/dist/{cli-96nd7vgs.js → cli-20zj8pm5.js} +15 -10
  10. package/dist/{cli-cjmz7pp9.js → cli-2xp7h939.js} +3 -3
  11. package/dist/{cli-0h9yzvhe.js → cli-48qxfdv4.js} +5 -5
  12. package/dist/{cli-3ys55x7x.js → cli-4j0y68we.js} +2 -2
  13. package/dist/{cli-et9ab56s.js → cli-4xc1mc5x.js} +1 -1
  14. package/dist/{cli-rmyjzd8s.js → cli-60z5nrne.js} +1 -1
  15. package/dist/{cli-vb7g0zgk.js → cli-7g2e06cd.js} +2 -2
  16. package/dist/{cli-tw7xjzk7.js → cli-8j4fe76y.js} +1 -1
  17. package/dist/{cli-50czs4qy.js → cli-er0djds9.js} +1 -1
  18. package/dist/{cli-k4yp6w9w.js → cli-f5qm42kd.js} +995 -112
  19. package/dist/{cli-x9q6bghe.js → cli-g97ggbfg.js} +2 -2
  20. package/dist/{cli-xj6zntcq.js → cli-gwyaqc05.js} +264 -68
  21. package/dist/{cli-9ys4kdd4.js → cli-hy7qcdk0.js} +1 -1
  22. package/dist/{cli-5g3hx9cc.js → cli-jzyjzstk.js} +2 -2
  23. package/dist/{cli-vggz87j8.js → cli-k01wm82x.js} +10 -8
  24. package/dist/{cli-n9kkkmtm.js → cli-m3ybbmsm.js} +2 -76
  25. package/dist/{cli-qnnbe59j.js → cli-nh866k5t.js} +1 -1
  26. package/dist/{cli-xm2tyqfe.js → cli-ppwm8c6e.js} +11 -0
  27. package/dist/{cli-2rxckty2.js → cli-r6yjwx5h.js} +2 -2
  28. package/dist/{cli-vnvv6hvm.js → cli-sqp2bsy0.js} +1 -1
  29. package/dist/{cli-ty7qe0vp.js → cli-st3frvaf.js} +4 -4
  30. package/dist/{cli-b4hf0g0x.js → cli-tzs999rv.js} +1 -1
  31. package/dist/{cli-0pwtr9f0.js → cli-xck0rrm4.js} +1 -1
  32. package/dist/{cli-x4trwrcr.js → cli-yqc51axp.js} +9 -6
  33. package/dist/cli.js +10 -10
  34. package/dist/{commands-4jt6hvc9.js → commands-f6n33dnc.js} +2 -2
  35. package/dist/{db-1p5e9zj8.js → db-h2rfvs2w.js} +16 -2
  36. package/dist/{handlers-5n9gq3ek.js → handlers-tr8hkw59.js} +13 -11
  37. package/dist/{hook-ny4kv3r0.js → hook-h5337q9c.js} +1 -1
  38. package/dist/{http-bb3pva4d.js → http-6q6znnpp.js} +450 -84
  39. package/dist/{index-nzghbv06.js → index-5mxp943z.js} +10 -10
  40. package/dist/{index-ajkj0aaf.js → index-bm63k39y.js} +9 -9
  41. package/dist/{index-dpcmhqy0.js → index-qps3frqq.js} +45 -24
  42. package/dist/{index-mheeg078.js → index-sqkw2pk3.js} +8 -8
  43. package/dist/{keepalive-vbgjzp3y.js → keepalive-zajb254h.js} +4 -4
  44. package/dist/{lead-98bg3kfz.js → lead-k73hvgv5.js} +18 -18
  45. package/dist/{maintenance-1fp5fz08.js → maintenance-8s5pwjje.js} +4 -4
  46. package/dist/{oauth-refresh-sweep-91s6j3dq.js → oauth-refresh-sweep-5qaqbyfx.js} +3 -3
  47. package/dist/{onboard-n32hf2t4.js → onboard-eds531mw.js} +2 -2
  48. package/dist/{otel-impl-j42cnqry.js → otel-impl-93kctmj7.js} +1 -1
  49. package/dist/{pricing-refresh-56gkeqaw.js → pricing-refresh-gn72ypzm.js} +4 -4
  50. package/dist/{rbac-roles-c1ky22v2.js → rbac-roles-26qs5ckt.js} +2 -2
  51. package/dist/{rbac-roles-xwt8319h.js → rbac-roles-r01mzk0t.js} +3 -3
  52. package/dist/{seed-pricing-qagjzjqj.js → seed-pricing-299zvwxd.js} +3 -3
  53. package/dist/{setup-1kk84v0w.js → setup-fhysh4dg.js} +2 -2
  54. package/dist/{worker-bmjqg3c6.js → worker-ykxg0ttd.js} +18 -18
  55. package/openapi.json +369 -4
  56. package/package.json +1 -1
  57. package/plugin/skills/pages/SKILL.md +7 -0
  58. package/src/artifact-sdk/browser-sdk.ts +12 -0
  59. package/src/assets/key.ts +115 -0
  60. package/src/be/asset-key-audit.ts +210 -0
  61. package/src/be/asset-key-auth.ts +44 -0
  62. package/src/be/db.ts +810 -155
  63. package/src/be/migrations/115_asset_namespace_keys.sql +400 -0
  64. package/src/be/migrations/116_favorite_principal_scope.sql +38 -0
  65. package/src/be/seed-skills/index.ts +7 -0
  66. package/src/http/all-routes.ts +1 -0
  67. package/src/http/assets.ts +238 -0
  68. package/src/http/favorite-owner.ts +39 -0
  69. package/src/http/favorites.ts +17 -16
  70. package/src/http/index.ts +2 -0
  71. package/src/http/pages.ts +54 -13
  72. package/src/http/schedules.ts +44 -5
  73. package/src/http/stats.ts +3 -3
  74. package/src/http/tasks.ts +25 -1
  75. package/src/http/workflows.ts +52 -6
  76. package/src/scheduler/scheduler.test.ts +1 -0
  77. package/src/scheduler/scheduler.ts +1 -0
  78. package/src/server-user.ts +1 -0
  79. package/src/tasks/slack-routing.ts +147 -0
  80. package/src/tests/approval-requests.test.ts +36 -0
  81. package/src/tests/artifact-sdk.test.ts +9 -1
  82. package/src/tests/asset-key-api.test.ts +277 -0
  83. package/src/tests/asset-key-invariants.test.ts +233 -0
  84. package/src/tests/asset-key-mcp.test.ts +168 -0
  85. package/src/tests/asset-key-migration.test.ts +336 -0
  86. package/src/tests/asset-key-normalization.test.ts +68 -0
  87. package/src/tests/favorites.test.ts +37 -0
  88. package/src/tests/http-api-integration.test.ts +38 -0
  89. package/src/tests/pages-complete-fetch.test.ts +54 -0
  90. package/src/tests/pool-affinity.test.ts +3 -1
  91. package/src/tests/script-connections.test.ts +2 -0
  92. package/src/tests/send-task-slack-routing-guard.test.ts +355 -0
  93. package/src/tests/slack-metadata-inheritance.test.ts +279 -1
  94. package/src/tests/slack-routing-guard.test.ts +164 -0
  95. package/src/tests/system-default-skills.test.ts +6 -0
  96. package/src/tests/ui-swarm-sdk.test.ts +81 -0
  97. package/src/tests/workflow-workspace.test.ts +2 -0
  98. package/src/tools/create-page.ts +32 -1
  99. package/src/tools/get-tasks.ts +11 -1
  100. package/src/tools/schedules/create-schedule.ts +14 -1
  101. package/src/tools/schedules/list-schedules.ts +8 -0
  102. package/src/tools/schedules/patch-schedule.ts +11 -1
  103. package/src/tools/schedules/update-schedule.ts +11 -1
  104. package/src/tools/send-task.ts +174 -81
  105. package/src/tools/task-action.ts +24 -0
  106. package/src/tools/workflows/create-workflow.ts +19 -1
  107. package/src/tools/workflows/list-workflows.ts +5 -3
  108. package/src/tools/workflows/patch-workflow.ts +7 -2
  109. package/src/tools/workflows/update-workflow.ts +6 -0
  110. package/src/types.ts +64 -2
  111. package/src/workflows/executors/agent-task.ts +4 -1
  112. package/templates/skills/asset-namespaces/config.json +14 -0
  113. package/templates/skills/asset-namespaces/content.md +60 -0
package/README.md CHANGED
@@ -127,11 +127,12 @@ Check [our templates](https://templates.agent-swarm.dev) for a quick start.
127
127
  - **Multi-channel inputs** — Slack, GitHub, GitLab, email, WhatsApp, Linear, Jira, and the HTTP API all create tasks. [Integrations](#integrations)
128
128
  - **Workflow engine with Human-in-the-Loop** — DAG-based automation with approval gates, retries, and structured I/O. [Workflows →](https://docs.agent-swarm.dev/docs/concepts/workflows)
129
129
  - **Scheduled & recurring tasks** — cron-based automation for standing work, with schedules that can target agent tasks, workflows, or catalog scripts. [Scheduling →](https://docs.agent-swarm.dev/docs/concepts/scheduling)
130
+ - **Asset namespaces** — group tasks, workflows, schedules, pages, and mapped files under canonical shared or personal keys, with inheritance, subtree filtering, audited moves, and cross-entity discovery. [Asset namespaces →](https://docs.agent-swarm.dev/docs/guides/asset-namespaces)
130
131
  - **Durable script workflows** — launch background script runs, inspect their journals, and track them from the dashboard when a one-shot `script-run` is too small. [Guide →](https://docs.agent-swarm.dev/docs/guides/script-workflow-runs)
131
132
  - **Scripts as external APIs** — expose a saved script as a public `POST /api/x/script/<id>` endpoint with optional bearer auth, typed input validation, and per-endpoint usage tracking. [Guide →](https://docs.agent-swarm.dev/docs/guides/scripts-external-apis)
132
133
  - **Typed script API connections** — lead-managed OpenAPI, GraphQL, and MCP connections generate `ctx.api.*` / `ctx.mcp.*` clients for scripts, with credential bindings and OAuth-backed auth kept server-side. [Guide →](https://docs.agent-swarm.dev/docs/guides/script-connections)
133
134
  - **E2B-backed eval harness** — run a scenario × harness-config matrix against real swarm stacks, capture transcripts/artifacts, and grade outcomes with deterministic checks plus LLM or agentic judges. [Guide →](https://docs.agent-swarm.dev/docs/guides/evals-harness)
134
- - **Harness & LLM agnostic** — run with Claude Code, Claude Bridge, OpenAI Codex, pi-mono (Anthropic, OpenRouter, or Amazon Bedrock), Devin, Claude Managed Agents, raw LLMs, or opencode. Tasks, schedules, and workflow agent-task nodes can use portable `modelTier` intent (`smol`, `regular`, `smart`, `ultra`), and operators can set per-agent reasoning effort (`off` → `xhigh`) without changing task payloads. [Harness config →](https://docs.agent-swarm.dev/docs/guides/harness-configuration) · [Add a new provider →](https://docs.agent-swarm.dev/docs/guides/harness-providers)
135
+ - **Harness & LLM agnostic** — run with Claude Code, Claude Bridge, OpenAI Codex, pi-mono (Anthropic, OpenRouter, or Amazon Bedrock), Devin, Claude Managed Agents, raw LLMs, or opencode. Tasks, schedules, and workflow agent-task nodes can use portable `modelTier` intent (`smol`, `regular`, `smart`, `ultra`), and operators can set per-agent reasoning effort (`off` → `max`, where supported) without changing task payloads. [Harness config →](https://docs.agent-swarm.dev/docs/guides/harness-configuration) · [Add a new provider →](https://docs.agent-swarm.dev/docs/guides/harness-providers)
135
136
  - **OpenTelemetry traces plus OTLP cost/token metrics** — export API + worker traces and finalized session cost/token counters through the same OTLP pipeline for dashboarding in SigNoz, Datadog, Tempo, or another compatible backend. [Observability →](https://docs.agent-swarm.dev/docs/guides/observability-opentelemetry)
136
137
  - **Follow-up continuity across all harnesses** — child tasks inherit a bounded prior-task context preamble built from the task chain, so continuity survives restarts and works the same across every provider. [Task lifecycle →](https://docs.agent-swarm.dev/docs/concepts/task-lifecycle)
137
138
  - **Skills & MCP servers** — reusable procedural knowledge, bundled skill reference files, and per-agent MCP servers with scope cascade. [MCP tools →](https://docs.agent-swarm.dev/docs/reference/mcp-tools)
@@ -139,7 +140,7 @@ Check [our templates](https://templates.agent-swarm.dev) for a quick start.
139
140
  - **Config-driven metrics dashboards** — define read-only SQL widgets, version them, and render them in the dashboard without shipping custom frontend code. [Metrics API →](https://docs.agent-swarm.dev/docs/api-reference/stats)
140
141
  - **DB-backed pages** — agents publish HTML or JSON pages (reports, dashboards, action specs) via `create_page`, remove stale pages with `delete-page`, and share them with public / authed / password modes, version history, view counters, diff helpers, and PDF export. [MCP tools → Pages](https://docs.agent-swarm.dev/docs/reference/mcp-tools#pages-tools)
141
142
  - **KV store** — Redis-like namespaced key/value store with auto-scoped context (Slack thread / PR / Linear issue / page). [MCP tools → KV](https://docs.agent-swarm.dev/docs/reference/mcp-tools#kv-tools)
142
- - **Real-time dashboard + task attachments** — monitor agents, tasks, and inter-agent chat, create tasks with uploaded files from the sessions composer, and preview task attachments inline above session prompts. [app.agent-swarm.dev →](https://app.agent-swarm.dev)
143
+ - **Real-time dashboard + task attachments** — monitor agents, tasks, and inter-agent chat, filter Pages, Approval Requests, and workflow definitions with URL-backed search/facets, create tasks with uploaded files from the sessions composer, and preview task attachments inline above session prompts. [app.agent-swarm.dev →](https://app.agent-swarm.dev)
143
144
 
144
145
  ## Quick Start
145
146
 
@@ -1,33 +1,35 @@
1
1
  import {
2
2
  resolveSlackUserId
3
- } from "./cli-vb7g0zgk.js";
4
- import"./cli-rmyjzd8s.js";
3
+ } from "./cli-7g2e06cd.js";
4
+ import"./cli-60z5nrne.js";
5
5
  import {
6
6
  buildCancelledBlocks,
7
7
  getTaskLink
8
8
  } from "./cli-ma04faw5.js";
9
9
  import"./cli-wspgs9bt.js";
10
10
  import {
11
- createTaskWithSiblingAwareness,
12
- slackContextKey
13
- } from "./cli-n9kkkmtm.js";
11
+ createTaskWithSiblingAwareness
12
+ } from "./cli-m3ybbmsm.js";
14
13
  import"./cli-dh55d5fg.js";
15
14
  import {
16
15
  cancelTask,
17
16
  getAgentById,
18
17
  getLeadAgent,
19
18
  getTaskById,
20
- init_db
21
- } from "./cli-k4yp6w9w.js";
19
+ init_context_key,
20
+ init_db,
21
+ slackContextKey
22
+ } from "./cli-f5qm42kd.js";
22
23
  import"./cli-z2zcxes1.js";
23
24
  import"./cli-bw80ck94.js";
24
25
  import"./cli-xz9aq0rf.js";
25
- import"./cli-qnnbe59j.js";
26
+ import"./cli-nh866k5t.js";
26
27
  import"./cli-4j2mrzag.js";
27
28
  import"./cli-p9swy5t3.js";
28
29
 
29
30
  // src/slack/actions.ts
30
31
  init_db();
32
+ init_context_key();
31
33
  function registerActionHandlers(app) {
32
34
  app.action("view_task_logs", async ({ ack }) => {
33
35
  await ack();
@@ -3,17 +3,17 @@ import {
3
3
  initSlackApp,
4
4
  startSlackApp,
5
5
  stopSlackApp
6
- } from "./cli-0h9yzvhe.js";
6
+ } from "./cli-48qxfdv4.js";
7
7
  import"./cli-rkndnn90.js";
8
8
  import"./cli-b0p7rfnd.js";
9
9
  import"./cli-ma04faw5.js";
10
10
  import"./cli-wspgs9bt.js";
11
11
  import"./cli-dh55d5fg.js";
12
- import"./cli-k4yp6w9w.js";
12
+ import"./cli-f5qm42kd.js";
13
13
  import"./cli-z2zcxes1.js";
14
14
  import"./cli-bw80ck94.js";
15
15
  import"./cli-xz9aq0rf.js";
16
- import"./cli-qnnbe59j.js";
16
+ import"./cli-nh866k5t.js";
17
17
  import"./cli-4j2mrzag.js";
18
18
  import"./cli-e15jhafb.js";
19
19
  import"./cli-7wmybrt5.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  BROWSER_SDK_JS
3
- } from "./cli-xm2tyqfe.js";
3
+ } from "./cli-ppwm8c6e.js";
4
4
  import {
5
5
  getApiKey
6
6
  } from "./cli-f14fvzag.js";
@@ -1,39 +1,40 @@
1
1
  import {
2
2
  bufferThreadMessage,
3
3
  wasEventSeen
4
- } from "./cli-vggz87j8.js";
4
+ } from "./cli-k01wm82x.js";
5
5
  import {
6
6
  hasOtherUserMention
7
- } from "./cli-et9ab56s.js";
7
+ } from "./cli-4xc1mc5x.js";
8
8
  import {
9
9
  require_dist
10
- } from "./cli-0h9yzvhe.js";
10
+ } from "./cli-48qxfdv4.js";
11
11
  import"./cli-rkndnn90.js";
12
12
  import"./cli-b0p7rfnd.js";
13
13
  import {
14
14
  resolveSlackUserId,
15
15
  rewriteSlackMentions
16
- } from "./cli-vb7g0zgk.js";
17
- import"./cli-rmyjzd8s.js";
16
+ } from "./cli-7g2e06cd.js";
17
+ import"./cli-60z5nrne.js";
18
18
  import"./cli-ma04faw5.js";
19
19
  import"./cli-wspgs9bt.js";
20
20
  import {
21
- createTaskWithSiblingAwareness,
22
- slackContextKey
23
- } from "./cli-n9kkkmtm.js";
21
+ createTaskWithSiblingAwareness
22
+ } from "./cli-m3ybbmsm.js";
24
23
  import"./cli-dh55d5fg.js";
25
24
  import {
26
25
  getAgentWorkingOnThread,
27
26
  getLeadAgent,
28
27
  getMostRecentTaskInThread,
28
+ init_context_key,
29
29
  init_db,
30
30
  init_resolver,
31
- resolveTemplate
32
- } from "./cli-k4yp6w9w.js";
31
+ resolveTemplate,
32
+ slackContextKey
33
+ } from "./cli-f5qm42kd.js";
33
34
  import"./cli-z2zcxes1.js";
34
35
  import"./cli-bw80ck94.js";
35
36
  import"./cli-xz9aq0rf.js";
36
- import"./cli-qnnbe59j.js";
37
+ import"./cli-nh866k5t.js";
37
38
  import"./cli-4j2mrzag.js";
38
39
  import"./cli-e15jhafb.js";
39
40
  import"./cli-7wmybrt5.js";
@@ -44,6 +45,7 @@ import {
44
45
  // src/slack/assistant.ts
45
46
  init_db();
46
47
  init_resolver();
48
+ init_context_key();
47
49
  var import_bolt = __toESM(require_dist(), 1);
48
50
  var additiveSlack = process.env.ADDITIVE_SLACK === "true";
49
51
  var cachedBotUserId = null;
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  embedScript,
3
3
  embeddingProvider
4
- } from "./cli-5g3hx9cc.js";
5
- import"./cli-vnvv6hvm.js";
4
+ } from "./cli-jzyjzstk.js";
5
+ import"./cli-sqp2bsy0.js";
6
6
  import"./cli-q25ejbyn.js";
7
7
  import {
8
8
  getDb,
9
9
  init_db
10
- } from "./cli-k4yp6w9w.js";
10
+ } from "./cli-f5qm42kd.js";
11
11
  import"./cli-z2zcxes1.js";
12
12
  import"./cli-bw80ck94.js";
13
13
  import"./cli-xz9aq0rf.js";
14
- import"./cli-qnnbe59j.js";
14
+ import"./cli-nh866k5t.js";
15
15
  import"./cli-4j2mrzag.js";
16
16
  import"./cli-p9swy5t3.js";
17
17
 
@@ -3,16 +3,16 @@ import {
3
3
  getEmbeddingProvider,
4
4
  getMemoryStore,
5
5
  init_constants
6
- } from "./cli-vnvv6hvm.js";
6
+ } from "./cli-sqp2bsy0.js";
7
7
  import"./cli-q25ejbyn.js";
8
8
  import {
9
9
  getDb,
10
10
  init_db
11
- } from "./cli-k4yp6w9w.js";
11
+ } from "./cli-f5qm42kd.js";
12
12
  import"./cli-z2zcxes1.js";
13
13
  import"./cli-bw80ck94.js";
14
14
  import"./cli-xz9aq0rf.js";
15
- import"./cli-qnnbe59j.js";
15
+ import"./cli-nh866k5t.js";
16
16
  import"./cli-4j2mrzag.js";
17
17
  import"./cli-p9swy5t3.js";
18
18
 
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getDb,
3
3
  init_db
4
- } from "./cli-k4yp6w9w.js";
4
+ } from "./cli-f5qm42kd.js";
5
5
  import"./cli-z2zcxes1.js";
6
6
  import"./cli-bw80ck94.js";
7
7
  import"./cli-xz9aq0rf.js";
8
- import"./cli-qnnbe59j.js";
8
+ import"./cli-nh866k5t.js";
9
9
  import {
10
10
  init_secret_scrubber,
11
11
  scrubSecrets
@@ -11,18 +11,17 @@ import {
11
11
  getScriptVersion,
12
12
  listRelationalCredentialBindings,
13
13
  validateScriptImports
14
- } from "./cli-x9q6bghe.js";
14
+ } from "./cli-g97ggbfg.js";
15
15
  import {
16
16
  ensureTokenOrThrow,
17
17
  getOAuthApp,
18
18
  getOAuthTokens,
19
19
  isTokenExpiringSoon,
20
20
  oauthAppRowToProviderConfig
21
- } from "./cli-0pwtr9f0.js";
21
+ } from "./cli-xck0rrm4.js";
22
22
  import {
23
- withSiblingAwareness,
24
- workflowContextKey
25
- } from "./cli-n9kkkmtm.js";
23
+ withSiblingAwareness
24
+ } from "./cli-m3ybbmsm.js";
26
25
  import {
27
26
  getAppUrl
28
27
  } from "./cli-dh55d5fg.js";
@@ -60,6 +59,7 @@ import {
60
59
  getWorkflowRunStepsByRunId,
61
60
  getWorkflowVersions,
62
61
  getWorkflowsByScheduleId,
62
+ init_context_key,
63
63
  init_db,
64
64
  init_telemetry,
65
65
  init_template,
@@ -70,8 +70,9 @@ import {
70
70
  splitLegacyModelAlias,
71
71
  telemetry,
72
72
  updateWorkflowRun,
73
- updateWorkflowRunStep
74
- } from "./cli-k4yp6w9w.js";
73
+ updateWorkflowRunStep,
74
+ workflowContextKey
75
+ } from "./cli-f5qm42kd.js";
75
76
  import {
76
77
  init_zod
77
78
  } from "./cli-bw80ck94.js";
@@ -2323,6 +2324,7 @@ init_zod();
2323
2324
 
2324
2325
  // src/workflows/executors/agent-task.ts
2325
2326
  init_zod();
2327
+ init_context_key();
2326
2328
  init_types();
2327
2329
  var AgentTaskConfigSchema = exports_external.object({
2328
2330
  template: exports_external.string(),
@@ -2372,16 +2374,19 @@ class AgentTaskExecutor extends BaseExecutor {
2372
2374
  }
2373
2375
  let effectiveDir = config.dir;
2374
2376
  let effectiveVcsRepo = config.vcsRepo;
2375
- if ((!effectiveDir || !effectiveVcsRepo) && meta.workflowId) {
2377
+ let effectiveKey;
2378
+ if (meta.workflowId) {
2376
2379
  const workflow = db.getWorkflow(meta.workflowId);
2377
2380
  if (workflow) {
2378
2381
  if (!effectiveDir && workflow.dir)
2379
2382
  effectiveDir = workflow.dir;
2380
2383
  if (!effectiveVcsRepo && workflow.vcsRepo)
2381
2384
  effectiveVcsRepo = workflow.vcsRepo;
2385
+ effectiveKey = workflow.key;
2382
2386
  }
2383
2387
  }
2384
2388
  const { description: taskDescription, options: taskOptions } = withSiblingAwareness(config.template, {
2389
+ key: effectiveKey,
2385
2390
  agentId: config.agentId ?? null,
2386
2391
  source: "workflow",
2387
2392
  tags: config.tags,
@@ -2612,7 +2617,7 @@ class HumanInTheLoopExecutor extends BaseExecutor {
2612
2617
  }
2613
2618
  if (notification.channel === "slack") {
2614
2619
  try {
2615
- const { getSlackApp } = await import("./app-00sngzz7.js");
2620
+ const { getSlackApp } = await import("./app-d48rk7pp.js");
2616
2621
  const slackApp = getSlackApp();
2617
2622
  if (!slackApp) {
2618
2623
  console.warn("[HITL] Slack not initialized — cannot send notification");
@@ -2726,7 +2731,7 @@ class NotifyExecutor extends BaseExecutor {
2726
2731
  }
2727
2732
  }
2728
2733
  case "slack": {
2729
- const { getSlackApp } = await import("./app-00sngzz7.js");
2734
+ const { getSlackApp } = await import("./app-d48rk7pp.js");
2730
2735
  const app = getSlackApp();
2731
2736
  if (!app) {
2732
2737
  return {
@@ -7,11 +7,11 @@ import {
7
7
  getPinCandidateAgent,
8
8
  getResumeGeneration,
9
9
  repointTrackerSyncBySwarmId
10
- } from "./cli-9ys4kdd4.js";
10
+ } from "./cli-hy7qcdk0.js";
11
11
  import {
12
12
  getExecutorRegistry,
13
13
  recoverIncompleteRuns
14
- } from "./cli-96nd7vgs.js";
14
+ } from "./cli-20zj8pm5.js";
15
15
  import {
16
16
  MAX_EMPTY_POLLS,
17
17
  assignUnassignedTaskPending,
@@ -51,7 +51,7 @@ import {
51
51
  resolveTemplate,
52
52
  supersedeTask,
53
53
  updateAgentStatus
54
- } from "./cli-k4yp6w9w.js";
54
+ } from "./cli-f5qm42kd.js";
55
55
 
56
56
  // src/heartbeat/heartbeat.ts
57
57
  init_db();
@@ -27,7 +27,7 @@ import {
27
27
  getTaskById,
28
28
  init_db,
29
29
  setSlackMessageTracking
30
- } from "./cli-k4yp6w9w.js";
30
+ } from "./cli-f5qm42kd.js";
31
31
  import {
32
32
  require_receiver,
33
33
  require_sender,
@@ -55073,13 +55073,13 @@ async function initSlackApp() {
55073
55073
  socketMode: true,
55074
55074
  logLevel: import_bolt.LogLevel.DEBUG
55075
55075
  });
55076
- const { registerMessageHandler } = await import("./handlers-5n9gq3ek.js");
55077
- const { registerCommandHandler } = await import("./commands-4jt6hvc9.js");
55078
- const { registerActionHandlers } = await import("./actions-brtj223f.js");
55076
+ const { registerMessageHandler } = await import("./handlers-tr8hkw59.js");
55077
+ const { registerCommandHandler } = await import("./commands-f6n33dnc.js");
55078
+ const { registerActionHandlers } = await import("./actions-fsdthmby.js");
55079
55079
  registerMessageHandler(app);
55080
55080
  registerCommandHandler(app);
55081
55081
  registerActionHandlers(app);
55082
- const { createAssistant } = await import("./assistant-j2ser3vg.js");
55082
+ const { createAssistant } = await import("./assistant-nqwh132h.js");
55083
55083
  app.assistant(createAssistant());
55084
55084
  return app;
55085
55085
  }
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  buildModelsDevSeedRows
3
- } from "./cli-tw7xjzk7.js";
3
+ } from "./cli-8j4fe76y.js";
4
4
  import {
5
5
  createLogEntry,
6
6
  getActivePricingRow,
7
7
  getDb,
8
8
  init_db,
9
9
  insertPricingRow
10
- } from "./cli-k4yp6w9w.js";
10
+ } from "./cli-f5qm42kd.js";
11
11
  import {
12
12
  init_secret_scrubber,
13
13
  scrubSecrets
@@ -3,7 +3,7 @@ import {
3
3
  getAgentWorkingOnThread,
4
4
  getAllAgents,
5
5
  init_db
6
- } from "./cli-k4yp6w9w.js";
6
+ } from "./cli-f5qm42kd.js";
7
7
 
8
8
  // src/slack/router.ts
9
9
  init_db();
@@ -4,7 +4,7 @@ import {
4
4
  incrKv,
5
5
  init_db,
6
6
  upsertKv
7
- } from "./cli-k4yp6w9w.js";
7
+ } from "./cli-f5qm42kd.js";
8
8
 
9
9
  // src/be/users.ts
10
10
  init_db();
@@ -4,12 +4,12 @@ import {
4
4
  linkIdentity,
5
5
  recordUnmappedIdentity,
6
6
  resolveIdentity
7
- } from "./cli-rmyjzd8s.js";
7
+ } from "./cli-60z5nrne.js";
8
8
  import {
9
9
  getKv,
10
10
  init_db,
11
11
  upsertKv
12
- } from "./cli-k4yp6w9w.js";
12
+ } from "./cli-f5qm42kd.js";
13
13
 
14
14
  // src/slack/enrich.ts
15
15
  init_db();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getDb,
3
3
  init_db
4
- } from "./cli-k4yp6w9w.js";
4
+ } from "./cli-f5qm42kd.js";
5
5
 
6
6
  // src/be/seed-pricing.ts
7
7
  init_db();
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  getDb,
6
6
  init_db
7
- } from "./cli-k4yp6w9w.js";
7
+ } from "./cli-f5qm42kd.js";
8
8
 
9
9
  // src/be/rbac-roles.ts
10
10
  init_db();