@desplega.ai/agent-swarm 1.147.0 → 1.148.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/README.md +11 -0
- package/dist/{acp-adapter-9n319wqc.js → acp-adapter-grez7xhd.js} +1 -1
- package/dist/{actions-2vxqvpr9.js → actions-kweznh5a.js} +6 -6
- package/dist/{app-w066xfy0.js → app-5fvvjv9m.js} +3 -3
- package/dist/{assistant-kt31dj2h.js → assistant-40m4w50s.js} +8 -8
- package/dist/{boot-reembed-j3mm3rfz.js → boot-reembed-9rxmb26n.js} +4 -4
- package/dist/{boot-reembed-az5rassp.js → boot-reembed-cn357y5n.js} +3 -3
- package/dist/{boot-scrub-logs-b6h54817.js → boot-scrub-logs-5tpp0x3y.js} +2 -2
- package/dist/{claude-adapter-w1z04ann.js → claude-adapter-9pz5q2pb.js} +3 -3
- package/dist/{claude-sdk-session-f0cc1kec.js → claude-sdk-session-v8w0s7qm.js} +3 -3
- package/dist/{cli-rw51bq3j.js → cli-0amc6myn.js} +1 -1
- package/dist/{cli-3tgwnf43.js → cli-0er5m69z.js} +3 -3
- package/dist/{cli-f7dsy61y.js → cli-3n7cbfjn.js} +1 -1
- package/dist/{cli-smby5m17.js → cli-56y3hch2.js} +5 -5
- package/dist/{cli-1th1728g.js → cli-5khqvvnq.js} +1 -1
- package/dist/{cli-ftht3zzj.js → cli-6s2y152y.js} +1 -1
- package/dist/{cli-53s590z8.js → cli-7gn7c2af.js} +1 -1
- package/dist/{cli-tzvk9haz.js → cli-9216xm24.js} +9 -9
- package/dist/{cli-w9kb3bk1.js → cli-anedxf1w.js} +3 -1
- package/dist/{cli-89xfd7f9.js → cli-brxyat7h.js} +1 -1
- package/dist/{cli-12fz972k.js → cli-cdjezzc7.js} +3 -3
- package/dist/{cli-zhjmqxzh.js → cli-dcem3pr1.js} +1 -1
- package/dist/{cli-b5bq9crk.js → cli-dk3me3qs.js} +7 -7
- package/dist/{cli-yz3djrm0.js → cli-f8j56xv2.js} +7 -7
- package/dist/{cli-m8yrsg97.js → cli-hp2est46.js} +2 -2
- package/dist/{cli-mmemxxdc.js → cli-hz8xhefy.js} +2 -2
- package/dist/{cli-8v0g1yc8.js → cli-hzhhrt7b.js} +1 -1
- package/dist/{cli-hbv0kq6w.js → cli-kzvhgvk3.js} +2 -2
- package/dist/{cli-719k9j2c.js → cli-m1p5cysp.js} +2 -2
- package/dist/{cli-dttph1bw.js → cli-n2cwscdd.js} +2 -2
- package/dist/{cli-54wwve05.js → cli-n9grk3yd.js} +3 -3
- package/dist/{cli-atcve9y8.js → cli-p73drk6p.js} +78 -37
- package/dist/{cli-f146mn5s.js → cli-qy6h009w.js} +5 -5
- package/dist/{cli-de14znh8.js → cli-tebsjpk7.js} +2 -2
- package/dist/{cli-4nr988h6.js → cli-v3e51x7w.js} +1 -1
- package/dist/{cli-p1d5b073.js → cli-xqcpg1st.js} +1 -1
- package/dist/{cli-n8508nre.js → cli-ztn0ga15.js} +1 -1
- package/dist/cli.js +13 -11
- package/dist/{codex-adapter-zw4dwsx7.js → codex-adapter-ehhj2qwc.js} +2 -2
- package/dist/{codex-session-runner-k981s65v.js → codex-session-runner-5hne566k.js} +2 -2
- package/dist/{commands-sykrxx7e.js → commands-xnvh951h.js} +2 -2
- package/dist/{db-sfbsc8wt.js → db-ycr5zfr4.js} +2 -2
- package/dist/{handlers-0aspcejm.js → handlers-1vt77kgq.js} +8 -8
- package/dist/{hook-hxccs7m5.js → hook-91ntpmff.js} +1 -1
- package/dist/{hook-4nvqj2sb.js → hook-qfwjydvn.js} +2 -2
- package/dist/{http-y06z517d.js → http-h6g7bv5b.js} +34 -34
- package/dist/{index-hssww7kj.js → index-0ez2aack.js} +11 -11
- package/dist/{index-tce1rss4.js → index-47ghesbn.js} +8 -8
- package/dist/{index-x5j894zf.js → index-antf9t4p.js} +10 -10
- package/dist/{index-k8znfx0z.js → index-d2mytx95.js} +9 -9
- package/dist/{keepalive-w733ax66.js → keepalive-c4sp7yvd.js} +4 -4
- package/dist/{lead-75bjqa9d.js → lead-4r7z9e8v.js} +22 -22
- package/dist/{maintenance-w4f1zjck.js → maintenance-yqjfdjas.js} +4 -4
- package/dist/{oauth-refresh-sweep-wdetky26.js → oauth-refresh-sweep-wtqgnh3c.js} +3 -3
- package/dist/{onboard-bb5net8s.js → onboard-a4krmh46.js} +2 -2
- package/dist/{otel-impl-0w7c14ap.js → otel-impl-725kq0vp.js} +1 -1
- package/dist/{pricing-refresh-9nzsrgcq.js → pricing-refresh-kqxd7w9h.js} +4 -4
- package/dist/{rbac-roles-z1jrffbt.js → rbac-roles-gws5xej6.js} +2 -2
- package/dist/{rbac-roles-r3hqjp09.js → rbac-roles-t3wygpth.js} +3 -3
- package/dist/{render-v2-vbr89fnb.js → render-v2-x1wxvn51.js} +3 -3
- package/dist/{seed-pricing-g62hy1pk.js → seed-pricing-t6y8d0vf.js} +3 -3
- package/dist/{setup-gnfqnptp.js → setup-x50py6xg.js} +2 -2
- package/dist/{worker-kznxp4qm.js → worker-zsz0qfxk.js} +22 -22
- package/openapi.json +1 -1
- package/package.json +3 -1
- package/src/tests/mcp-input-ergonomics.test.ts +386 -0
- package/src/tools/accept-steer.ts +0 -1
- package/src/tools/memory-get.ts +10 -3
- package/src/tools/memory-rate.ts +19 -7
- package/src/tools/memory-search.ts +2 -1
- package/src/tools/memory-store.ts +25 -5
- package/src/tools/send-task.ts +9 -2
- package/src/tools/store-progress.ts +35 -4
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
getEmbeddingProvider,
|
|
5
5
|
init_embedding,
|
|
6
6
|
serializeEmbedding
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-5khqvvnq.js";
|
|
8
8
|
import {
|
|
9
9
|
getDbClient,
|
|
10
10
|
init_db
|
|
11
|
-
} from "./cli-
|
|
11
|
+
} from "./cli-6s2y152y.js";
|
|
12
12
|
import {
|
|
13
13
|
init_secret_scrubber,
|
|
14
14
|
scrubSecrets
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runStopHookSessionSummarySubprocess
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-brxyat7h.js";
|
|
4
4
|
import {
|
|
5
5
|
SessionErrorTracker,
|
|
6
6
|
buildOtelTraceparentEnv,
|
|
@@ -817,7 +817,7 @@ class ClaudeAdapter {
|
|
|
817
817
|
if (transport === "sdk" && isClaudeBridgeEffective(sourceEnv)) {
|
|
818
818
|
throw new Error("CLAUDE_TRANSPORT=sdk cannot run with an effective Claude Bridge configuration. Select CLI transport or disable the bridge.");
|
|
819
819
|
}
|
|
820
|
-
const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-
|
|
820
|
+
const claudeSdk = transport === "sdk" ? await import("./claude-sdk-session-v8w0s7qm.js") : undefined;
|
|
821
821
|
claudeSdk?.validateClaudeSdkAdditionalArgs([
|
|
822
822
|
...claudeBinaryArgv.slice(1),
|
|
823
823
|
...config.additionalArgs ?? []
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
linkIdentity,
|
|
5
5
|
recordUnmappedIdentity,
|
|
6
6
|
resolveIdentity
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-xqcpg1st.js";
|
|
8
8
|
import {
|
|
9
9
|
getKv,
|
|
10
10
|
init_db,
|
|
11
11
|
upsertKv
|
|
12
|
-
} from "./cli-
|
|
12
|
+
} from "./cli-6s2y152y.js";
|
|
13
13
|
|
|
14
14
|
// src/slack/enrich.ts
|
|
15
15
|
init_db();
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SYSTEM_COLUMN_KINDS,
|
|
3
3
|
listAppRecords
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-tebsjpk7.js";
|
|
5
5
|
import {
|
|
6
6
|
getScriptApiTypes,
|
|
7
7
|
getScriptMcpTypes,
|
|
8
8
|
require_typescript
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-0er5m69z.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-6s2y152y.js";
|
|
19
19
|
import {
|
|
20
20
|
init_secret_scrubber,
|
|
21
21
|
scrubSecrets
|
|
@@ -11,17 +11,17 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
calculateNextRun,
|
|
13
13
|
runScheduleNow
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-56y3hch2.js";
|
|
15
15
|
import {
|
|
16
16
|
startPricingRefreshLoop
|
|
17
|
-
} from "./cli-
|
|
17
|
+
} from "./cli-hp2est46.js";
|
|
18
18
|
import {
|
|
19
19
|
seedPricingFromModelsDev
|
|
20
|
-
} from "./cli-
|
|
20
|
+
} from "./cli-0amc6myn.js";
|
|
21
21
|
import {
|
|
22
22
|
ensureRbacSeedsSynced,
|
|
23
23
|
getUserGrant
|
|
24
|
-
} from "./cli-
|
|
24
|
+
} from "./cli-hzhhrt7b.js";
|
|
25
25
|
import {
|
|
26
26
|
can,
|
|
27
27
|
decideAdmission,
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
runSavedScriptAsAgent,
|
|
49
49
|
updateApp,
|
|
50
50
|
upgradeAppDefinition
|
|
51
|
-
} from "./cli-
|
|
51
|
+
} from "./cli-tebsjpk7.js";
|
|
52
52
|
import {
|
|
53
53
|
require_dist as require_dist2
|
|
54
54
|
} from "./cli-qgm2pfpq.js";
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
updateTrackerSync,
|
|
73
73
|
updateTrackerSyncSwarmId,
|
|
74
74
|
upsertSwarmConfigWithPolicyMirror
|
|
75
|
-
} from "./cli-
|
|
75
|
+
} from "./cli-3n7cbfjn.js";
|
|
76
76
|
import {
|
|
77
77
|
isMultiRuntimeEnabled
|
|
78
78
|
} from "./cli-07jd68a1.js";
|
|
@@ -86,7 +86,7 @@ import {
|
|
|
86
86
|
snapshotWorkflow,
|
|
87
87
|
startWorkflowExecution,
|
|
88
88
|
validateJsonSchema
|
|
89
|
-
} from "./cli-
|
|
89
|
+
} from "./cli-f8j56xv2.js";
|
|
90
90
|
import {
|
|
91
91
|
ConnectionAuthInputSchema,
|
|
92
92
|
SCRIPT_LONG_TIMEOUT_HINT_MS,
|
|
@@ -109,7 +109,7 @@ import {
|
|
|
109
109
|
upsertCredentialBinding,
|
|
110
110
|
upsertScriptConnection,
|
|
111
111
|
validateDefinition
|
|
112
|
-
} from "./cli-
|
|
112
|
+
} from "./cli-0er5m69z.js";
|
|
113
113
|
import {
|
|
114
114
|
CANDIDATE_SET_MULTIPLIER,
|
|
115
115
|
computeScore,
|
|
@@ -121,7 +121,7 @@ import {
|
|
|
121
121
|
isGraphExpansionEnabled,
|
|
122
122
|
rerank,
|
|
123
123
|
rowToCandidate
|
|
124
|
-
} from "./cli-
|
|
124
|
+
} from "./cli-5khqvvnq.js";
|
|
125
125
|
import {
|
|
126
126
|
getApiKey
|
|
127
127
|
} from "./cli-f14fvzag.js";
|
|
@@ -139,7 +139,7 @@ import {
|
|
|
139
139
|
listAuthorizationsForApp,
|
|
140
140
|
onAuthorizationRefreshed,
|
|
141
141
|
upsertOAuthApp
|
|
142
|
-
} from "./cli-
|
|
142
|
+
} from "./cli-dcem3pr1.js";
|
|
143
143
|
import {
|
|
144
144
|
ZodFirstPartyTypeKind,
|
|
145
145
|
objectType
|
|
@@ -158,7 +158,7 @@ import {
|
|
|
158
158
|
getFileInfo,
|
|
159
159
|
parseSlackTs,
|
|
160
160
|
uploadFile
|
|
161
|
-
} from "./cli-
|
|
161
|
+
} from "./cli-hz8xhefy.js";
|
|
162
162
|
import {
|
|
163
163
|
AgentFsProvider
|
|
164
164
|
} from "./cli-jsp14b6c.js";
|
|
@@ -178,10 +178,10 @@ import {
|
|
|
178
178
|
resolveIdentityByEmail,
|
|
179
179
|
resolveUserByToken,
|
|
180
180
|
unlinkIdentity
|
|
181
|
-
} from "./cli-
|
|
181
|
+
} from "./cli-xqcpg1st.js";
|
|
182
182
|
import {
|
|
183
183
|
createTaskWithSiblingAwareness
|
|
184
|
-
} from "./cli-
|
|
184
|
+
} from "./cli-7gn7c2af.js";
|
|
185
185
|
import {
|
|
186
186
|
ensure,
|
|
187
187
|
getAgentDisplayName,
|
|
@@ -192,7 +192,7 @@ import {
|
|
|
192
192
|
startSlackApp,
|
|
193
193
|
stopSlackApp,
|
|
194
194
|
withSpan
|
|
195
|
-
} from "./cli-
|
|
195
|
+
} from "./cli-dk3me3qs.js";
|
|
196
196
|
import {
|
|
197
197
|
$OpenAPIRegistry,
|
|
198
198
|
$OpenApiGeneratorV31,
|
|
@@ -439,7 +439,7 @@ import {
|
|
|
439
439
|
upsertPromptTemplate,
|
|
440
440
|
upsertService,
|
|
441
441
|
validateConfigValue
|
|
442
|
-
} from "./cli-
|
|
442
|
+
} from "./cli-6s2y152y.js";
|
|
443
443
|
import {
|
|
444
444
|
generateDefaultClaudeMd,
|
|
445
445
|
generateDefaultIdentityMd,
|
|
@@ -515,7 +515,7 @@ import {
|
|
|
515
515
|
import {
|
|
516
516
|
init_package,
|
|
517
517
|
package_default
|
|
518
|
-
} from "./cli-
|
|
518
|
+
} from "./cli-anedxf1w.js";
|
|
519
519
|
import {
|
|
520
520
|
init_secret_scrubber,
|
|
521
521
|
refreshSecretScrubberCache,
|
|
@@ -22303,7 +22303,7 @@ async function notifySlack(text) {
|
|
|
22303
22303
|
return;
|
|
22304
22304
|
}
|
|
22305
22305
|
try {
|
|
22306
|
-
const { getSlackApp: getSlackApp2 } = await import("./app-
|
|
22306
|
+
const { getSlackApp: getSlackApp2 } = await import("./app-5fvvjv9m.js");
|
|
22307
22307
|
const app = getSlackApp2();
|
|
22308
22308
|
if (!app) {
|
|
22309
22309
|
console.warn("[Jira webhook keepalive] Slack not available, cannot send notification");
|
|
@@ -22374,7 +22374,7 @@ async function deleteJiraWebhook(webhookId) {
|
|
|
22374
22374
|
console.log(`[Jira webhook keepalive] Deleted webhook id=${webhookId}`);
|
|
22375
22375
|
}
|
|
22376
22376
|
async function overwriteWebhookIds(next) {
|
|
22377
|
-
const { getDbClient: getDbClient2 } = await import("./db-
|
|
22377
|
+
const { getDbClient: getDbClient2 } = await import("./db-ycr5zfr4.js");
|
|
22378
22378
|
await getDbClient2().transaction(async (tx) => {
|
|
22379
22379
|
const row = await tx.get("SELECT metadata FROM oauth_apps WHERE provider = 'jira'");
|
|
22380
22380
|
if (!row) {
|
|
@@ -96722,7 +96722,7 @@ function assertOwnsTask(ctx, task, verb = "task.read.own") {
|
|
|
96722
96722
|
init_secret_scrubber();
|
|
96723
96723
|
var acceptSteerInputSchema = object({
|
|
96724
96724
|
steeringMessageId: uuid().describe("The steering message ID to acknowledge."),
|
|
96725
|
-
note: string().
|
|
96725
|
+
note: string().optional().describe("Optional short note describing how the steering was incorporated.")
|
|
96726
96726
|
});
|
|
96727
96727
|
var looseSteeringMessageSchema = looseObject({
|
|
96728
96728
|
id: string().optional(),
|
|
@@ -105505,8 +105505,9 @@ var registerMemoryGetTool = (server) => {
|
|
|
105505
105505
|
description: "Retrieve the full content of a specific memory by its ID. Use memory-search to find memory IDs first.",
|
|
105506
105506
|
annotations: { readOnlyHint: true },
|
|
105507
105507
|
inputSchema: object({
|
|
105508
|
-
memoryId: uuid().describe("The ID of the memory to retrieve."),
|
|
105509
|
-
|
|
105508
|
+
memoryId: uuid().optional().describe("The ID of the memory to retrieve (or use id)."),
|
|
105509
|
+
id: uuid().optional().describe("Alias for memoryId, matching memory-search results."),
|
|
105510
|
+
intent: string().min(1).optional().describe("Optional reason for retrieving this memory. E.g. 'need full details of the auth fix pattern'.")
|
|
105510
105511
|
}),
|
|
105511
105512
|
outputSchema: swarmToolOutputSchema({
|
|
105512
105513
|
yourAgentId: string().optional(),
|
|
@@ -105515,7 +105516,13 @@ var registerMemoryGetTool = (server) => {
|
|
|
105515
105516
|
backlinks: array(MemoryBacklinkSchema).optional().describe("Other memories whose content links to this one (ACL-filtered)."),
|
|
105516
105517
|
rateHint: string().optional()
|
|
105517
105518
|
})
|
|
105518
|
-
}, async ({ memoryId, intent }, requestInfo, _meta) => {
|
|
105519
|
+
}, async ({ memoryId: requestedMemoryId, id, intent }, requestInfo, _meta) => {
|
|
105520
|
+
if (requestedMemoryId && id && requestedMemoryId !== id) {
|
|
105521
|
+
return toolErr("memoryId and id must identify the same memory; supply only one.");
|
|
105522
|
+
}
|
|
105523
|
+
const memoryId = requestedMemoryId ?? id;
|
|
105524
|
+
if (!memoryId)
|
|
105525
|
+
return toolErr("Supply memoryId (or its alias id) from memory-search.");
|
|
105519
105526
|
const store = getMemoryStore();
|
|
105520
105527
|
const memoryForAuth = await store.peek(memoryId);
|
|
105521
105528
|
if (!memoryForAuth) {
|
|
@@ -105573,13 +105580,20 @@ var registerMemoryRateTool = (server) => {
|
|
|
105573
105580
|
description: "Rate a memory you used in the current task. Call this when a " + "retrieved memory was clearly useful (or actively misleading) so " + "the swarm learns to surface better memories next time.",
|
|
105574
105581
|
annotations: { destructiveHint: false },
|
|
105575
105582
|
inputSchema: object({
|
|
105576
|
-
id: string().describe("Memory ID returned by
|
|
105583
|
+
id: string().min(1).optional().describe("Memory ID returned by memory-search (or use memoryId)."),
|
|
105584
|
+
memoryId: string().min(1).optional().describe("Alias for id, matching memory-get."),
|
|
105577
105585
|
useful: boolean().describe("true = this memory helped solve the task; false = misled or wasted time."),
|
|
105578
|
-
note: string().
|
|
105586
|
+
note: string().optional().describe("Reason, stored up to 500 characters for telemetry; not surfaced to other agents."),
|
|
105579
105587
|
referencesSource: string().min(1).max(REFERENCES_SOURCE_MAX_LENGTH).optional().describe(REFERENCES_SOURCE_DESCRIPTION)
|
|
105580
105588
|
}),
|
|
105581
105589
|
outputSchema: swarmToolOutputSchema()
|
|
105582
|
-
}, async ({ id, useful, note, referencesSource }, requestInfo, _meta) => {
|
|
105590
|
+
}, async ({ id, memoryId, useful, note, referencesSource }, requestInfo, _meta) => {
|
|
105591
|
+
if (id && memoryId && id !== memoryId) {
|
|
105592
|
+
return toolErr("id and memoryId must identify the same memory; supply only one.");
|
|
105593
|
+
}
|
|
105594
|
+
const resolvedMemoryId = id ?? memoryId;
|
|
105595
|
+
if (!resolvedMemoryId)
|
|
105596
|
+
return toolErr("Supply id (or its alias memoryId) from memory-search.");
|
|
105583
105597
|
if (!requestInfo.agentId) {
|
|
105584
105598
|
return toolErr("Agent ID required. Are you registered in the swarm?");
|
|
105585
105599
|
}
|
|
@@ -105597,11 +105611,11 @@ var registerMemoryRateTool = (server) => {
|
|
|
105597
105611
|
const apiUrl = getMcpBaseUrl();
|
|
105598
105612
|
const apiKey = getApiKey();
|
|
105599
105613
|
const event = {
|
|
105600
|
-
memoryId:
|
|
105614
|
+
memoryId: resolvedMemoryId,
|
|
105601
105615
|
signal: useful ? 1 : -1,
|
|
105602
105616
|
weight: 1,
|
|
105603
105617
|
source: "explicit-self",
|
|
105604
|
-
reasoning: note ?? "",
|
|
105618
|
+
reasoning: (note ?? "").slice(0, 500),
|
|
105605
105619
|
taskId: requestInfo.sourceTaskId,
|
|
105606
105620
|
...cleanedReferencesSource !== undefined ? { referencesSource: cleanedReferencesSource } : {}
|
|
105607
105621
|
};
|
|
@@ -105630,7 +105644,7 @@ var registerMemoryRateTool = (server) => {
|
|
|
105630
105644
|
if (!response.ok) {
|
|
105631
105645
|
return toolErr(`Memory rating failed (HTTP ${response.status}).`);
|
|
105632
105646
|
}
|
|
105633
|
-
return toolOk(`Memory ${
|
|
105647
|
+
return toolOk(`Memory ${resolvedMemoryId} rated as ${useful ? "useful" : "not useful"}.`);
|
|
105634
105648
|
} catch (err) {
|
|
105635
105649
|
return toolErr(`Memory rating failed: ${err.message}`);
|
|
105636
105650
|
}
|
|
@@ -105777,7 +105791,7 @@ var registerMemorySearchTool = (server) => {
|
|
|
105777
105791
|
annotations: { readOnlyHint: false },
|
|
105778
105792
|
inputSchema: object({
|
|
105779
105793
|
query: string().min(1).describe("Natural language search query."),
|
|
105780
|
-
intent: string().min(1).describe("
|
|
105794
|
+
intent: string().min(1).optional().describe("Optional reason for searching for this memory. E.g. 'looking for auth pattern to fix login bug'."),
|
|
105781
105795
|
scope: _enum(["all", "agent", "swarm"]).default("all").describe("Search scope: 'all' (own + swarm), 'agent' (own only), 'swarm' (shared only)."),
|
|
105782
105796
|
limit: number().int().min(1).max(50).default(10).describe("Max results to return."),
|
|
105783
105797
|
source: AgentMemorySourceSchema.optional().describe("Filter by memory source type.")
|
|
@@ -106116,9 +106130,9 @@ var registerMemoryStoreTool = (server) => {
|
|
|
106116
106130
|
annotations: { destructiveHint: false },
|
|
106117
106131
|
inputSchema: object({
|
|
106118
106132
|
content: string().min(1).describe("The memory body. Markdown is fine. State the fact, the context it applies to, and the evidence."),
|
|
106119
|
-
name: string().min(1).max(200).describe("Short title
|
|
106133
|
+
name: string().min(1).max(200).optional().describe("Short title used in search results and the UI. Defaults to the first non-empty content line (up to 200 characters)."),
|
|
106120
106134
|
scope: AgentMemoryScopeSchema.default("agent").describe("'agent' (default): only you can recall it. 'swarm': every agent can recall it."),
|
|
106121
|
-
tags: array(string()).optional().describe("Free-form tags, for example a repo name or a topic."),
|
|
106135
|
+
tags: union([array(string()), string()]).optional().describe("Free-form tags as an array or a comma-separated string, for example a repo name or a topic."),
|
|
106122
106136
|
taskId: uuid().optional().describe("The task this learning came from, when there is one."),
|
|
106123
106137
|
intent: string().min(1).optional().describe("Why this is worth remembering. Kept in the audit trail.")
|
|
106124
106138
|
}),
|
|
@@ -106128,7 +106142,9 @@ var registerMemoryStoreTool = (server) => {
|
|
|
106128
106142
|
chunks: number().int().optional(),
|
|
106129
106143
|
queued: boolean().optional()
|
|
106130
106144
|
})
|
|
106131
|
-
}, async ({ content, name, scope, tags, taskId, intent }, requestInfo, _meta) => {
|
|
106145
|
+
}, async ({ content, name: requestedName, scope, tags, taskId, intent }, requestInfo, _meta) => {
|
|
106146
|
+
const name = requestedName ?? content.split(/\r?\n/).find((line) => line.trim())?.trim().slice(0, 200) ?? "Untitled memory";
|
|
106147
|
+
const normalizedTags = typeof tags === "string" ? tags.split(",").map((tag) => tag.trim()).filter(Boolean) : tags;
|
|
106132
106148
|
if (!requestInfo.agentId) {
|
|
106133
106149
|
return toolErr("Agent ID required. Are you registered in the swarm?");
|
|
106134
106150
|
}
|
|
@@ -106140,7 +106156,7 @@ var registerMemoryStoreTool = (server) => {
|
|
|
106140
106156
|
scope,
|
|
106141
106157
|
source: "manual",
|
|
106142
106158
|
sourceTaskId: taskId ?? null,
|
|
106143
|
-
tags,
|
|
106159
|
+
tags: normalizedTags,
|
|
106144
106160
|
intent
|
|
106145
106161
|
});
|
|
106146
106162
|
return toolOk(`Memory "${name}" stored as ${result.chunks} chunk(s) in ${scope} scope. Embedding runs in the background.`, {
|
|
@@ -116190,7 +116206,7 @@ var sendTaskInputSchema = object({
|
|
|
116190
116206
|
slackThreadTs: string().optional().describe("Slack thread timestamp. Required with slackChannelId for thread-level updates."),
|
|
116191
116207
|
slackUserId: string().optional().describe("Slack user ID of the original requester."),
|
|
116192
116208
|
overrideSlackContext: boolean().default(false).describe("Explicitly route this task's Slack updates to a different channel/thread than its parent/contextKey. Requires slackChannelId AND slackThreadTs. Use only for deliberate cross-channel dispatch (e.g. escalation to another human's DM); logged for audit. Without this flag, a slackChannelId/slackThreadTs that disagrees with the parent task or inherited contextKey is rejected — omit the three Slack fields to inherit them from the parent as a unit instead."),
|
|
116193
|
-
requestedByUserId: string().
|
|
116209
|
+
requestedByUserId: string().regex(/^[a-f0-9]{32}$/, "Expected a registry user ID (32 lowercase hexadecimal characters).").optional().describe("Registered requester ID (32 lowercase hexadecimal characters). When omitted, inherited from the caller's current task so the attribution flows through multi-hop delegation automatically."),
|
|
116194
116210
|
followUpConfig: FollowUpConfigSchema.optional().describe("Control the lead follow-up created when this task finishes. When to use `followUpConfig`: set `disabled: true` when you'll wait for this task to complete inline and no follow-up is needed; set `onCompleted` / `onFailed` with specific instructions when you need to follow up effectively on a particular outcome of a long-running flow; for normal one-shot tasks, leave it unset because defaults are fine. It is most valuable for long-running / complex flows."),
|
|
116195
116211
|
outputSchema: record(string(), unknown()).optional().describe("Optional JSON Schema the assignee's final output must satisfy. store-progress rejects a completion that does not match. Supported keywords: type, required, properties, enum, const, items.")
|
|
116196
116212
|
}).superRefine((data, ctx) => {
|
|
@@ -116260,6 +116276,11 @@ async function sendTaskHandler(ctx, {
|
|
|
116260
116276
|
const creatorAgentId = ctx.kind === "owner" ? ctx.agentId : undefined;
|
|
116261
116277
|
const sourceTaskId = ctx.kind === "owner" ? ctx.sourceTaskId : undefined;
|
|
116262
116278
|
const requestedByUserId = ctx.kind === "user" ? ctx.userId : inputRequestedByUserId ?? undefined;
|
|
116279
|
+
if (ctx.kind === "owner" && requestedByUserId && !await getUserById(requestedByUserId)) {
|
|
116280
|
+
return toolErr("requestedByUserId must identify an existing registered user.", {
|
|
116281
|
+
data: { yourAgentId: creatorAgentId }
|
|
116282
|
+
});
|
|
116283
|
+
}
|
|
116263
116284
|
if (ctx.kind === "owner" && agentId === ctx.agentId) {
|
|
116264
116285
|
return toolErr("Cannot send a task to yourself, are you drunk?", {
|
|
116265
116286
|
data: { yourAgentId: ctx.agentId }
|
|
@@ -118777,9 +118798,9 @@ var registerStoreProgressTool = (server) => {
|
|
|
118777
118798
|
description: "Stores the progress of a specific task. Can also mark task as completed or failed, which will set the agent back to idle.",
|
|
118778
118799
|
annotations: { idempotentHint: true },
|
|
118779
118800
|
inputSchema: object({
|
|
118780
|
-
taskId: uuid().describe("
|
|
118801
|
+
taskId: uuid().optional().describe("Full task UUID. Defaults to the caller-owned task in X-Source-Task-Id; required outside task context."),
|
|
118781
118802
|
progress: string().optional().describe("The progress update to store."),
|
|
118782
|
-
status: _enum(["completed", "failed"]).optional().describe("Set to 'completed' or 'failed' to finish the task."),
|
|
118803
|
+
status: _enum(["completed", "failed", "in_progress", "pending"]).optional().describe("Set to 'completed' or 'failed' to finish the task. 'in_progress' and 'pending' store progress only and do not change task status."),
|
|
118783
118804
|
output: string().optional().describe("The task result (used when completing). For Slack-originated tasks, this is published verbatim in the thread's outcome card: provide a concrete summary scaled to what was asked, including only the outcome and any links or IDs the human needs—not process narration, a transcript, or a restatement of the brief."),
|
|
118784
118805
|
failureReason: string().optional().describe("The reason for failure (used when failing)."),
|
|
118785
118806
|
attachments: array(AttachmentInputSchema).max(20).optional().describe("Pointer-based artifacts produced by this step — agent-fs path, URL, shared-fs path, or swarm Page. No inline file data; upload to agent-fs first and attach by path. Agent-fs pointers are verified before task state changes, using the explicit org/drive pair or the registering agent's configured defaults. May be sent on any call (progress or completion) and accumulates across calls; duplicates are de-duped by sha256 (when present) or by (kind, pointer, name)."),
|
|
@@ -118787,10 +118808,30 @@ var registerStoreProgressTool = (server) => {
|
|
|
118787
118808
|
force: boolean().optional().describe("On an already-terminal task, overwrite explicitly provided output and/or failureReason text while preserving status and finishedAt and without replaying events, memory writes, follow-up creation, business-use ensure, or capacity updates. Differing terminal text is otherwise discarded and reported as a failure.")
|
|
118788
118809
|
}),
|
|
118789
118810
|
outputSchema: storeProgressOutputSchema
|
|
118790
|
-
}, async ({
|
|
118811
|
+
}, async ({
|
|
118812
|
+
taskId: requestedTaskId,
|
|
118813
|
+
progress,
|
|
118814
|
+
status: requestedStatus,
|
|
118815
|
+
output,
|
|
118816
|
+
failureReason,
|
|
118817
|
+
attachments,
|
|
118818
|
+
persistMemory,
|
|
118819
|
+
force
|
|
118820
|
+
}, requestInfo, _meta) => {
|
|
118791
118821
|
if (!requestInfo.agentId) {
|
|
118792
118822
|
return toolErr('Agent ID not found. The MCP client should define the "X-Agent-ID" header.');
|
|
118793
118823
|
}
|
|
118824
|
+
const taskId = requestedTaskId ?? requestInfo.sourceTaskId;
|
|
118825
|
+
if (!taskId || !uuid().safeParse(taskId).success) {
|
|
118826
|
+
return toolErr("Supply taskId as the full task UUID; no valid task context is available.");
|
|
118827
|
+
}
|
|
118828
|
+
if (!requestedTaskId) {
|
|
118829
|
+
const contextTask = await getTaskById(taskId);
|
|
118830
|
+
if (!contextTask || contextTask.agentId !== requestInfo.agentId) {
|
|
118831
|
+
return toolErr("Omitted taskId requires a source task assigned to the calling agent.");
|
|
118832
|
+
}
|
|
118833
|
+
}
|
|
118834
|
+
const status = requestedStatus === "completed" || requestedStatus === "failed" ? requestedStatus : undefined;
|
|
118794
118835
|
const agentFsScopes = new Map;
|
|
118795
118836
|
const agentFsAttachments = attachments?.filter((a) => a.kind === "agent-fs") ?? [];
|
|
118796
118837
|
if (agentFsAttachments.length > 0) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAdditiveBuffer,
|
|
3
3
|
extractSlackMessageText
|
|
4
|
-
} from "./cli-
|
|
4
|
+
} from "./cli-hz8xhefy.js";
|
|
5
5
|
import {
|
|
6
6
|
rewriteSlackMentions
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-n2cwscdd.js";
|
|
8
8
|
import {
|
|
9
9
|
createTaskWithSiblingAwareness
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-7gn7c2af.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-dk3me3qs.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-6s2y152y.js";
|
|
33
33
|
import {
|
|
34
34
|
init_steering_enabled,
|
|
35
35
|
isSteeringEnabled
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
restoreScratchScriptLastUsedIfUnchanged,
|
|
8
8
|
runScript,
|
|
9
9
|
touchScratchScriptLastUsed
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-0er5m69z.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-6s2y152y.js";
|
|
18
18
|
import {
|
|
19
19
|
init_zod
|
|
20
20
|
} from "./cli-sd0mxa3c.js";
|
package/dist/cli.js
CHANGED
|
@@ -65,7 +65,7 @@ var import_react = __toESM(require_react(), 1);
|
|
|
65
65
|
// package.json
|
|
66
66
|
var package_default = {
|
|
67
67
|
name: "@desplega.ai/agent-swarm",
|
|
68
|
-
version: "1.
|
|
68
|
+
version: "1.148.0",
|
|
69
69
|
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.",
|
|
70
70
|
keywords: [
|
|
71
71
|
"agent-swarm.dev",
|
|
@@ -176,6 +176,8 @@ var package_default = {
|
|
|
176
176
|
"prepare-release": "bun scripts/prepare-release.ts",
|
|
177
177
|
"refresh:vendored-openapi": "bun scripts/refresh-vendored-openapi.ts",
|
|
178
178
|
"sync-chart-version": "bun scripts/sync-chart-version.ts",
|
|
179
|
+
"sync-plugin-versions": "bun scripts/sync-plugin-versions.ts",
|
|
180
|
+
"check:plugin-versions": "bun scripts/sync-plugin-versions.ts --check",
|
|
179
181
|
"bump:agent-fs": "bun scripts/bump-agent-fs.ts",
|
|
180
182
|
"check-chart-version": "bun scripts/sync-chart-version.ts --check-if-package-version-changed",
|
|
181
183
|
cli: "bun src/cli.tsx",
|
|
@@ -739,7 +741,7 @@ function McpServer({ port, apiKey, dbPath }) {
|
|
|
739
741
|
if (dbPath) {
|
|
740
742
|
process.env.DATABASE_PATH = dbPath;
|
|
741
743
|
}
|
|
742
|
-
import("./http-
|
|
744
|
+
import("./http-h6g7bv5b.js").then(() => {
|
|
743
745
|
setStatus("running");
|
|
744
746
|
}).catch((err) => {
|
|
745
747
|
setStatus("error");
|
|
@@ -825,7 +827,7 @@ function WorkerRunner({
|
|
|
825
827
|
}) {
|
|
826
828
|
const { exit } = use_app_default();
|
|
827
829
|
import_react.useEffect(() => {
|
|
828
|
-
import("./worker-
|
|
830
|
+
import("./worker-zsz0qfxk.js").then(({ runWorker }) => runWorker({
|
|
829
831
|
prompt: prompt || undefined,
|
|
830
832
|
yolo,
|
|
831
833
|
systemPrompt: systemPrompt || undefined,
|
|
@@ -842,7 +844,7 @@ function WorkerRunner({
|
|
|
842
844
|
function LeadRunner({ prompt, yolo, systemPrompt, systemPromptFile, additionalArgs }) {
|
|
843
845
|
const { exit } = use_app_default();
|
|
844
846
|
import_react.useEffect(() => {
|
|
845
|
-
import("./lead-
|
|
847
|
+
import("./lead-4r7z9e8v.js").then(({ runLead }) => runLead({
|
|
846
848
|
prompt: prompt || undefined,
|
|
847
849
|
yolo,
|
|
848
850
|
systemPrompt: systemPrompt || undefined,
|
|
@@ -882,8 +884,8 @@ function LazyComponent({
|
|
|
882
884
|
}
|
|
883
885
|
return import_react.createElement(Component, props);
|
|
884
886
|
}
|
|
885
|
-
var loadOnboard = () => import("./onboard-
|
|
886
|
-
var loadConnect = () => import("./setup-
|
|
887
|
+
var loadOnboard = () => import("./onboard-a4krmh46.js").then(({ Onboard }) => Onboard);
|
|
888
|
+
var loadConnect = () => import("./setup-x50py6xg.js").then(({ Setup }) => Setup);
|
|
887
889
|
function UnknownCommand({ command }) {
|
|
888
890
|
const { exit } = use_app_default();
|
|
889
891
|
import_react.useEffect(() => {
|
|
@@ -1004,14 +1006,14 @@ ${binName} docs \u2014 v${package_default.version}
|
|
|
1004
1006
|
}
|
|
1005
1007
|
process.exit(0);
|
|
1006
1008
|
} else if (args.command === "hook") {
|
|
1007
|
-
const { runHook } = await import("./hook-
|
|
1009
|
+
const { runHook } = await import("./hook-qfwjydvn.js");
|
|
1008
1010
|
await runHook();
|
|
1009
1011
|
} else if (args.command === "codex-hook") {
|
|
1010
1012
|
const { handleCodexHook } = await import("./codex-hook-bw8p5nh4.js");
|
|
1011
1013
|
await handleCodexHook();
|
|
1012
1014
|
process.exit(0);
|
|
1013
1015
|
} else if (args.command === "session-summary-stdin") {
|
|
1014
|
-
const { runSessionSummaryFromStdin } = await import("./hook-
|
|
1016
|
+
const { runSessionSummaryFromStdin } = await import("./hook-91ntpmff.js");
|
|
1015
1017
|
await runSessionSummaryFromStdin();
|
|
1016
1018
|
process.exit(process.exitCode ?? 0);
|
|
1017
1019
|
} else if (args.command === "artifact") {
|
|
@@ -1032,7 +1034,7 @@ ${binName} docs \u2014 v${package_default.version}
|
|
|
1032
1034
|
printHelp("scripts");
|
|
1033
1035
|
process.exit(scriptsArgs[0] === "reembed" || args.showHelp ? 0 : 1);
|
|
1034
1036
|
}
|
|
1035
|
-
const { runScriptsMaintenanceCommand } = await import("./maintenance-
|
|
1037
|
+
const { runScriptsMaintenanceCommand } = await import("./maintenance-yqjfdjas.js");
|
|
1036
1038
|
await runScriptsMaintenanceCommand(scriptsArgs);
|
|
1037
1039
|
console.log("Scripts re-embedded.");
|
|
1038
1040
|
} else if (args.command === "rbac") {
|
|
@@ -1042,14 +1044,14 @@ ${binName} docs \u2014 v${package_default.version}
|
|
|
1042
1044
|
printHelp("rbac");
|
|
1043
1045
|
process.exit(args.showHelp ? 0 : 1);
|
|
1044
1046
|
}
|
|
1045
|
-
const { runRbacCliCommand } = await import("./rbac-roles-
|
|
1047
|
+
const { runRbacCliCommand } = await import("./rbac-roles-gws5xej6.js");
|
|
1046
1048
|
await runRbacCliCommand(rbacArgs);
|
|
1047
1049
|
} else if (args.command === "codex-login") {
|
|
1048
1050
|
const { runCodexLogin } = await import("./codex-login-vx7ghkzj.js");
|
|
1049
1051
|
const codexLoginArgs = process.argv.slice(process.argv.indexOf("codex-login") + 1);
|
|
1050
1052
|
await runCodexLogin(codexLoginArgs);
|
|
1051
1053
|
} else if (args.command === "codex-session-runner") {
|
|
1052
|
-
const { runCodexSessionRunner } = await import("./codex-session-runner-
|
|
1054
|
+
const { runCodexSessionRunner } = await import("./codex-session-runner-5hne566k.js");
|
|
1053
1055
|
await runCodexSessionRunner();
|
|
1054
1056
|
} else if (args.command === "claude-managed-setup") {
|
|
1055
1057
|
const { runClaudeManagedSetup } = await import("./claude-managed-setup-f5pmsyrp.js");
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
createInProcessCodexSession,
|
|
7
7
|
resolveCodexAuthMode,
|
|
8
8
|
resolveCodexRunnerArgv
|
|
9
|
-
} from "./cli-
|
|
9
|
+
} from "./cli-v3e51x7w.js";
|
|
10
10
|
import"./cli-hsxj0yar.js";
|
|
11
11
|
import"./cli-r94z9p1z.js";
|
|
12
12
|
import"./cli-2djtr51b.js";
|
|
@@ -27,7 +27,7 @@ import"./cli-bsakbbkm.js";
|
|
|
27
27
|
import"./cli-ej6gbxfb.js";
|
|
28
28
|
import"./cli-sd0mxa3c.js";
|
|
29
29
|
import"./cli-w5e1d1vv.js";
|
|
30
|
-
import"./cli-
|
|
30
|
+
import"./cli-anedxf1w.js";
|
|
31
31
|
import"./cli-xqcq9y5e.js";
|
|
32
32
|
import"./cli-knd276ed.js";
|
|
33
33
|
import"./cli-c4eeb5q2.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createInProcessCodexSession
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-v3e51x7w.js";
|
|
4
4
|
import"./cli-hsxj0yar.js";
|
|
5
5
|
import"./cli-r94z9p1z.js";
|
|
6
6
|
import"./cli-2djtr51b.js";
|
|
@@ -21,7 +21,7 @@ import"./cli-bsakbbkm.js";
|
|
|
21
21
|
import"./cli-ej6gbxfb.js";
|
|
22
22
|
import"./cli-sd0mxa3c.js";
|
|
23
23
|
import"./cli-w5e1d1vv.js";
|
|
24
|
-
import"./cli-
|
|
24
|
+
import"./cli-anedxf1w.js";
|
|
25
25
|
import {
|
|
26
26
|
init_secret_scrubber,
|
|
27
27
|
scrubSecrets
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
getAllAgents,
|
|
3
3
|
getAllTasks,
|
|
4
4
|
init_db
|
|
5
|
-
} from "./cli-
|
|
5
|
+
} from "./cli-6s2y152y.js";
|
|
6
6
|
import"./cli-y6b6fb76.js";
|
|
7
7
|
import"./cli-kpv03zhj.js";
|
|
8
8
|
import"./cli-e29gmdmw.js";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
} from "./cli-ej6gbxfb.js";
|
|
14
14
|
import"./cli-sd0mxa3c.js";
|
|
15
15
|
import"./cli-w5e1d1vv.js";
|
|
16
|
-
import"./cli-
|
|
16
|
+
import"./cli-anedxf1w.js";
|
|
17
17
|
import"./cli-xqcq9y5e.js";
|
|
18
18
|
import"./cli-zf8jjwex.js";
|
|
19
19
|
import"./cli-bc05qbss.js";
|
|
@@ -455,7 +455,7 @@ import {
|
|
|
455
455
|
upsertSkillFiles,
|
|
456
456
|
upsertSwarmConfig,
|
|
457
457
|
withFavoriteFlags
|
|
458
|
-
} from "./cli-
|
|
458
|
+
} from "./cli-6s2y152y.js";
|
|
459
459
|
import {
|
|
460
460
|
generateDefaultClaudeMd,
|
|
461
461
|
generateDefaultIdentityMd,
|
|
@@ -468,7 +468,7 @@ import"./cli-c2mk1kgf.js";
|
|
|
468
468
|
import"./cli-ej6gbxfb.js";
|
|
469
469
|
import"./cli-sd0mxa3c.js";
|
|
470
470
|
import"./cli-w5e1d1vv.js";
|
|
471
|
-
import"./cli-
|
|
471
|
+
import"./cli-anedxf1w.js";
|
|
472
472
|
import"./cli-xqcq9y5e.js";
|
|
473
473
|
import"./cli-zf8jjwex.js";
|
|
474
474
|
import"./cli-bc05qbss.js";
|