@genesislcap/foundation-ai 14.461.2 → 14.462.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.
@@ -3310,6 +3310,33 @@
3310
3310
  "endIndex": 2
3311
3311
  }
3312
3312
  },
3313
+ {
3314
+ "kind": "PropertySignature",
3315
+ "canonicalReference": "@genesislcap/foundation-ai!ChatMessage#model:member",
3316
+ "docComment": "/**\n * Concrete model id that produced this message — what the active provider's {@link AIProvider.getStatus} reported for the turn (e.g. `'gemini-2.5-flash-lite'`, `'claude-haiku-4-5-20251001'`). Stamped by the driver onto model-produced assistant messages; tool calls ride on the assistant message that requested them, so a message's `model` also attributes its `toolCalls`. Absent on driver-authored messages (error/empty fallbacks, user/tool messages) and when the provider reports no status.\n */\n",
3317
+ "excerptTokens": [
3318
+ {
3319
+ "kind": "Content",
3320
+ "text": "model?: "
3321
+ },
3322
+ {
3323
+ "kind": "Content",
3324
+ "text": "string"
3325
+ },
3326
+ {
3327
+ "kind": "Content",
3328
+ "text": ";"
3329
+ }
3330
+ ],
3331
+ "isReadonly": false,
3332
+ "isOptional": true,
3333
+ "releaseTag": "Beta",
3334
+ "name": "model",
3335
+ "propertyTypeTokenRange": {
3336
+ "startIndex": 1,
3337
+ "endIndex": 2
3338
+ }
3339
+ },
3313
3340
  {
3314
3341
  "kind": "PropertySignature",
3315
3342
  "canonicalReference": "@genesislcap/foundation-ai!ChatMessage#outputTokens:member",
@@ -3337,6 +3364,33 @@
3337
3364
  "endIndex": 2
3338
3365
  }
3339
3366
  },
3367
+ {
3368
+ "kind": "PropertySignature",
3369
+ "canonicalReference": "@genesislcap/foundation-ai!ChatMessage#providerName:member",
3370
+ "docComment": "/**\n * Registry name the provider was resolved under for the turn that produced this message (e.g. a tier name, or the default name). Together with `model` it records both the slot the turn selected and the concrete model behind it, so swapping the model behind a stable name stays visible in the debug log. Stamped by the driver alongside `model`.\n */\n",
3371
+ "excerptTokens": [
3372
+ {
3373
+ "kind": "Content",
3374
+ "text": "providerName?: "
3375
+ },
3376
+ {
3377
+ "kind": "Content",
3378
+ "text": "string"
3379
+ },
3380
+ {
3381
+ "kind": "Content",
3382
+ "text": ";"
3383
+ }
3384
+ ],
3385
+ "isReadonly": false,
3386
+ "isOptional": true,
3387
+ "releaseTag": "Beta",
3388
+ "name": "providerName",
3389
+ "propertyTypeTokenRange": {
3390
+ "startIndex": 1,
3391
+ "endIndex": 2
3392
+ }
3393
+ },
3340
3394
  {
3341
3395
  "kind": "PropertySignature",
3342
3396
  "canonicalReference": "@genesislcap/foundation-ai!ChatMessage#responseMeta:member",
@@ -6847,6 +6901,62 @@
6847
6901
  ],
6848
6902
  "name": "isChatToolCallUnknown"
6849
6903
  },
