@hyperdrive.bot/paseo-protocol 0.2.5
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 +12 -0
- package/dist/agent-attention-notification.d.ts +41 -0
- package/dist/agent-attention-notification.js +140 -0
- package/dist/agent-labels.d.ts +9 -0
- package/dist/agent-labels.js +23 -0
- package/dist/agent-lifecycle.d.ts +3 -0
- package/dist/agent-lifecycle.js +8 -0
- package/dist/agent-state-bucket.d.ts +24 -0
- package/dist/agent-state-bucket.js +45 -0
- package/dist/agent-title-limits.d.ts +2 -0
- package/dist/agent-title-limits.js +2 -0
- package/dist/agent-types.d.ts +461 -0
- package/dist/agent-types.js +22 -0
- package/dist/binary-frames/chunk-size.d.ts +2 -0
- package/dist/binary-frames/chunk-size.js +7 -0
- package/dist/binary-frames/demux.d.ts +11 -0
- package/dist/binary-frames/demux.js +23 -0
- package/dist/binary-frames/file-transfer.d.ts +50 -0
- package/dist/binary-frames/file-transfer.js +114 -0
- package/dist/binary-frames/index.d.ts +4 -0
- package/dist/binary-frames/index.js +4 -0
- package/dist/binary-frames/terminal.d.ts +31 -0
- package/dist/binary-frames/terminal.js +99 -0
- package/dist/branch-slug.d.ts +14 -0
- package/dist/branch-slug.js +49 -0
- package/dist/browser-automation/capabilities.d.ts +7 -0
- package/dist/browser-automation/capabilities.js +31 -0
- package/dist/browser-automation/rpc-schemas.d.ts +1112 -0
- package/dist/browser-automation/rpc-schemas.js +462 -0
- package/dist/chat/rpc-schemas.d.ts +158 -0
- package/dist/chat/rpc-schemas.js +103 -0
- package/dist/chat/types.d.ts +30 -0
- package/dist/chat/types.js +22 -0
- package/dist/client-capabilities.d.ts +8 -0
- package/dist/client-capabilities.js +16 -0
- package/dist/connection-offer.d.ts +36 -0
- package/dist/connection-offer.js +53 -0
- package/dist/daemon-endpoints.d.ts +47 -0
- package/dist/daemon-endpoints.js +201 -0
- package/dist/error-utils.d.ts +11 -0
- package/dist/error-utils.js +27 -0
- package/dist/generated/validation/ws-outbound.aot.d.ts +2 -0
- package/dist/generated/validation/ws-outbound.aot.js +46936 -0
- package/dist/git-remote.d.ts +16 -0
- package/dist/git-remote.js +72 -0
- package/dist/host-connection-schema.d.ts +11 -0
- package/dist/host-connection-schema.js +9 -0
- package/dist/literal-union.d.ts +2 -0
- package/dist/literal-union.js +2 -0
- package/dist/loop/rpc-schemas.d.ts +636 -0
- package/dist/loop/rpc-schemas.js +163 -0
- package/dist/messages.d.ts +36565 -0
- package/dist/messages.js +4703 -0
- package/dist/paseo-config-schema.d.ts +117 -0
- package/dist/paseo-config-schema.js +79 -0
- package/dist/path-utils.d.ts +2 -0
- package/dist/path-utils.js +16 -0
- package/dist/provider-config.d.ts +136 -0
- package/dist/provider-config.js +119 -0
- package/dist/provider-icon-names.d.ts +5 -0
- package/dist/provider-icon-names.js +52 -0
- package/dist/provider-manifest.d.ts +114 -0
- package/dist/provider-manifest.js +344 -0
- package/dist/schedule/cron-expression.d.ts +13 -0
- package/dist/schedule/cron-expression.js +97 -0
- package/dist/schedule/rpc-schemas.d.ts +574 -0
- package/dist/schedule/rpc-schemas.js +151 -0
- package/dist/schedule/types.d.ts +202 -0
- package/dist/schedule/types.js +75 -0
- package/dist/terminal-activity.d.ts +21 -0
- package/dist/terminal-activity.js +25 -0
- package/dist/terminal-input-mode.d.ts +26 -0
- package/dist/terminal-input-mode.js +151 -0
- package/dist/terminal-key-input.d.ts +13 -0
- package/dist/terminal-key-input.js +201 -0
- package/dist/terminal-profiles.d.ts +6 -0
- package/dist/terminal-profiles.js +28 -0
- package/dist/terminal-snapshot.d.ts +3 -0
- package/dist/terminal-snapshot.js +178 -0
- package/dist/terminal-stream-protocol.d.ts +2 -0
- package/dist/terminal-stream-protocol.js +2 -0
- package/dist/terminal-subscription-key.d.ts +2 -0
- package/dist/terminal-subscription-key.js +9 -0
- package/dist/tool-call-display.d.ts +11 -0
- package/dist/tool-call-display.js +135 -0
- package/dist/tool-name-normalization.d.ts +9 -0
- package/dist/tool-name-normalization.js +82 -0
- package/dist/validation/ws-outbound-schema-metadata.d.ts +6828 -0
- package/dist/validation/ws-outbound-schema-metadata.js +3 -0
- package/dist/validation/ws-outbound.d.ts +12 -0
- package/dist/validation/ws-outbound.js +8 -0
- package/package.json +42 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare function normalizeLifecycleCommands(commands: unknown): string[];
|
|
3
|
+
export declare const PaseoLifecycleCommandRawSchema: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
4
|
+
export declare const PaseoScriptEntryRawSchema: z.ZodObject<{
|
|
5
|
+
type: z.ZodOptional<z.ZodUnknown>;
|
|
6
|
+
command: z.ZodOptional<z.ZodUnknown>;
|
|
7
|
+
port: z.ZodOptional<z.ZodUnknown>;
|
|
8
|
+
}, z.core.$loose>;
|
|
9
|
+
export declare const PaseoWorktreeConfigRawSchema: z.ZodObject<{
|
|
10
|
+
setup: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
11
|
+
teardown: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
12
|
+
terminals: z.ZodOptional<z.ZodUnknown>;
|
|
13
|
+
}, z.core.$loose>;
|
|
14
|
+
export declare const PaseoMetadataGenerationEntrySchema: z.ZodCatch<z.ZodObject<{
|
|
15
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$loose>>;
|
|
17
|
+
export declare const PaseoMetadataGenerationSchema: z.ZodCatch<z.ZodObject<{
|
|
18
|
+
title: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
19
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$loose>>>;
|
|
21
|
+
branchName: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
22
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, z.core.$loose>>>;
|
|
24
|
+
commitMessage: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
25
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
26
|
+
}, z.core.$loose>>>;
|
|
27
|
+
pullRequest: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
28
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$loose>>>;
|
|
30
|
+
}, z.core.$loose>>;
|
|
31
|
+
export declare const PaseoConfigRawSchema: z.ZodObject<{
|
|
32
|
+
worktree: z.ZodOptional<z.ZodObject<{
|
|
33
|
+
setup: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
34
|
+
teardown: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
35
|
+
terminals: z.ZodOptional<z.ZodUnknown>;
|
|
36
|
+
}, z.core.$loose>>;
|
|
37
|
+
scripts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
38
|
+
type: z.ZodOptional<z.ZodUnknown>;
|
|
39
|
+
command: z.ZodOptional<z.ZodUnknown>;
|
|
40
|
+
port: z.ZodOptional<z.ZodUnknown>;
|
|
41
|
+
}, z.core.$loose>>>;
|
|
42
|
+
metadataGeneration: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
43
|
+
title: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
44
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
45
|
+
}, z.core.$loose>>>;
|
|
46
|
+
branchName: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
47
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, z.core.$loose>>>;
|
|
49
|
+
commitMessage: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
50
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
51
|
+
}, z.core.$loose>>>;
|
|
52
|
+
pullRequest: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
53
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
54
|
+
}, z.core.$loose>>>;
|
|
55
|
+
}, z.core.$loose>>>;
|
|
56
|
+
}, z.core.$loose>;
|
|
57
|
+
export declare const WorktreeConfigSchema: z.ZodCatch<z.ZodObject<{
|
|
58
|
+
terminals: z.ZodOptional<z.ZodUnknown>;
|
|
59
|
+
setup: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<string[], unknown>>;
|
|
60
|
+
teardown: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<string[], unknown>>;
|
|
61
|
+
}, z.core.$loose>>;
|
|
62
|
+
export declare const ScriptEntrySchema: z.ZodCatch<z.ZodObject<{
|
|
63
|
+
type: z.ZodOptional<z.ZodUnknown>;
|
|
64
|
+
command: z.ZodOptional<z.ZodUnknown>;
|
|
65
|
+
port: z.ZodOptional<z.ZodUnknown>;
|
|
66
|
+
}, z.core.$loose>>;
|
|
67
|
+
export declare const PaseoConfigSchema: z.ZodCatch<z.ZodObject<{
|
|
68
|
+
worktree: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
69
|
+
terminals: z.ZodOptional<z.ZodUnknown>;
|
|
70
|
+
setup: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<string[], unknown>>;
|
|
71
|
+
teardown: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<string[], unknown>>;
|
|
72
|
+
}, z.core.$loose>>>;
|
|
73
|
+
scripts: z.ZodCatch<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodObject<{
|
|
74
|
+
type: z.ZodOptional<z.ZodUnknown>;
|
|
75
|
+
command: z.ZodOptional<z.ZodUnknown>;
|
|
76
|
+
port: z.ZodOptional<z.ZodUnknown>;
|
|
77
|
+
}, z.core.$loose>>>>>;
|
|
78
|
+
metadataGeneration: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
79
|
+
title: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
80
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
81
|
+
}, z.core.$loose>>>;
|
|
82
|
+
branchName: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
83
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
84
|
+
}, z.core.$loose>>>;
|
|
85
|
+
commitMessage: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
86
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}, z.core.$loose>>>;
|
|
88
|
+
pullRequest: z.ZodOptional<z.ZodCatch<z.ZodObject<{
|
|
89
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
90
|
+
}, z.core.$loose>>>;
|
|
91
|
+
}, z.core.$loose>>>;
|
|
92
|
+
}, z.core.$loose>>;
|
|
93
|
+
export declare const PaseoConfigRevisionSchema: z.ZodObject<{
|
|
94
|
+
mtimeMs: z.ZodNumber;
|
|
95
|
+
size: z.ZodNumber;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
export declare const ProjectConfigRpcErrorSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
98
|
+
code: z.ZodLiteral<"project_not_found">;
|
|
99
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
100
|
+
code: z.ZodLiteral<"invalid_project_config">;
|
|
101
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
102
|
+
code: z.ZodLiteral<"stale_project_config">;
|
|
103
|
+
currentRevision: z.ZodNullable<z.ZodObject<{
|
|
104
|
+
mtimeMs: z.ZodNumber;
|
|
105
|
+
size: z.ZodNumber;
|
|
106
|
+
}, z.core.$strip>>;
|
|
107
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
108
|
+
code: z.ZodLiteral<"write_failed">;
|
|
109
|
+
}, z.core.$strip>], "code">;
|
|
110
|
+
export type PaseoScriptEntryRaw = z.infer<typeof PaseoScriptEntryRawSchema>;
|
|
111
|
+
export type PaseoMetadataGenerationEntry = z.infer<typeof PaseoMetadataGenerationEntrySchema>;
|
|
112
|
+
export type PaseoMetadataGeneration = z.infer<typeof PaseoMetadataGenerationSchema>;
|
|
113
|
+
export type PaseoConfigRaw = z.infer<typeof PaseoConfigRawSchema>;
|
|
114
|
+
export type PaseoConfig = z.infer<typeof PaseoConfigSchema>;
|
|
115
|
+
export type PaseoConfigRevision = z.infer<typeof PaseoConfigRevisionSchema>;
|
|
116
|
+
export type ProjectConfigRpcError = z.infer<typeof ProjectConfigRpcErrorSchema>;
|
|
117
|
+
//# sourceMappingURL=paseo-config-schema.d.ts.map
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function normalizeLifecycleCommands(commands) {
|
|
3
|
+
if (typeof commands === "string") {
|
|
4
|
+
return commands.trim().length > 0 ? [commands] : [];
|
|
5
|
+
}
|
|
6
|
+
if (!Array.isArray(commands)) {
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
9
|
+
return commands.filter((command) => {
|
|
10
|
+
return typeof command === "string" && command.trim().length > 0;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export const PaseoLifecycleCommandRawSchema = z.union([z.string(), z.array(z.string())]);
|
|
14
|
+
export const PaseoScriptEntryRawSchema = z
|
|
15
|
+
.object({
|
|
16
|
+
type: z.unknown().optional(),
|
|
17
|
+
command: z.unknown().optional(),
|
|
18
|
+
port: z.unknown().optional(),
|
|
19
|
+
})
|
|
20
|
+
.passthrough();
|
|
21
|
+
export const PaseoWorktreeConfigRawSchema = z
|
|
22
|
+
.object({
|
|
23
|
+
setup: PaseoLifecycleCommandRawSchema.optional(),
|
|
24
|
+
teardown: PaseoLifecycleCommandRawSchema.optional(),
|
|
25
|
+
terminals: z.unknown().optional(),
|
|
26
|
+
})
|
|
27
|
+
.passthrough();
|
|
28
|
+
export const PaseoMetadataGenerationEntrySchema = z
|
|
29
|
+
.object({
|
|
30
|
+
instructions: z.string().optional(),
|
|
31
|
+
})
|
|
32
|
+
.passthrough()
|
|
33
|
+
.catch({});
|
|
34
|
+
export const PaseoMetadataGenerationSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
title: PaseoMetadataGenerationEntrySchema.optional(),
|
|
37
|
+
branchName: PaseoMetadataGenerationEntrySchema.optional(),
|
|
38
|
+
commitMessage: PaseoMetadataGenerationEntrySchema.optional(),
|
|
39
|
+
pullRequest: PaseoMetadataGenerationEntrySchema.optional(),
|
|
40
|
+
})
|
|
41
|
+
// COMPAT(projectMetadataAgentTitle): `agentTitle` project metadata prompts were removed
|
|
42
|
+
// in v0.1.96; keep legacy paseo.json parseable until 2026-12-16.
|
|
43
|
+
.passthrough()
|
|
44
|
+
.catch({});
|
|
45
|
+
export const PaseoConfigRawSchema = z
|
|
46
|
+
.object({
|
|
47
|
+
worktree: PaseoWorktreeConfigRawSchema.optional(),
|
|
48
|
+
scripts: z.record(z.string(), PaseoScriptEntryRawSchema).optional(),
|
|
49
|
+
metadataGeneration: PaseoMetadataGenerationSchema.optional(),
|
|
50
|
+
})
|
|
51
|
+
.passthrough();
|
|
52
|
+
export const WorktreeConfigSchema = PaseoWorktreeConfigRawSchema.extend({
|
|
53
|
+
setup: z.unknown().optional().transform(normalizeLifecycleCommands),
|
|
54
|
+
teardown: z.unknown().optional().transform(normalizeLifecycleCommands),
|
|
55
|
+
})
|
|
56
|
+
.passthrough()
|
|
57
|
+
.catch({ setup: [], teardown: [] });
|
|
58
|
+
export const ScriptEntrySchema = PaseoScriptEntryRawSchema.catch({});
|
|
59
|
+
export const PaseoConfigSchema = PaseoConfigRawSchema.extend({
|
|
60
|
+
worktree: WorktreeConfigSchema.optional(),
|
|
61
|
+
scripts: z.record(z.string(), ScriptEntrySchema).optional().catch({}),
|
|
62
|
+
metadataGeneration: PaseoMetadataGenerationSchema.optional(),
|
|
63
|
+
})
|
|
64
|
+
.passthrough()
|
|
65
|
+
.catch({});
|
|
66
|
+
export const PaseoConfigRevisionSchema = z.object({
|
|
67
|
+
mtimeMs: z.number(),
|
|
68
|
+
size: z.number(),
|
|
69
|
+
});
|
|
70
|
+
export const ProjectConfigRpcErrorSchema = z.discriminatedUnion("code", [
|
|
71
|
+
z.object({ code: z.literal("project_not_found") }),
|
|
72
|
+
z.object({ code: z.literal("invalid_project_config") }),
|
|
73
|
+
z.object({
|
|
74
|
+
code: z.literal("stale_project_config"),
|
|
75
|
+
currentRevision: PaseoConfigRevisionSchema.nullable(),
|
|
76
|
+
}),
|
|
77
|
+
z.object({ code: z.literal("write_failed") }),
|
|
78
|
+
]);
|
|
79
|
+
//# sourceMappingURL=paseo-config-schema.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function stripCwdPrefix(filePath, cwd) {
|
|
2
|
+
if (!cwd || !filePath) {
|
|
3
|
+
return filePath;
|
|
4
|
+
}
|
|
5
|
+
const normalizedCwd = cwd.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
6
|
+
const normalizedPath = filePath.replace(/\\/g, "/");
|
|
7
|
+
const prefix = `${normalizedCwd}/`;
|
|
8
|
+
if (normalizedPath.startsWith(prefix)) {
|
|
9
|
+
return normalizedPath.slice(prefix.length);
|
|
10
|
+
}
|
|
11
|
+
if (normalizedPath === normalizedCwd) {
|
|
12
|
+
return ".";
|
|
13
|
+
}
|
|
14
|
+
return filePath;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=path-utils.js.map
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentProvider } from "./agent-types.js";
|
|
3
|
+
export declare const ProviderCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
4
|
+
mode: z.ZodLiteral<"default">;
|
|
5
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
6
|
+
mode: z.ZodLiteral<"append">;
|
|
7
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
8
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
9
|
+
mode: z.ZodLiteral<"replace">;
|
|
10
|
+
argv: z.ZodArray<z.ZodString>;
|
|
11
|
+
}, z.core.$strip>], "mode">;
|
|
12
|
+
export declare const ProviderRuntimeSettingsSchema: z.ZodObject<{
|
|
13
|
+
command: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
14
|
+
mode: z.ZodLiteral<"default">;
|
|
15
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
16
|
+
mode: z.ZodLiteral<"append">;
|
|
17
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
18
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
19
|
+
mode: z.ZodLiteral<"replace">;
|
|
20
|
+
argv: z.ZodArray<z.ZodString>;
|
|
21
|
+
}, z.core.$strip>], "mode">>;
|
|
22
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
23
|
+
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
24
|
+
transport: z.ZodOptional<z.ZodEnum<{
|
|
25
|
+
auto: "auto";
|
|
26
|
+
sdk: "sdk";
|
|
27
|
+
pty: "pty";
|
|
28
|
+
}>>;
|
|
29
|
+
}, z.core.$strict>;
|
|
30
|
+
export declare const ProviderProfileModelSchema: z.ZodObject<{
|
|
31
|
+
id: z.ZodString;
|
|
32
|
+
label: z.ZodString;
|
|
33
|
+
description: z.ZodOptional<z.ZodString>;
|
|
34
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
35
|
+
thinkingOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
36
|
+
id: z.ZodString;
|
|
37
|
+
label: z.ZodString;
|
|
38
|
+
description: z.ZodOptional<z.ZodString>;
|
|
39
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
40
|
+
}, z.core.$strip>>>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export declare const ProviderOverrideSchema: z.ZodObject<{
|
|
43
|
+
extends: z.ZodOptional<z.ZodString>;
|
|
44
|
+
label: z.ZodOptional<z.ZodString>;
|
|
45
|
+
description: z.ZodOptional<z.ZodString>;
|
|
46
|
+
command: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
47
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
48
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
49
|
+
models: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
50
|
+
id: z.ZodString;
|
|
51
|
+
label: z.ZodString;
|
|
52
|
+
description: z.ZodOptional<z.ZodString>;
|
|
53
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
54
|
+
thinkingOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
55
|
+
id: z.ZodString;
|
|
56
|
+
label: z.ZodString;
|
|
57
|
+
description: z.ZodOptional<z.ZodString>;
|
|
58
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
59
|
+
}, z.core.$strip>>>;
|
|
60
|
+
}, z.core.$strip>>>;
|
|
61
|
+
additionalModels: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
62
|
+
id: z.ZodString;
|
|
63
|
+
label: z.ZodString;
|
|
64
|
+
description: z.ZodOptional<z.ZodString>;
|
|
65
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
66
|
+
thinkingOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
67
|
+
id: z.ZodString;
|
|
68
|
+
label: z.ZodString;
|
|
69
|
+
description: z.ZodOptional<z.ZodString>;
|
|
70
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
71
|
+
}, z.core.$strip>>>;
|
|
72
|
+
}, z.core.$strip>>>;
|
|
73
|
+
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
74
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
75
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
export declare const ProviderOverridesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
78
|
+
extends: z.ZodOptional<z.ZodString>;
|
|
79
|
+
label: z.ZodOptional<z.ZodString>;
|
|
80
|
+
description: z.ZodOptional<z.ZodString>;
|
|
81
|
+
command: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
82
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
83
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
84
|
+
models: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
85
|
+
id: z.ZodString;
|
|
86
|
+
label: z.ZodString;
|
|
87
|
+
description: z.ZodOptional<z.ZodString>;
|
|
88
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
89
|
+
thinkingOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
90
|
+
id: z.ZodString;
|
|
91
|
+
label: z.ZodString;
|
|
92
|
+
description: z.ZodOptional<z.ZodString>;
|
|
93
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
94
|
+
}, z.core.$strip>>>;
|
|
95
|
+
}, z.core.$strip>>>;
|
|
96
|
+
additionalModels: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
97
|
+
id: z.ZodString;
|
|
98
|
+
label: z.ZodString;
|
|
99
|
+
description: z.ZodOptional<z.ZodString>;
|
|
100
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
101
|
+
thinkingOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
102
|
+
id: z.ZodString;
|
|
103
|
+
label: z.ZodString;
|
|
104
|
+
description: z.ZodOptional<z.ZodString>;
|
|
105
|
+
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
+
}, z.core.$strip>>>;
|
|
107
|
+
}, z.core.$strip>>>;
|
|
108
|
+
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
109
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
110
|
+
order: z.ZodOptional<z.ZodNumber>;
|
|
111
|
+
}, z.core.$strip>>;
|
|
112
|
+
export declare const AgentProviderRuntimeSettingsMapSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
113
|
+
command: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
114
|
+
mode: z.ZodLiteral<"default">;
|
|
115
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
116
|
+
mode: z.ZodLiteral<"append">;
|
|
117
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
118
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
119
|
+
mode: z.ZodLiteral<"replace">;
|
|
120
|
+
argv: z.ZodArray<z.ZodString>;
|
|
121
|
+
}, z.core.$strip>], "mode">>;
|
|
122
|
+
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
123
|
+
disallowedTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
124
|
+
transport: z.ZodOptional<z.ZodEnum<{
|
|
125
|
+
auto: "auto";
|
|
126
|
+
sdk: "sdk";
|
|
127
|
+
pty: "pty";
|
|
128
|
+
}>>;
|
|
129
|
+
}, z.core.$strict>>;
|
|
130
|
+
export type ProviderCommand = z.infer<typeof ProviderCommandSchema>;
|
|
131
|
+
export type ProviderRuntimeSettings = z.infer<typeof ProviderRuntimeSettingsSchema>;
|
|
132
|
+
export type ProviderProfileModel = z.infer<typeof ProviderProfileModelSchema>;
|
|
133
|
+
export type ProviderOverride = z.infer<typeof ProviderOverrideSchema>;
|
|
134
|
+
export type ProviderOverrides = z.infer<typeof ProviderOverridesSchema>;
|
|
135
|
+
export type AgentProviderRuntimeSettingsMap = Partial<Record<AgentProvider, ProviderRuntimeSettings>>;
|
|
136
|
+
//# sourceMappingURL=provider-config.d.ts.map
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { AgentProviderSchema } from "./provider-manifest.js";
|
|
3
|
+
const ProviderCommandDefaultSchema = z.object({
|
|
4
|
+
mode: z.literal("default"),
|
|
5
|
+
});
|
|
6
|
+
const ProviderCommandAppendSchema = z.object({
|
|
7
|
+
mode: z.literal("append"),
|
|
8
|
+
args: z.array(z.string()).optional(),
|
|
9
|
+
});
|
|
10
|
+
const ProviderCommandReplaceSchema = z.object({
|
|
11
|
+
mode: z.literal("replace"),
|
|
12
|
+
argv: z.array(z.string().min(1)).min(1),
|
|
13
|
+
});
|
|
14
|
+
export const ProviderCommandSchema = z.discriminatedUnion("mode", [
|
|
15
|
+
ProviderCommandDefaultSchema,
|
|
16
|
+
ProviderCommandAppendSchema,
|
|
17
|
+
ProviderCommandReplaceSchema,
|
|
18
|
+
]);
|
|
19
|
+
export const ProviderRuntimeSettingsSchema = z
|
|
20
|
+
.object({
|
|
21
|
+
command: ProviderCommandSchema.optional(),
|
|
22
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
23
|
+
disallowedTools: z.array(z.string()).optional(),
|
|
24
|
+
// Optional runtime transport hint (PR #1198 + PTY migration). Controls
|
|
25
|
+
// which AgentTransport implementation a provider's session uses. "auto"
|
|
26
|
+
// lets the provider pick (SDK preferred, PTY fallback when SDK absent).
|
|
27
|
+
// Left optional with no schema-level default so existing partial inputs
|
|
28
|
+
// (diagnostic-utils etc) keep type-checking; consumers default to "sdk"
|
|
29
|
+
// when they need a concrete value.
|
|
30
|
+
transport: z.enum(["sdk", "pty", "auto"]).optional(),
|
|
31
|
+
})
|
|
32
|
+
.strict();
|
|
33
|
+
const ProviderProfileThinkingOptionSchema = z.object({
|
|
34
|
+
id: z.string(),
|
|
35
|
+
label: z.string(),
|
|
36
|
+
description: z.string().optional(),
|
|
37
|
+
isDefault: z.boolean().optional(),
|
|
38
|
+
});
|
|
39
|
+
export const ProviderProfileModelSchema = z.object({
|
|
40
|
+
id: z.string().min(1),
|
|
41
|
+
label: z.string().min(1),
|
|
42
|
+
description: z.string().optional(),
|
|
43
|
+
isDefault: z.boolean().optional(),
|
|
44
|
+
thinkingOptions: z.array(ProviderProfileThinkingOptionSchema).optional(),
|
|
45
|
+
});
|
|
46
|
+
export const ProviderOverrideSchema = z.object({
|
|
47
|
+
extends: z.string().optional(),
|
|
48
|
+
label: z.string().optional(),
|
|
49
|
+
description: z.string().optional(),
|
|
50
|
+
command: z.array(z.string().min(1)).min(1).optional(),
|
|
51
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
52
|
+
params: z.record(z.string(), z.unknown()).optional(),
|
|
53
|
+
models: z.array(ProviderProfileModelSchema).optional(),
|
|
54
|
+
additionalModels: z.array(ProviderProfileModelSchema).optional(),
|
|
55
|
+
disallowedTools: z.array(z.string()).optional(),
|
|
56
|
+
enabled: z.boolean().optional(),
|
|
57
|
+
order: z.number().optional(),
|
|
58
|
+
});
|
|
59
|
+
const BUILTIN_PROVIDER_IDS = ["claude", "codex", "copilot", "opencode", "pi", "omp"];
|
|
60
|
+
const PROVIDER_ID_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
61
|
+
export const ProviderOverridesSchema = z
|
|
62
|
+
.record(z.string(), ProviderOverrideSchema)
|
|
63
|
+
.superRefine((providers, ctx) => {
|
|
64
|
+
const builtinProviderIdSet = new Set(BUILTIN_PROVIDER_IDS);
|
|
65
|
+
const validExtendsValues = new Set([...BUILTIN_PROVIDER_IDS, "acp"]);
|
|
66
|
+
for (const [providerId, provider] of Object.entries(providers)) {
|
|
67
|
+
if (!PROVIDER_ID_PATTERN.test(providerId)) {
|
|
68
|
+
ctx.addIssue({
|
|
69
|
+
code: z.ZodIssueCode.custom,
|
|
70
|
+
path: [providerId],
|
|
71
|
+
message: `Provider ID "${providerId}" must match ${PROVIDER_ID_PATTERN}.`,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
const isBuiltinProvider = builtinProviderIdSet.has(providerId);
|
|
75
|
+
if (!isBuiltinProvider && !provider.extends) {
|
|
76
|
+
ctx.addIssue({
|
|
77
|
+
code: z.ZodIssueCode.custom,
|
|
78
|
+
path: [providerId, "extends"],
|
|
79
|
+
message: `Custom provider "${providerId}" must declare extends.`,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (!isBuiltinProvider && !provider.label) {
|
|
83
|
+
ctx.addIssue({
|
|
84
|
+
code: z.ZodIssueCode.custom,
|
|
85
|
+
path: [providerId, "label"],
|
|
86
|
+
message: `Custom provider "${providerId}" must declare label.`,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
if (provider.extends && !validExtendsValues.has(provider.extends)) {
|
|
90
|
+
ctx.addIssue({
|
|
91
|
+
code: z.ZodIssueCode.custom,
|
|
92
|
+
path: [providerId, "extends"],
|
|
93
|
+
message: `Provider "${providerId}" extends unknown provider "${provider.extends}".`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
if (provider.extends === "acp" && !provider.command) {
|
|
97
|
+
ctx.addIssue({
|
|
98
|
+
code: z.ZodIssueCode.custom,
|
|
99
|
+
path: [providerId, "command"],
|
|
100
|
+
message: `Provider "${providerId}" extending "acp" must declare command.`,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
export const AgentProviderRuntimeSettingsMapSchema = z
|
|
106
|
+
.record(z.string(), ProviderRuntimeSettingsSchema)
|
|
107
|
+
.superRefine((providers, ctx) => {
|
|
108
|
+
for (const providerId of Object.keys(providers)) {
|
|
109
|
+
const parsedProviderId = AgentProviderSchema.safeParse(providerId);
|
|
110
|
+
if (!parsedProviderId.success) {
|
|
111
|
+
ctx.addIssue({
|
|
112
|
+
code: z.ZodIssueCode.custom,
|
|
113
|
+
path: [providerId],
|
|
114
|
+
message: `Invalid agent provider "${providerId}".`,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=provider-config.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const BUILTIN_PROVIDER_ICON_NAMES: string[];
|
|
2
|
+
export declare const ACP_PROVIDER_ICON_NAMES: string[];
|
|
3
|
+
export declare const TERMINAL_PROFILE_ICON_NAMES: string[];
|
|
4
|
+
export declare const KNOWN_PROVIDER_ICON_NAMES: string[];
|
|
5
|
+
//# sourceMappingURL=provider-icon-names.d.ts.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export const BUILTIN_PROVIDER_ICON_NAMES = [
|
|
2
|
+
"claude",
|
|
3
|
+
"codex",
|
|
4
|
+
"copilot",
|
|
5
|
+
"kiro",
|
|
6
|
+
"minimax",
|
|
7
|
+
"omp",
|
|
8
|
+
"opencode",
|
|
9
|
+
"pi",
|
|
10
|
+
];
|
|
11
|
+
export const ACP_PROVIDER_ICON_NAMES = [
|
|
12
|
+
"agoragentic-acp",
|
|
13
|
+
"amp-acp",
|
|
14
|
+
"auggie",
|
|
15
|
+
"autohand",
|
|
16
|
+
"cline",
|
|
17
|
+
"codebuddy-code",
|
|
18
|
+
"codewhale",
|
|
19
|
+
"cortex-code",
|
|
20
|
+
"corust-agent",
|
|
21
|
+
"crow-cli",
|
|
22
|
+
"cursor",
|
|
23
|
+
"deepagents",
|
|
24
|
+
"dimcode",
|
|
25
|
+
"dirac",
|
|
26
|
+
"factory-droid",
|
|
27
|
+
"fast-agent",
|
|
28
|
+
"gemini",
|
|
29
|
+
"glm-acp-agent",
|
|
30
|
+
"goose",
|
|
31
|
+
"grok",
|
|
32
|
+
"junie",
|
|
33
|
+
"kilo",
|
|
34
|
+
"kimi",
|
|
35
|
+
"minion-code",
|
|
36
|
+
"mistral-vibe",
|
|
37
|
+
"nova",
|
|
38
|
+
"poolside",
|
|
39
|
+
"qoder",
|
|
40
|
+
"qwen-code",
|
|
41
|
+
"sigit",
|
|
42
|
+
"stakpak",
|
|
43
|
+
"traecli",
|
|
44
|
+
"vtcode",
|
|
45
|
+
];
|
|
46
|
+
export const TERMINAL_PROFILE_ICON_NAMES = ["agy"];
|
|
47
|
+
export const KNOWN_PROVIDER_ICON_NAMES = [
|
|
48
|
+
...BUILTIN_PROVIDER_ICON_NAMES,
|
|
49
|
+
...ACP_PROVIDER_ICON_NAMES,
|
|
50
|
+
...TERMINAL_PROFILE_ICON_NAMES,
|
|
51
|
+
];
|
|
52
|
+
//# sourceMappingURL=provider-icon-names.js.map
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentMode } from "./agent-types.js";
|
|
3
|
+
export type AgentModeColorTier = "safe" | "moderate" | "dangerous" | "planning" | `#${string}`;
|
|
4
|
+
export type AgentModeIcon = string;
|
|
5
|
+
export interface AgentModeVisuals {
|
|
6
|
+
icon: AgentModeIcon;
|
|
7
|
+
colorTier: AgentModeColorTier;
|
|
8
|
+
}
|
|
9
|
+
export type AgentProviderModeDefinition = Omit<AgentMode, "icon" | "colorTier"> & AgentModeVisuals & {
|
|
10
|
+
isUnattended?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Wire-format family for an agent provider.
|
|
14
|
+
*
|
|
15
|
+
* Providers in the same family share message envelopes, model IDs, and
|
|
16
|
+
* persistence/resume token formats. Hot-swapping the provider on a running
|
|
17
|
+
* agent (via {@link AgentManager.swapAgentProvider}) is only allowed
|
|
18
|
+
* between providers in the same family, AND only between providers that
|
|
19
|
+
* declare each other in {@link AgentProviderDefinition.compatibleProviders}.
|
|
20
|
+
*
|
|
21
|
+
* - `anthropic-messages` — Claude family (`claude` builtin + any custom
|
|
22
|
+
* provider that extends `claude`, e.g. "Claude (Pool)" / Z.AI Anthropic
|
|
23
|
+
* gateway). Same wire format, same model IDs, identical resume tokens.
|
|
24
|
+
* - `openai-compatible` — OpenAI Codex family. Different wire format than
|
|
25
|
+
* anthropic-messages — incompatible.
|
|
26
|
+
* - `generic-acp` — Agent Client Protocol (OpenCode, Copilot, custom ACP).
|
|
27
|
+
* Different again.
|
|
28
|
+
*/
|
|
29
|
+
export type AgentProviderWireFamily = "anthropic-messages" | "openai-compatible" | "generic-acp";
|
|
30
|
+
export interface AgentProviderDefinition {
|
|
31
|
+
id: string;
|
|
32
|
+
label: string;
|
|
33
|
+
description: string;
|
|
34
|
+
enabledByDefault?: boolean;
|
|
35
|
+
defaultModeId: string | null;
|
|
36
|
+
modes: AgentProviderModeDefinition[];
|
|
37
|
+
voice?: {
|
|
38
|
+
enabled: boolean;
|
|
39
|
+
defaultModeId: string;
|
|
40
|
+
defaultModel?: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Wire-format family for hot-swap compatibility. Providers can only swap
|
|
44
|
+
* mid-session to another provider in the SAME family. Models, message
|
|
45
|
+
* envelopes, and resume token formats are guaranteed identical within a
|
|
46
|
+
* family. Required for builtin providers; custom providers (declared via
|
|
47
|
+
* config `extends: <base>`) inherit the family from the base definition.
|
|
48
|
+
*/
|
|
49
|
+
wireFamily: AgentProviderWireFamily;
|
|
50
|
+
/**
|
|
51
|
+
* Provider IDs that this provider can hot-swap TO mid-session. The swap
|
|
52
|
+
* preserves session history + persistence handle. Self is NOT included.
|
|
53
|
+
* Symmetry is validated at boot — see
|
|
54
|
+
* {@link validateCompatibleProvidersSymmetry}.
|
|
55
|
+
*
|
|
56
|
+
* For config-based custom providers extending a builtin: by default we
|
|
57
|
+
* treat them as bidirectionally compatible with their `extends` base AND
|
|
58
|
+
* with sibling providers extending the same base — see
|
|
59
|
+
* {@link computeEffectiveCompatibleProviders}. Explicit per-provider
|
|
60
|
+
* overrides (set by future config surface) take precedence.
|
|
61
|
+
*/
|
|
62
|
+
compatibleProviders?: string[];
|
|
63
|
+
}
|
|
64
|
+
export declare const AGENT_PROVIDER_DEFINITIONS: AgentProviderDefinition[];
|
|
65
|
+
export declare const DEV_AGENT_PROVIDER_DEFINITIONS: AgentProviderDefinition[];
|
|
66
|
+
export declare function getAgentProviderDefinition(provider: string, definitions?: AgentProviderDefinition[]): AgentProviderDefinition;
|
|
67
|
+
export declare const BUILTIN_PROVIDER_IDS: string[];
|
|
68
|
+
export declare const AGENT_PROVIDER_IDS: string[];
|
|
69
|
+
export declare const AgentProviderSchema: z.ZodString;
|
|
70
|
+
export declare function isValidAgentProvider(value: string, validIds?: Iterable<string>): boolean;
|
|
71
|
+
export declare function getUnattendedModeId(provider: string, definitions?: AgentProviderDefinition[]): string | undefined;
|
|
72
|
+
export declare function getModeVisuals(provider: string, modeId: string, definitions: AgentProviderDefinition[]): AgentModeVisuals | undefined;
|
|
73
|
+
export interface CompatibilityValidationResult {
|
|
74
|
+
/**
|
|
75
|
+
* Per-provider effective compatible providers, after dropping any one-sided
|
|
76
|
+
* (asymmetric) entries. Use this for hot-swap eligibility checks.
|
|
77
|
+
*/
|
|
78
|
+
effective: Map<string, ReadonlySet<string>>;
|
|
79
|
+
/**
|
|
80
|
+
* Human-readable warnings for one-sided declarations. Callers should log
|
|
81
|
+
* these at boot — they indicate a definition or config bug.
|
|
82
|
+
*/
|
|
83
|
+
warnings: string[];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Validates that `compatibleProviders` declarations are symmetric across all
|
|
87
|
+
* provided definitions: if A declares B compatible, B MUST declare A as well.
|
|
88
|
+
* One-sided declarations are dropped from the effective set and emitted as
|
|
89
|
+
* warnings so they fail loudly at boot rather than producing a half-broken
|
|
90
|
+
* swap experience at runtime.
|
|
91
|
+
*
|
|
92
|
+
* Wire-family mismatches are ALSO dropped + warned: even if both sides
|
|
93
|
+
* declare each other, a swap between two providers in different families
|
|
94
|
+
* cannot work (different wire formats / resume tokens).
|
|
95
|
+
*/
|
|
96
|
+
export declare function validateCompatibleProvidersSymmetry(definitions: readonly AgentProviderDefinition[]): CompatibilityValidationResult;
|
|
97
|
+
/**
|
|
98
|
+
* Compute the effective set of compatibleProviders for a runtime registry
|
|
99
|
+
* that may include custom providers extending builtins (e.g. "Claude (Pool)"
|
|
100
|
+
* with `extends: "claude"`). Strategy:
|
|
101
|
+
*
|
|
102
|
+
* 1. Start from each provider's explicit `compatibleProviders` list.
|
|
103
|
+
* 2. Auto-link providers that share the same `extends` base (siblings) AND
|
|
104
|
+
* auto-link each derived provider with its base — but ONLY when both have
|
|
105
|
+
* the same wireFamily AND the base did not explicitly opt out.
|
|
106
|
+
* 3. Run symmetry validation on the resulting graph; drop asymmetric edges.
|
|
107
|
+
*
|
|
108
|
+
* The result is a Map keyed by provider id, listing the providers each one
|
|
109
|
+
* may swap TO.
|
|
110
|
+
*/
|
|
111
|
+
export declare function computeEffectiveCompatibleProviders(definitions: readonly AgentProviderDefinition[],
|
|
112
|
+
/** Optional: providerId -> base provider id (the `extends` target). */
|
|
113
|
+
extensionMap?: ReadonlyMap<string, string>): CompatibilityValidationResult;
|
|
114
|
+
//# sourceMappingURL=provider-manifest.d.ts.map
|