@desplega.ai/agent-swarm 1.135.1 → 1.136.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.
- package/dist/{actions-cdtyz12q.js → actions-agcbc8nd.js} +6 -6
- package/dist/{anthropic-messages-706yad38.js → anthropic-messages-pm7pp23c.js} +36 -23
- package/dist/{app-bsbct708.js → app-g2s78xya.js} +3 -3
- package/dist/{assistant-139yzd1t.js → assistant-yd3jkb9d.js} +8 -8
- package/dist/{azure-openai-responses-40z2astx.js → azure-openai-responses-cwesc845.js} +13 -4
- package/dist/{boot-reembed-q7f385st.js → boot-reembed-6spqw4q0.js} +3 -3
- package/dist/{boot-reembed-gdzp4g2k.js → boot-reembed-b22s9w5x.js} +4 -4
- package/dist/{boot-scrub-logs-ammdkvre.js → boot-scrub-logs-6h3cqkc0.js} +2 -2
- package/dist/{claude-adapter-h67y60dz.js → claude-adapter-ng5y8zd7.js} +5 -5
- package/dist/{claude-managed-adapter-m2v2e90a.js → claude-managed-adapter-5zr3n86v.js} +2 -2
- package/dist/{cli-77vf7z36.js → cli-0crn5kaz.js} +7 -16
- package/dist/cli-0v7jxbvz.js +6724 -0
- package/dist/{cli-dntm4d6r.js → cli-35jknh9e.js} +5 -5
- package/dist/{cli-5vmvkwey.js → cli-3y553gws.js} +1 -1
- package/dist/{cli-6t91v11y.js → cli-4gzv54ss.js} +15 -6
- package/dist/{cli-j6fpcrdk.js → cli-4r4jkqep.js} +6 -6
- package/dist/{cli-17e3ydca.js → cli-54ht104h.js} +37 -11
- package/dist/{cli-t46mkxd2.js → cli-5bnz1t86.js} +1 -1
- package/dist/{cli-47d0y52n.js → cli-68vayryq.js} +2 -2
- package/dist/{cli-mgnrknyg.js → cli-6gwgzdgw.js} +5 -5
- package/dist/{cli-x0mnesvr.js → cli-84vrhesc.js} +1 -1
- package/dist/{cli-j8bhw4a7.js → cli-8v57p983.js} +14 -14
- package/dist/{cli-vtz6yj3v.js → cli-9phjbffs.js} +1 -1
- package/dist/{cli-vew6xw8p.js → cli-ads0hfw2.js} +103 -36
- package/dist/{cli-0rgbgtft.js → cli-bnq8h7ea.js} +6 -6
- package/dist/{cli-6ewfzrgz.js → cli-d5ygfv18.js} +7 -6
- package/dist/{cli-pnqdak88.js → cli-edwrx42s.js} +1 -1
- package/dist/{cli-7vk1ztap.js → cli-fpjmcbhz.js} +4 -4
- package/dist/{cli-z3h9zvty.js → cli-gpdtxzar.js} +6 -4
- package/dist/{cli-zg86g3q8.js → cli-hz5hp6wn.js} +1 -1
- package/dist/{cli-96sytm77.js → cli-j7qp8gtf.js} +10 -6
- package/dist/{cli-xmyqv00z.js → cli-j8dggbcr.js} +17 -11
- package/dist/{cli-pbatxkne.js → cli-jjhnma34.js} +5 -5
- package/dist/{cli-h8htvhk5.js → cli-m3z53bed.js} +1 -1
- package/dist/{cli-mqwe8xz0.js → cli-mgef08pc.js} +1 -1
- package/dist/{cli-9nrnc45k.js → cli-qckgdqmr.js} +2 -2
- package/dist/{cli-y37pxs1m.js → cli-qhfkxrpg.js} +230 -105
- package/dist/{cli-tv9f1kyb.js → cli-s73zwwqn.js} +97 -7
- package/dist/{cli-3zmdzfjf.js → cli-s9gpxh9q.js} +17 -2
- package/dist/{cli-41wfr4tp.js → cli-spf767vc.js} +1 -1
- package/dist/{cli-ysehve35.js → cli-tee8w7tq.js} +1 -1
- package/dist/{cli-q46hkq2p.js → cli-tmn19cdz.js} +98 -24
- package/dist/{cli-gkfzvf7n.js → cli-y16cesaq.js} +2 -2
- package/dist/{cli-3ad3q6j0.js → cli-z6e8eqrm.js} +2 -2
- package/dist/cli.js +19 -19
- package/dist/{codex-adapter-8vhjvnp9.js → codex-adapter-kw11ps3j.js} +4 -4
- package/dist/{codex-session-runner-xeq8w3ea.js → codex-session-runner-sffb69v7.js} +4 -4
- package/dist/{commands-zhm1v98e.js → commands-0xxp4tz8.js} +2 -2
- package/dist/{db-q436srrz.js → db-0npp39zd.js} +6 -2
- package/dist/{google-generative-ai-b0wzss55.js → google-generative-ai-6xxdj4t3.js} +20 -13
- package/dist/{google-vertex-e8q4dpya.js → google-vertex-zma18wb0.js} +19 -12
- package/dist/{handlers-cpratgdt.js → handlers-5p7a1jx6.js} +15 -9
- package/dist/{hook-wfe2rdyd.js → hook-hpefr0a8.js} +5 -5
- package/dist/{hook-j1sd08ay.js → hook-jjpxn4se.js} +3 -3
- package/dist/{http-g13pqz5z.js → http-wfp33653.js} +332 -71
- package/dist/{index-jbgemxkn.js → index-17h657rg.js} +13 -9
- package/dist/index-g9tttwkm.js +26012 -0
- package/dist/{index-g99vy4xs.js → index-m2p7ctyh.js} +11 -11
- package/dist/{index-dde8asrx.js → index-racb4wfq.js} +10 -10
- package/dist/{index-zqjz0kf8.js → index-zh66wm65.js} +9 -9
- package/dist/{keepalive-ep0a9f7r.js → keepalive-wxjd633a.js} +4 -4
- package/dist/{lead-gsw42hv0.js → lead-359ec2z0.js} +29 -29
- package/dist/{maintenance-et8rr4t5.js → maintenance-rr03qjtb.js} +4 -4
- package/dist/{mistral-conversations-2njwdwhj.js → mistral-conversations-qdrnmrb8.js} +10 -3
- package/dist/{oauth-refresh-sweep-tk3qn7zr.js → oauth-refresh-sweep-jwj22yb8.js} +3 -3
- package/dist/{onboard-354g4580.js → onboard-asnhchcv.js} +2 -2
- package/dist/{openai-codex-responses-kt84eq86.js → openai-codex-responses-xxca1qr1.js} +9 -6
- package/dist/{openai-completions-kasahkpq.js → openai-completions-yzftqrft.js} +134 -70
- package/dist/{openai-responses-175qgngv.js → openai-responses-e4dcwm9g.js} +10 -4
- package/dist/{opencode-adapter-rar9676j.js → opencode-adapter-sx38y7f7.js} +3 -3
- package/dist/{otel-impl-7y3szdz5.js → otel-impl-54cra6mw.js} +21 -7
- package/dist/{pi-messages-txp9f97r.js → pi-messages-2d3e7egd.js} +1 -1
- package/dist/{pi-mono-adapter-6vmrr3g8.js → pi-mono-adapter-29g7axgj.js} +96532 -130961
- package/dist/{pricing-refresh-zra6kqmc.js → pricing-refresh-mkyy7c2y.js} +4 -4
- package/dist/{rbac-roles-vsfaw815.js → rbac-roles-ak56tr75.js} +2 -2
- package/dist/{rbac-roles-2g89azp9.js → rbac-roles-kb3afm95.js} +3 -3
- package/dist/{render-v2-41schhkc.js → render-v2-434asg49.js} +3 -3
- package/dist/{seed-pricing-hh2j4y52.js → seed-pricing-nbmd7ah8.js} +3 -3
- package/dist/{setup-vk6apbbf.js → setup-wh4qmjs4.js} +2 -2
- package/dist/{worker-zj8qahay.js → worker-j1d27tjv.js} +29 -29
- package/openapi.json +182 -6
- package/package.json +6 -6
- package/src/be/db-retention.ts +275 -0
- package/src/be/db.ts +100 -7
- package/src/be/migrations/runner.ts +78 -17
- package/src/be/seed/agent-fs-provision.ts +37 -8
- package/src/be/swarm-config-guard.ts +30 -0
- package/src/heartbeat/heartbeat.ts +21 -0
- package/src/http/db-query.ts +20 -5
- package/src/http/index.ts +33 -33
- package/src/http/route-def.ts +93 -4
- package/src/http/stats.ts +37 -1
- package/src/http/task-templates.ts +1 -1
- package/src/http/tasks.ts +93 -0
- package/src/http/utils.ts +94 -0
- package/src/http/workflow-events.ts +2 -2
- package/src/otel-impl.ts +21 -3
- package/src/otel.ts +15 -4
- package/src/providers/claude-managed-models.ts +2 -12
- package/src/providers/pricing-sources.md +5 -5
- package/src/slack/blocks.ts +1 -0
- package/src/slack/handlers.ts +7 -0
- package/src/tasks/sibling-awareness.ts +1 -0
- package/src/tasks/sibling-block.ts +17 -4
- package/src/tests/agent-fs-provision-seeder.test.ts +82 -1
- package/src/tests/artifact-sdk.test.ts +20 -15
- package/src/tests/claude-managed-adapter.test.ts +8 -16
- package/src/tests/db-query.test.ts +95 -0
- package/src/tests/db-retention.test.ts +344 -0
- package/src/tests/docs-index-footprint.test.js +146 -0
- package/src/tests/draft-task-dispatch-race.test.ts +189 -0
- package/src/tests/events-http.test.ts +70 -27
- package/src/tests/fixtures/compiled-migrations-boot.ts +47 -0
- package/src/tests/migration-bunfs-compat.test.ts +167 -0
- package/src/tests/otel-abort-span.test.ts +156 -0
- package/src/tests/otel-span-kind.test.ts +59 -0
- package/src/tests/promote-draft-task-route.test.ts +175 -0
- package/src/tests/route-def-find-route.test.ts +90 -4
- package/src/tests/sibling-block.test.ts +29 -1
- package/src/tests/slack-assistant-comention-production.test.ts +7 -1
- package/src/tests/steering-enabled.test.ts +6 -0
- package/src/tests/swarm-config-reserved-keys.test.ts +27 -0
- package/src/tools/db-query.ts +5 -4
- package/src/types.ts +2 -1
- package/templates/skills/swarm-scripts/SKILL.md +4 -0
- package/templates/skills/swarm-scripts/content.md +4 -0
- package/dist/{cli-snz3p4yf.js → cli-06ghj6pe.js} +6 -6
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAdditiveBuffer,
|
|
3
3
|
extractSlackMessageText
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-84vrhesc.js";
|
|
5
5
|
import {
|
|
6
6
|
rewriteSlackMentions
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-y16cesaq.js";
|
|
8
8
|
import {
|
|
9
9
|
createTaskWithSiblingAwareness
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-gpdtxzar.js";
|
|
11
11
|
import {
|
|
12
12
|
buildBufferFlushBlocks,
|
|
13
13
|
ensureSlackThreadTree,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
getSlackApp,
|
|
17
17
|
isSlackRenderV2Enabled,
|
|
18
18
|
registerTreeMessage
|
|
19
|
-
} from "./cli-
|
|
19
|
+
} from "./cli-d5ygfv18.js";
|
|
20
20
|
import {
|
|
21
21
|
createLogEntry,
|
|
22
22
|
getAgentById,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
init_steering,
|
|
30
30
|
requestSteering,
|
|
31
31
|
slackContextKey
|
|
32
|
-
} from "./cli-
|
|
32
|
+
} from "./cli-tmn19cdz.js";
|
|
33
33
|
import {
|
|
34
34
|
init_registry,
|
|
35
35
|
init_steering_enabled,
|
|
@@ -10,14 +10,14 @@ import {
|
|
|
10
10
|
getPinCandidateAgent,
|
|
11
11
|
getResumeGeneration,
|
|
12
12
|
repointTrackerSyncBySwarmId
|
|
13
|
-
} from "./cli-
|
|
13
|
+
} from "./cli-5bnz1t86.js";
|
|
14
14
|
import {
|
|
15
15
|
isMultiRuntimeEnabled
|
|
16
16
|
} from "./cli-qh4sqfws.js";
|
|
17
17
|
import {
|
|
18
18
|
getExecutorRegistry,
|
|
19
19
|
recoverIncompleteRuns
|
|
20
|
-
} from "./cli-
|
|
20
|
+
} from "./cli-jjhnma34.js";
|
|
21
21
|
import {
|
|
22
22
|
MAX_EMPTY_POLLS,
|
|
23
23
|
assignUnassignedTaskPending,
|
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
init_steering,
|
|
52
52
|
isAgentEligibleForTask,
|
|
53
53
|
isPoolAffinityEnforcementEnabled,
|
|
54
|
+
promoteAbandonedDraftTasks,
|
|
54
55
|
promotePendingSteeringForTask,
|
|
55
56
|
releaseStaleMentionProcessing,
|
|
56
57
|
releaseStaleOfferedTasksForOfflineAgents,
|
|
@@ -58,7 +59,7 @@ import {
|
|
|
58
59
|
releaseStaleReviewingTasks,
|
|
59
60
|
supersedeTask,
|
|
60
61
|
updateAgentStatus
|
|
61
|
-
} from "./cli-
|
|
62
|
+
} from "./cli-tmn19cdz.js";
|
|
62
63
|
import {
|
|
63
64
|
init_registry,
|
|
64
65
|
init_resolver,
|
|
@@ -189,6 +190,7 @@ function stallThresholdStaleHeartbeatMin() {
|
|
|
189
190
|
}
|
|
190
191
|
var STEERING_STALL_GRACE_MIN = Number(process.env.HEARTBEAT_STEERING_GRACE_MIN) || 5;
|
|
191
192
|
var STALE_CLEANUP_THRESHOLD_MINUTES = Number(process.env.HEARTBEAT_STALE_CLEANUP_MIN) || 30;
|
|
193
|
+
var DRAFT_TASK_TIMEOUT_MINUTES = Number(process.env.HEARTBEAT_DRAFT_TASK_TIMEOUT_MIN) || 5;
|
|
192
194
|
function maxAutoAssignPerSweep() {
|
|
193
195
|
const raw = process.env.HEARTBEAT_MAX_AUTO_ASSIGN?.trim();
|
|
194
196
|
if (!raw)
|
|
@@ -253,7 +255,8 @@ async function codeLevelTriage() {
|
|
|
253
255
|
inboxProcessing: 0,
|
|
254
256
|
workflowRuns: 0,
|
|
255
257
|
staleRuntimes: 0,
|
|
256
|
-
staleOfferedTasks: 0
|
|
258
|
+
staleOfferedTasks: 0,
|
|
259
|
+
abandonedDraftTasks: 0
|
|
257
260
|
}
|
|
258
261
|
};
|
|
259
262
|
findings.staleCleanup.staleRuntimes = (await expireStaleRuntimeInstances()).expired;
|
|
@@ -667,6 +670,7 @@ async function cleanupStaleResources(findings) {
|
|
|
667
670
|
findings.staleCleanup.reviewingTasks = await releaseStaleReviewingTasks(STALE_CLEANUP_THRESHOLD_MINUTES);
|
|
668
671
|
findings.staleCleanup.mentionProcessing = await releaseStaleMentionProcessing(STALE_CLEANUP_THRESHOLD_MINUTES);
|
|
669
672
|
findings.staleCleanup.inboxProcessing = await releaseStaleProcessingInbox(STALE_CLEANUP_THRESHOLD_MINUTES);
|
|
673
|
+
findings.staleCleanup.abandonedDraftTasks = await promoteAbandonedDraftTasks(DRAFT_TASK_TIMEOUT_MINUTES);
|
|
670
674
|
await escalateUnreclaimedResumes(findings);
|
|
671
675
|
await escalateStarvedPoolTasks(findings);
|
|
672
676
|
try {
|
|
@@ -876,7 +880,8 @@ async function runHeartbeatSweep() {
|
|
|
876
880
|
inboxProcessing: 0,
|
|
877
881
|
workflowRuns: 0,
|
|
878
882
|
staleRuntimes: 0,
|
|
879
|
-
staleOfferedTasks: 0
|
|
883
|
+
staleOfferedTasks: 0,
|
|
884
|
+
abandonedDraftTasks: 0
|
|
880
885
|
}
|
|
881
886
|
};
|
|
882
887
|
cleanupOnlyFindings.staleCleanup.staleRuntimes = (await expireStaleRuntimeInstances()).expired;
|
|
@@ -920,7 +925,8 @@ function logFindings(findings) {
|
|
|
920
925
|
mentionProcessing,
|
|
921
926
|
inboxProcessing,
|
|
922
927
|
workflowRuns,
|
|
923
|
-
staleOfferedTasks
|
|
928
|
+
staleOfferedTasks,
|
|
929
|
+
abandonedDraftTasks
|
|
924
930
|
} = findings.staleCleanup;
|
|
925
931
|
const totalCleanup = sessions + reviewingTasks + mentionProcessing + inboxProcessing + workflowRuns;
|
|
926
932
|
if (totalCleanup > 0) {
|
|
@@ -929,6 +935,9 @@ function logFindings(findings) {
|
|
|
929
935
|
if (staleOfferedTasks > 0) {
|
|
930
936
|
parts.push(`stale_offers_released=${staleOfferedTasks}`);
|
|
931
937
|
}
|
|
938
|
+
if (abandonedDraftTasks > 0) {
|
|
939
|
+
parts.push(`abandoned_drafts_promoted=${abandonedDraftTasks}`);
|
|
940
|
+
}
|
|
932
941
|
if (parts.length > 0) {
|
|
933
942
|
console.log(`[Heartbeat] Sweep complete: ${parts.join(", ")}`);
|
|
934
943
|
}
|
|
@@ -7,7 +7,7 @@ var package_default;
|
|
|
7
7
|
var init_package = __esm(() => {
|
|
8
8
|
package_default = {
|
|
9
9
|
name: "@desplega.ai/agent-swarm",
|
|
10
|
-
version: "1.
|
|
10
|
+
version: "1.136.0",
|
|
11
11
|
description: "agent-swarm.dev — an open-source operating system for AI work: a lead agent breaks goals into tasks, routes them to specialized workers such as Claude Code or Codex, runs each worker in an isolated container, and preserves shared memory, tools, schedules, and review gates so delegated work compounds across sessions.",
|
|
12
12
|
keywords: [
|
|
13
13
|
"agent-swarm.dev",
|
|
@@ -178,14 +178,14 @@ var init_package = __esm(() => {
|
|
|
178
178
|
"@aws-sdk/client-bedrock": "3.1048.0",
|
|
179
179
|
"@desplega.ai/business-use": "^0.4.2",
|
|
180
180
|
"@desplega.ai/localtunnel": "^2.2.0",
|
|
181
|
-
"@earendil-works/pi-agent-core": "^0.84.
|
|
182
|
-
"@earendil-works/pi-ai": "^0.84.
|
|
183
|
-
"@earendil-works/pi-coding-agent": "^0.84.
|
|
181
|
+
"@earendil-works/pi-agent-core": "^0.84.4",
|
|
182
|
+
"@earendil-works/pi-ai": "^0.84.4",
|
|
183
|
+
"@earendil-works/pi-coding-agent": "^0.84.4",
|
|
184
184
|
"@inkjs/ui": "^2.0.0",
|
|
185
185
|
"@linear/sdk": "^77.0.0",
|
|
186
186
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
187
|
-
"@openai/codex-sdk": "^0.
|
|
188
|
-
"@opencode-ai/sdk": "^1.18.
|
|
187
|
+
"@openai/codex-sdk": "^0.151.0",
|
|
188
|
+
"@opencode-ai/sdk": "^1.18.25",
|
|
189
189
|
"@openfort/openfort-node": "^0.9.1",
|
|
190
190
|
"@opentelemetry/api": "^1.9.1",
|
|
191
191
|
"@opentelemetry/exporter-metrics-otlp-http": "^0.218.0",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SYSTEM_COLUMN_KINDS,
|
|
3
3
|
listAppRecords
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-68vayryq.js";
|
|
5
5
|
import {
|
|
6
6
|
getScriptApiTypes,
|
|
7
7
|
getScriptMcpTypes,
|
|
8
8
|
require_typescript
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-bnq8h7ea.js";
|
|
10
10
|
import {
|
|
11
11
|
deleteSwarmConfigByKey,
|
|
12
12
|
getAgentById,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
getSwarmConfigs,
|
|
16
16
|
init_db,
|
|
17
17
|
upsertSwarmConfig
|
|
18
|
-
} from "./cli-
|
|
18
|
+
} from "./cli-tmn19cdz.js";
|
|
19
19
|
import {
|
|
20
20
|
init_secret_scrubber,
|
|
21
21
|
scrubSecrets
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
// src/be/seed/agent-fs-provision.ts
|
|
29
29
|
init_secret_scrubber();
|
|
30
30
|
init_db();
|
|
31
|
-
import { createHash } from "node:crypto";
|
|
31
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
32
32
|
var KIND = "agent-fs-provision";
|
|
33
33
|
var ITEM_KEY = "shared-org-drive";
|
|
34
34
|
var PROVISION_VERSION = 1;
|
|
@@ -37,6 +37,14 @@ var DRIVE_NAME = "shared";
|
|
|
37
37
|
var PROVISION_HASH_KEY = "AGENT_FS_PROVISION_HASH";
|
|
38
38
|
var API_KEY_CONFIG = "API_AGENT_FS_API_KEY";
|
|
39
39
|
var LEGACY_SHARED_KEY_CONFIG = "AGENT_FS_API_KEY";
|
|
40
|
+
|
|
41
|
+
class AgentFsRequestError extends Error {
|
|
42
|
+
status;
|
|
43
|
+
constructor(message, status) {
|
|
44
|
+
super(message);
|
|
45
|
+
this.status = status;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
40
48
|
var AGENT_FS_REQUEST_TIMEOUT_MS = 1e4;
|
|
41
49
|
var fetchImpl = globalThis.fetch;
|
|
42
50
|
var agentFsProvisionSeeder = {
|
|
@@ -169,12 +177,24 @@ async function ensureAgentFsCredentialsForAgent(agentId) {
|
|
|
169
177
|
};
|
|
170
178
|
}
|
|
171
179
|
const shared = await ensureAgentFsSharedProvisioning({ apiUrl });
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
180
|
+
let email = await resolveAgentEmail(agentId);
|
|
181
|
+
let registered;
|
|
182
|
+
try {
|
|
183
|
+
registered = await agentFsRequest(apiUrl, "/auth/register", {
|
|
184
|
+
method: "POST",
|
|
185
|
+
body: { email },
|
|
186
|
+
allowConflict: false
|
|
187
|
+
});
|
|
188
|
+
} catch (error) {
|
|
189
|
+
if (!(error instanceof AgentFsRequestError) || error.status !== 409)
|
|
190
|
+
throw error;
|
|
191
|
+
email = recoveryAgentEmail(email);
|
|
192
|
+
registered = await agentFsRequest(apiUrl, "/auth/register", {
|
|
193
|
+
method: "POST",
|
|
194
|
+
body: { email },
|
|
195
|
+
allowConflict: false
|
|
196
|
+
});
|
|
197
|
+
}
|
|
178
198
|
const apiKey = registered.apiKey ?? "";
|
|
179
199
|
if (!apiKey)
|
|
180
200
|
throw new Error(`agent-fs registration did not return an apiKey for ${agentId}`);
|
|
@@ -279,7 +299,7 @@ async function agentFsRequest(apiUrl, path, options = {}) {
|
|
|
279
299
|
});
|
|
280
300
|
if (!response.ok && !(options.allowConflict && response.status === 409)) {
|
|
281
301
|
const text = await response.text().catch(() => "");
|
|
282
|
-
throw new
|
|
302
|
+
throw new AgentFsRequestError(`agent-fs ${options.method ?? "GET"} ${path} failed: HTTP ${response.status}${text ? ` ${text}` : ""}`, response.status);
|
|
283
303
|
}
|
|
284
304
|
return await response.json().catch(() => ({}));
|
|
285
305
|
}
|
|
@@ -333,6 +353,12 @@ async function resolveAgentEmail(agentId) {
|
|
|
333
353
|
const domain = process.env.AGENT_FS_EMAIL_DOMAIN || "swarm.local";
|
|
334
354
|
return `${agentId}@${domain}`;
|
|
335
355
|
}
|
|
356
|
+
function recoveryAgentEmail(email) {
|
|
357
|
+
const separator = email.lastIndexOf("@");
|
|
358
|
+
const localPart = separator === -1 ? email : email.slice(0, separator);
|
|
359
|
+
const domain = separator === -1 ? "swarm.local" : email.slice(separator + 1);
|
|
360
|
+
return `${localPart}+recovery-${randomUUID()}@${domain}`;
|
|
361
|
+
}
|
|
336
362
|
function slugEmailPart(value) {
|
|
337
363
|
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 48) || "swarm";
|
|
338
364
|
}
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
restoreScratchScriptLastUsedIfUnchanged,
|
|
8
8
|
runScript,
|
|
9
9
|
touchScratchScriptLastUsed
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-bnq8h7ea.js";
|
|
11
11
|
import {
|
|
12
12
|
defaultAssetKey,
|
|
13
13
|
getDbClient,
|
|
14
14
|
getLeadAgent,
|
|
15
15
|
init_db,
|
|
16
16
|
init_key
|
|
17
|
-
} from "./cli-
|
|
17
|
+
} from "./cli-tmn19cdz.js";
|
|
18
18
|
import {
|
|
19
19
|
init_zod
|
|
20
20
|
} from "./cli-s35981d0.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
summarizeSession
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-qhfkxrpg.js";
|
|
4
4
|
import {
|
|
5
5
|
checkToolLoop,
|
|
6
6
|
clearToolHistory
|
|
@@ -27,14 +27,14 @@ import {
|
|
|
27
27
|
getMcpBaseUrl,
|
|
28
28
|
init_constants
|
|
29
29
|
} from "./cli-a1rrkrb4.js";
|
|
30
|
-
import {
|
|
31
|
-
init_package,
|
|
32
|
-
package_default
|
|
33
|
-
} from "./cli-j6fpcrdk.js";
|
|
34
30
|
import {
|
|
35
31
|
init_secret_scrubber,
|
|
36
32
|
scrubSecrets
|
|
37
33
|
} from "./cli-mkq1rk7b.js";
|
|
34
|
+
import {
|
|
35
|
+
init_package,
|
|
36
|
+
package_default
|
|
37
|
+
} from "./cli-4r4jkqep.js";
|
|
38
38
|
|
|
39
39
|
// src/hooks/hook.ts
|
|
40
40
|
init_package();
|
|
@@ -3,19 +3,19 @@ import {
|
|
|
3
3
|
} from "./cli-tdtmw1r5.js";
|
|
4
4
|
import {
|
|
5
5
|
checkCodexCredentials
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-j7qp8gtf.js";
|
|
7
7
|
import {
|
|
8
8
|
checkClaudeManagedCredentials
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-0crn5kaz.js";
|
|
10
10
|
import {
|
|
11
11
|
checkDevinCredentials
|
|
12
12
|
} from "./cli-9b13ggd1.js";
|
|
13
13
|
import {
|
|
14
14
|
checkOpencodeCredentials
|
|
15
|
-
} from "./cli-
|
|
15
|
+
} from "./cli-06ghj6pe.js";
|
|
16
16
|
import {
|
|
17
17
|
checkClaudeCredentials
|
|
18
|
-
} from "./cli-
|
|
18
|
+
} from "./cli-edwrx42s.js";
|
|
19
19
|
import {
|
|
20
20
|
MAX_RATE_LIMIT_RESET_MS,
|
|
21
21
|
isCodexCreditsExhaustedMessage,
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
withSpan,
|
|
36
36
|
withSpanContext,
|
|
37
37
|
writeSkillsToFilesystem
|
|
38
|
-
} from "./cli-
|
|
38
|
+
} from "./cli-ads0hfw2.js";
|
|
39
39
|
import {
|
|
40
40
|
authJsonToCredentialSelection,
|
|
41
41
|
credentialsToAuthJson,
|
|
@@ -44,10 +44,10 @@ import {
|
|
|
44
44
|
import {
|
|
45
45
|
ensure,
|
|
46
46
|
initialize
|
|
47
|
-
} from "./cli-
|
|
47
|
+
} from "./cli-fpjmcbhz.js";
|
|
48
48
|
import {
|
|
49
49
|
validateJsonSchema
|
|
50
|
-
} from "./cli-
|
|
50
|
+
} from "./cli-jjhnma34.js";
|
|
51
51
|
import {
|
|
52
52
|
getOpenRouterBaseUrl
|
|
53
53
|
} from "./cli-3dpj7atn.js";
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
init_types,
|
|
74
74
|
resolveTaskModelSelection,
|
|
75
75
|
telemetry
|
|
76
|
-
} from "./cli-
|
|
76
|
+
} from "./cli-tmn19cdz.js";
|
|
77
77
|
import {
|
|
78
78
|
generateDefaultClaudeMd,
|
|
79
79
|
generateDefaultIdentityMd,
|
|
@@ -176,19 +176,19 @@ async function materializeCodexAuthJson(_slot, creds, deps = {}) {
|
|
|
176
176
|
async function createProviderAdapter(provider) {
|
|
177
177
|
switch (provider) {
|
|
178
178
|
case "claude": {
|
|
179
|
-
const { ClaudeAdapter } = await import("./claude-adapter-
|
|
179
|
+
const { ClaudeAdapter } = await import("./claude-adapter-ng5y8zd7.js");
|
|
180
180
|
return new ClaudeAdapter;
|
|
181
181
|
}
|
|
182
182
|
case "pi": {
|
|
183
|
-
const { PiMonoAdapter } = await import("./pi-mono-adapter-
|
|
183
|
+
const { PiMonoAdapter } = await import("./pi-mono-adapter-29g7axgj.js");
|
|
184
184
|
return new PiMonoAdapter;
|
|
185
185
|
}
|
|
186
186
|
case "codex": {
|
|
187
|
-
const { CodexAdapter } = await import("./codex-adapter-
|
|
187
|
+
const { CodexAdapter } = await import("./codex-adapter-kw11ps3j.js");
|
|
188
188
|
return new CodexAdapter;
|
|
189
189
|
}
|
|
190
190
|
case "claude-managed": {
|
|
191
|
-
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-
|
|
191
|
+
const { ClaudeManagedAdapter } = await import("./claude-managed-adapter-5zr3n86v.js");
|
|
192
192
|
return new ClaudeManagedAdapter;
|
|
193
193
|
}
|
|
194
194
|
case "devin": {
|
|
@@ -196,7 +196,7 @@ async function createProviderAdapter(provider) {
|
|
|
196
196
|
return new DevinAdapter;
|
|
197
197
|
}
|
|
198
198
|
case "opencode": {
|
|
199
|
-
const { OpencodeAdapter } = await import("./opencode-adapter-
|
|
199
|
+
const { OpencodeAdapter } = await import("./opencode-adapter-sx38y7f7.js");
|
|
200
200
|
return new OpencodeAdapter;
|
|
201
201
|
}
|
|
202
202
|
default:
|
|
@@ -882,7 +882,7 @@ async function checkProviderCredentials(provider, env, opts) {
|
|
|
882
882
|
case "opencode":
|
|
883
883
|
return checkOpencodeCredentials(env, opts);
|
|
884
884
|
case "pi": {
|
|
885
|
-
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-
|
|
885
|
+
const { checkPiMonoCredentials } = await import("./pi-mono-adapter-29g7axgj.js");
|
|
886
886
|
return checkPiMonoCredentials(env, opts);
|
|
887
887
|
}
|
|
888
888
|
default:
|