@dual-os/sdk 0.0.0-stage → 0.8.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +19 -2
  3. package/dist/Action.d.ts +201 -0
  4. package/dist/Action.d.ts.map +1 -0
  5. package/dist/Action.js +172 -0
  6. package/dist/Action.js.map +1 -0
  7. package/dist/AgentChannel.d.ts +1717 -0
  8. package/dist/AgentChannel.d.ts.map +1 -0
  9. package/dist/AgentChannel.js +708 -0
  10. package/dist/AgentChannel.js.map +1 -0
  11. package/dist/AgentChannelConformance.d.ts +1543 -0
  12. package/dist/AgentChannelConformance.d.ts.map +1 -0
  13. package/dist/AgentChannelConformance.js +163 -0
  14. package/dist/AgentChannelConformance.js.map +1 -0
  15. package/dist/AgentChannelRuntime.d.ts +78 -0
  16. package/dist/AgentChannelRuntime.d.ts.map +1 -0
  17. package/dist/AgentChannelRuntime.js +270 -0
  18. package/dist/AgentChannelRuntime.js.map +1 -0
  19. package/dist/AiProvider.d.ts +132 -0
  20. package/dist/AiProvider.d.ts.map +1 -0
  21. package/dist/AiProvider.js +100 -0
  22. package/dist/AiProvider.js.map +1 -0
  23. package/dist/AuthMethod.d.ts +381 -0
  24. package/dist/AuthMethod.d.ts.map +1 -0
  25. package/dist/AuthMethod.js +225 -0
  26. package/dist/AuthMethod.js.map +1 -0
  27. package/dist/AuthMethodBinding.d.ts +77 -0
  28. package/dist/AuthMethodBinding.d.ts.map +1 -0
  29. package/dist/AuthMethodBinding.js +31 -0
  30. package/dist/AuthMethodBinding.js.map +1 -0
  31. package/dist/AuthMethodExecution.d.ts +223 -0
  32. package/dist/AuthMethodExecution.d.ts.map +1 -0
  33. package/dist/AuthMethodExecution.js +277 -0
  34. package/dist/AuthMethodExecution.js.map +1 -0
  35. package/dist/ConnectionResolver.d.ts +219 -0
  36. package/dist/ConnectionResolver.d.ts.map +1 -0
  37. package/dist/ConnectionResolver.js +153 -0
  38. package/dist/ConnectionResolver.js.map +1 -0
  39. package/dist/DefinitionError.d.ts +67 -0
  40. package/dist/DefinitionError.d.ts.map +1 -0
  41. package/dist/DefinitionError.js +82 -0
  42. package/dist/DefinitionError.js.map +1 -0
  43. package/dist/DualRegistry.d.ts +71 -0
  44. package/dist/DualRegistry.d.ts.map +1 -0
  45. package/dist/DualRegistry.js +96 -0
  46. package/dist/DualRegistry.js.map +1 -0
  47. package/dist/DualRuntime.d.ts +279 -0
  48. package/dist/DualRuntime.d.ts.map +1 -0
  49. package/dist/DualRuntime.js +311 -0
  50. package/dist/DualRuntime.js.map +1 -0
  51. package/dist/Files.d.ts +80 -0
  52. package/dist/Files.d.ts.map +1 -0
  53. package/dist/Files.js +66 -0
  54. package/dist/Files.js.map +1 -0
  55. package/dist/Group.d.ts +106 -0
  56. package/dist/Group.d.ts.map +1 -0
  57. package/dist/Group.js +86 -0
  58. package/dist/Group.js.map +1 -0
  59. package/dist/Http.d.ts +342 -0
  60. package/dist/Http.d.ts.map +1 -0
  61. package/dist/Http.js +677 -0
  62. package/dist/Http.js.map +1 -0
  63. package/dist/Mcp.d.ts +109 -0
  64. package/dist/Mcp.d.ts.map +1 -0
  65. package/dist/Mcp.js +176 -0
  66. package/dist/Mcp.js.map +1 -0
  67. package/dist/OAuth2TokenRefresher.d.ts +18 -0
  68. package/dist/OAuth2TokenRefresher.d.ts.map +1 -0
  69. package/dist/OAuth2TokenRefresher.js +19 -0
  70. package/dist/OAuth2TokenRefresher.js.map +1 -0
  71. package/dist/OAuthFlow.d.ts +71 -0
  72. package/dist/OAuthFlow.d.ts.map +1 -0
  73. package/dist/OAuthFlow.js +488 -0
  74. package/dist/OAuthFlow.js.map +1 -0
  75. package/dist/Plugin.d.ts +383 -0
  76. package/dist/Plugin.d.ts.map +1 -0
  77. package/dist/Plugin.js +249 -0
  78. package/dist/Plugin.js.map +1 -0
  79. package/dist/PluginRuntime.d.ts +3186 -0
  80. package/dist/PluginRuntime.d.ts.map +1 -0
  81. package/dist/PluginRuntime.js +331 -0
  82. package/dist/PluginRuntime.js.map +1 -0
  83. package/dist/Runner.d.ts +1 -0
  84. package/dist/Runner.js +124 -0
  85. package/dist/Runner.js.map +1 -0
  86. package/dist/ToolFile.d.ts +23 -0
  87. package/dist/ToolFile.d.ts.map +1 -0
  88. package/dist/ToolFile.js +33 -0
  89. package/dist/ToolFile.js.map +1 -0
  90. package/dist/Trigger.d.ts +358 -0
  91. package/dist/Trigger.d.ts.map +1 -0
  92. package/dist/Trigger.js +287 -0
  93. package/dist/Trigger.js.map +1 -0
  94. package/dist/_virtual/_rolldown/runtime.js +13 -0
  95. package/dist/index.d.ts +24 -0
  96. package/dist/index.js +24 -0
  97. package/dist/internal/auth-context.d.ts +23 -0
  98. package/dist/internal/auth-context.d.ts.map +1 -0
  99. package/dist/internal/auth-context.js +1 -0
  100. package/dist/internal/auth-execution.d.ts +27 -0
  101. package/dist/internal/auth-execution.d.ts.map +1 -0
  102. package/dist/internal/auth-execution.js +66 -0
  103. package/dist/internal/auth-execution.js.map +1 -0
  104. package/dist/internal/auth-runtime.d.ts +5 -0
  105. package/dist/internal/auth-runtime.d.ts.map +1 -0
  106. package/dist/internal/auth-runtime.js +16 -0
  107. package/dist/internal/auth-runtime.js.map +1 -0
  108. package/dist/internal/capabilities.d.ts +24 -0
  109. package/dist/internal/capabilities.d.ts.map +1 -0
  110. package/dist/internal/capabilities.js +22 -0
  111. package/dist/internal/capabilities.js.map +1 -0
  112. package/dist/internal/children.d.ts +34 -0
  113. package/dist/internal/children.d.ts.map +1 -0
  114. package/dist/internal/children.js +53 -0
  115. package/dist/internal/children.js.map +1 -0
  116. package/dist/internal/collection-utils.d.ts +4 -0
  117. package/dist/internal/collection-utils.d.ts.map +1 -0
  118. package/dist/internal/collection-utils.js +6 -0
  119. package/dist/internal/collection-utils.js.map +1 -0
  120. package/dist/internal/dual/actions.d.ts +33 -0
  121. package/dist/internal/dual/actions.d.ts.map +1 -0
  122. package/dist/internal/dual/actions.js +26 -0
  123. package/dist/internal/dual/actions.js.map +1 -0
  124. package/dist/internal/dual/invoke.d.ts +63 -0
  125. package/dist/internal/dual/invoke.d.ts.map +1 -0
  126. package/dist/internal/dual/invoke.js +75 -0
  127. package/dist/internal/dual/invoke.js.map +1 -0
  128. package/dist/internal/dual/registry.d.ts +125 -0
  129. package/dist/internal/dual/registry.d.ts.map +1 -0
  130. package/dist/internal/dual/registry.js +172 -0
  131. package/dist/internal/dual/registry.js.map +1 -0
  132. package/dist/internal/dual/triggers.d.ts +29 -0
  133. package/dist/internal/dual/triggers.d.ts.map +1 -0
  134. package/dist/internal/dual/triggers.js +26 -0
  135. package/dist/internal/dual/triggers.js.map +1 -0
  136. package/dist/internal/handler-context.d.ts +9 -0
  137. package/dist/internal/handler-context.d.ts.map +1 -0
  138. package/dist/internal/handler-context.js +31 -0
  139. package/dist/internal/handler-context.js.map +1 -0
  140. package/dist/internal/identifier.d.ts +6 -0
  141. package/dist/internal/identifier.d.ts.map +1 -0
  142. package/dist/internal/identifier.js +28 -0
  143. package/dist/internal/identifier.js.map +1 -0
  144. package/dist/internal/plugin-handlers.d.ts +38 -0
  145. package/dist/internal/plugin-handlers.d.ts.map +1 -0
  146. package/dist/internal/plugin-handlers.js +52 -0
  147. package/dist/internal/plugin-handlers.js.map +1 -0
  148. package/dist/internal/proto.d.ts +7 -0
  149. package/dist/internal/proto.d.ts.map +1 -0
  150. package/dist/internal/proto.js +10 -0
  151. package/dist/internal/proto.js.map +1 -0
  152. package/dist/internal/schema-runtime.d.ts +6 -0
  153. package/dist/internal/schema-runtime.d.ts.map +1 -0
  154. package/dist/internal/schema-runtime.js +10 -0
  155. package/dist/internal/schema-runtime.js.map +1 -0
  156. package/dist/internal/trigger-runtime-shared.d.ts +41 -0
  157. package/dist/internal/trigger-runtime-shared.d.ts.map +1 -0
  158. package/dist/internal/trigger-runtime-shared.js +132 -0
  159. package/dist/internal/trigger-runtime-shared.js.map +1 -0
  160. package/dist/internal/trigger-runtime.d.ts +12 -0
  161. package/dist/internal/trigger-runtime.d.ts.map +1 -0
  162. package/dist/internal/trigger-runtime.js +95 -0
  163. package/dist/internal/trigger-runtime.js.map +1 -0
  164. package/dist/internal/types.d.ts +7 -0
  165. package/dist/internal/types.d.ts.map +1 -0
  166. package/dist/internal/types.js +1 -0
  167. package/dist/remote-runtime.d.ts +585 -0
  168. package/dist/remote-runtime.d.ts.map +1 -0
  169. package/dist/remote-runtime.js +367 -0
  170. package/dist/remote-runtime.js.map +1 -0
  171. package/package.json +55 -4
  172. package/src/Action.ts +370 -0
  173. package/src/AgentChannel.ts +860 -0
  174. package/src/AgentChannelConformance.ts +124 -0
  175. package/src/AgentChannelRuntime.ts +616 -0
  176. package/src/AiProvider.ts +255 -0
  177. package/src/AuthMethod.ts +954 -0
  178. package/src/AuthMethodBinding.ts +112 -0
  179. package/src/AuthMethodExecution.ts +542 -0
  180. package/src/ConnectionResolver.ts +265 -0
  181. package/src/DefinitionError.ts +115 -0
  182. package/src/DualRegistry.ts +152 -0
  183. package/src/DualRuntime.ts +1081 -0
  184. package/src/Files.ts +89 -0
  185. package/src/Group.ts +292 -0
  186. package/src/Http.ts +1205 -0
  187. package/src/Mcp.ts +299 -0
  188. package/src/OAuth2TokenRefresher.ts +22 -0
  189. package/src/OAuthFlow.ts +874 -0
  190. package/src/Plugin.ts +912 -0
  191. package/src/PluginRuntime.ts +414 -0
  192. package/src/Runner.ts +248 -0
  193. package/src/ToolFile.ts +28 -0
  194. package/src/Trigger.ts +722 -0
  195. package/src/index.ts +158 -0
  196. package/src/internal/auth-context.ts +27 -0
  197. package/src/internal/auth-execution.ts +241 -0
  198. package/src/internal/auth-runtime.ts +20 -0
  199. package/src/internal/capabilities.ts +55 -0
  200. package/src/internal/children.ts +126 -0
  201. package/src/internal/collection-utils.ts +8 -0
  202. package/src/internal/dual/actions.ts +116 -0
  203. package/src/internal/dual/invoke.ts +307 -0
  204. package/src/internal/dual/registry.ts +340 -0
  205. package/src/internal/dual/triggers.ts +128 -0
  206. package/src/internal/handler-context.ts +57 -0
  207. package/src/internal/identifier.ts +27 -0
  208. package/src/internal/plugin-handlers.ts +146 -0
  209. package/src/internal/proto.ts +8 -0
  210. package/src/internal/schema-runtime.ts +15 -0
  211. package/src/internal/trigger-runtime-shared.ts +449 -0
  212. package/src/internal/trigger-runtime.ts +223 -0
  213. package/src/internal/types.ts +12 -0
  214. package/src/remote-runtime.ts +469 -0
