@jambonz/llm 0.6.7 → 0.6.9
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/index.cjs +120 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -6
- package/dist/index.d.ts +15 -6
- package/dist/index.js +119 -4
- package/dist/index.js.map +1 -1
- package/dist/test-kit/index.cjs +106 -1
- package/dist/test-kit/index.cjs.map +1 -1
- package/dist/test-kit/index.d.cts +1 -1
- package/dist/test-kit/index.d.ts +1 -1
- package/dist/test-kit/index.js +106 -1
- package/dist/test-kit/index.js.map +1 -1
- package/dist/{types-dbgrfviJ.d.cts → types-C_yrWq_0.d.cts} +19 -1
- package/dist/{types-dbgrfviJ.d.ts → types-C_yrWq_0.d.ts} +19 -1
- package/package.json +1 -1
package/dist/test-kit/index.cjs
CHANGED
|
@@ -42,8 +42,9 @@ var import_vitest = require("vitest");
|
|
|
42
42
|
|
|
43
43
|
// src/registry.ts
|
|
44
44
|
var registry = /* @__PURE__ */ new Map();
|
|
45
|
+
var credentialVendors = /* @__PURE__ */ new Map();
|
|
45
46
|
function registerAdapter(factory) {
|
|
46
|
-
if (registry.has(factory.vendor)) {
|
|
47
|
+
if (registry.has(factory.vendor) || credentialVendors.has(factory.vendor)) {
|
|
47
48
|
throw new Error(
|
|
48
49
|
`Adapter already registered for vendor '${factory.vendor}'. Use replaceAdapter() if you intended to override.`
|
|
49
50
|
);
|
|
@@ -55,9 +56,23 @@ function registerAdapter(factory) {
|
|
|
55
56
|
}
|
|
56
57
|
registry.set(factory.vendor, factory);
|
|
57
58
|
}
|
|
59
|
+
function registerCredentialVendor(manifest) {
|
|
60
|
+
if (!manifest.credentialOnly) {
|
|
61
|
+
throw new Error(`Vendor '${manifest.vendor}' manifest is not marked credentialOnly.`);
|
|
62
|
+
}
|
|
63
|
+
if (registry.has(manifest.vendor) || credentialVendors.has(manifest.vendor)) {
|
|
64
|
+
throw new Error(`Vendor '${manifest.vendor}' is already registered.`);
|
|
65
|
+
}
|
|
66
|
+
credentialVendors.set(manifest.vendor, manifest);
|
|
67
|
+
}
|
|
58
68
|
function getAdapterFactory(vendor) {
|
|
59
69
|
const factory = registry.get(vendor);
|
|
60
70
|
if (!factory) {
|
|
71
|
+
if (credentialVendors.has(vendor)) {
|
|
72
|
+
throw new Error(
|
|
73
|
+
`Vendor '${vendor}' is credential-only: @jambonz/llm has no adapter for it.`
|
|
74
|
+
);
|
|
75
|
+
}
|
|
61
76
|
const known = Array.from(registry.keys()).sort().join(", ") || "(none)";
|
|
62
77
|
throw new Error(
|
|
63
78
|
`Unknown vendor '${vendor}'. Registered vendors: ${known}`
|
|
@@ -67,6 +82,7 @@ function getAdapterFactory(vendor) {
|
|
|
67
82
|
}
|
|
68
83
|
function _resetRegistryForTests() {
|
|
69
84
|
registry.clear();
|
|
85
|
+
credentialVendors.clear();
|
|
70
86
|
}
|
|
71
87
|
|
|
72
88
|
// src/adapters/openai/adapter.ts
|
|
@@ -3751,6 +3767,92 @@ var openRouterFactory = {
|
|
|
3751
3767
|
create: () => new OpenRouterAdapter()
|
|
3752
3768
|
};
|
|
3753
3769
|
|
|
3770
|
+
// src/vendors/harness.ts
|
|
3771
|
+
var harnessManifest = {
|
|
3772
|
+
vendor: "harness",
|
|
3773
|
+
displayName: "Harness",
|
|
3774
|
+
authKinds: [
|
|
3775
|
+
{
|
|
3776
|
+
// Only the form schema matters for a credential-only vendor; no
|
|
3777
|
+
// AuthSpec is ever built from it.
|
|
3778
|
+
kind: "apiKey",
|
|
3779
|
+
displayName: "API Key",
|
|
3780
|
+
fields: [
|
|
3781
|
+
{
|
|
3782
|
+
name: "url",
|
|
3783
|
+
label: "WebSocket URL",
|
|
3784
|
+
type: "url",
|
|
3785
|
+
required: true,
|
|
3786
|
+
help: "wss:// URL of your harness. ws:// is accepted only for a private or localhost address."
|
|
3787
|
+
},
|
|
3788
|
+
{
|
|
3789
|
+
name: "apiKey",
|
|
3790
|
+
label: "API Key",
|
|
3791
|
+
type: "password",
|
|
3792
|
+
required: true,
|
|
3793
|
+
help: 'Sent to the harness as "Authorization: Bearer <key>" when each call connects.'
|
|
3794
|
+
}
|
|
3795
|
+
]
|
|
3796
|
+
}
|
|
3797
|
+
],
|
|
3798
|
+
knownModels: [],
|
|
3799
|
+
supportsModelListing: false,
|
|
3800
|
+
credentialOnly: true,
|
|
3801
|
+
category: "llm"
|
|
3802
|
+
};
|
|
3803
|
+
|
|
3804
|
+
// src/vendors/dialogflow-ces.ts
|
|
3805
|
+
var dialogflowCesManifest = {
|
|
3806
|
+
vendor: "dialogflow_ces",
|
|
3807
|
+
displayName: "Dialogflow CES",
|
|
3808
|
+
authKinds: [
|
|
3809
|
+
{
|
|
3810
|
+
kind: "googleServiceAccount",
|
|
3811
|
+
displayName: "Service Account JSON",
|
|
3812
|
+
fields: [
|
|
3813
|
+
{
|
|
3814
|
+
name: "credentials",
|
|
3815
|
+
label: "Service Account Key (JSON)",
|
|
3816
|
+
type: "json-file",
|
|
3817
|
+
required: true,
|
|
3818
|
+
help: "The key of a service account allowed to run your CES agents (Customer Engagement Suite)."
|
|
3819
|
+
}
|
|
3820
|
+
]
|
|
3821
|
+
}
|
|
3822
|
+
],
|
|
3823
|
+
knownModels: [],
|
|
3824
|
+
supportsModelListing: false,
|
|
3825
|
+
docsUrl: "https://cloud.google.com/customer-engagement-ai/conversational-agents/ps",
|
|
3826
|
+
credentialOnly: true,
|
|
3827
|
+
category: "hosted"
|
|
3828
|
+
};
|
|
3829
|
+
|
|
3830
|
+
// src/vendors/openai-s2s.ts
|
|
3831
|
+
var openaiS2sManifest = {
|
|
3832
|
+
vendor: "openai_s2s",
|
|
3833
|
+
displayName: "OpenAI Realtime",
|
|
3834
|
+
authKinds: [
|
|
3835
|
+
{
|
|
3836
|
+
kind: "apiKey",
|
|
3837
|
+
displayName: "API Key",
|
|
3838
|
+
fields: [
|
|
3839
|
+
{
|
|
3840
|
+
name: "apiKey",
|
|
3841
|
+
label: "API Key",
|
|
3842
|
+
type: "password",
|
|
3843
|
+
required: true,
|
|
3844
|
+
help: "An OpenAI API key with access to the Realtime API."
|
|
3845
|
+
}
|
|
3846
|
+
]
|
|
3847
|
+
}
|
|
3848
|
+
],
|
|
3849
|
+
knownModels: [],
|
|
3850
|
+
supportsModelListing: false,
|
|
3851
|
+
docsUrl: "https://platform.openai.com/docs/guides/realtime",
|
|
3852
|
+
credentialOnly: true,
|
|
3853
|
+
category: "s2s"
|
|
3854
|
+
};
|
|
3855
|
+
|
|
3754
3856
|
// src/adapters/index.ts
|
|
3755
3857
|
registerAdapter(openAIFactory);
|
|
3756
3858
|
registerAdapter(deepseekFactory);
|
|
@@ -3768,6 +3870,9 @@ registerAdapter(azureOpenAIFactory);
|
|
|
3768
3870
|
registerAdapter(groqFactory);
|
|
3769
3871
|
registerAdapter(huggingfaceFactory);
|
|
3770
3872
|
registerAdapter(openRouterFactory);
|
|
3873
|
+
registerCredentialVendor(harnessManifest);
|
|
3874
|
+
registerCredentialVendor(openaiS2sManifest);
|
|
3875
|
+
registerCredentialVendor(dialogflowCesManifest);
|
|
3771
3876
|
|
|
3772
3877
|
// src/index.ts
|
|
3773
3878
|
async function createLlm(args) {
|