6904
+ {
6905
+ "kind": "Function",
6906
+ "canonicalReference": "@genesislcap/foundation-ai!isObservableAIProviderRegistry:function(1)",
6907
+ "docComment": "/**\n * Feature-detects an {@link ObservableAIProviderRegistry}. Returns `true` when `r` exposes a `subscribe` method — i.e. it can notify on runtime changes — and `false` for the immutable built-ins.\n *\n * @beta\n */\n",
6908
+ "excerptTokens": [
6909
+ {
6910
+ "kind": "Content",
6911
+ "text": "export declare function isObservableAIProviderRegistry(r: "
6912
+ },
6913
+ {
6914
+ "kind": "Reference",
6915
+ "text": "AIProviderRegistry",
6916
+ "canonicalReference": "@genesislcap/foundation-ai!AIProviderRegistry:interface"
6917
+ },
6918
+ {
6919
+ "kind": "Content",
6920
+ "text": "): "
6921
+ },
6922
+ {
6923
+ "kind": "Reference",
6924
+ "text": "r",
6925
+ "canonicalReference": "@genesislcap/foundation-ai!~r"
6926
+ },
6927
+ {
6928
+ "kind": "Content",
6929
+ "text": " is "
6930
+ },
6931
+ {
6932
+ "kind": "Reference",
6933
+ "text": "ObservableAIProviderRegistry",
6934
+ "canonicalReference": "@genesislcap/foundation-ai!ObservableAIProviderRegistry:interface"
6935
+ },
6936
+ {
6937
+ "kind": "Content",
6938
+ "text": ";"
6939
+ }
6940
+ ],
6941
+ "fileUrlPath": "src/ai-provider.ts",
6942
+ "returnTypeTokenRange": {
6943
+ "startIndex": 3,
6944
+ "endIndex": 6
6945
+ },
6946
+ "releaseTag": "Beta",
6947
+ "overloadIndex": 1,
6948
+ "parameters": [
6949
+ {
6950
+ "parameterName": "r",
6951
+ "parameterTypeTokenRange": {
6952
+ "startIndex": 1,
6953
+ "endIndex": 2
6954
+ },
6955
+ "isOptional": false
6956
+ }
6957
+ ],
6958
+ "name": "isObservableAIProviderRegistry"
6959
+ },
6850
6960
  {
6851
6961
  "kind": "Function",
6852
6962
  "canonicalReference": "@genesislcap/foundation-ai!isSpeechRecognitionAvailable:function(1)",
@@ -6970,57 +7080,804 @@
6970
7080
  "implementsTokenRanges": []
6971
7081
  },