@@ -0,0 +1,255 @@
1
+ /**
2
+ * AI provider definitions for model authentication.
3
+ *
4
+ * AI providers share provider metadata and auth methods with Tools providers,
5
+ * but cannot contribute actions, triggers, or groups. Their identifier is a
6
+ * stable key matched exactly against Pi's `Model.provider` value.
7
+ *
8
+ * @since 0.0.0
9
+ */
10
+ import type { Pipeable } from "effect";
11
+ import { Function as Func, Predicate, Schema } from "effect";
12
+
13
+ import type * as AuthMethod from "./AuthMethod.ts";
14
+ import type * as AuthMethodBinding from "./AuthMethodBinding.ts";
15
+ import { assertNoDuplicateAuthMethodIdentifiers } from "./internal/auth-runtime.ts";
16
+ import { appendElements } from "./internal/collection-utils.ts";
17
+ import { validateIdentifier } from "./internal/identifier.ts";
18
+ import { PipeableProto } from "./internal/proto.ts";
19
+ import type { Category } from "./Plugin.ts";
20
+
21
+ /** @since 0.0.0 @category type ids */
22
+ export const TypeId = "@dual-os/sdk/AiProvider" as const;
23
+ /** @since 0.0.0 @category type ids */
24
+ export type TypeId = typeof TypeId;
25
+
26
+ /** @since 0.0.0 @category type-level */
27
+ export interface Any extends Pipeable.Pipeable {
28
+ readonly [TypeId]: TypeId;
29
+ readonly identifier: string;
30
+ readonly name: string | undefined;
31
+ readonly description: string | undefined;
32
+ readonly iconUrl: string | undefined;
33
+ readonly iconUrlDark: string | undefined;
34
+ readonly categories: readonly Category[];
35
+ readonly homepageUrl: string | undefined;
36
+ readonly docsUrl: string | undefined;
37
+ readonly authMethods: readonly AuthMethod.Any[];
38
+ readonly resolveRuntimeConfig: unknown;
39
+ }
40
+
41
+ /** @since 0.0.0 @category models */
42
+ export const RuntimeConfig = Schema.Struct({
43
+ apiKey: Schema.optional(Schema.String),
44
+ baseUrl: Schema.optional(Schema.String),
45
+ env: Schema.optional(Schema.Record(Schema.String, Schema.String)),
46
+ headers: Schema.optional(Schema.Record(Schema.String, Schema.NullOr(Schema.String))),
47
+ });
48
+
49
+ /** @since 0.0.0 @category models */
50
+ export type RuntimeConfig = typeof RuntimeConfig.Type;
51
+
52
+ /** @since 0.0.0 @category models */
53
+ export interface RuntimeModel {
54
+ readonly id: string;
55
+ readonly baseUrl: string;
56
+ }
57
+
58
+ /** @since 0.0.0 @category models */
59
+ export interface RuntimeConfigResolverInput<Methods extends readonly AuthMethod.Any[]> {
60
+ readonly model: RuntimeModel;
61
+ readonly binding: AuthMethodBinding.BindingFor<Methods>;
62
+ }
63
+
64
+ /** @since 0.0.0 @category models */
65
+ export type RuntimeConfigResolver<Methods extends readonly AuthMethod.Any[]> = (
66
+ input: RuntimeConfigResolverInput<Methods>,
67
+ ) => RuntimeConfig;
68
+
69
+ /** @since 0.0.0 @category models */
70
+ export interface AiProviderOptions<Identifier extends string = string> {
71
+ readonly identifier: Identifier;
72
+ readonly name?: string;
73
+ readonly description?: string;
74
+ readonly iconUrl?: string;
75
+ readonly iconUrlDark?: string;
76
+ readonly categories?: readonly Category[];
77
+ readonly homepageUrl?: string;
78
+ readonly docsUrl?: string;
79
+ }
80
+
81
+ /** @since 0.0.0 @category models */
82
+ export interface AiProvider<
83
+ out Identifier extends string = string,
84
+ out AuthMethods extends readonly AuthMethod.Any[] = readonly [],
85
+ >
86
+ extends Pipeable.Pipeable {
87
+ readonly [TypeId]: TypeId;
88
+ readonly identifier: Identifier;
89
+ readonly name: string | undefined;
90
+ readonly description: string | undefined;
91
+ readonly iconUrl: string | undefined;
92
+ readonly iconUrlDark: string | undefined;
93
+ readonly categories: readonly Category[];
94
+ readonly homepageUrl: string | undefined;
95
+ readonly docsUrl: string | undefined;
96
+ readonly authMethods: AuthMethods;
97
+ readonly resolveRuntimeConfig: RuntimeConfigResolver<AuthMethods> | undefined;
98
+ }
99
+
100
+ /** @since 0.0.0 @category type-level */
101
+ export type AddAuthMethods<Self extends Any, AddedMethods extends readonly AuthMethod.Any[]> =
102
+ Self extends AiProvider<infer Identifier, infer AuthMethods>
103
+ ? AiProvider<Identifier, readonly [...AuthMethods, ...AddedMethods]>
104
+ : never;
105
+
106
+ const optionsFromProvider = (provider: Any): AiProviderOptions => ({
107
+ identifier: provider.identifier,
108
+ ...(provider.name === undefined ? {} : { name: provider.name }),
109
+ ...(provider.description === undefined ? {} : { description: provider.description }),
110
+ ...(provider.iconUrl === undefined ? {} : { iconUrl: provider.iconUrl }),
111
+ ...(provider.iconUrlDark === undefined ? {} : { iconUrlDark: provider.iconUrlDark }),
112
+ ...(provider.categories.length === 0 ? {} : { categories: provider.categories }),
113
+ ...(provider.homepageUrl === undefined ? {} : { homepageUrl: provider.homepageUrl }),
114
+ ...(provider.docsUrl === undefined ? {} : { docsUrl: provider.docsUrl }),
115
+ });
116
+
117
+ const Proto = { ...PipeableProto, [TypeId]: TypeId };
118
+
119
+ const makeProvider = <Identifier extends string, AuthMethods extends readonly AuthMethod.Any[]>(
120
+ options: AiProviderOptions<Identifier>,
121
+ authMethods: AuthMethods,
122
+ resolveRuntimeConfig?: RuntimeConfigResolver<AuthMethods>,
123
+ ): AiProvider<Identifier, AuthMethods> => {
124
+ validateIdentifier("provider", options.identifier);
125
+ assertNoDuplicateAuthMethodIdentifiers(options.identifier, authMethods);
126
+
127
+ return Object.assign(Object.create(Proto), {
128
+ authMethods,
129
+ categories: options.categories ?? [],
130
+ description: options.description,
131
+ docsUrl: options.docsUrl,
132
+ homepageUrl: options.homepageUrl,
133
+ iconUrl: options.iconUrl,
134
+ iconUrlDark: options.iconUrlDark,
135
+ identifier: options.identifier,
136
+ name: options.name,
137
+ resolveRuntimeConfig,
138
+ });
139
+ };
140
+
141
+ /** @since 0.0.0 @category constructors */
142
+ export const make = <const Identifier extends string>(
143
+ identifier: Identifier,
144
+ ): AiProvider<Identifier> => makeProvider({ identifier }, [] as const);
145
+
146
+ /** @since 0.0.0 @category registry */
147
+ export const registryId = (identifier: string): string => `ai/${identifier}`;
148
+
149
+ /** @since 0.0.0 @category guards */
150
+ export const isAiProvider = (value: unknown): value is Any => Predicate.hasProperty(value, TypeId);
151
+
152
+ const withOption = <P extends AiProvider<any, any>>(
153
+ provider: P,
154
+ options: Partial<AiProviderOptions>,
155
+ ): P =>
156
+ makeProvider(
157
+ { ...optionsFromProvider(provider), ...options },
158
+ provider.authMethods,
159
+ provider.resolveRuntimeConfig,
160
+ ) as P;
161
+
162
+ /** @since 0.0.0 @category combinators */
163
+ export const withName: {
164
+ (name: string): <P extends AiProvider<any, any>>(provider: P) => P;
165
+ <P extends AiProvider<any, any>>(provider: P, name: string): P;
166
+ } = Func.dual(2, (provider: AiProvider<any, any>, name: string) => withOption(provider, { name }));
167
+
168
+ /** @since 0.0.0 @category combinators */
169
+ export const withDescription: {
170
+ (description: string): <P extends AiProvider<any, any>>(provider: P) => P;
171
+ <P extends AiProvider<any, any>>(provider: P, description: string): P;
172
+ } = Func.dual(2, (provider: AiProvider<any, any>, description: string) =>
173
+ withOption(provider, { description }),
174
+ );
175
+
176
+ /** @since 0.0.0 @category combinators */
177
+ export const withIconUrl: {
178
+ (iconUrl: string): <P extends AiProvider<any, any>>(provider: P) => P;
179
+ <P extends AiProvider<any, any>>(provider: P, iconUrl: string): P;
180
+ } = Func.dual(2, (provider: AiProvider<any, any>, iconUrl: string) =>
181
+ withOption(provider, { iconUrl }),
182
+ );
183
+
184
+ /** @since 0.0.0 @category combinators */
185
+ export const withIconUrlDark: {
186
+ (iconUrlDark: string): <P extends AiProvider<any, any>>(provider: P) => P;
187
+ <P extends AiProvider<any, any>>(provider: P, iconUrlDark: string): P;
188
+ } = Func.dual(2, (provider: AiProvider<any, any>, iconUrlDark: string) =>
189
+ withOption(provider, { iconUrlDark }),
190
+ );
191
+
192
+ /** @since 0.0.0 @category combinators */
193
+ export const withCategories: {
194
+ (categories: readonly Category[]): <P extends AiProvider<any, any>>(provider: P) => P;
195
+ <P extends AiProvider<any, any>>(provider: P, categories: readonly Category[]): P;
196
+ } = Func.dual(2, (provider: AiProvider<any, any>, categories: readonly Category[]) =>
197
+ withOption(provider, { categories: [...categories] }),
198
+ );
199
+
200
+ /** @since 0.0.0 @category combinators */
201
+ export const withHomepageUrl: {
202
+ (homepageUrl: string): <P extends AiProvider<any, any>>(provider: P) => P;
203
+ <P extends AiProvider<any, any>>(provider: P, homepageUrl: string): P;
204
+ } = Func.dual(2, (provider: AiProvider<any, any>, homepageUrl: string) =>
205
+ withOption(provider, { homepageUrl }),
206
+ );
207
+
208
+ /** @since 0.0.0 @category combinators */
209
+ export const withDocsUrl: {
210
+ (docsUrl: string): <P extends AiProvider<any, any>>(provider: P) => P;
211
+ <P extends AiProvider<any, any>>(provider: P, docsUrl: string): P;
212
+ } = Func.dual(2, (provider: AiProvider<any, any>, docsUrl: string) =>
213
+ withOption(provider, { docsUrl }),
214
+ );
215
+
216
+ /** @since 0.0.0 @category combinators */
217
+ export const withAuthMethods: {
218
+ <const AddedMethods extends readonly AuthMethod.Any[]>(
219
+ methods: AddedMethods,
220
+ ): <Self extends Any>(provider: Self) => AddAuthMethods<Self, AddedMethods>;
221
+ <Self extends Any, const AddedMethods extends readonly AuthMethod.Any[]>(
222
+ provider: Self,
223
+ methods: AddedMethods,
224
+ ): AddAuthMethods<Self, AddedMethods>;
225
+ } = Func.dual(2, (provider: Any, methods: readonly AuthMethod.Any[]) => {
226
+ if (provider.resolveRuntimeConfig !== undefined) {
227
+ throw new Error(
228
+ `AI provider "${provider.identifier}" must declare auth methods before its runtime config`,
229
+ );
230
+ }
231
+ return makeProvider(optionsFromProvider(provider), appendElements(provider.authMethods, methods));
232
+ });
233
+
234
+ /** @since 0.0.0 @category combinators */
235
+ export const withAuthMethod: {
236
+ <const AddedMethod extends AuthMethod.Any>(
237
+ method: AddedMethod,
238
+ ): <Self extends Any>(provider: Self) => AddAuthMethods<Self, readonly [AddedMethod]>;
239
+ <Self extends Any, const AddedMethod extends AuthMethod.Any>(
240
+ provider: Self,
241
+ method: AddedMethod,
242
+ ): AddAuthMethods<Self, readonly [AddedMethod]>;
243
+ } = Func.dual(2, (provider: Any, method: AuthMethod.Any) =>
244
+ withAuthMethods(provider, [method] as const),
245
+ );
246
+
247
+ /** @since 0.0.0 @category combinators */
248
+ export const withRuntimeConfig: {
249
+ <Self extends Any>(resolve: RuntimeConfigResolver<Self["authMethods"]>): (provider: Self) => Self;
250
+ <Self extends Any>(provider: Self, resolve: RuntimeConfigResolver<Self["authMethods"]>): Self;
251
+ } = Func.dual(
252
+ 2,
253
+ (provider: AiProvider<any, any>, resolve: RuntimeConfigResolver<readonly AuthMethod.Any[]>) =>
254
+ makeProvider(optionsFromProvider(provider), provider.authMethods, resolve),
255
+ );