@dam-agents/cli 0.2.5-rc1 → 0.2.6-rc1
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/bin.js +809 -815
- package/package.json +3 -3
package/dist/bin.js
CHANGED
|
@@ -25469,6 +25469,107 @@ var envVarSchema = external_exports.object({
|
|
|
25469
25469
|
value: external_exports.string().max(1e4)
|
|
25470
25470
|
});
|
|
25471
25471
|
|
|
25472
|
+
// ../api-server-api/src/modules/skills/schemas.ts
|
|
25473
|
+
var skillSourcePathSchema = external_exports.string().transform((p2) => p2.trim().replace(/^\/+|\/+$/g, "")).refine((p2) => !p2.split("/").includes(".."), "path must not contain '..'");
|
|
25474
|
+
var skillSourceSchema = external_exports.object({
|
|
25475
|
+
id: external_exports.string(),
|
|
25476
|
+
name: external_exports.string(),
|
|
25477
|
+
gitUrl: external_exports.string(),
|
|
25478
|
+
path: external_exports.string().optional(),
|
|
25479
|
+
/** True when the source is managed by the cluster admin
|
|
25480
|
+
* (Helm-seeded). Users can't delete it. */
|
|
25481
|
+
system: external_exports.boolean().optional(),
|
|
25482
|
+
/** Present when the source was declared by an agent template
|
|
25483
|
+
* (spec.skillSources). UI-only hint for the "Agent" badge —
|
|
25484
|
+
* backend treats template sources as read-only. */
|
|
25485
|
+
fromTemplate: external_exports.object({ templateId: external_exports.string(), templateName: external_exports.string() }).optional(),
|
|
25486
|
+
canPublish: external_exports.boolean().optional()
|
|
25487
|
+
});
|
|
25488
|
+
var skillPublishResultSchema = external_exports.object({
|
|
25489
|
+
prUrl: external_exports.string().url(),
|
|
25490
|
+
branch: external_exports.string()
|
|
25491
|
+
});
|
|
25492
|
+
var skillSchema = external_exports.object({
|
|
25493
|
+
source: external_exports.string(),
|
|
25494
|
+
name: external_exports.string(),
|
|
25495
|
+
description: external_exports.string(),
|
|
25496
|
+
version: external_exports.string(),
|
|
25497
|
+
contentHash: external_exports.string()
|
|
25498
|
+
});
|
|
25499
|
+
var skillRefSchema = external_exports.object({
|
|
25500
|
+
source: external_exports.string(),
|
|
25501
|
+
name: external_exports.string(),
|
|
25502
|
+
version: external_exports.string(),
|
|
25503
|
+
/** Deterministic SHA-256 of the skill directory's file contents at
|
|
25504
|
+
* install time. Compared to the scanner's contentHash to flag drift.
|
|
25505
|
+
* Optional for backward compatibility with installs that pre-date
|
|
25506
|
+
* this field. */
|
|
25507
|
+
contentHash: external_exports.string().optional(),
|
|
25508
|
+
/** Source subdir the skill was installed from, denormalized so the apply
|
|
25509
|
+
* path resolves the skill dir without re-reading the source. */
|
|
25510
|
+
path: external_exports.string().optional()
|
|
25511
|
+
});
|
|
25512
|
+
var localSkillSchema = external_exports.object({
|
|
25513
|
+
name: external_exports.string(),
|
|
25514
|
+
description: external_exports.string(),
|
|
25515
|
+
skillPath: external_exports.string()
|
|
25516
|
+
});
|
|
25517
|
+
var skillPublishRecordSchema = external_exports.object({
|
|
25518
|
+
skillName: external_exports.string(),
|
|
25519
|
+
sourceId: external_exports.string(),
|
|
25520
|
+
sourceName: external_exports.string(),
|
|
25521
|
+
sourceGitUrl: external_exports.string(),
|
|
25522
|
+
prUrl: external_exports.string(),
|
|
25523
|
+
/** ISO 8601 timestamp. */
|
|
25524
|
+
publishedAt: external_exports.string()
|
|
25525
|
+
});
|
|
25526
|
+
var skillStateOutputSchema = external_exports.object({
|
|
25527
|
+
installed: external_exports.array(skillRefSchema),
|
|
25528
|
+
standalone: external_exports.array(localSkillSchema),
|
|
25529
|
+
instancePublishes: external_exports.array(skillPublishRecordSchema)
|
|
25530
|
+
});
|
|
25531
|
+
var skillListSourcesInputSchema = external_exports.object({ agentId: external_exports.string().min(1).optional() }).optional();
|
|
25532
|
+
var skillCreateSourceInputSchema = external_exports.object({
|
|
25533
|
+
name: external_exports.string().min(1).max(128),
|
|
25534
|
+
gitUrl: external_exports.string().url(),
|
|
25535
|
+
path: skillSourcePathSchema.optional()
|
|
25536
|
+
});
|
|
25537
|
+
var skillDeleteSourceInputSchema = external_exports.object({
|
|
25538
|
+
id: external_exports.string().min(1)
|
|
25539
|
+
});
|
|
25540
|
+
var skillRefreshSourceInputSchema = external_exports.object({
|
|
25541
|
+
id: external_exports.string().min(1)
|
|
25542
|
+
});
|
|
25543
|
+
var skillListInputSchema = external_exports.object({
|
|
25544
|
+
sourceId: external_exports.string().min(1),
|
|
25545
|
+
agentId: external_exports.string().min(1).optional()
|
|
25546
|
+
});
|
|
25547
|
+
var skillInstallInputSchema = external_exports.object({
|
|
25548
|
+
agentId: external_exports.string().min(1),
|
|
25549
|
+
source: external_exports.string().url(),
|
|
25550
|
+
name: external_exports.string().min(1),
|
|
25551
|
+
version: external_exports.string().min(1),
|
|
25552
|
+
contentHash: external_exports.string().optional()
|
|
25553
|
+
});
|
|
25554
|
+
var skillUninstallInputSchema = external_exports.object({
|
|
25555
|
+
agentId: external_exports.string().min(1),
|
|
25556
|
+
source: external_exports.string().url(),
|
|
25557
|
+
name: external_exports.string().min(1)
|
|
25558
|
+
});
|
|
25559
|
+
var skillListLocalInputSchema = external_exports.object({
|
|
25560
|
+
agentId: external_exports.string().min(1)
|
|
25561
|
+
});
|
|
25562
|
+
var skillStateInputSchema = external_exports.object({
|
|
25563
|
+
agentId: external_exports.string().min(1)
|
|
25564
|
+
});
|
|
25565
|
+
var skillPublishInputSchema = external_exports.object({
|
|
25566
|
+
agentId: external_exports.string().min(1),
|
|
25567
|
+
sourceId: external_exports.string().min(1),
|
|
25568
|
+
name: external_exports.string().min(1),
|
|
25569
|
+
title: external_exports.string().optional(),
|
|
25570
|
+
body: external_exports.string().optional()
|
|
25571
|
+
});
|
|
25572
|
+
|
|
25472
25573
|
// ../api-server-api/src/modules/templates/schemas.ts
|
|
25473
25574
|
var templateGetInputSchema = external_exports.object({
|
|
25474
25575
|
id: external_exports.string().min(1)
|
|
@@ -25488,7 +25589,8 @@ var envVarConfigMapSchema = external_exports.object({
|
|
|
25488
25589
|
});
|
|
25489
25590
|
var skillSourceSeedSchema = external_exports.object({
|
|
25490
25591
|
name: external_exports.string(),
|
|
25491
|
-
gitUrl: external_exports.string()
|
|
25592
|
+
gitUrl: external_exports.string(),
|
|
25593
|
+
path: skillSourcePathSchema.optional()
|
|
25492
25594
|
});
|
|
25493
25595
|
var templateCategorySchema = external_exports.enum(["harness", "preconfigured"]).default("harness");
|
|
25494
25596
|
var templateSpecSchema = external_exports.object({
|
|
@@ -25508,6 +25610,8 @@ var templateSpecSchema = external_exports.object({
|
|
|
25508
25610
|
// pod can pull the image without the user entering registry credentials.
|
|
25509
25611
|
imagePullSecretRef: external_exports.string().optional(),
|
|
25510
25612
|
storageSize: external_exports.string().optional(),
|
|
25613
|
+
runtimeClassName: external_exports.string().optional(),
|
|
25614
|
+
nodeSelector: external_exports.record(external_exports.string(), external_exports.string()).optional(),
|
|
25511
25615
|
skillSources: external_exports.array(skillSourceSeedSchema).optional()
|
|
25512
25616
|
}).passthrough();
|
|
25513
25617
|
|
|
@@ -25525,229 +25629,555 @@ var repoSchema = external_exports.object({
|
|
|
25525
25629
|
compatibleTemplates: external_exports.array(external_exports.string()).default([])
|
|
25526
25630
|
});
|
|
25527
25631
|
|
|
25528
|
-
// ../
|
|
25529
|
-
var
|
|
25530
|
-
var
|
|
25531
|
-
|
|
25532
|
-
agentId: external_exports.string().min(1)
|
|
25533
|
-
});
|
|
25534
|
-
var egressRuleCurrentPresetInputSchema = external_exports.object({
|
|
25535
|
-
agentId: external_exports.string().min(1)
|
|
25536
|
-
});
|
|
25537
|
-
var egressRuleCreateInputSchema = external_exports.object({
|
|
25538
|
-
agentId: external_exports.string().min(1),
|
|
25539
|
-
host: external_exports.string().min(1),
|
|
25540
|
-
method: external_exports.string().min(1).default("*"),
|
|
25541
|
-
pathPattern: external_exports.string().min(1).default("*"),
|
|
25542
|
-
verdict: ruleVerdictSchema
|
|
25543
|
-
});
|
|
25544
|
-
var egressRuleUpdateInputSchema = external_exports.object({
|
|
25545
|
-
id: external_exports.string().min(1),
|
|
25546
|
-
method: external_exports.string().min(1).optional(),
|
|
25547
|
-
pathPattern: external_exports.string().min(1).optional(),
|
|
25548
|
-
verdict: ruleVerdictSchema.optional()
|
|
25549
|
-
});
|
|
25550
|
-
var egressRuleRevokeInputSchema = external_exports.object({
|
|
25551
|
-
id: external_exports.string().min(1)
|
|
25552
|
-
});
|
|
25553
|
-
var egressRuleApplyPresetInputSchema = external_exports.object({
|
|
25554
|
-
agentId: external_exports.string().min(1),
|
|
25555
|
-
preset: egressPresetSchema
|
|
25632
|
+
// ../agent-runtime-api/src/modules/files/schemas.ts
|
|
25633
|
+
var pathSchema = external_exports.string().min(1);
|
|
25634
|
+
var fileListDirsInputSchema = external_exports.object({
|
|
25635
|
+
paths: external_exports.array(external_exports.string()).max(500)
|
|
25556
25636
|
});
|
|
25557
|
-
|
|
25558
|
-
|
|
25559
|
-
|
|
25560
|
-
|
|
25561
|
-
|
|
25562
|
-
message: "agent name cannot start with 'agent-' (reserved for IDs)"
|
|
25563
|
-
}),
|
|
25564
|
-
templateId: external_exports.string().optional(),
|
|
25565
|
-
image: external_exports.string().optional(),
|
|
25566
|
-
description: external_exports.string().optional(),
|
|
25567
|
-
env: external_exports.array(envVarSchema).max(64).optional(),
|
|
25568
|
-
secretRef: external_exports.string().optional(),
|
|
25569
|
-
registryCredential: external_exports.object({
|
|
25570
|
-
server: external_exports.string().min(1),
|
|
25571
|
-
username: external_exports.string().min(1),
|
|
25572
|
-
password: external_exports.string().min(1)
|
|
25573
|
-
}).optional(),
|
|
25574
|
-
allowedUserEmails: external_exports.array(external_exports.email()).optional(),
|
|
25575
|
-
egressPreset: egressPresetSchema.optional(),
|
|
25576
|
-
// Optional: clone this public repo (optionally a branch/tag via `ref`) into
|
|
25577
|
-
// the work dir once, via a one-shot `workspace-seed` event. Not enforced
|
|
25578
|
-
// against the `gitRepos` catalog server-side — the clone runs in the
|
|
25579
|
-
// egress-gated agent pod, so this reaches no URL the agent couldn't already
|
|
25580
|
-
// reach itself.
|
|
25581
|
-
gitRepo: external_exports.object({ url: external_exports.url(), ref: external_exports.string().min(1).optional() }).optional(),
|
|
25582
|
-
// Initial grants, settled into the spec at create so credentials ride the
|
|
25583
|
-
// first snapshot and the gateway renders its chains once (no readiness flap).
|
|
25584
|
-
secretIds: external_exports.array(external_exports.string()).optional(),
|
|
25585
|
-
connectionIds: external_exports.array(external_exports.string()).optional()
|
|
25586
|
-
}).refine((d2) => d2.templateId !== void 0 || d2.image !== void 0, {
|
|
25587
|
-
message: "Either templateId or image is required"
|
|
25637
|
+
var fileReadInputSchema = external_exports.object({ path: pathSchema });
|
|
25638
|
+
var fileWriteInputSchema = external_exports.object({
|
|
25639
|
+
path: pathSchema,
|
|
25640
|
+
content: external_exports.string(),
|
|
25641
|
+
expectedMtimeMs: external_exports.number().optional()
|
|
25588
25642
|
});
|
|
25589
|
-
var
|
|
25590
|
-
|
|
25591
|
-
|
|
25592
|
-
description: external_exports.string().optional(),
|
|
25593
|
-
env: external_exports.array(envVarSchema).max(64).optional(),
|
|
25594
|
-
secretRef: external_exports.string().optional(),
|
|
25595
|
-
allowedUserEmails: external_exports.array(external_exports.email()).optional()
|
|
25643
|
+
var fileCreateInputSchema = external_exports.object({
|
|
25644
|
+
path: pathSchema,
|
|
25645
|
+
content: external_exports.string()
|
|
25596
25646
|
});
|
|
25597
|
-
var
|
|
25598
|
-
|
|
25599
|
-
|
|
25647
|
+
var fileMkdirInputSchema = external_exports.object({ path: pathSchema });
|
|
25648
|
+
var fileRenameInputSchema = external_exports.object({
|
|
25649
|
+
from: pathSchema,
|
|
25650
|
+
to: pathSchema,
|
|
25651
|
+
overwrite: external_exports.boolean().optional()
|
|
25600
25652
|
});
|
|
25601
|
-
var
|
|
25602
|
-
|
|
25603
|
-
|
|
25653
|
+
var fileRemoveInputSchema = external_exports.object({ path: pathSchema });
|
|
25654
|
+
var fileUploadInputSchema = external_exports.object({
|
|
25655
|
+
path: pathSchema,
|
|
25656
|
+
contentBase64: external_exports.string(),
|
|
25657
|
+
/** Browser-reported MIME (File.type). Carried in the API for observability
|
|
25658
|
+
* and forward-compat; server-side reads still detect MIME from magic
|
|
25659
|
+
* bytes so we don't need to persist this. */
|
|
25660
|
+
contentType: external_exports.string().max(255).optional(),
|
|
25661
|
+
overwrite: external_exports.boolean().optional()
|
|
25604
25662
|
});
|
|
25605
25663
|
|
|
25606
|
-
// ../
|
|
25607
|
-
var
|
|
25608
|
-
|
|
25609
|
-
startTime: external_exports.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, "HH:MM required"),
|
|
25610
|
-
endTime: external_exports.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, "HH:MM required"),
|
|
25611
|
-
enabled: external_exports.boolean()
|
|
25612
|
-
}).refine((w3) => w3.startTime !== w3.endTime, {
|
|
25613
|
-
message: "startTime and endTime must differ"
|
|
25614
|
-
});
|
|
25615
|
-
var scheduleListInputSchema = external_exports.object({
|
|
25616
|
-
agentId: external_exports.string().min(1)
|
|
25617
|
-
});
|
|
25618
|
-
var scheduleGetInputSchema = external_exports.object({
|
|
25619
|
-
id: external_exports.string().min(1)
|
|
25620
|
-
});
|
|
25621
|
-
var scheduleCreateCronInputSchema = external_exports.object({
|
|
25664
|
+
// ../agent-runtime-api/src/modules/skills/schemas.ts
|
|
25665
|
+
var skillInstallInputSchema2 = external_exports.object({
|
|
25666
|
+
sourceUrl: external_exports.string().min(1),
|
|
25622
25667
|
name: external_exports.string().min(1),
|
|
25623
|
-
|
|
25624
|
-
|
|
25625
|
-
|
|
25626
|
-
sessionMode: scheduleSessionModeSchema.optional()
|
|
25668
|
+
version: external_exports.string().min(1),
|
|
25669
|
+
skillPaths: external_exports.array(external_exports.string().min(1)).min(1),
|
|
25670
|
+
path: external_exports.string().optional()
|
|
25627
25671
|
});
|
|
25628
|
-
var
|
|
25672
|
+
var skillUninstallInputSchema2 = external_exports.object({
|
|
25629
25673
|
name: external_exports.string().min(1),
|
|
25630
|
-
|
|
25631
|
-
rrule: external_exports.string().min(1),
|
|
25632
|
-
timezone: external_exports.string().min(1),
|
|
25633
|
-
quietHours: external_exports.array(quietWindowSchema).optional(),
|
|
25634
|
-
task: external_exports.string().min(1),
|
|
25635
|
-
sessionMode: scheduleSessionModeSchema.optional()
|
|
25674
|
+
skillPaths: external_exports.array(external_exports.string().min(1)).min(1)
|
|
25636
25675
|
});
|
|
25637
|
-
var
|
|
25638
|
-
|
|
25676
|
+
var skillScanInputSchema = external_exports.object({
|
|
25677
|
+
source: external_exports.string().min(1),
|
|
25678
|
+
path: external_exports.string().optional()
|
|
25679
|
+
});
|
|
25680
|
+
var skillPublishInputSchema2 = external_exports.object({
|
|
25639
25681
|
name: external_exports.string().min(1),
|
|
25640
|
-
|
|
25641
|
-
|
|
25642
|
-
|
|
25643
|
-
|
|
25644
|
-
|
|
25682
|
+
owner: external_exports.string().min(1),
|
|
25683
|
+
repo: external_exports.string().min(1),
|
|
25684
|
+
title: external_exports.string().min(1),
|
|
25685
|
+
body: external_exports.string(),
|
|
25686
|
+
// Source subdir the skill is published into; mirrors the scanner so a
|
|
25687
|
+
// subdir source's own scan finds what was published back to it.
|
|
25688
|
+
path: external_exports.string().optional()
|
|
25645
25689
|
});
|
|
25646
|
-
var
|
|
25647
|
-
|
|
25690
|
+
var skillReadLocalInputSchema = external_exports.object({
|
|
25691
|
+
name: external_exports.string().min(1)
|
|
25648
25692
|
});
|
|
25649
|
-
|
|
25650
|
-
|
|
25693
|
+
|
|
25694
|
+
// ../agent-runtime-api/src/modules/ssh/schemas.ts
|
|
25695
|
+
var sshAuthorizeKeyInputSchema = external_exports.object({
|
|
25696
|
+
publicKey: external_exports.string().min(1).max(8192).refine((s) => !/[\r\n]/.test(s), "must be a single line")
|
|
25651
25697
|
});
|
|
25652
|
-
|
|
25653
|
-
|
|
25698
|
+
|
|
25699
|
+
// ../agent-runtime-api/src/modules/import/types.ts
|
|
25700
|
+
var importBundleResultSchema = external_exports.object({
|
|
25701
|
+
filesWritten: external_exports.number().int().nonnegative(),
|
|
25702
|
+
bytes: external_exports.number().int().nonnegative(),
|
|
25703
|
+
durationMs: external_exports.number().int().nonnegative()
|
|
25654
25704
|
});
|
|
25655
|
-
|
|
25656
|
-
|
|
25657
|
-
|
|
25658
|
-
|
|
25705
|
+
|
|
25706
|
+
// ../agent-runtime-api/src/modules/runtime/types.ts
|
|
25707
|
+
var contributionKind = external_exports.enum([
|
|
25708
|
+
"env",
|
|
25709
|
+
"egress-allow",
|
|
25710
|
+
"egress-inject",
|
|
25711
|
+
"file",
|
|
25712
|
+
"mcp-entry",
|
|
25713
|
+
"skill-ref"
|
|
25714
|
+
]);
|
|
25715
|
+
var eventKind = external_exports.enum([
|
|
25716
|
+
"trigger",
|
|
25717
|
+
"schedule-reset",
|
|
25718
|
+
"workspace-seed",
|
|
25719
|
+
"experiment-trigger",
|
|
25720
|
+
"harness-config"
|
|
25721
|
+
]);
|
|
25722
|
+
var mergeMode = external_exports.enum([
|
|
25723
|
+
"overwrite",
|
|
25724
|
+
"section-marker",
|
|
25725
|
+
"key-targeted",
|
|
25726
|
+
"yaml-fill-if-missing"
|
|
25727
|
+
]);
|
|
25728
|
+
var fileFormat = external_exports.enum(["yaml", "json", "text", "ini", "toml"]);
|
|
25729
|
+
var envContribution = external_exports.object({
|
|
25730
|
+
kind: external_exports.literal("env"),
|
|
25731
|
+
name: external_exports.string().min(1),
|
|
25732
|
+
placeholder: external_exports.string()
|
|
25659
25733
|
});
|
|
25660
|
-
var
|
|
25661
|
-
|
|
25662
|
-
|
|
25663
|
-
|
|
25664
|
-
|
|
25665
|
-
|
|
25666
|
-
|
|
25667
|
-
|
|
25668
|
-
|
|
25669
|
-
|
|
25670
|
-
|
|
25671
|
-
|
|
25672
|
-
|
|
25673
|
-
|
|
25674
|
-
|
|
25675
|
-
|
|
25676
|
-
|
|
25677
|
-
|
|
25678
|
-
|
|
25679
|
-
|
|
25680
|
-
|
|
25681
|
-
|
|
25682
|
-
|
|
25683
|
-
|
|
25734
|
+
var egressAllowContribution = external_exports.object({
|
|
25735
|
+
kind: external_exports.literal("egress-allow"),
|
|
25736
|
+
host: external_exports.string().min(1),
|
|
25737
|
+
pathPattern: external_exports.string().optional()
|
|
25738
|
+
});
|
|
25739
|
+
var egressInjectContribution = external_exports.object({
|
|
25740
|
+
kind: external_exports.literal("egress-inject"),
|
|
25741
|
+
host: external_exports.string().min(1),
|
|
25742
|
+
pathPattern: external_exports.string().optional(),
|
|
25743
|
+
headerName: external_exports.string().min(1),
|
|
25744
|
+
valueFormat: external_exports.string().min(1),
|
|
25745
|
+
encoding: external_exports.literal("basic-x-access-token").optional(),
|
|
25746
|
+
// Moves the value into this query param instead of the header; restricted to unreserved chars since the Lua treats it as a trusted literal.
|
|
25747
|
+
queryParamName: external_exports.string().regex(/^[A-Za-z0-9_.~-]+$/).optional(),
|
|
25748
|
+
// Terminate this host's gateway chain as HTTP/2 so injection lands on a gRPC
|
|
25749
|
+
// stream (e.g. Modal's x-modal-token-* metadata). Flows to the injection-hosts
|
|
25750
|
+
// annotation the controller reads. Omit for HTTP/1.1 REST hosts.
|
|
25751
|
+
http2: external_exports.boolean().optional()
|
|
25752
|
+
});
|
|
25753
|
+
var fileContribution = external_exports.object({
|
|
25754
|
+
kind: external_exports.literal("file"),
|
|
25755
|
+
path: external_exports.string().min(1),
|
|
25756
|
+
format: fileFormat,
|
|
25757
|
+
mergeMode,
|
|
25758
|
+
content: external_exports.unknown().optional()
|
|
25759
|
+
});
|
|
25760
|
+
var mcpEntryContribution = external_exports.object({
|
|
25761
|
+
kind: external_exports.literal("mcp-entry"),
|
|
25762
|
+
name: external_exports.string().min(1),
|
|
25763
|
+
url: external_exports.string().url(),
|
|
25764
|
+
headers: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
25765
|
+
});
|
|
25766
|
+
var skillRefContribution = external_exports.object({
|
|
25767
|
+
kind: external_exports.literal("skill-ref"),
|
|
25768
|
+
sourceUrl: external_exports.string().min(1),
|
|
25769
|
+
name: external_exports.string().min(1),
|
|
25770
|
+
version: external_exports.string().min(1),
|
|
25771
|
+
path: external_exports.string().optional()
|
|
25772
|
+
});
|
|
25773
|
+
var contribution = external_exports.discriminatedUnion("kind", [
|
|
25774
|
+
envContribution,
|
|
25775
|
+
egressAllowContribution,
|
|
25776
|
+
egressInjectContribution,
|
|
25777
|
+
fileContribution,
|
|
25778
|
+
mcpEntryContribution,
|
|
25779
|
+
skillRefContribution
|
|
25684
25780
|
]);
|
|
25685
|
-
var
|
|
25686
|
-
|
|
25687
|
-
|
|
25688
|
-
|
|
25781
|
+
var triggerEventPayload = external_exports.object({
|
|
25782
|
+
scheduleId: external_exports.string().min(1),
|
|
25783
|
+
task: external_exports.string().min(1),
|
|
25784
|
+
sessionMode: external_exports.enum(["continuous", "fresh"]).optional(),
|
|
25785
|
+
mcpServers: external_exports.array(external_exports.unknown()).optional()
|
|
25689
25786
|
});
|
|
25690
|
-
|
|
25691
|
-
|
|
25692
|
-
|
|
25693
|
-
|
|
25694
|
-
|
|
25695
|
-
|
|
25696
|
-
|
|
25697
|
-
|
|
25698
|
-
|
|
25699
|
-
|
|
25700
|
-
|
|
25787
|
+
var triggerEvent = external_exports.object({
|
|
25788
|
+
id: external_exports.string().min(1),
|
|
25789
|
+
kind: external_exports.literal("trigger"),
|
|
25790
|
+
version: external_exports.number().int().nonnegative(),
|
|
25791
|
+
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
25792
|
+
payload: triggerEventPayload
|
|
25793
|
+
});
|
|
25794
|
+
var scheduleResetEventPayload = external_exports.object({
|
|
25795
|
+
scheduleId: external_exports.string().min(1)
|
|
25796
|
+
});
|
|
25797
|
+
var scheduleResetEvent = external_exports.object({
|
|
25798
|
+
id: external_exports.string().min(1),
|
|
25799
|
+
kind: external_exports.literal("schedule-reset"),
|
|
25800
|
+
version: external_exports.number().int().nonnegative(),
|
|
25801
|
+
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
25802
|
+
payload: scheduleResetEventPayload
|
|
25803
|
+
});
|
|
25804
|
+
var workspaceSeedEventPayload = external_exports.object({
|
|
25805
|
+
url: external_exports.string().min(1),
|
|
25806
|
+
/** Branch or tag to clone; omitted = the repo's default branch. */
|
|
25807
|
+
ref: external_exports.string().min(1).optional()
|
|
25808
|
+
});
|
|
25809
|
+
var workspaceSeedEvent = external_exports.object({
|
|
25810
|
+
id: external_exports.string().min(1),
|
|
25811
|
+
kind: external_exports.literal("workspace-seed"),
|
|
25812
|
+
version: external_exports.number().int().nonnegative(),
|
|
25813
|
+
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
25814
|
+
payload: workspaceSeedEventPayload
|
|
25815
|
+
});
|
|
25816
|
+
var experimentTriggerEventPayload = external_exports.object({
|
|
25817
|
+
experimentId: external_exports.string().min(1),
|
|
25818
|
+
task: external_exports.string().min(1)
|
|
25819
|
+
});
|
|
25820
|
+
var experimentTriggerEvent = external_exports.object({
|
|
25821
|
+
id: external_exports.string().min(1),
|
|
25822
|
+
kind: external_exports.literal("experiment-trigger"),
|
|
25823
|
+
version: external_exports.number().int().nonnegative(),
|
|
25824
|
+
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
25825
|
+
payload: experimentTriggerEventPayload
|
|
25826
|
+
});
|
|
25827
|
+
var harnessConfigEventPayload = external_exports.object({
|
|
25828
|
+
model: external_exports.string().min(1).optional(),
|
|
25829
|
+
mode: external_exports.string().min(1).optional(),
|
|
25830
|
+
configOptions: external_exports.record(external_exports.string().min(1), external_exports.string()).optional(),
|
|
25831
|
+
unset: external_exports.array(external_exports.string().min(1)).optional()
|
|
25832
|
+
});
|
|
25833
|
+
var harnessConfigEvent = external_exports.object({
|
|
25834
|
+
id: external_exports.string().min(1),
|
|
25835
|
+
kind: external_exports.literal("harness-config"),
|
|
25836
|
+
version: external_exports.number().int().nonnegative(),
|
|
25837
|
+
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
25838
|
+
payload: harnessConfigEventPayload
|
|
25839
|
+
});
|
|
25840
|
+
var event = external_exports.discriminatedUnion("kind", [
|
|
25841
|
+
triggerEvent,
|
|
25842
|
+
scheduleResetEvent,
|
|
25843
|
+
workspaceSeedEvent,
|
|
25844
|
+
experimentTriggerEvent,
|
|
25845
|
+
harnessConfigEvent
|
|
25846
|
+
]);
|
|
25847
|
+
var harnessConfigChoice = external_exports.object({
|
|
25848
|
+
value: external_exports.string().min(1),
|
|
25849
|
+
name: external_exports.string().min(1),
|
|
25850
|
+
description: external_exports.string().optional()
|
|
25851
|
+
});
|
|
25852
|
+
var harnessConfigOptionGroup = external_exports.object({
|
|
25853
|
+
// "model", "mode", or a configOption id (e.g. "effort").
|
|
25854
|
+
id: external_exports.string().min(1),
|
|
25855
|
+
name: external_exports.string().min(1),
|
|
25856
|
+
description: external_exports.string().optional(),
|
|
25857
|
+
// ACP-style category: "model" | "mode" | "thought_level" | …
|
|
25858
|
+
category: external_exports.string().min(1),
|
|
25859
|
+
choices: external_exports.array(harnessConfigChoice)
|
|
25860
|
+
});
|
|
25861
|
+
var harnessConfigCatalog = external_exports.object({
|
|
25862
|
+
options: external_exports.array(harnessConfigOptionGroup),
|
|
25863
|
+
// Per-model validity: allowed choice values per gated group. Model absent =
|
|
25864
|
+
// all allowed; empty array = group hidden for that model (e.g. Haiku effort).
|
|
25865
|
+
modelConstraints: external_exports.record(external_exports.string().min(1), external_exports.record(external_exports.string().min(1), external_exports.array(external_exports.string()))).optional()
|
|
25866
|
+
});
|
|
25867
|
+
var capabilities = external_exports.object({
|
|
25868
|
+
contributions: external_exports.array(contributionKind),
|
|
25869
|
+
events: external_exports.array(eventKind),
|
|
25870
|
+
// Whether the harness declares a config mapping (gates the UI panel). Optional
|
|
25871
|
+
// for forward-compat with agents that predate it.
|
|
25872
|
+
harnessConfig: external_exports.boolean().optional(),
|
|
25873
|
+
// The option catalog from the harness's manifest (absent → UI hides the panel).
|
|
25874
|
+
harnessConfigCatalog: harnessConfigCatalog.optional()
|
|
25875
|
+
});
|
|
25876
|
+
var stateSlice = external_exports.object({
|
|
25877
|
+
contributions: external_exports.array(contribution),
|
|
25878
|
+
hash: external_exports.string().min(1)
|
|
25879
|
+
});
|
|
25880
|
+
var applyStateInput = external_exports.object({
|
|
25881
|
+
version: external_exports.number().int().positive(),
|
|
25882
|
+
state: stateSlice,
|
|
25883
|
+
events: external_exports.array(event)
|
|
25884
|
+
});
|
|
25885
|
+
var driverFailure = external_exports.object({
|
|
25886
|
+
kind: contributionKind,
|
|
25887
|
+
message: external_exports.string().min(1)
|
|
25888
|
+
});
|
|
25889
|
+
var applyStateResult = external_exports.discriminatedUnion("status", [
|
|
25890
|
+
// Processed: resulting cursor + any per-driver failures (empty on a fully clean apply).
|
|
25891
|
+
external_exports.object({
|
|
25892
|
+
status: external_exports.literal("ok"),
|
|
25893
|
+
appliedVersion: external_exports.number().int().nonnegative(),
|
|
25894
|
+
appliedHash: external_exports.string().min(1).nullable(),
|
|
25895
|
+
// null until the first clean settle
|
|
25896
|
+
failures: external_exports.array(driverFailure).default([]),
|
|
25897
|
+
settledEvents: external_exports.array(external_exports.string()).default([])
|
|
25898
|
+
}),
|
|
25899
|
+
// Contributions already at ≥ the requested version; worker reconciles. Events still apply (own version) — settledEvents reports which.
|
|
25900
|
+
external_exports.object({
|
|
25901
|
+
status: external_exports.literal("stale"),
|
|
25902
|
+
appliedVersion: external_exports.number().int().nonnegative(),
|
|
25903
|
+
settledEvents: external_exports.array(external_exports.string()).default([])
|
|
25904
|
+
})
|
|
25905
|
+
]);
|
|
25906
|
+
var helloInput = external_exports.object({
|
|
25907
|
+
lastAppliedVersion: external_exports.number().int().nonnegative().optional(),
|
|
25908
|
+
lastAppliedHash: external_exports.string().optional(),
|
|
25909
|
+
protocolVersion: external_exports.literal("v1"),
|
|
25910
|
+
agentRuntimeVersion: external_exports.string(),
|
|
25911
|
+
capabilities
|
|
25912
|
+
});
|
|
25913
|
+
var helloResult = external_exports.object({
|
|
25914
|
+
version: external_exports.number().int().positive().optional(),
|
|
25915
|
+
state: stateSlice.optional(),
|
|
25916
|
+
events: external_exports.array(event)
|
|
25701
25917
|
});
|
|
25702
25918
|
|
|
25703
|
-
//
|
|
25704
|
-
var
|
|
25705
|
-
|
|
25706
|
-
|
|
25707
|
-
|
|
25708
|
-
|
|
25709
|
-
|
|
25710
|
-
|
|
25711
|
-
|
|
25712
|
-
|
|
25713
|
-
|
|
25714
|
-
|
|
25715
|
-
|
|
25716
|
-
|
|
25717
|
-
|
|
25718
|
-
|
|
25719
|
-
|
|
25720
|
-
|
|
25721
|
-
|
|
25722
|
-
Weekday2.fromStr = function(str) {
|
|
25723
|
-
return new Weekday2(ALL_WEEKDAYS.indexOf(str));
|
|
25724
|
-
};
|
|
25725
|
-
Weekday2.prototype.nth = function(n) {
|
|
25726
|
-
return this.n === n ? this : new Weekday2(this.weekday, n);
|
|
25727
|
-
};
|
|
25728
|
-
Weekday2.prototype.equals = function(other) {
|
|
25729
|
-
return this.weekday === other.weekday && this.n === other.n;
|
|
25730
|
-
};
|
|
25731
|
-
Weekday2.prototype.toString = function() {
|
|
25732
|
-
var s = ALL_WEEKDAYS[this.weekday];
|
|
25733
|
-
if (this.n)
|
|
25734
|
-
s = (this.n > 0 ? "+" : "") + String(this.n) + s;
|
|
25735
|
-
return s;
|
|
25736
|
-
};
|
|
25737
|
-
Weekday2.prototype.getJsWeekday = function() {
|
|
25738
|
-
return this.weekday === 6 ? 0 : this.weekday + 1;
|
|
25739
|
-
};
|
|
25740
|
-
return Weekday2;
|
|
25741
|
-
})()
|
|
25742
|
-
);
|
|
25919
|
+
// ../api-server-api/src/modules/harness-config/schemas.ts
|
|
25920
|
+
var agentConfigOptionsSchema = external_exports.record(external_exports.string().min(1), external_exports.string());
|
|
25921
|
+
var harnessConfigApplyInputSchema = external_exports.object({
|
|
25922
|
+
agentId: external_exports.string().min(1),
|
|
25923
|
+
model: external_exports.string().min(1).optional(),
|
|
25924
|
+
mode: external_exports.string().min(1).optional(),
|
|
25925
|
+
configOptions: agentConfigOptionsSchema.optional(),
|
|
25926
|
+
unset: external_exports.array(external_exports.string().min(1)).optional()
|
|
25927
|
+
});
|
|
25928
|
+
var harnessConfigStatusInputSchema = external_exports.object({
|
|
25929
|
+
agentId: external_exports.string().min(1)
|
|
25930
|
+
});
|
|
25931
|
+
var harnessConfigStatusSchema = external_exports.object({
|
|
25932
|
+
supported: external_exports.boolean(),
|
|
25933
|
+
catalog: harnessConfigCatalog.nullable()
|
|
25934
|
+
});
|
|
25935
|
+
var harnessConfigSettledSchema = external_exports.object({
|
|
25936
|
+
settled: external_exports.boolean()
|
|
25937
|
+
});
|
|
25743
25938
|
|
|
25744
|
-
//
|
|
25745
|
-
var
|
|
25746
|
-
|
|
25747
|
-
|
|
25748
|
-
|
|
25749
|
-
|
|
25750
|
-
|
|
25939
|
+
// ../api-server-api/src/modules/egress-rules/schemas.ts
|
|
25940
|
+
var ruleVerdictSchema = external_exports.enum(["allow", "deny"]);
|
|
25941
|
+
var egressPresetSchema = external_exports.enum(["none", "trusted", "all"]);
|
|
25942
|
+
var egressRuleListForAgentInputSchema = external_exports.object({
|
|
25943
|
+
agentId: external_exports.string().min(1)
|
|
25944
|
+
});
|
|
25945
|
+
var egressRuleCurrentPresetInputSchema = external_exports.object({
|
|
25946
|
+
agentId: external_exports.string().min(1)
|
|
25947
|
+
});
|
|
25948
|
+
var egressRuleCreateInputSchema = external_exports.object({
|
|
25949
|
+
agentId: external_exports.string().min(1),
|
|
25950
|
+
host: external_exports.string().min(1),
|
|
25951
|
+
method: external_exports.string().min(1).default("*"),
|
|
25952
|
+
pathPattern: external_exports.string().min(1).default("*"),
|
|
25953
|
+
verdict: ruleVerdictSchema
|
|
25954
|
+
});
|
|
25955
|
+
var egressRuleUpdateInputSchema = external_exports.object({
|
|
25956
|
+
id: external_exports.string().min(1),
|
|
25957
|
+
method: external_exports.string().min(1).optional(),
|
|
25958
|
+
pathPattern: external_exports.string().min(1).optional(),
|
|
25959
|
+
verdict: ruleVerdictSchema.optional()
|
|
25960
|
+
});
|
|
25961
|
+
var egressRuleRevokeInputSchema = external_exports.object({
|
|
25962
|
+
id: external_exports.string().min(1)
|
|
25963
|
+
});
|
|
25964
|
+
var egressRuleApplyPresetInputSchema = external_exports.object({
|
|
25965
|
+
agentId: external_exports.string().min(1),
|
|
25966
|
+
preset: egressPresetSchema
|
|
25967
|
+
});
|
|
25968
|
+
|
|
25969
|
+
// ../api-server-api/src/modules/agents/schemas.ts
|
|
25970
|
+
var idSchema = external_exports.object({ id: external_exports.string().min(1) });
|
|
25971
|
+
var agentCreateInputSchema = external_exports.object({
|
|
25972
|
+
name: external_exports.string().min(1).refine((n) => !n.startsWith("agent-"), {
|
|
25973
|
+
message: "agent name cannot start with 'agent-' (reserved for IDs)"
|
|
25974
|
+
}),
|
|
25975
|
+
templateId: external_exports.string().optional(),
|
|
25976
|
+
image: external_exports.string().optional(),
|
|
25977
|
+
description: external_exports.string().optional(),
|
|
25978
|
+
env: external_exports.array(envVarSchema).max(64).optional(),
|
|
25979
|
+
secretRef: external_exports.string().optional(),
|
|
25980
|
+
registryCredential: external_exports.object({
|
|
25981
|
+
server: external_exports.string().min(1),
|
|
25982
|
+
username: external_exports.string().min(1),
|
|
25983
|
+
password: external_exports.string().min(1)
|
|
25984
|
+
}).optional(),
|
|
25985
|
+
allowedUserEmails: external_exports.array(external_exports.email()).optional(),
|
|
25986
|
+
egressPreset: egressPresetSchema.optional(),
|
|
25987
|
+
// Per-agent idle timeout override in minutes (0 = never hibernate); omit to inherit the global default.
|
|
25988
|
+
hibernationTimeoutMin: external_exports.number().int().min(0).optional(),
|
|
25989
|
+
// Optional: clone this public repo (optionally a branch/tag via `ref`) into
|
|
25990
|
+
// the work dir once, via a one-shot `workspace-seed` event. Not enforced
|
|
25991
|
+
// against the `gitRepos` catalog server-side — the clone runs in the
|
|
25992
|
+
// egress-gated agent pod, so this reaches no URL the agent couldn't already
|
|
25993
|
+
// reach itself.
|
|
25994
|
+
gitRepo: external_exports.object({ url: external_exports.url(), ref: external_exports.string().min(1).optional() }).optional(),
|
|
25995
|
+
// Initial connection grants, settled into the spec at create so credentials
|
|
25996
|
+
// ride the first snapshot and the gateway renders its chains once (no
|
|
25997
|
+
// readiness flap).
|
|
25998
|
+
connectionIds: external_exports.array(external_exports.string()).optional()
|
|
25999
|
+
}).refine((d2) => d2.templateId !== void 0 || d2.image !== void 0, {
|
|
26000
|
+
message: "Either templateId or image is required"
|
|
26001
|
+
});
|
|
26002
|
+
var agentUpdateInputSchema = external_exports.object({
|
|
26003
|
+
id: external_exports.string().min(1),
|
|
26004
|
+
name: external_exports.string().min(1).max(255).optional(),
|
|
26005
|
+
description: external_exports.string().optional(),
|
|
26006
|
+
env: external_exports.array(envVarSchema).max(64).optional(),
|
|
26007
|
+
secretRef: external_exports.string().optional(),
|
|
26008
|
+
allowedUserEmails: external_exports.array(external_exports.email()).optional(),
|
|
26009
|
+
// Per-agent idle timeout override in minutes (0 = never hibernate); null clears it back to the global default.
|
|
26010
|
+
hibernationTimeoutMin: external_exports.number().int().min(0).nullable().optional()
|
|
26011
|
+
});
|
|
26012
|
+
var agentConnectSlackInputSchema = external_exports.object({
|
|
26013
|
+
id: external_exports.string().min(1),
|
|
26014
|
+
slackChannelId: external_exports.string().min(1)
|
|
26015
|
+
});
|
|
26016
|
+
var agentConnectTelegramInputSchema = external_exports.object({
|
|
26017
|
+
id: external_exports.string().min(1),
|
|
26018
|
+
botToken: external_exports.string().min(1)
|
|
26019
|
+
});
|
|
26020
|
+
|
|
26021
|
+
// ../api-server-api/src/modules/schedules/schemas.ts
|
|
26022
|
+
var scheduleSessionModeSchema = external_exports.enum(["continuous", "fresh"]);
|
|
26023
|
+
var quietWindowSchema = external_exports.object({
|
|
26024
|
+
startTime: external_exports.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, "HH:MM required"),
|
|
26025
|
+
endTime: external_exports.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, "HH:MM required"),
|
|
26026
|
+
enabled: external_exports.boolean()
|
|
26027
|
+
}).refine((w3) => w3.startTime !== w3.endTime, {
|
|
26028
|
+
message: "startTime and endTime must differ"
|
|
26029
|
+
});
|
|
26030
|
+
var scheduleListInputSchema = external_exports.object({
|
|
26031
|
+
agentId: external_exports.string().min(1)
|
|
26032
|
+
});
|
|
26033
|
+
var scheduleGetInputSchema = external_exports.object({
|
|
26034
|
+
id: external_exports.string().min(1)
|
|
26035
|
+
});
|
|
26036
|
+
var scheduleCreateCronInputSchema = external_exports.object({
|
|
26037
|
+
name: external_exports.string().min(1),
|
|
26038
|
+
agentId: external_exports.string().min(1),
|
|
26039
|
+
cron: external_exports.string().min(1),
|
|
26040
|
+
task: external_exports.string().min(1),
|
|
26041
|
+
sessionMode: scheduleSessionModeSchema.optional()
|
|
26042
|
+
});
|
|
26043
|
+
var scheduleCreateRRuleInputSchema = external_exports.object({
|
|
26044
|
+
name: external_exports.string().min(1),
|
|
26045
|
+
agentId: external_exports.string().min(1),
|
|
26046
|
+
rrule: external_exports.string().min(1),
|
|
26047
|
+
timezone: external_exports.string().min(1),
|
|
26048
|
+
quietHours: external_exports.array(quietWindowSchema).optional(),
|
|
26049
|
+
task: external_exports.string().min(1),
|
|
26050
|
+
sessionMode: scheduleSessionModeSchema.optional()
|
|
26051
|
+
});
|
|
26052
|
+
var scheduleUpdateRRuleInputSchema = external_exports.object({
|
|
26053
|
+
id: external_exports.string().min(1),
|
|
26054
|
+
name: external_exports.string().min(1),
|
|
26055
|
+
rrule: external_exports.string().min(1),
|
|
26056
|
+
timezone: external_exports.string().min(1),
|
|
26057
|
+
quietHours: external_exports.array(quietWindowSchema),
|
|
26058
|
+
task: external_exports.string().min(1),
|
|
26059
|
+
sessionMode: scheduleSessionModeSchema.optional()
|
|
26060
|
+
});
|
|
26061
|
+
var scheduleDeleteInputSchema = external_exports.object({
|
|
26062
|
+
id: external_exports.string().min(1)
|
|
26063
|
+
});
|
|
26064
|
+
var scheduleToggleInputSchema = external_exports.object({
|
|
26065
|
+
id: external_exports.string().min(1)
|
|
26066
|
+
});
|
|
26067
|
+
var scheduleResetSessionInputSchema = external_exports.object({
|
|
26068
|
+
id: external_exports.string().min(1)
|
|
26069
|
+
});
|
|
26070
|
+
var quietWindowConfigMapSchema = external_exports.object({
|
|
26071
|
+
startTime: external_exports.string(),
|
|
26072
|
+
endTime: external_exports.string(),
|
|
26073
|
+
enabled: external_exports.boolean()
|
|
26074
|
+
});
|
|
26075
|
+
var scheduleCreatorSchema = external_exports.enum(["user", "agent"]);
|
|
26076
|
+
var scheduleSpecCronSchema = external_exports.object({
|
|
26077
|
+
version: external_exports.string(),
|
|
26078
|
+
type: external_exports.literal("cron"),
|
|
26079
|
+
cron: external_exports.string(),
|
|
26080
|
+
task: external_exports.string().optional(),
|
|
26081
|
+
enabled: external_exports.boolean(),
|
|
26082
|
+
sessionMode: scheduleSessionModeSchema.optional(),
|
|
26083
|
+
createdBy: scheduleCreatorSchema
|
|
26084
|
+
}).passthrough();
|
|
26085
|
+
var scheduleSpecRRuleSchema = external_exports.object({
|
|
26086
|
+
version: external_exports.string(),
|
|
26087
|
+
type: external_exports.literal("rrule"),
|
|
26088
|
+
rrule: external_exports.string(),
|
|
26089
|
+
timezone: external_exports.string(),
|
|
26090
|
+
quietHours: external_exports.array(quietWindowConfigMapSchema).optional(),
|
|
26091
|
+
task: external_exports.string().optional(),
|
|
26092
|
+
enabled: external_exports.boolean(),
|
|
26093
|
+
sessionMode: scheduleSessionModeSchema.optional(),
|
|
26094
|
+
createdBy: scheduleCreatorSchema
|
|
26095
|
+
}).passthrough();
|
|
26096
|
+
var scheduleSpecSchema = external_exports.discriminatedUnion("type", [
|
|
26097
|
+
scheduleSpecCronSchema,
|
|
26098
|
+
scheduleSpecRRuleSchema
|
|
26099
|
+
]);
|
|
26100
|
+
var scheduleStatusSchema = external_exports.object({
|
|
26101
|
+
lastRun: external_exports.string().optional(),
|
|
26102
|
+
nextRun: external_exports.string().optional(),
|
|
26103
|
+
lastResult: external_exports.string().optional()
|
|
26104
|
+
});
|
|
26105
|
+
|
|
26106
|
+
// ../api-server-api/src/modules/experiments/schemas.ts
|
|
26107
|
+
var armVariationSchema = external_exports.string();
|
|
26108
|
+
var experimentIdInputSchema = external_exports.object({
|
|
26109
|
+
id: external_exports.string().min(1)
|
|
26110
|
+
});
|
|
26111
|
+
var experimentCreateInputSchema = external_exports.object({
|
|
26112
|
+
name: external_exports.string().trim().min(1, "name is required").max(200),
|
|
26113
|
+
prompt: external_exports.string().trim().min(1, "prompt is required")
|
|
26114
|
+
});
|
|
26115
|
+
var experimentAddArmInputSchema = external_exports.object({
|
|
26116
|
+
experimentId: external_exports.string().min(1),
|
|
26117
|
+
agentId: external_exports.string().min(1),
|
|
26118
|
+
armVariation: armVariationSchema.default("")
|
|
26119
|
+
});
|
|
26120
|
+
|
|
26121
|
+
// ../../node_modules/.pnpm/rrule@2.8.1/node_modules/rrule/dist/esm/index.js
|
|
26122
|
+
var esm_exports = {};
|
|
26123
|
+
__export(esm_exports, {
|
|
26124
|
+
ALL_WEEKDAYS: () => ALL_WEEKDAYS,
|
|
26125
|
+
Frequency: () => Frequency,
|
|
26126
|
+
RRule: () => RRule,
|
|
26127
|
+
RRuleSet: () => RRuleSet,
|
|
26128
|
+
Weekday: () => Weekday,
|
|
26129
|
+
datetime: () => datetime3,
|
|
26130
|
+
rrulestr: () => rrulestr
|
|
26131
|
+
});
|
|
26132
|
+
|
|
26133
|
+
// ../../node_modules/.pnpm/rrule@2.8.1/node_modules/rrule/dist/esm/weekday.js
|
|
26134
|
+
var ALL_WEEKDAYS = [
|
|
26135
|
+
"MO",
|
|
26136
|
+
"TU",
|
|
26137
|
+
"WE",
|
|
26138
|
+
"TH",
|
|
26139
|
+
"FR",
|
|
26140
|
+
"SA",
|
|
26141
|
+
"SU"
|
|
26142
|
+
];
|
|
26143
|
+
var Weekday = (
|
|
26144
|
+
/** @class */
|
|
26145
|
+
(function() {
|
|
26146
|
+
function Weekday2(weekday, n) {
|
|
26147
|
+
if (n === 0)
|
|
26148
|
+
throw new Error("Can't create weekday with n == 0");
|
|
26149
|
+
this.weekday = weekday;
|
|
26150
|
+
this.n = n;
|
|
26151
|
+
}
|
|
26152
|
+
Weekday2.fromStr = function(str) {
|
|
26153
|
+
return new Weekday2(ALL_WEEKDAYS.indexOf(str));
|
|
26154
|
+
};
|
|
26155
|
+
Weekday2.prototype.nth = function(n) {
|
|
26156
|
+
return this.n === n ? this : new Weekday2(this.weekday, n);
|
|
26157
|
+
};
|
|
26158
|
+
Weekday2.prototype.equals = function(other) {
|
|
26159
|
+
return this.weekday === other.weekday && this.n === other.n;
|
|
26160
|
+
};
|
|
26161
|
+
Weekday2.prototype.toString = function() {
|
|
26162
|
+
var s = ALL_WEEKDAYS[this.weekday];
|
|
26163
|
+
if (this.n)
|
|
26164
|
+
s = (this.n > 0 ? "+" : "") + String(this.n) + s;
|
|
26165
|
+
return s;
|
|
26166
|
+
};
|
|
26167
|
+
Weekday2.prototype.getJsWeekday = function() {
|
|
26168
|
+
return this.weekday === 6 ? 0 : this.weekday + 1;
|
|
26169
|
+
};
|
|
26170
|
+
return Weekday2;
|
|
26171
|
+
})()
|
|
26172
|
+
);
|
|
26173
|
+
|
|
26174
|
+
// ../../node_modules/.pnpm/rrule@2.8.1/node_modules/rrule/dist/esm/helpers.js
|
|
26175
|
+
var isPresent = function(value) {
|
|
26176
|
+
return value !== null && value !== void 0;
|
|
26177
|
+
};
|
|
26178
|
+
var isNumber = function(value) {
|
|
26179
|
+
return typeof value === "number";
|
|
26180
|
+
};
|
|
25751
26181
|
var isWeekdayStr = function(value) {
|
|
25752
26182
|
return typeof value === "string" && ALL_WEEKDAYS.includes(value);
|
|
25753
26183
|
};
|
|
@@ -28731,55 +29161,6 @@ function parseHHMM(s) {
|
|
|
28731
29161
|
return h2 * 60 + mi;
|
|
28732
29162
|
}
|
|
28733
29163
|
|
|
28734
|
-
// ../api-server-api/src/modules/secrets/schemas.ts
|
|
28735
|
-
var presetSecretTypeSchema = external_exports.enum([
|
|
28736
|
-
"anthropic",
|
|
28737
|
-
"ibm-litellm",
|
|
28738
|
-
"openai",
|
|
28739
|
-
"bob"
|
|
28740
|
-
]);
|
|
28741
|
-
var hostPatternSchema = external_exports.string().min(1).max(253).refine((v2) => !v2.includes("*"), {
|
|
28742
|
-
message: "Wildcard host patterns are not supported. Please specify exact hostnames."
|
|
28743
|
-
});
|
|
28744
|
-
var envMappingSchema = external_exports.object({
|
|
28745
|
-
envName: external_exports.string().min(1).max(255).regex(ENV_NAME_RE, "envName must match [A-Z_][A-Z0-9_]*"),
|
|
28746
|
-
placeholder: external_exports.string().min(1).max(1e3)
|
|
28747
|
-
});
|
|
28748
|
-
var envMappingsSchema = external_exports.array(envMappingSchema).max(32);
|
|
28749
|
-
var secretCreateInputSchema = external_exports.object({
|
|
28750
|
-
type: presetSecretTypeSchema,
|
|
28751
|
-
name: external_exports.string().min(1).max(100),
|
|
28752
|
-
value: external_exports.string().min(1),
|
|
28753
|
-
envMappings: envMappingsSchema.optional()
|
|
28754
|
-
});
|
|
28755
|
-
var secretUpdateInputSchema = external_exports.object({
|
|
28756
|
-
id: external_exports.string().min(1),
|
|
28757
|
-
name: external_exports.string().min(1).max(100).optional(),
|
|
28758
|
-
value: external_exports.string().min(1).optional(),
|
|
28759
|
-
envMappings: envMappingsSchema.optional()
|
|
28760
|
-
});
|
|
28761
|
-
var secretDeleteInputSchema = external_exports.object({ id: external_exports.string().min(1) });
|
|
28762
|
-
var secretCreateGithubPatInputSchema = external_exports.object({
|
|
28763
|
-
name: external_exports.string().min(1).max(100),
|
|
28764
|
-
token: external_exports.string().min(1)
|
|
28765
|
-
});
|
|
28766
|
-
var secretUpdateGithubPatInputSchema = external_exports.object({
|
|
28767
|
-
apiSecretId: external_exports.string().min(1),
|
|
28768
|
-
gitSecretId: external_exports.string().min(1),
|
|
28769
|
-
token: external_exports.string().min(1)
|
|
28770
|
-
});
|
|
28771
|
-
var secretGetAgentAccessInputSchema = external_exports.object({
|
|
28772
|
-
agentId: external_exports.string().min(1)
|
|
28773
|
-
});
|
|
28774
|
-
var secretSetAgentAccessInputSchema = external_exports.object({
|
|
28775
|
-
agentId: external_exports.string().min(1),
|
|
28776
|
-
secretIds: external_exports.array(external_exports.string().min(1))
|
|
28777
|
-
});
|
|
28778
|
-
var secretTestAnthropicInputSchema = external_exports.object({
|
|
28779
|
-
value: external_exports.string().min(1),
|
|
28780
|
-
envName: external_exports.enum(["ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"])
|
|
28781
|
-
});
|
|
28782
|
-
|
|
28783
29164
|
// ../api-server-api/src/modules/connections/providers.ts
|
|
28784
29165
|
var DEFAULT_ENV_PLACEHOLDER = "dummy-placeholder";
|
|
28785
29166
|
var IBM_LITELLM_HOST = "ete-litellm.ai-models.vpc.res.ibm.com";
|
|
@@ -28798,359 +29179,136 @@ function ibmLitellmEnvMappings() {
|
|
|
28798
29179
|
{ envName: "OPENAI_MODEL", placeholder: "gpt-5.5" }
|
|
28799
29180
|
];
|
|
28800
29181
|
}
|
|
28801
|
-
|
|
28802
|
-
|
|
28803
|
-
|
|
28804
|
-
|
|
28805
|
-
{ envName: "BOBSHELL_API_KEY", placeholder: BOB_PLACEHOLDER }
|
|
29182
|
+
function openaiEnvMappings() {
|
|
29183
|
+
return [
|
|
29184
|
+
{ envName: "OPENAI_API_KEY", placeholder: DEFAULT_ENV_PLACEHOLDER },
|
|
29185
|
+
{ envName: "OPENAI_BASE_URL", placeholder: "https://api.openai.com/v1" }
|
|
28806
29186
|
];
|
|
28807
|
-
const push = (envName, value) => {
|
|
28808
|
-
const trimmed = value?.trim();
|
|
28809
|
-
if (trimmed) out.push({ envName, placeholder: trimmed });
|
|
28810
|
-
};
|
|
28811
|
-
push("BOB_SHELL_MODEL", pins.model);
|
|
28812
|
-
push("BOB_INSTANCE_ID", pins.agentId);
|
|
28813
|
-
push("BOB_TEAM_ID", pins.teamId);
|
|
28814
|
-
push("BOB_MAX_COINS", pins.maxCoins);
|
|
28815
|
-
push("BOB_CHAT_MODE", pins.chatMode);
|
|
28816
|
-
return out;
|
|
28817
29187
|
}
|
|
28818
|
-
var
|
|
28819
|
-
|
|
28820
|
-
|
|
28821
|
-
|
|
28822
|
-
|
|
28823
|
-
|
|
28824
|
-
|
|
28825
|
-
|
|
28826
|
-
|
|
28827
|
-
|
|
28828
|
-
|
|
28829
|
-
|
|
28830
|
-
|
|
28831
|
-
|
|
28832
|
-
|
|
28833
|
-
|
|
28834
|
-
|
|
28835
|
-
|
|
28836
|
-
|
|
28837
|
-
|
|
28838
|
-
|
|
28839
|
-
|
|
28840
|
-
|
|
28841
|
-
|
|
28842
|
-
|
|
28843
|
-
|
|
28844
|
-
|
|
28845
|
-
|
|
28846
|
-
|
|
28847
|
-
|
|
28848
|
-
|
|
28849
|
-
|
|
28850
|
-
|
|
28851
|
-
|
|
28852
|
-
|
|
28853
|
-
|
|
28854
|
-
|
|
28855
|
-
|
|
28856
|
-
|
|
28857
|
-
|
|
28858
|
-
|
|
28859
|
-
|
|
28860
|
-
|
|
28861
|
-
|
|
28862
|
-
|
|
28863
|
-
|
|
28864
|
-
|
|
28865
|
-
|
|
28866
|
-
|
|
28867
|
-
|
|
28868
|
-
|
|
28869
|
-
|
|
28870
|
-
|
|
28871
|
-
|
|
28872
|
-
|
|
28873
|
-
|
|
28874
|
-
|
|
28875
|
-
|
|
28876
|
-
|
|
28877
|
-
|
|
28878
|
-
|
|
28879
|
-
}
|
|
28880
|
-
]
|
|
28881
|
-
},
|
|
28882
|
-
|
|
28883
|
-
id: "
|
|
28884
|
-
displayName: "
|
|
28885
|
-
hostPattern:
|
|
28886
|
-
|
|
28887
|
-
|
|
28888
|
-
|
|
28889
|
-
|
|
28890
|
-
|
|
28891
|
-
|
|
28892
|
-
|
|
28893
|
-
|
|
28894
|
-
|
|
28895
|
-
|
|
28896
|
-
|
|
28897
|
-
|
|
28898
|
-
|
|
28899
|
-
|
|
28900
|
-
|
|
28901
|
-
|
|
28902
|
-
|
|
28903
|
-
|
|
28904
|
-
|
|
28905
|
-
|
|
28906
|
-
)
|
|
28907
|
-
|
|
28908
|
-
|
|
28909
|
-
|
|
28910
|
-
|
|
28911
|
-
|
|
28912
|
-
|
|
28913
|
-
|
|
28914
|
-
|
|
28915
|
-
|
|
28916
|
-
|
|
28917
|
-
|
|
28918
|
-
|
|
28919
|
-
|
|
28920
|
-
|
|
28921
|
-
|
|
28922
|
-
|
|
28923
|
-
|
|
28924
|
-
|
|
28925
|
-
|
|
28926
|
-
|
|
28927
|
-
)
|
|
28928
|
-
|
|
28929
|
-
|
|
28930
|
-
|
|
28931
|
-
|
|
28932
|
-
|
|
28933
|
-
|
|
28934
|
-
|
|
28935
|
-
|
|
28936
|
-
|
|
28937
|
-
|
|
28938
|
-
|
|
28939
|
-
|
|
28940
|
-
|
|
28941
|
-
}
|
|
28942
|
-
var fileCreateInputSchema = external_exports.object({
|
|
28943
|
-
path: pathSchema,
|
|
28944
|
-
content: external_exports.string()
|
|
28945
|
-
});
|
|
28946
|
-
var fileMkdirInputSchema = external_exports.object({ path: pathSchema });
|
|
28947
|
-
var fileRenameInputSchema = external_exports.object({
|
|
28948
|
-
from: pathSchema,
|
|
28949
|
-
to: pathSchema,
|
|
28950
|
-
overwrite: external_exports.boolean().optional()
|
|
28951
|
-
});
|
|
28952
|
-
var fileRemoveInputSchema = external_exports.object({ path: pathSchema });
|
|
28953
|
-
var fileUploadInputSchema = external_exports.object({
|
|
28954
|
-
path: pathSchema,
|
|
28955
|
-
contentBase64: external_exports.string(),
|
|
28956
|
-
/** Browser-reported MIME (File.type). Carried in the API for observability
|
|
28957
|
-
* and forward-compat; server-side reads still detect MIME from magic
|
|
28958
|
-
* bytes so we don't need to persist this. */
|
|
28959
|
-
contentType: external_exports.string().max(255).optional(),
|
|
28960
|
-
overwrite: external_exports.boolean().optional()
|
|
28961
|
-
});
|
|
28962
|
-
|
|
28963
|
-
// ../agent-runtime-api/src/modules/skills/schemas.ts
|
|
28964
|
-
var skillInstallInputSchema = external_exports.object({
|
|
28965
|
-
sourceUrl: external_exports.string().min(1),
|
|
28966
|
-
name: external_exports.string().min(1),
|
|
28967
|
-
version: external_exports.string().min(1),
|
|
28968
|
-
skillPaths: external_exports.array(external_exports.string().min(1)).min(1)
|
|
28969
|
-
});
|
|
28970
|
-
var skillUninstallInputSchema = external_exports.object({
|
|
28971
|
-
name: external_exports.string().min(1),
|
|
28972
|
-
skillPaths: external_exports.array(external_exports.string().min(1)).min(1)
|
|
28973
|
-
});
|
|
28974
|
-
var skillScanInputSchema = external_exports.object({
|
|
28975
|
-
source: external_exports.string().min(1)
|
|
28976
|
-
});
|
|
28977
|
-
var skillPublishInputSchema = external_exports.object({
|
|
28978
|
-
name: external_exports.string().min(1),
|
|
28979
|
-
owner: external_exports.string().min(1),
|
|
28980
|
-
repo: external_exports.string().min(1),
|
|
28981
|
-
title: external_exports.string().min(1),
|
|
28982
|
-
body: external_exports.string()
|
|
28983
|
-
});
|
|
28984
|
-
var skillReadLocalInputSchema = external_exports.object({
|
|
28985
|
-
name: external_exports.string().min(1)
|
|
28986
|
-
});
|
|
28987
|
-
|
|
28988
|
-
// ../agent-runtime-api/src/modules/ssh/schemas.ts
|
|
28989
|
-
var sshAuthorizeKeyInputSchema = external_exports.object({
|
|
28990
|
-
publicKey: external_exports.string().min(1).max(8192).refine((s) => !/[\r\n]/.test(s), "must be a single line")
|
|
28991
|
-
});
|
|
28992
|
-
|
|
28993
|
-
// ../agent-runtime-api/src/modules/import/types.ts
|
|
28994
|
-
var importBundleResultSchema = external_exports.object({
|
|
28995
|
-
filesWritten: external_exports.number().int().nonnegative(),
|
|
28996
|
-
bytes: external_exports.number().int().nonnegative(),
|
|
28997
|
-
durationMs: external_exports.number().int().nonnegative()
|
|
28998
|
-
});
|
|
28999
|
-
|
|
29000
|
-
// ../agent-runtime-api/src/modules/runtime/types.ts
|
|
29001
|
-
var contributionKind = external_exports.enum([
|
|
29002
|
-
"env",
|
|
29003
|
-
"egress-allow",
|
|
29004
|
-
"egress-inject",
|
|
29005
|
-
"file",
|
|
29006
|
-
"mcp-entry",
|
|
29007
|
-
"skill-ref"
|
|
29008
|
-
]);
|
|
29009
|
-
var eventKind = external_exports.enum([
|
|
29010
|
-
"trigger",
|
|
29011
|
-
"schedule-reset",
|
|
29012
|
-
"workspace-seed"
|
|
29013
|
-
]);
|
|
29014
|
-
var mergeMode = external_exports.enum([
|
|
29015
|
-
"overwrite",
|
|
29016
|
-
"section-marker",
|
|
29017
|
-
"key-targeted",
|
|
29018
|
-
"yaml-fill-if-missing"
|
|
29019
|
-
]);
|
|
29020
|
-
var fileFormat = external_exports.enum(["yaml", "json", "text", "ini"]);
|
|
29021
|
-
var envContribution = external_exports.object({
|
|
29022
|
-
kind: external_exports.literal("env"),
|
|
29023
|
-
name: external_exports.string().min(1),
|
|
29024
|
-
placeholder: external_exports.string()
|
|
29025
|
-
});
|
|
29026
|
-
var egressAllowContribution = external_exports.object({
|
|
29027
|
-
kind: external_exports.literal("egress-allow"),
|
|
29028
|
-
host: external_exports.string().min(1),
|
|
29029
|
-
pathPattern: external_exports.string().optional()
|
|
29030
|
-
});
|
|
29031
|
-
var egressInjectContribution = external_exports.object({
|
|
29032
|
-
kind: external_exports.literal("egress-inject"),
|
|
29033
|
-
host: external_exports.string().min(1),
|
|
29034
|
-
pathPattern: external_exports.string().optional(),
|
|
29035
|
-
headerName: external_exports.string().min(1),
|
|
29036
|
-
valueFormat: external_exports.string().min(1),
|
|
29037
|
-
encoding: external_exports.literal("basic-x-access-token").optional(),
|
|
29038
|
-
// Moves the value into this query param instead of the header; restricted to unreserved chars since the Lua treats it as a trusted literal.
|
|
29039
|
-
queryParamName: external_exports.string().regex(/^[A-Za-z0-9_.~-]+$/).optional()
|
|
29040
|
-
});
|
|
29041
|
-
var fileContribution = external_exports.object({
|
|
29042
|
-
kind: external_exports.literal("file"),
|
|
29043
|
-
path: external_exports.string().min(1),
|
|
29044
|
-
format: fileFormat,
|
|
29045
|
-
mergeMode,
|
|
29046
|
-
content: external_exports.unknown().optional()
|
|
29047
|
-
});
|
|
29048
|
-
var mcpEntryContribution = external_exports.object({
|
|
29049
|
-
kind: external_exports.literal("mcp-entry"),
|
|
29050
|
-
name: external_exports.string().min(1),
|
|
29051
|
-
url: external_exports.string().url(),
|
|
29052
|
-
headers: external_exports.record(external_exports.string(), external_exports.string()).optional()
|
|
29053
|
-
});
|
|
29054
|
-
var skillRefContribution = external_exports.object({
|
|
29055
|
-
kind: external_exports.literal("skill-ref"),
|
|
29056
|
-
sourceUrl: external_exports.string().min(1),
|
|
29057
|
-
name: external_exports.string().min(1),
|
|
29058
|
-
version: external_exports.string().min(1)
|
|
29059
|
-
});
|
|
29060
|
-
var contribution = external_exports.discriminatedUnion("kind", [
|
|
29061
|
-
envContribution,
|
|
29062
|
-
egressAllowContribution,
|
|
29063
|
-
egressInjectContribution,
|
|
29064
|
-
fileContribution,
|
|
29065
|
-
mcpEntryContribution,
|
|
29066
|
-
skillRefContribution
|
|
29067
|
-
]);
|
|
29068
|
-
var triggerEventPayload = external_exports.object({
|
|
29069
|
-
scheduleId: external_exports.string().min(1),
|
|
29070
|
-
task: external_exports.string().min(1),
|
|
29071
|
-
sessionMode: external_exports.enum(["continuous", "fresh"]).optional(),
|
|
29072
|
-
mcpServers: external_exports.array(external_exports.unknown()).optional()
|
|
29073
|
-
});
|
|
29074
|
-
var triggerEvent = external_exports.object({
|
|
29075
|
-
id: external_exports.string().min(1),
|
|
29076
|
-
kind: external_exports.literal("trigger"),
|
|
29077
|
-
version: external_exports.number().int().nonnegative(),
|
|
29078
|
-
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
29079
|
-
payload: triggerEventPayload
|
|
29080
|
-
});
|
|
29081
|
-
var scheduleResetEventPayload = external_exports.object({
|
|
29082
|
-
scheduleId: external_exports.string().min(1)
|
|
29083
|
-
});
|
|
29084
|
-
var scheduleResetEvent = external_exports.object({
|
|
29085
|
-
id: external_exports.string().min(1),
|
|
29086
|
-
kind: external_exports.literal("schedule-reset"),
|
|
29087
|
-
version: external_exports.number().int().nonnegative(),
|
|
29088
|
-
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
29089
|
-
payload: scheduleResetEventPayload
|
|
29090
|
-
});
|
|
29091
|
-
var workspaceSeedEventPayload = external_exports.object({
|
|
29092
|
-
url: external_exports.string().min(1),
|
|
29093
|
-
/** Branch or tag to clone; omitted = the repo's default branch. */
|
|
29094
|
-
ref: external_exports.string().min(1).optional()
|
|
29095
|
-
});
|
|
29096
|
-
var workspaceSeedEvent = external_exports.object({
|
|
29097
|
-
id: external_exports.string().min(1),
|
|
29098
|
-
kind: external_exports.literal("workspace-seed"),
|
|
29099
|
-
version: external_exports.number().int().nonnegative(),
|
|
29100
|
-
expiresAt: external_exports.string().datetime({ offset: true }),
|
|
29101
|
-
payload: workspaceSeedEventPayload
|
|
29102
|
-
});
|
|
29103
|
-
var event = external_exports.discriminatedUnion("kind", [
|
|
29104
|
-
triggerEvent,
|
|
29105
|
-
scheduleResetEvent,
|
|
29106
|
-
workspaceSeedEvent
|
|
29107
|
-
]);
|
|
29108
|
-
var capabilities = external_exports.object({
|
|
29109
|
-
contributions: external_exports.array(contributionKind),
|
|
29110
|
-
events: external_exports.array(eventKind)
|
|
29111
|
-
});
|
|
29112
|
-
var stateSlice = external_exports.object({
|
|
29113
|
-
contributions: external_exports.array(contribution),
|
|
29114
|
-
hash: external_exports.string().min(1)
|
|
29115
|
-
});
|
|
29116
|
-
var applyStateInput = external_exports.object({
|
|
29117
|
-
version: external_exports.number().int().positive(),
|
|
29118
|
-
state: stateSlice,
|
|
29119
|
-
events: external_exports.array(event)
|
|
29120
|
-
});
|
|
29121
|
-
var driverFailure = external_exports.object({
|
|
29122
|
-
kind: contributionKind,
|
|
29123
|
-
message: external_exports.string().min(1)
|
|
29124
|
-
});
|
|
29125
|
-
var applyStateResult = external_exports.discriminatedUnion("status", [
|
|
29126
|
-
// Processed: resulting cursor + any per-driver failures (empty on a fully clean apply).
|
|
29127
|
-
external_exports.object({
|
|
29128
|
-
status: external_exports.literal("ok"),
|
|
29129
|
-
appliedVersion: external_exports.number().int().nonnegative(),
|
|
29130
|
-
appliedHash: external_exports.string().min(1).nullable(),
|
|
29131
|
-
// null until the first clean settle
|
|
29132
|
-
failures: external_exports.array(driverFailure).default([]),
|
|
29133
|
-
settledEvents: external_exports.array(external_exports.string()).default([])
|
|
29134
|
-
}),
|
|
29135
|
-
// Contributions already at ≥ the requested version; worker reconciles. Events still apply (own version) — settledEvents reports which.
|
|
29136
|
-
external_exports.object({
|
|
29137
|
-
status: external_exports.literal("stale"),
|
|
29138
|
-
appliedVersion: external_exports.number().int().nonnegative(),
|
|
29139
|
-
settledEvents: external_exports.array(external_exports.string()).default([])
|
|
29140
|
-
})
|
|
29141
|
-
]);
|
|
29142
|
-
var helloInput = external_exports.object({
|
|
29143
|
-
lastAppliedVersion: external_exports.number().int().nonnegative().optional(),
|
|
29144
|
-
lastAppliedHash: external_exports.string().optional(),
|
|
29145
|
-
protocolVersion: external_exports.literal("v1"),
|
|
29146
|
-
agentRuntimeVersion: external_exports.string(),
|
|
29147
|
-
capabilities
|
|
29148
|
-
});
|
|
29149
|
-
var helloResult = external_exports.object({
|
|
29150
|
-
version: external_exports.number().int().positive().optional(),
|
|
29151
|
-
state: stateSlice.optional(),
|
|
29152
|
-
events: external_exports.array(event)
|
|
29153
|
-
});
|
|
29188
|
+
var BOB_HOST = "api.us-east.bob.ibm.com";
|
|
29189
|
+
var BOB_PLACEHOLDER = "dummy-placeholder";
|
|
29190
|
+
function bobEnvMappings(pins = {}) {
|
|
29191
|
+
const out = [
|
|
29192
|
+
{ envName: "BOBSHELL_API_KEY", placeholder: BOB_PLACEHOLDER }
|
|
29193
|
+
];
|
|
29194
|
+
const push = (envName, value) => {
|
|
29195
|
+
const trimmed = value?.trim();
|
|
29196
|
+
if (trimmed) out.push({ envName, placeholder: trimmed });
|
|
29197
|
+
};
|
|
29198
|
+
push("BOB_SHELL_MODEL", pins.model);
|
|
29199
|
+
push("BOB_INSTANCE_ID", pins.agentId);
|
|
29200
|
+
push("BOB_TEAM_ID", pins.teamId);
|
|
29201
|
+
push("BOB_MAX_COINS", pins.maxCoins);
|
|
29202
|
+
push("BOB_CHAT_MODE", pins.chatMode);
|
|
29203
|
+
return out;
|
|
29204
|
+
}
|
|
29205
|
+
var PROVIDERS = {
|
|
29206
|
+
anthropic: {
|
|
29207
|
+
id: "anthropic",
|
|
29208
|
+
displayName: "Anthropic",
|
|
29209
|
+
hostPattern: "api.anthropic.com",
|
|
29210
|
+
modes: [
|
|
29211
|
+
{
|
|
29212
|
+
key: "oauth",
|
|
29213
|
+
label: "OAuth Token",
|
|
29214
|
+
templateId: "anthropic-oauth",
|
|
29215
|
+
tokenPrefix: "sk-ant-oat",
|
|
29216
|
+
defaultEnvMappings: [
|
|
29217
|
+
{
|
|
29218
|
+
envName: "CLAUDE_CODE_OAUTH_TOKEN",
|
|
29219
|
+
placeholder: DEFAULT_ENV_PLACEHOLDER
|
|
29220
|
+
}
|
|
29221
|
+
]
|
|
29222
|
+
},
|
|
29223
|
+
{
|
|
29224
|
+
key: "api-key",
|
|
29225
|
+
label: "API Key",
|
|
29226
|
+
templateId: "anthropic",
|
|
29227
|
+
tokenPrefix: "sk-ant-api",
|
|
29228
|
+
isDefault: true,
|
|
29229
|
+
defaultEnvMappings: [
|
|
29230
|
+
{
|
|
29231
|
+
envName: "ANTHROPIC_API_KEY",
|
|
29232
|
+
placeholder: DEFAULT_ENV_PLACEHOLDER
|
|
29233
|
+
}
|
|
29234
|
+
],
|
|
29235
|
+
injection: { headerName: "x-api-key", valueFormat: "{value}" }
|
|
29236
|
+
}
|
|
29237
|
+
]
|
|
29238
|
+
},
|
|
29239
|
+
"ibm-litellm": {
|
|
29240
|
+
id: "ibm-litellm",
|
|
29241
|
+
displayName: "IBM LiteLLM ETE Proxy",
|
|
29242
|
+
hostPattern: IBM_LITELLM_HOST,
|
|
29243
|
+
modes: [
|
|
29244
|
+
{
|
|
29245
|
+
key: "api-key",
|
|
29246
|
+
label: "API Token",
|
|
29247
|
+
templateId: "ibm-litellm",
|
|
29248
|
+
defaultEnvMappings: ibmLitellmEnvMappings()
|
|
29249
|
+
}
|
|
29250
|
+
]
|
|
29251
|
+
},
|
|
29252
|
+
openai: {
|
|
29253
|
+
id: "openai",
|
|
29254
|
+
displayName: "OpenAI",
|
|
29255
|
+
hostPattern: "api.openai.com",
|
|
29256
|
+
// Scope injection to /v1/* so other host endpoints don't get a stray Authorization header.
|
|
29257
|
+
pathPattern: "/v1/*",
|
|
29258
|
+
modes: [
|
|
29259
|
+
{
|
|
29260
|
+
key: "api-key",
|
|
29261
|
+
label: "API Key",
|
|
29262
|
+
templateId: "openai",
|
|
29263
|
+
defaultEnvMappings: openaiEnvMappings()
|
|
29264
|
+
}
|
|
29265
|
+
]
|
|
29266
|
+
},
|
|
29267
|
+
bob: {
|
|
29268
|
+
id: "bob",
|
|
29269
|
+
displayName: "Bob Shell",
|
|
29270
|
+
hostPattern: BOB_HOST,
|
|
29271
|
+
modes: [
|
|
29272
|
+
{
|
|
29273
|
+
key: "api-key",
|
|
29274
|
+
label: "API Key",
|
|
29275
|
+
templateId: "bob",
|
|
29276
|
+
defaultEnvMappings: bobEnvMappings(),
|
|
29277
|
+
// `Apikey` prefix; `Bearer` would trigger JWT auth.
|
|
29278
|
+
injection: {
|
|
29279
|
+
headerName: "Authorization",
|
|
29280
|
+
valueFormat: "Apikey {value}"
|
|
29281
|
+
},
|
|
29282
|
+
extraInjections: [
|
|
29283
|
+
{ headerName: "X-Bobshell-Internal", queryParamName: "key" }
|
|
29284
|
+
]
|
|
29285
|
+
}
|
|
29286
|
+
]
|
|
29287
|
+
}
|
|
29288
|
+
};
|
|
29289
|
+
var PROVIDER_PRESET_TYPES = Object.keys(
|
|
29290
|
+
PROVIDERS
|
|
29291
|
+
);
|
|
29292
|
+
var TEMPLATE_TO_PROVIDER = new Map(
|
|
29293
|
+
PROVIDER_PRESET_TYPES.flatMap(
|
|
29294
|
+
(type) => PROVIDERS[type].modes.map(
|
|
29295
|
+
(mode) => [mode.templateId, type]
|
|
29296
|
+
)
|
|
29297
|
+
)
|
|
29298
|
+
);
|
|
29299
|
+
var PROVIDER_TEMPLATE_IDS = new Set(
|
|
29300
|
+
TEMPLATE_TO_PROVIDER.keys()
|
|
29301
|
+
);
|
|
29302
|
+
function providerTypeForTemplateId(templateId) {
|
|
29303
|
+
return TEMPLATE_TO_PROVIDER.get(templateId) ?? null;
|
|
29304
|
+
}
|
|
29305
|
+
function templateIdForProvider(type, value) {
|
|
29306
|
+
const modes = PROVIDERS[type].modes;
|
|
29307
|
+
const matched = modes.find(
|
|
29308
|
+
(mode) => mode.tokenPrefix !== void 0 && value.startsWith(mode.tokenPrefix)
|
|
29309
|
+
);
|
|
29310
|
+
return (matched ?? modes.find((mode) => mode.isDefault) ?? modes[0]).templateId;
|
|
29311
|
+
}
|
|
29154
29312
|
|
|
29155
29313
|
// ../api-server-api/src/modules/secret-store/types.ts
|
|
29156
29314
|
var secretRef = external_exports.object({
|
|
@@ -29330,13 +29488,18 @@ var connectionCreateInputSchema = external_exports.discriminatedUnion("authKind"
|
|
|
29330
29488
|
headerCreateInput,
|
|
29331
29489
|
noneCreateInput
|
|
29332
29490
|
]);
|
|
29491
|
+
var connectionTestAnthropicInputSchema = external_exports.object({
|
|
29492
|
+
value: external_exports.string().min(1),
|
|
29493
|
+
envName: external_exports.enum(["ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"])
|
|
29494
|
+
});
|
|
29333
29495
|
|
|
29334
29496
|
// ../api-server-api/src/modules/sessions/types.ts
|
|
29335
29497
|
var SessionType = {
|
|
29336
29498
|
Regular: "regular",
|
|
29337
29499
|
ChannelSlack: "channel_slack",
|
|
29338
29500
|
ChannelTelegram: "channel_telegram",
|
|
29339
|
-
ScheduleCron: "schedule_cron"
|
|
29501
|
+
ScheduleCron: "schedule_cron",
|
|
29502
|
+
ExperimentTrial: "experiment_trial"
|
|
29340
29503
|
};
|
|
29341
29504
|
var SessionMode = /* @__PURE__ */ ((SessionMode2) => {
|
|
29342
29505
|
SessionMode2["Chat"] = "chat";
|
|
@@ -29399,101 +29562,6 @@ var PodFilesEventSchema = external_exports.object({
|
|
|
29399
29562
|
});
|
|
29400
29563
|
var EventKindSchema = external_exports.enum(["snapshot", "upsert"]);
|
|
29401
29564
|
|
|
29402
|
-
// ../api-server-api/src/modules/skills/schemas.ts
|
|
29403
|
-
var skillSourceSchema = external_exports.object({
|
|
29404
|
-
id: external_exports.string(),
|
|
29405
|
-
name: external_exports.string(),
|
|
29406
|
-
gitUrl: external_exports.string(),
|
|
29407
|
-
/** True when the source is managed by the cluster admin
|
|
29408
|
-
* (Helm-seeded). Users can't delete it. */
|
|
29409
|
-
system: external_exports.boolean().optional(),
|
|
29410
|
-
/** Present when the source was declared by an agent template
|
|
29411
|
-
* (spec.skillSources). UI-only hint for the "Agent" badge —
|
|
29412
|
-
* backend treats template sources as read-only. */
|
|
29413
|
-
fromTemplate: external_exports.object({ templateId: external_exports.string(), templateName: external_exports.string() }).optional(),
|
|
29414
|
-
canPublish: external_exports.boolean().optional()
|
|
29415
|
-
});
|
|
29416
|
-
var skillPublishResultSchema = external_exports.object({
|
|
29417
|
-
prUrl: external_exports.string().url(),
|
|
29418
|
-
branch: external_exports.string()
|
|
29419
|
-
});
|
|
29420
|
-
var skillSchema = external_exports.object({
|
|
29421
|
-
source: external_exports.string(),
|
|
29422
|
-
name: external_exports.string(),
|
|
29423
|
-
description: external_exports.string(),
|
|
29424
|
-
version: external_exports.string(),
|
|
29425
|
-
contentHash: external_exports.string()
|
|
29426
|
-
});
|
|
29427
|
-
var skillRefSchema = external_exports.object({
|
|
29428
|
-
source: external_exports.string(),
|
|
29429
|
-
name: external_exports.string(),
|
|
29430
|
-
version: external_exports.string(),
|
|
29431
|
-
/** Deterministic SHA-256 of the skill directory's file contents at
|
|
29432
|
-
* install time. Compared to the scanner's contentHash to flag drift.
|
|
29433
|
-
* Optional for backward compatibility with installs that pre-date
|
|
29434
|
-
* this field. */
|
|
29435
|
-
contentHash: external_exports.string().optional()
|
|
29436
|
-
});
|
|
29437
|
-
var localSkillSchema = external_exports.object({
|
|
29438
|
-
name: external_exports.string(),
|
|
29439
|
-
description: external_exports.string(),
|
|
29440
|
-
skillPath: external_exports.string()
|
|
29441
|
-
});
|
|
29442
|
-
var skillPublishRecordSchema = external_exports.object({
|
|
29443
|
-
skillName: external_exports.string(),
|
|
29444
|
-
sourceId: external_exports.string(),
|
|
29445
|
-
sourceName: external_exports.string(),
|
|
29446
|
-
sourceGitUrl: external_exports.string(),
|
|
29447
|
-
prUrl: external_exports.string(),
|
|
29448
|
-
/** ISO 8601 timestamp. */
|
|
29449
|
-
publishedAt: external_exports.string()
|
|
29450
|
-
});
|
|
29451
|
-
var skillStateOutputSchema = external_exports.object({
|
|
29452
|
-
installed: external_exports.array(skillRefSchema),
|
|
29453
|
-
standalone: external_exports.array(localSkillSchema),
|
|
29454
|
-
instancePublishes: external_exports.array(skillPublishRecordSchema)
|
|
29455
|
-
});
|
|
29456
|
-
var skillListSourcesInputSchema = external_exports.object({ agentId: external_exports.string().min(1).optional() }).optional();
|
|
29457
|
-
var skillCreateSourceInputSchema = external_exports.object({
|
|
29458
|
-
name: external_exports.string().min(1).max(128),
|
|
29459
|
-
gitUrl: external_exports.string().url()
|
|
29460
|
-
});
|
|
29461
|
-
var skillDeleteSourceInputSchema = external_exports.object({
|
|
29462
|
-
id: external_exports.string().min(1)
|
|
29463
|
-
});
|
|
29464
|
-
var skillRefreshSourceInputSchema = external_exports.object({
|
|
29465
|
-
id: external_exports.string().min(1)
|
|
29466
|
-
});
|
|
29467
|
-
var skillListInputSchema = external_exports.object({
|
|
29468
|
-
sourceId: external_exports.string().min(1),
|
|
29469
|
-
agentId: external_exports.string().min(1).optional()
|
|
29470
|
-
});
|
|
29471
|
-
var skillInstallInputSchema2 = external_exports.object({
|
|
29472
|
-
agentId: external_exports.string().min(1),
|
|
29473
|
-
source: external_exports.string().url(),
|
|
29474
|
-
name: external_exports.string().min(1),
|
|
29475
|
-
version: external_exports.string().min(1),
|
|
29476
|
-
contentHash: external_exports.string().optional()
|
|
29477
|
-
});
|
|
29478
|
-
var skillUninstallInputSchema2 = external_exports.object({
|
|
29479
|
-
agentId: external_exports.string().min(1),
|
|
29480
|
-
source: external_exports.string().url(),
|
|
29481
|
-
name: external_exports.string().min(1)
|
|
29482
|
-
});
|
|
29483
|
-
var skillListLocalInputSchema = external_exports.object({
|
|
29484
|
-
agentId: external_exports.string().min(1)
|
|
29485
|
-
});
|
|
29486
|
-
var skillStateInputSchema = external_exports.object({
|
|
29487
|
-
agentId: external_exports.string().min(1)
|
|
29488
|
-
});
|
|
29489
|
-
var skillPublishInputSchema2 = external_exports.object({
|
|
29490
|
-
agentId: external_exports.string().min(1),
|
|
29491
|
-
sourceId: external_exports.string().min(1),
|
|
29492
|
-
name: external_exports.string().min(1),
|
|
29493
|
-
title: external_exports.string().optional(),
|
|
29494
|
-
body: external_exports.string().optional()
|
|
29495
|
-
});
|
|
29496
|
-
|
|
29497
29565
|
// ../api-server-api/src/modules/approvals/schemas.ts
|
|
29498
29566
|
var approvalStatusSchema = external_exports.enum(["pending", "resolved", "expired"]);
|
|
29499
29567
|
var approvalListOptionsSchema = external_exports.object({
|
|
@@ -31203,35 +31271,6 @@ function promptSecret(message) {
|
|
|
31203
31271
|
});
|
|
31204
31272
|
}
|
|
31205
31273
|
|
|
31206
|
-
// src/modules/agent/lib/group-github-pats.ts
|
|
31207
|
-
var API_HOST = "api.github.com";
|
|
31208
|
-
var GIT_HOST = "github.com";
|
|
31209
|
-
function groupGithubPats(secrets) {
|
|
31210
|
-
const byName2 = /* @__PURE__ */ new Map();
|
|
31211
|
-
for (const s of secrets) {
|
|
31212
|
-
const slot = s.hostPattern === API_HOST ? "api" : s.hostPattern === GIT_HOST ? "git" : null;
|
|
31213
|
-
if (!slot) continue;
|
|
31214
|
-
let group = byName2.get(s.name);
|
|
31215
|
-
if (!group) {
|
|
31216
|
-
group = { api: [], git: [] };
|
|
31217
|
-
byName2.set(s.name, group);
|
|
31218
|
-
}
|
|
31219
|
-
group[slot].push(s.id);
|
|
31220
|
-
}
|
|
31221
|
-
const pairs = [];
|
|
31222
|
-
for (const [name, group] of byName2) {
|
|
31223
|
-
if (group.api.length === 1 && group.git.length === 1) {
|
|
31224
|
-
pairs.push({
|
|
31225
|
-
name,
|
|
31226
|
-
apiSecretId: group.api[0],
|
|
31227
|
-
gitSecretId: group.git[0]
|
|
31228
|
-
});
|
|
31229
|
-
}
|
|
31230
|
-
}
|
|
31231
|
-
pairs.sort((a, b2) => a.name.localeCompare(b2.name));
|
|
31232
|
-
return pairs;
|
|
31233
|
-
}
|
|
31234
|
-
|
|
31235
31274
|
// src/modules/connection/services/connection-service.ts
|
|
31236
31275
|
function createConnectionService(deps) {
|
|
31237
31276
|
const readIds = async (agentId) => {
|
|
@@ -31485,34 +31524,14 @@ hint: run \`dam auth login\` first`
|
|
|
31485
31524
|
process.exit(EXIT_RUNTIME_FAILURE);
|
|
31486
31525
|
}
|
|
31487
31526
|
spin.message("Granting credentials...");
|
|
31488
|
-
const connectionIds = [];
|
|
31489
|
-
|
|
31490
|
-
if (provider.routing.kind === "connection") {
|
|
31491
|
-
connectionIds.push(provider.routing.id);
|
|
31492
|
-
} else {
|
|
31493
|
-
secretIds.push(provider.routing.id);
|
|
31494
|
-
}
|
|
31495
|
-
if (githubPat) {
|
|
31496
|
-
if (githubPat.source === "connection") {
|
|
31497
|
-
connectionIds.push(githubPat.connectionId);
|
|
31498
|
-
} else {
|
|
31499
|
-
secretIds.push(githubPat.apiSecretId, githubPat.gitSecretId);
|
|
31500
|
-
}
|
|
31501
|
-
}
|
|
31527
|
+
const connectionIds = [provider.routing.id];
|
|
31528
|
+
if (githubPat) connectionIds.push(githubPat.connectionId);
|
|
31502
31529
|
try {
|
|
31503
31530
|
await withRetry(async () => {
|
|
31504
|
-
|
|
31505
|
-
|
|
31506
|
-
|
|
31507
|
-
|
|
31508
|
-
});
|
|
31509
|
-
}
|
|
31510
|
-
if (secretIds.length > 0) {
|
|
31511
|
-
await trpc.secrets.setAgentAccess.mutate({
|
|
31512
|
-
agentId: cleanup.agentId,
|
|
31513
|
-
secretIds
|
|
31514
|
-
});
|
|
31515
|
-
}
|
|
31531
|
+
await trpc.connections.setAgentConnections.mutate({
|
|
31532
|
+
agentId: cleanup.agentId,
|
|
31533
|
+
connectionIds
|
|
31534
|
+
});
|
|
31516
31535
|
});
|
|
31517
31536
|
} catch (e2) {
|
|
31518
31537
|
spin.stop("Grant failed");
|
|
@@ -31619,7 +31638,6 @@ async function listCredentials(trpc, cleanup) {
|
|
|
31619
31638
|
try {
|
|
31620
31639
|
return {
|
|
31621
31640
|
conns: await trpc.connections.list.query(),
|
|
31622
|
-
secrets: await trpc.secrets.list.query(),
|
|
31623
31641
|
templates: await trpc.connections.listTemplates.query()
|
|
31624
31642
|
};
|
|
31625
31643
|
} catch (e2) {
|
|
@@ -31629,12 +31647,9 @@ async function listCredentials(trpc, cleanup) {
|
|
|
31629
31647
|
}
|
|
31630
31648
|
}
|
|
31631
31649
|
async function pickProvider(trpc, cleanup) {
|
|
31632
|
-
const { conns,
|
|
31650
|
+
const { conns, templates } = await listCredentials(trpc, cleanup);
|
|
31633
31651
|
const existingConns = providerConns(conns);
|
|
31634
|
-
|
|
31635
|
-
(s) => isProviderPresetType(s.type)
|
|
31636
|
-
).map((s) => ({ id: s.id, name: s.name, type: s.type }));
|
|
31637
|
-
if (existingConns.length === 0 && existingSecrets.length === 0) {
|
|
31652
|
+
if (existingConns.length === 0) {
|
|
31638
31653
|
R2.info("No model providers configured yet \u2014 let's add one.");
|
|
31639
31654
|
return addOrReplaceProvider(trpc, cleanup, existingConns, templates);
|
|
31640
31655
|
}
|
|
@@ -31646,10 +31661,6 @@ async function pickProvider(trpc, cleanup) {
|
|
|
31646
31661
|
value: `conn:${c2.id}`,
|
|
31647
31662
|
label: `${c2.name} (${c2.type})`
|
|
31648
31663
|
})),
|
|
31649
|
-
...existingSecrets.map((s) => ({
|
|
31650
|
-
value: `secret:${s.id}`,
|
|
31651
|
-
label: `${s.name} (${s.type}) (legacy)`
|
|
31652
|
-
})),
|
|
31653
31664
|
{ value: NEW, label: "Add new..." }
|
|
31654
31665
|
]
|
|
31655
31666
|
});
|
|
@@ -31657,17 +31668,9 @@ async function pickProvider(trpc, cleanup) {
|
|
|
31657
31668
|
if (picked === NEW) {
|
|
31658
31669
|
return addOrReplaceProvider(trpc, cleanup, existingConns, templates);
|
|
31659
31670
|
}
|
|
31660
|
-
|
|
31661
|
-
const found2 = existingConns.find((c2) => `conn:${c2.id}` === picked);
|
|
31662
|
-
return {
|
|
31663
|
-
routing: { kind: "connection", id: found2.id },
|
|
31664
|
-
name: found2.name,
|
|
31665
|
-
type: found2.type
|
|
31666
|
-
};
|
|
31667
|
-
}
|
|
31668
|
-
const found = existingSecrets.find((s) => `secret:${s.id}` === picked);
|
|
31671
|
+
const found = existingConns.find((c2) => `conn:${c2.id}` === picked);
|
|
31669
31672
|
return {
|
|
31670
|
-
routing: {
|
|
31673
|
+
routing: { id: found.id },
|
|
31671
31674
|
name: found.name,
|
|
31672
31675
|
type: found.type
|
|
31673
31676
|
};
|
|
@@ -31697,7 +31700,7 @@ async function addOrReplaceProvider(trpc, cleanup, existingConns, templates) {
|
|
|
31697
31700
|
if (q(replace)) return cancelAndCleanup(trpc, cleanup);
|
|
31698
31701
|
if (!replace) {
|
|
31699
31702
|
return {
|
|
31700
|
-
routing: {
|
|
31703
|
+
routing: { id: existingOfType.id },
|
|
31701
31704
|
name: existingOfType.name,
|
|
31702
31705
|
type
|
|
31703
31706
|
};
|
|
@@ -31721,7 +31724,7 @@ async function addOrReplaceProvider(trpc, cleanup, existingConns, templates) {
|
|
|
31721
31724
|
value: value2
|
|
31722
31725
|
});
|
|
31723
31726
|
return {
|
|
31724
|
-
routing: {
|
|
31727
|
+
routing: { id: existingOfType.id },
|
|
31725
31728
|
name: existingOfType.name,
|
|
31726
31729
|
type
|
|
31727
31730
|
};
|
|
@@ -31823,17 +31826,16 @@ async function createProviderConnection(trpc, cleanup, type, templateId, value,
|
|
|
31823
31826
|
});
|
|
31824
31827
|
if (!created) return null;
|
|
31825
31828
|
return {
|
|
31826
|
-
routing: {
|
|
31829
|
+
routing: { id: created.id },
|
|
31827
31830
|
name: created.name,
|
|
31828
31831
|
type
|
|
31829
31832
|
};
|
|
31830
31833
|
}
|
|
31831
31834
|
var DEFAULT_GITHUB_PAT_NAME = GITHUB_PAT_TEMPLATE_ID;
|
|
31832
31835
|
async function pickGithubPat(trpc, cleanup) {
|
|
31833
|
-
const { conns
|
|
31836
|
+
const { conns } = await listCredentials(trpc, cleanup);
|
|
31834
31837
|
const patConns = conns.filter((c2) => c2.templateId === GITHUB_PAT_TEMPLATE_ID);
|
|
31835
|
-
|
|
31836
|
-
if (patConns.length === 0 && pairs.length === 0) {
|
|
31838
|
+
if (patConns.length === 0) {
|
|
31837
31839
|
R2.info("No GitHub PAT configured yet.");
|
|
31838
31840
|
const add = await ue({ message: "Add one?", initialValue: true });
|
|
31839
31841
|
if (q(add)) return cancelAndCleanup(trpc, cleanup);
|
|
@@ -31846,10 +31848,6 @@ async function pickGithubPat(trpc, cleanup) {
|
|
|
31846
31848
|
message: "GitHub PAT",
|
|
31847
31849
|
options: [
|
|
31848
31850
|
...patConns.map((c2) => ({ value: `conn:${c2.id}`, label: c2.name })),
|
|
31849
|
-
...pairs.map((p2) => ({
|
|
31850
|
-
value: `secret:${p2.name}`,
|
|
31851
|
-
label: `${p2.name} (legacy)`
|
|
31852
|
-
})),
|
|
31853
31851
|
{ value: NEW, label: "Add new..." },
|
|
31854
31852
|
{ value: SKIP, label: "Skip" }
|
|
31855
31853
|
]
|
|
@@ -31857,17 +31855,8 @@ async function pickGithubPat(trpc, cleanup) {
|
|
|
31857
31855
|
if (q(picked)) return cancelAndCleanup(trpc, cleanup);
|
|
31858
31856
|
if (picked === SKIP) return null;
|
|
31859
31857
|
if (picked === NEW) return addOrReplaceGithubPat(trpc, cleanup, patConns);
|
|
31860
|
-
|
|
31861
|
-
|
|
31862
|
-
return { source: "connection", connectionId: found2.id, name: found2.name };
|
|
31863
|
-
}
|
|
31864
|
-
const found = pairs.find((p2) => `secret:${p2.name}` === picked);
|
|
31865
|
-
return {
|
|
31866
|
-
source: "secret",
|
|
31867
|
-
apiSecretId: found.apiSecretId,
|
|
31868
|
-
gitSecretId: found.gitSecretId,
|
|
31869
|
-
name: found.name
|
|
31870
|
-
};
|
|
31858
|
+
const found = patConns.find((c2) => `conn:${c2.id}` === picked);
|
|
31859
|
+
return { connectionId: found.id, name: found.name };
|
|
31871
31860
|
}
|
|
31872
31861
|
async function addOrReplaceGithubPat(trpc, cleanup, existing) {
|
|
31873
31862
|
const collide = existing.find((c2) => c2.name === DEFAULT_GITHUB_PAT_NAME);
|
|
@@ -31879,21 +31868,13 @@ async function addOrReplaceGithubPat(trpc, cleanup, existing) {
|
|
|
31879
31868
|
});
|
|
31880
31869
|
if (q(replace)) return cancelAndCleanup(trpc, cleanup);
|
|
31881
31870
|
if (!replace) {
|
|
31882
|
-
return {
|
|
31883
|
-
source: "connection",
|
|
31884
|
-
connectionId: collide.id,
|
|
31885
|
-
name: collide.name
|
|
31886
|
-
};
|
|
31871
|
+
return { connectionId: collide.id, name: collide.name };
|
|
31887
31872
|
}
|
|
31888
31873
|
const token2 = await promptSecret("New GitHub personal access token");
|
|
31889
31874
|
if (q(token2)) return cancelAndCleanup(trpc, cleanup);
|
|
31890
31875
|
try {
|
|
31891
31876
|
await trpc.connections.update.mutate({ id: collide.id, value: token2 });
|
|
31892
|
-
return {
|
|
31893
|
-
source: "connection",
|
|
31894
|
-
connectionId: collide.id,
|
|
31895
|
-
name: collide.name
|
|
31896
|
-
};
|
|
31877
|
+
return { connectionId: collide.id, name: collide.name };
|
|
31897
31878
|
} catch (e2) {
|
|
31898
31879
|
R2.error(`Failed to replace GitHub PAT: ${errorReason2(e2)}`);
|
|
31899
31880
|
continue;
|
|
@@ -31908,11 +31889,7 @@ async function addOrReplaceGithubPat(trpc, cleanup, existing) {
|
|
|
31908
31889
|
nameExample: "my-github"
|
|
31909
31890
|
});
|
|
31910
31891
|
if (created) {
|
|
31911
|
-
return {
|
|
31912
|
-
source: "connection",
|
|
31913
|
-
connectionId: created.id,
|
|
31914
|
-
name: created.name
|
|
31915
|
-
};
|
|
31892
|
+
return { connectionId: created.id, name: created.name };
|
|
31916
31893
|
}
|
|
31917
31894
|
}
|
|
31918
31895
|
}
|
|
@@ -38190,6 +38167,7 @@ function toSessionView(agentId, s) {
|
|
|
38190
38167
|
mode: p2 ? p2.mode ?? "chat" /* Chat */ : "terminal" /* Terminal */,
|
|
38191
38168
|
createdAt: p2?.createdAt ?? s.updatedAt ?? (/* @__PURE__ */ new Date(0)).toISOString(),
|
|
38192
38169
|
scheduleId: p2?.scheduleId ?? null,
|
|
38170
|
+
experimentId: p2?.experimentId ?? null,
|
|
38193
38171
|
title: s.title ?? null,
|
|
38194
38172
|
updatedAt: s.updatedAt ?? null
|
|
38195
38173
|
};
|
|
@@ -38812,7 +38790,7 @@ function createProcessEnvReader() {
|
|
|
38812
38790
|
|
|
38813
38791
|
// src/modules/cli/infrastructure/package-version.ts
|
|
38814
38792
|
function readPackageVersion() {
|
|
38815
|
-
return true ? "0.2.
|
|
38793
|
+
return true ? "0.2.6-rc1" : DEV_VERSION;
|
|
38816
38794
|
}
|
|
38817
38795
|
|
|
38818
38796
|
// src/modules/cli/infrastructure/version-probe.ts
|
|
@@ -42357,11 +42335,14 @@ function deriveSourceName(gitUrl) {
|
|
|
42357
42335
|
// src/modules/skill/commands/source-add.ts
|
|
42358
42336
|
function buildSourceAddCommand(deps) {
|
|
42359
42337
|
return new Command("add").description("Register a skill source from a git URL").argument("<git-url>", "git URL of the skill source repository").option("--name <name>", "source name (default: derived from the git URL)").option(
|
|
42338
|
+
"--path <path>",
|
|
42339
|
+
"optional subdirectory within the repository to scan for skills"
|
|
42340
|
+
).option(
|
|
42360
42341
|
"--server <url>",
|
|
42361
42342
|
"override the configured server URL for this call"
|
|
42362
42343
|
).option("--json", "emit the created SkillSource as JSON").addHelpText(
|
|
42363
42344
|
"after",
|
|
42364
|
-
"\nThe name defaults to the URL path (github.com/acme/skills \u2192 acme/skills);\npass --name to override. Adding a URL that a Platform or Agent source already\nuses shadows it \u2014 removing your source re-exposes the original.\n\nExamples:\n dam skill source add https://github.com/anthropics/skills\n dam skill source add https://github.com/acme/skills --name acme\n"
|
|
42345
|
+
"\nThe name defaults to the URL path (github.com/acme/skills \u2192 acme/skills);\npass --name to override. Adding a URL that a Platform or Agent source already\nuses shadows it \u2014 removing your source re-exposes the original.\n\nExamples:\n dam skill source add https://github.com/anthropics/skills\n dam skill source add https://github.com/acme/skills --name acme\n dam skill source add https://github.com/acme/monorepo --path .claude/skills\n"
|
|
42365
42346
|
).action(
|
|
42366
42347
|
async (gitUrl, opts) => {
|
|
42367
42348
|
const json2 = opts.json ?? false;
|
|
@@ -42380,6 +42361,19 @@ function buildSourceAddCommand(deps) {
|
|
|
42380
42361
|
`);
|
|
42381
42362
|
process.exit(EXIT_INVALID_INPUT);
|
|
42382
42363
|
}
|
|
42364
|
+
let path2;
|
|
42365
|
+
if (opts.path !== void 0) {
|
|
42366
|
+
const pathCheck = skillCreateSourceInputSchema.shape.path.safeParse(
|
|
42367
|
+
opts.path
|
|
42368
|
+
);
|
|
42369
|
+
if (!pathCheck.success) {
|
|
42370
|
+
const msg = pathCheck.error.issues[0]?.message ?? "invalid path";
|
|
42371
|
+
process.stderr.write(`error: ${msg}
|
|
42372
|
+
`);
|
|
42373
|
+
process.exit(EXIT_INVALID_INPUT);
|
|
42374
|
+
}
|
|
42375
|
+
path2 = pathCheck.data || void 0;
|
|
42376
|
+
}
|
|
42383
42377
|
const host = await resolveActiveHost(deps, {
|
|
42384
42378
|
flag: opts.server ? { server: opts.server } : void 0,
|
|
42385
42379
|
exitCodes: {
|
|
@@ -42387,7 +42381,7 @@ function buildSourceAddCommand(deps) {
|
|
|
42387
42381
|
belowFloor: EXIT_BELOW_FLOOR
|
|
42388
42382
|
}
|
|
42389
42383
|
});
|
|
42390
|
-
const result = await deps.createSkillsService(host).addSource({ name, gitUrl });
|
|
42384
|
+
const result = await deps.createSkillsService(host).addSource({ name, gitUrl, path: path2 });
|
|
42391
42385
|
if (!result.ok) {
|
|
42392
42386
|
if (result.error.kind === "source-exists") {
|
|
42393
42387
|
process.stderr.write(
|
|
@@ -42434,12 +42428,12 @@ async function resolveName(gitUrl, flag, json2) {
|
|
|
42434
42428
|
}
|
|
42435
42429
|
|
|
42436
42430
|
// src/modules/skill/commands/source-list.ts
|
|
42437
|
-
var HEADER3 = ["ID", "NAME", "GIT URL", "KIND"];
|
|
42431
|
+
var HEADER3 = ["ID", "NAME", "GIT URL", "PATH", "KIND"];
|
|
42438
42432
|
function tableFor3(sources) {
|
|
42439
42433
|
const sorted = [...sources].sort((a, b2) => a.name.localeCompare(b2.name));
|
|
42440
42434
|
return renderTable([
|
|
42441
42435
|
HEADER3,
|
|
42442
|
-
...sorted.map((s) => [s.id, s.name, s.gitUrl, sourceKind(s)])
|
|
42436
|
+
...sorted.map((s) => [s.id, s.name, s.gitUrl, s.path ?? "", sourceKind(s)])
|
|
42443
42437
|
]);
|
|
42444
42438
|
}
|
|
42445
42439
|
function buildSourceListCommand(deps) {
|