6972
7082
  {
6973
- "kind": "Function",
6974
- "canonicalReference": "@genesislcap/foundation-ai!registerAIProviders:function(1)",
6975
- "docComment": "/**\n * Registers one or more named AI providers as an {@link (AIProviderRegistry:interface)} on the given DI container.\n *\n * @remarks\n *\n * - With a single provider, the default is inferred `options.default` may be omitted. - With multiple providers, `options.default` is required to avoid implicit ordering. - Throws when `providers` is empty, when the named default isn't present, or when multiple providers are passed without an explicit default.\n *\n * @example\n * ```ts\n * // Single provider default inferred\n * registerAIProviders(container, { openai: createAIProvider(openAiConfig) });\n *\n * // Multiple providers explicit default\n * registerAIProviders(\n * container,\n * { fast: chromeProvider, deep: anthropicProvider },\n * { default: 'deep' },\n * );\n * ```\n *\n * @beta\n */\n",
7083
+ "kind": "Class",
7084
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry:class",
7085
+ "docComment": "/**\n * Map-backed registry built by {@link registerAIProviders}. Preserves the insertion order of `providers` for {@link (AIProviderRegistry:interface).names} and {@link (AIProviderRegistry:interface).listStatuses}.\n *\n * Mutable and observable: a host that holds a reference can rebind names, change the default, or atomically replace the whole mapping at runtime via {@link MutableAIProviderRegistry.set}, {@link MutableAIProviderRegistry.setDefault} and {@link MutableAIProviderRegistry.update}, and subscribe to be told when any of those happen. This is the substrate for runtime provider switching: the DI token resolves one stable instance, and consumers re-resolve their cached providers when {@link MutableAIProviderRegistry.subscribe | subscribe} fires. A registry that is never mutated behaves identically to an immutable one, so existing single-registration callers are unaffected.\n *\n * @beta\n */\n",
6976
7086
  "excerptTokens": [
6977
7087
  {
6978
7088
  "kind": "Content",
6979
- "text": "export declare function registerAIProviders(container: "
6980
- },
6981
- {
6982
- "kind": "Reference",
6983
- "text": "Container",
6984
- "canonicalReference": "@microsoft/fast-foundation!Container:interface"
6985
- },
6986
- {
6987
- "kind": "Content",
6988
- "text": ", providers: "
6989
- },
6990
- {
6991
- "kind": "Reference",
6992
- "text": "Record",
6993
- "canonicalReference": "!Record:type"
6994
- },
6995
- {
6996
- "kind": "Content",
6997
- "text": "<string, "
7089
+ "text": "export declare class MutableAIProviderRegistry implements "
6998
7090
  },
6999
7091
  {
7000
7092
  "kind": "Reference",
7001
- "text": "AIProvider",
7002
- "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7093
+ "text": "ObservableAIProviderRegistry",
7094
+ "canonicalReference": "@genesislcap/foundation-ai!ObservableAIProviderRegistry:interface"
7003
7095
  },
7004
7096
  {
7005
7097
  "kind": "Content",
7006
- "text": ">"
7007
- },
7098
+ "text": " "
7099
+ }
7100
+ ],
7101
+ "fileUrlPath": "src/ai-provider.ts",
7102
+ "releaseTag": "Beta",
7103
+ "isAbstract": false,
7104
+ "name": "MutableAIProviderRegistry",
7105
+ "preserveMemberOrder": false,
7106
+ "members": [
7008
7107
  {
7009
- "kind": "Content",
7010
- "text": ", options?: "
7108
+ "kind": "Constructor",
7109
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry:constructor(1)",
7110
+ "docComment": "/**\n * Constructs a new instance of the `MutableAIProviderRegistry` class\n */\n",
7111
+ "excerptTokens": [
7112
+ {
7113
+ "kind": "Content",
7114
+ "text": "constructor(providers: "
7115
+ },
7116
+ {
7117
+ "kind": "Reference",
7118
+ "text": "Map",
7119
+ "canonicalReference": "!Map:interface"
7120
+ },
7121
+ {
7122
+ "kind": "Content",
7123
+ "text": "<string, "
7124
+ },
7125
+ {
7126
+ "kind": "Reference",
7127
+ "text": "AIProvider",
7128
+ "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7129
+ },
7130
+ {
7131
+ "kind": "Content",
7132
+ "text": ">"
7133
+ },
7134
+ {
7135
+ "kind": "Content",
7136
+ "text": ", defaultName: "
7137
+ },
7138
+ {
7139
+ "kind": "Content",
7140
+ "text": "string"
7141
+ },
7142
+ {
7143
+ "kind": "Content",
7144
+ "text": ");"
7145
+ }
7146
+ ],
7147
+ "releaseTag": "Beta",
7148
+ "isProtected": false,
7149
+ "overloadIndex": 1,
7150
+ "parameters": [
7151
+ {
7152
+ "parameterName": "providers",
7153
+ "parameterTypeTokenRange": {
7154
+ "startIndex": 1,
7155
+ "endIndex": 5
7156
+ },
7157
+ "isOptional": false
7158
+ },
7159
+ {
7160
+ "parameterName": "defaultName",
7161
+ "parameterTypeTokenRange": {
7162
+ "startIndex": 6,
7163
+ "endIndex": 7
7164
+ },
7165
+ "isOptional": false
7166
+ }
7167
+ ]
7011
7168
  },
7012
7169
  {
7013
- "kind": "Reference",
7014
- "text": "RegisterAIProvidersOptions",
7015
- "canonicalReference": "@genesislcap/foundation-ai!RegisterAIProvidersOptions:interface"
7170
+ "kind": "Method",
7171
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#default:member(1)",
7172
+ "docComment": "",
7173
+ "excerptTokens": [
7174
+ {
7175
+ "kind": "Content",
7176
+ "text": "default(): "
7177
+ },
7178
+ {
7179
+ "kind": "Reference",
7180
+ "text": "AIProvider",
7181
+ "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7182
+ },
7183
+ {
7184
+ "kind": "Content",
7185
+ "text": ";"
7186
+ }
7187
+ ],
7188
+ "isStatic": false,
7189
+ "returnTypeTokenRange": {
7190
+ "startIndex": 1,
7191
+ "endIndex": 2
7192
+ },
7193
+ "releaseTag": "Beta",
7194
+ "isProtected": false,
7195
+ "overloadIndex": 1,
7196
+ "parameters": [],
7197
+ "isOptional": false,
7198
+ "isAbstract": false,
7199
+ "name": "default"
7016
7200
  },
7017
7201
  {
7018
- "kind": "Content",
7019
- "text": "): "
7202
+ "kind": "Method",
7203
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#defaultName:member(1)",
7204
+ "docComment": "",
7205
+ "excerptTokens": [
7206
+ {
7207
+ "kind": "Content",
7208
+ "text": "defaultName(): "
7209
+ },
7210
+ {
7211
+ "kind": "Content",
7212
+ "text": "string"
7213
+ },
7214
+ {
7215
+ "kind": "Content",
7216
+ "text": ";"
7217
+ }
7218
+ ],
7219
+ "isStatic": false,
7220
+ "returnTypeTokenRange": {
7221
+ "startIndex": 1,
7222
+ "endIndex": 2
7223
+ },
7224
+ "releaseTag": "Beta",
7225
+ "isProtected": false,
7226
+ "overloadIndex": 1,
7227
+ "parameters": [],
7228
+ "isOptional": false,
7229
+ "isAbstract": false,
7230
+ "name": "defaultName"
7020
7231
  },
7021
7232
  {
7022
- "kind": "Content",
7023
- "text": "void"
7233
+ "kind": "Method",
7234
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#get:member(1)",
7235
+ "docComment": "",
7236
+ "excerptTokens": [
7237
+ {
7238
+ "kind": "Content",
7239
+ "text": "get(name: "
7240
+ },
7241
+ {
7242
+ "kind": "Content",
7243
+ "text": "string"
7244
+ },
7245
+ {
7246
+ "kind": "Content",
7247
+ "text": "): "
7248
+ },
7249
+ {
7250
+ "kind": "Reference",
7251
+ "text": "AIProvider",
7252
+ "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7253
+ },
7254
+ {
7255
+ "kind": "Content",
7256
+ "text": " | undefined"
7257
+ },
7258
+ {
7259
+ "kind": "Content",
7260
+ "text": ";"
7261
+ }
7262
+ ],
7263
+ "isStatic": false,
7264
+ "returnTypeTokenRange": {
7265
+ "startIndex": 3,
7266
+ "endIndex": 5
7267
+ },
7268
+ "releaseTag": "Beta",
7269
+ "isProtected": false,
7270
+ "overloadIndex": 1,
7271
+ "parameters": [
7272
+ {
7273
+ "parameterName": "name",
7274
+ "parameterTypeTokenRange": {
7275
+ "startIndex": 1,
7276
+ "endIndex": 2
7277
+ },
7278
+ "isOptional": false
7279
+ }
7280
+ ],
7281
+ "isOptional": false,
7282
+ "isAbstract": false,
7283
+ "name": "get"
7284
+ },
7285
+ {
7286
+ "kind": "Method",
7287
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#getStatus:member(1)",
7288
+ "docComment": "",
7289
+ "excerptTokens": [
7290
+ {
7291
+ "kind": "Content",
7292
+ "text": "getStatus(name?: "
7293
+ },
7294
+ {
7295
+ "kind": "Content",
7296
+ "text": "string"
7297
+ },
7298
+ {
7299
+ "kind": "Content",
7300
+ "text": "): "
7301
+ },
7302
+ {
7303
+ "kind": "Reference",
7304
+ "text": "Promise",
7305
+ "canonicalReference": "!Promise:interface"
7306
+ },
7307
+ {
7308
+ "kind": "Content",
7309
+ "text": "<"
7310
+ },
7311
+ {
7312
+ "kind": "Reference",
7313
+ "text": "AIStatus",
7314
+ "canonicalReference": "@genesislcap/foundation-ai!AIStatus:interface"
7315
+ },
7316
+ {
7317
+ "kind": "Content",
7318
+ "text": " | null>"
7319
+ },
7320
+ {
7321
+ "kind": "Content",
7322
+ "text": ";"
7323
+ }
7324
+ ],
7325
+ "isStatic": false,
7326
+ "returnTypeTokenRange": {
7327
+ "startIndex": 3,
7328
+ "endIndex": 7
7329
+ },
7330
+ "releaseTag": "Beta",
7331
+ "isProtected": false,
7332
+ "overloadIndex": 1,
7333
+ "parameters": [
7334
+ {
7335
+ "parameterName": "name",
7336
+ "parameterTypeTokenRange": {
7337
+ "startIndex": 1,
7338
+ "endIndex": 2
7339
+ },
7340
+ "isOptional": true
7341
+ }
7342
+ ],
7343
+ "isOptional": false,
7344
+ "isAbstract": false,
7345
+ "name": "getStatus"
7346
+ },
7347
+ {
7348
+ "kind": "Method",
7349
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#listStatuses:member(1)",
7350
+ "docComment": "",
7351
+ "excerptTokens": [
7352
+ {
7353
+ "kind": "Content",
7354
+ "text": "listStatuses(): "
7355
+ },
7356
+ {
7357
+ "kind": "Reference",
7358
+ "text": "Promise",
7359
+ "canonicalReference": "!Promise:interface"
7360
+ },
7361
+ {
7362
+ "kind": "Content",
7363
+ "text": "<"
7364
+ },
7365
+ {
7366
+ "kind": "Reference",
7367
+ "text": "AIProviderRegistryStatusEntry",
7368
+ "canonicalReference": "@genesislcap/foundation-ai!AIProviderRegistryStatusEntry:interface"
7369
+ },
7370
+ {
7371
+ "kind": "Content",
7372
+ "text": "[]>"
7373
+ },
7374
+ {
7375
+ "kind": "Content",
7376
+ "text": ";"
7377
+ }
7378
+ ],
7379
+ "isStatic": false,
7380
+ "returnTypeTokenRange": {
7381
+ "startIndex": 1,
7382
+ "endIndex": 5
7383
+ },
7384
+ "releaseTag": "Beta",
7385
+ "isProtected": false,
7386
+ "overloadIndex": 1,
7387
+ "parameters": [],
7388
+ "isOptional": false,
7389
+ "isAbstract": false,
7390
+ "name": "listStatuses"
7391
+ },
7392
+ {
7393
+ "kind": "Method",
7394
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#names:member(1)",
7395
+ "docComment": "",
7396
+ "excerptTokens": [
7397
+ {
7398
+ "kind": "Content",
7399
+ "text": "names(): "
7400
+ },
7401
+ {
7402
+ "kind": "Content",
7403
+ "text": "string[]"
7404
+ },
7405
+ {
7406
+ "kind": "Content",
7407
+ "text": ";"
7408
+ }
7409
+ ],
7410
+ "isStatic": false,
7411
+ "returnTypeTokenRange": {
7412
+ "startIndex": 1,
7413
+ "endIndex": 2
7414
+ },
7415
+ "releaseTag": "Beta",
7416
+ "isProtected": false,
7417
+ "overloadIndex": 1,
7418
+ "parameters": [],
7419
+ "isOptional": false,
7420
+ "isAbstract": false,
7421
+ "name": "names"
7422
+ },
7423
+ {
7424
+ "kind": "Method",
7425
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#set:member(1)",
7426
+ "docComment": "/**\n * Rebind (or add) a single name. Rebinding an existing name preserves its position in `names()`; a new name is appended. Notifies subscribers.\n */\n",
7427
+ "excerptTokens": [
7428
+ {
7429
+ "kind": "Content",
7430
+ "text": "set(name: "
7431
+ },
7432
+ {
7433
+ "kind": "Content",
7434
+ "text": "string"
7435
+ },
7436
+ {
7437
+ "kind": "Content",
7438
+ "text": ", provider: "
7439
+ },
7440
+ {
7441
+ "kind": "Reference",
7442
+ "text": "AIProvider",
7443
+ "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7444
+ },
7445
+ {
7446
+ "kind": "Content",
7447
+ "text": "): "
7448
+ },
7449
+ {
7450
+ "kind": "Content",
7451
+ "text": "void"
7452
+ },
7453
+ {
7454
+ "kind": "Content",
7455
+ "text": ";"
7456
+ }
7457
+ ],
7458
+ "isStatic": false,
7459
+ "returnTypeTokenRange": {
7460
+ "startIndex": 5,
7461
+ "endIndex": 6
7462
+ },
7463
+ "releaseTag": "Beta",
7464
+ "isProtected": false,
7465
+ "overloadIndex": 1,
7466
+ "parameters": [
7467
+ {
7468
+ "parameterName": "name",
7469
+ "parameterTypeTokenRange": {
7470
+ "startIndex": 1,
7471
+ "endIndex": 2
7472
+ },
7473
+ "isOptional": false
7474
+ },
7475
+ {
7476
+ "parameterName": "provider",
7477
+ "parameterTypeTokenRange": {
7478
+ "startIndex": 3,
7479
+ "endIndex": 4
7480
+ },
7481
+ "isOptional": false
7482
+ }
7483
+ ],
7484
+ "isOptional": false,
7485
+ "isAbstract": false,
7486
+ "name": "set"
7487
+ },
7488
+ {
7489
+ "kind": "Method",
7490
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#setDefault:member(1)",
7491
+ "docComment": "/**\n * Change the default provider. Throws if `name` is not currently registered. Notifies subscribers.\n */\n",
7492
+ "excerptTokens": [
7493
+ {
7494
+ "kind": "Content",
7495
+ "text": "setDefault(name: "
7496
+ },
7497
+ {
7498
+ "kind": "Content",
7499
+ "text": "string"
7500
+ },
7501
+ {
7502
+ "kind": "Content",
7503
+ "text": "): "
7504
+ },
7505
+ {
7506
+ "kind": "Content",
7507
+ "text": "void"
7508
+ },
7509
+ {
7510
+ "kind": "Content",
7511
+ "text": ";"
7512
+ }
7513
+ ],
7514
+ "isStatic": false,
7515
+ "returnTypeTokenRange": {
7516
+ "startIndex": 3,
7517
+ "endIndex": 4
7518
+ },
7519
+ "releaseTag": "Beta",
7520
+ "isProtected": false,
7521
+ "overloadIndex": 1,
7522
+ "parameters": [
7523
+ {
7524
+ "parameterName": "name",
7525
+ "parameterTypeTokenRange": {
7526
+ "startIndex": 1,
7527
+ "endIndex": 2
7528
+ },
7529
+ "isOptional": false
7530
+ }
7531
+ ],
7532
+ "isOptional": false,
7533
+ "isAbstract": false,
7534
+ "name": "setDefault"
7535
+ },
7536
+ {
7537
+ "kind": "Method",
7538
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#subscribe:member(1)",
7539
+ "docComment": "",
7540
+ "excerptTokens": [
7541
+ {
7542
+ "kind": "Content",
7543
+ "text": "subscribe(listener: "
7544
+ },
7545
+ {
7546
+ "kind": "Content",
7547
+ "text": "() => void"
7548
+ },
7549
+ {
7550
+ "kind": "Content",
7551
+ "text": "): "
7552
+ },
7553
+ {
7554
+ "kind": "Content",
7555
+ "text": "() => void"
7556
+ },
7557
+ {
7558
+ "kind": "Content",
7559
+ "text": ";"
7560
+ }
7561
+ ],
7562
+ "isStatic": false,
7563
+ "returnTypeTokenRange": {
7564
+ "startIndex": 3,
7565
+ "endIndex": 4
7566
+ },
7567
+ "releaseTag": "Beta",
7568
+ "isProtected": false,
7569
+ "overloadIndex": 1,
7570
+ "parameters": [
7571
+ {
7572
+ "parameterName": "listener",
7573
+ "parameterTypeTokenRange": {
7574
+ "startIndex": 1,
7575
+ "endIndex": 2
7576
+ },
7577
+ "isOptional": false
7578
+ }
7579
+ ],
7580
+ "isOptional": false,
7581
+ "isAbstract": false,
7582
+ "name": "subscribe"
7583
+ },
7584
+ {
7585
+ "kind": "Method",
7586
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry#update:member(1)",
7587
+ "docComment": "/**\n * Atomically replace the whole mapping (and optionally the default) in one step, then notify subscribers once. Applies the same validation as the constructor: an empty mapping throws, and the resolved default must be present. When `options.default` is omitted the current default name is retained (and must still exist in the new mapping).\n */\n",
7588
+ "excerptTokens": [
7589
+ {
7590
+ "kind": "Content",
7591
+ "text": "update(providers: "
7592
+ },
7593
+ {
7594
+ "kind": "Reference",
7595
+ "text": "Record",
7596
+ "canonicalReference": "!Record:type"
7597
+ },
7598
+ {
7599
+ "kind": "Content",
7600
+ "text": "<string, "
7601
+ },
7602
+ {
7603
+ "kind": "Reference",
7604
+ "text": "AIProvider",
7605
+ "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7606
+ },
7607
+ {
7608
+ "kind": "Content",
7609
+ "text": "> | "
7610
+ },
7611
+ {
7612
+ "kind": "Reference",
7613
+ "text": "Map",
7614
+ "canonicalReference": "!Map:interface"
7615
+ },
7616
+ {
7617
+ "kind": "Content",
7618
+ "text": "<string, "
7619
+ },
7620
+ {
7621
+ "kind": "Reference",
7622
+ "text": "AIProvider",
7623
+ "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7624
+ },
7625
+ {
7626
+ "kind": "Content",
7627
+ "text": ">"
7628
+ },
7629
+ {
7630
+ "kind": "Content",
7631
+ "text": ", options?: "
7632
+ },
7633
+ {
7634
+ "kind": "Content",
7635
+ "text": "{\n default?: string;\n }"
7636
+ },
7637
+ {
7638
+ "kind": "Content",
7639
+ "text": "): "
7640
+ },
7641
+ {
7642
+ "kind": "Content",
7643
+ "text": "void"
7644
+ },
7645
+ {
7646
+ "kind": "Content",
7647
+ "text": ";"
7648
+ }
7649
+ ],
7650
+ "isStatic": false,
7651
+ "returnTypeTokenRange": {
7652
+ "startIndex": 12,
7653
+ "endIndex": 13
7654
+ },
7655
+ "releaseTag": "Beta",
7656
+ "isProtected": false,
7657
+ "overloadIndex": 1,
7658
+ "parameters": [
7659
+ {
7660
+ "parameterName": "providers",
7661
+ "parameterTypeTokenRange": {
7662
+ "startIndex": 1,
7663
+ "endIndex": 9
7664
+ },
7665
+ "isOptional": false
7666
+ },
7667
+ {
7668
+ "parameterName": "options",
7669
+ "parameterTypeTokenRange": {
7670
+ "startIndex": 10,
7671
+ "endIndex": 11
7672
+ },
7673
+ "isOptional": true
7674
+ }
7675
+ ],
7676
+ "isOptional": false,
7677
+ "isAbstract": false,
7678
+ "name": "update"
7679
+ }
7680
+ ],
7681
+ "implementsTokenRanges": [
7682
+ {
7683
+ "startIndex": 1,
7684
+ "endIndex": 2
7685
+ }
7686
+ ]
7687
+ },
7688
+ {
7689
+ "kind": "Interface",
7690
+ "canonicalReference": "@genesislcap/foundation-ai!ObservableAIProviderRegistry:interface",
7691
+ "docComment": "/**\n * Optional capability layered onto {@link (AIProviderRegistry:interface)}: a registry whose provider mapping and default can change at runtime, and that notifies listeners when they do.\n *\n * @remarks\n *\n * Consumers should **feature-detect** this with {@link isObservableAIProviderRegistry} rather than depend on it — the built-in empty fallback registry is immutable and deliberately does not implement it. The read contract ({@link (AIProviderRegistry:interface)}) is unchanged; this only adds change notification, never new read methods.\n *\n * @beta\n */\n",
7692
+ "excerptTokens": [
7693
+ {
7694
+ "kind": "Content",
7695
+ "text": "export interface ObservableAIProviderRegistry extends "
7696
+ },
7697
+ {
7698
+ "kind": "Reference",
7699
+ "text": "AIProviderRegistry",
7700
+ "canonicalReference": "@genesislcap/foundation-ai!AIProviderRegistry:interface"
7701
+ },
7702
+ {
7703
+ "kind": "Content",
7704
+ "text": " "
7705
+ }
7706
+ ],
7707
+ "fileUrlPath": "src/ai-provider.ts",
7708
+ "releaseTag": "Beta",
7709
+ "name": "ObservableAIProviderRegistry",
7710
+ "preserveMemberOrder": false,
7711
+ "members": [
7712
+ {
7713
+ "kind": "MethodSignature",
7714
+ "canonicalReference": "@genesislcap/foundation-ai!ObservableAIProviderRegistry#subscribe:member(1)",
7715
+ "docComment": "/**\n * Register a listener fired once after any change to the provider mapping or default. Returns an unsubscribe function; call it to stop notifications.\n */\n",
7716
+ "excerptTokens": [
7717
+ {
7718
+ "kind": "Content",
7719
+ "text": "subscribe(listener: "
7720
+ },
7721
+ {
7722
+ "kind": "Content",
7723
+ "text": "() => void"
7724
+ },
7725
+ {
7726
+ "kind": "Content",
7727
+ "text": "): "
7728
+ },
7729
+ {
7730
+ "kind": "Content",
7731
+ "text": "() => void"
7732
+ },
7733
+ {
7734
+ "kind": "Content",
7735
+ "text": ";"
7736
+ }
7737
+ ],
7738
+ "isOptional": false,
7739
+ "returnTypeTokenRange": {
7740
+ "startIndex": 3,
7741
+ "endIndex": 4
7742
+ },
7743
+ "releaseTag": "Beta",
7744
+ "overloadIndex": 1,
7745
+ "parameters": [
7746
+ {
7747
+ "parameterName": "listener",
7748
+ "parameterTypeTokenRange": {
7749
+ "startIndex": 1,
7750
+ "endIndex": 2
7751
+ },
7752
+ "isOptional": false
7753
+ }
7754
+ ],
7755
+ "name": "subscribe"
7756
+ }
7757
+ ],
7758
+ "extendsTokenRanges": [
7759
+ {
7760
+ "startIndex": 1,
7761
+ "endIndex": 2
7762
+ }
7763
+ ]
7764
+ },
7765
+ {
7766
+ "kind": "Function",
7767
+ "canonicalReference": "@genesislcap/foundation-ai!registerAIProviderRegistry:function(1)",
7768
+ "docComment": "/**\n * Registers a host-supplied {@link (AIProviderRegistry:interface)} instance on the DI container under the {@link (AIProviderRegistry:variable)} token.\n *\n * @remarks\n *\n * A thin wrapper over FAST's `Registration.instance` so a host can register its own pre-built registry — typically a {@link MutableAIProviderRegistry} it owns and mutates for runtime provider switching — **without importing FAST primitives** itself. {@link registerAIProviders} delegates to this; reach for it directly when you construct the registry yourself.\n *\n * @beta\n */\n",
7769
+ "excerptTokens": [
7770
+ {
7771
+ "kind": "Content",
7772
+ "text": "export declare function registerAIProviderRegistry(container: "
7773
+ },
7774
+ {
7775
+ "kind": "Reference",
7776
+ "text": "Container",
7777
+ "canonicalReference": "@microsoft/fast-foundation!Container:interface"
7778
+ },
7779
+ {
7780
+ "kind": "Content",
7781
+ "text": ", registry: "
7782
+ },
7783
+ {
7784
+ "kind": "Reference",
7785
+ "text": "AIProviderRegistry",
7786
+ "canonicalReference": "@genesislcap/foundation-ai!AIProviderRegistry:interface"
7787
+ },
7788
+ {
7789
+ "kind": "Content",
7790
+ "text": "): "
7791
+ },
7792
+ {
7793
+ "kind": "Content",
7794
+ "text": "void"
7795
+ },
7796
+ {
7797
+ "kind": "Content",
7798
+ "text": ";"
7799
+ }
7800
+ ],
7801
+ "fileUrlPath": "src/ai-provider.ts",
7802
+ "returnTypeTokenRange": {
7803
+ "startIndex": 5,
7804
+ "endIndex": 6
7805
+ },
7806
+ "releaseTag": "Beta",
7807
+ "overloadIndex": 1,
7808
+ "parameters": [
7809
+ {
7810
+ "parameterName": "container",
7811
+ "parameterTypeTokenRange": {
7812
+ "startIndex": 1,
7813
+ "endIndex": 2
7814
+ },
7815
+ "isOptional": false
7816
+ },
7817
+ {
7818
+ "parameterName": "registry",
7819
+ "parameterTypeTokenRange": {
7820
+ "startIndex": 3,
7821
+ "endIndex": 4
7822
+ },
7823
+ "isOptional": false
7824
+ }
7825
+ ],
7826
+ "name": "registerAIProviderRegistry"
7827
+ },
7828
+ {
7829
+ "kind": "Function",
7830
+ "canonicalReference": "@genesislcap/foundation-ai!registerAIProviders:function(1)",
7831
+ "docComment": "/**\n * Registers one or more named AI providers as an {@link (AIProviderRegistry:interface)} on the given DI container.\n *\n * @remarks\n *\n * - With a single provider, the default is inferred — `options.default` may be omitted. - With multiple providers, `options.default` is required to avoid implicit ordering. - Throws when `providers` is empty, when the named default isn't present, or when multiple providers are passed without an explicit default.\n *\n * @returns the constructed {@link MutableAIProviderRegistry}, so a host that wants to switch providers at runtime can keep the handle and call {@link MutableAIProviderRegistry.set | set} / {@link MutableAIProviderRegistry.setDefault | setDefault} / {@link MutableAIProviderRegistry.update | update} on it later. Callers that register once and never switch can ignore the return value.\n *\n * @example\n * ```ts\n * // Single provider — default inferred\n * registerAIProviders(container, { openai: createAIProvider(openAiConfig) });\n *\n * // Multiple providers — explicit default\n * registerAIProviders(\n * container,\n * { fast: chromeProvider, deep: anthropicProvider },\n * { default: 'deep' },\n * );\n * ```\n *\n * @beta\n */\n",
7832
+ "excerptTokens": [
7833
+ {
7834
+ "kind": "Content",
7835
+ "text": "export declare function registerAIProviders(container: "
7836
+ },
7837
+ {
7838
+ "kind": "Reference",
7839
+ "text": "Container",
7840
+ "canonicalReference": "@microsoft/fast-foundation!Container:interface"
7841
+ },
7842
+ {
7843
+ "kind": "Content",
7844
+ "text": ", providers: "
7845
+ },
7846
+ {
7847
+ "kind": "Reference",
7848
+ "text": "Record",
7849
+ "canonicalReference": "!Record:type"
7850
+ },
7851
+ {
7852
+ "kind": "Content",
7853
+ "text": "<string, "
7854
+ },
7855
+ {
7856
+ "kind": "Reference",
7857
+ "text": "AIProvider",
7858
+ "canonicalReference": "@genesislcap/foundation-ai!AIProvider:interface"
7859
+ },
7860
+ {
7861
+ "kind": "Content",
7862
+ "text": ">"
7863
+ },
7864
+ {
7865
+ "kind": "Content",
7866
+ "text": ", options?: "
7867
+ },
7868
+ {
7869
+ "kind": "Reference",
7870
+ "text": "RegisterAIProvidersOptions",
7871
+ "canonicalReference": "@genesislcap/foundation-ai!RegisterAIProvidersOptions:interface"
7872
+ },
7873
+ {
7874
+ "kind": "Content",
7875
+ "text": "): "
7876
+ },
7877
+ {
7878
+ "kind": "Reference",
7879
+ "text": "MutableAIProviderRegistry",
7880
+ "canonicalReference": "@genesislcap/foundation-ai!MutableAIProviderRegistry:class"
7024
7881
  },
7025
7882
  {
7026
7883
  "kind": "Content",