@dawn-ai/langchain 0.6.0 → 0.8.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.
- package/README.md +12 -3
- package/dist/chat-model-factory.d.ts +5 -0
- package/dist/chat-model-factory.d.ts.map +1 -1
- package/dist/chat-model-factory.js +17 -0
- package/dist/model-provider-resolver.d.ts +2 -2
- package/dist/model-provider-resolver.d.ts.map +1 -1
- package/dist/model-provider-resolver.js +2 -27
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
# @dawn-ai/langchain
|
|
6
6
|
|
|
7
|
-
LangChain backend adapters Dawn uses to materialize `chain` routes and provider-aware `agent` routes
|
|
7
|
+
LangChain backend adapters for Dawn, the TypeScript meta-framework for LangGraph. Dawn uses this package to materialize `chain` routes and provider-aware `agent` routes — handling tool conversion, streaming, and retry.
|
|
8
8
|
|
|
9
9
|
`agent()` materialization resolves a LangChain chat model from the route descriptor. Dawn includes `@langchain/openai` for the default/backcompat path and lazy-loads optional provider packages when an agent selects or infers another provider.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Optional provider integrations
|
|
12
|
+
|
|
13
|
+
Install the provider packages your agents use, as needed:
|
|
12
14
|
|
|
13
15
|
```bash
|
|
14
16
|
pnpm add @langchain/anthropic # anthropic
|
|
@@ -20,7 +22,14 @@ pnpm add @langchain/xai # xai
|
|
|
20
22
|
pnpm add @langchain/openrouter # openrouter
|
|
21
23
|
```
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
## Documentation
|
|
26
|
+
|
|
27
|
+
- [Routes](https://dawnai.org/docs/routes)
|
|
28
|
+
- [Getting started](https://dawnai.org/docs/getting-started)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
⭐ [Star Dawn on GitHub](https://github.com/cacheplane/dawnai) · 📚 [Read the docs](https://dawnai.org/docs/getting-started) · 💬 [Ask in GitHub Discussions](https://github.com/cacheplane/dawnai/discussions)
|
|
24
33
|
|
|
25
34
|
## License
|
|
26
35
|
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { BuiltInModelProviderId, ReasoningConfig } from "@dawn-ai/sdk";
|
|
2
2
|
type Importer = (specifier: string) => Promise<Record<string, unknown>>;
|
|
3
|
+
/** Advisory once-per-process warning; never blocks model construction. */
|
|
4
|
+
export declare function warnOnUnknownModelId(opts: {
|
|
5
|
+
readonly model: string;
|
|
6
|
+
readonly provider: string;
|
|
7
|
+
}): void;
|
|
3
8
|
export declare function missingProviderPackageMessage(provider: BuiltInModelProviderId, packageName: string): string;
|
|
4
9
|
export declare function createChatModel(options: {
|
|
5
10
|
readonly model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-model-factory.d.ts","sourceRoot":"","sources":["../src/chat-model-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"chat-model-factory.d.ts","sourceRoot":"","sources":["../src/chat-model-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG3E,KAAK,QAAQ,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAsBvE,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,GAAG,IAAI,CAYP;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,MAAM,GAClB,MAAM,CAER;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAA;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAC7B,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCnB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { validateModelId } from "@dawn-ai/sdk";
|
|
1
2
|
const providerSpecs = {
|
|
2
3
|
openai: { packageName: "@langchain/openai", exportName: "ChatOpenAI" },
|
|
3
4
|
anthropic: { packageName: "@langchain/anthropic", exportName: "ChatAnthropic" },
|
|
@@ -9,10 +10,26 @@ const providerSpecs = {
|
|
|
9
10
|
xai: { packageName: "@langchain/xai", exportName: "ChatXAI" },
|
|
10
11
|
openrouter: { packageName: "@langchain/openrouter", exportName: "ChatOpenRouter" },
|
|
11
12
|
};
|
|
13
|
+
const warnedModelIds = new Set();
|
|
14
|
+
/** Advisory once-per-process warning; never blocks model construction. */
|
|
15
|
+
export function warnOnUnknownModelId(opts) {
|
|
16
|
+
const key = `${opts.provider} ${opts.model}`;
|
|
17
|
+
if (warnedModelIds.has(key))
|
|
18
|
+
return;
|
|
19
|
+
const verdict = validateModelId(opts);
|
|
20
|
+
if (verdict.ok)
|
|
21
|
+
return;
|
|
22
|
+
warnedModelIds.add(key);
|
|
23
|
+
const suggestions = verdict.suggestions.map((s) => `"${s}"`).join(", ");
|
|
24
|
+
console.warn(`[dawn:models] model "${opts.model}" is not a known ${verdict.provider} model id.` +
|
|
25
|
+
(suggestions ? ` Did you mean ${suggestions}?` : "") +
|
|
26
|
+
" Proceeding anyway.");
|
|
27
|
+
}
|
|
12
28
|
export function missingProviderPackageMessage(provider, packageName) {
|
|
13
29
|
return `Provider "${provider}" requires ${packageName}. Install it with: pnpm add ${packageName}`;
|
|
14
30
|
}
|
|
15
31
|
export async function createChatModel(options) {
|
|
32
|
+
warnOnUnknownModelId({ model: options.model, provider: options.provider });
|
|
16
33
|
const spec = providerSpecs[options.provider];
|
|
17
34
|
const importer = options.importer ??
|
|
18
35
|
((specifier) => import(specifier));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { BuiltInModelProviderId, ModelProviderId } from "@dawn-ai/sdk";
|
|
2
|
-
|
|
3
|
-
export
|
|
2
|
+
import { inferProvider, SUPPORTED_AGENT_PROVIDERS } from "@dawn-ai/sdk";
|
|
3
|
+
export { inferProvider, SUPPORTED_AGENT_PROVIDERS };
|
|
4
4
|
export declare function resolveProvider(options: {
|
|
5
5
|
readonly model: string;
|
|
6
6
|
readonly provider?: ModelProviderId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-provider-resolver.d.ts","sourceRoot":"","sources":["../src/model-provider-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"model-provider-resolver.d.ts","sourceRoot":"","sources":["../src/model-provider-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,CAAA;AAInD,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;CACpC,GAAG,sBAAsB,CAgBzB"}
|
|
@@ -1,31 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
"anthropic",
|
|
4
|
-
"google",
|
|
5
|
-
"mistral",
|
|
6
|
-
"groq",
|
|
7
|
-
"ollama",
|
|
8
|
-
"xai",
|
|
9
|
-
"openrouter",
|
|
10
|
-
];
|
|
1
|
+
import { inferProvider, SUPPORTED_AGENT_PROVIDERS } from "@dawn-ai/sdk";
|
|
2
|
+
export { inferProvider, SUPPORTED_AGENT_PROVIDERS };
|
|
11
3
|
const supportedProviderSet = new Set(SUPPORTED_AGENT_PROVIDERS);
|
|
12
|
-
export function inferProvider(model) {
|
|
13
|
-
const normalized = model.trim().toLowerCase();
|
|
14
|
-
if (/^(gpt-|o3|o4)/.test(normalized))
|
|
15
|
-
return "openai";
|
|
16
|
-
if (normalized.startsWith("claude-"))
|
|
17
|
-
return "anthropic";
|
|
18
|
-
if (normalized.startsWith("gemini-"))
|
|
19
|
-
return "google";
|
|
20
|
-
if (normalized.startsWith("mistral-") ||
|
|
21
|
-
normalized.startsWith("mixtral-") ||
|
|
22
|
-
normalized.startsWith("codestral-")) {
|
|
23
|
-
return "mistral";
|
|
24
|
-
}
|
|
25
|
-
if (normalized.startsWith("grok-"))
|
|
26
|
-
return "xai";
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
4
|
export function resolveProvider(options) {
|
|
30
5
|
if (options.provider !== undefined) {
|
|
31
6
|
if (supportedProviderSet.has(options.provider)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dawn-ai/langchain",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@langchain/langgraph": "^1.3.0",
|
|
34
34
|
"@langchain/openai": "^1.4.5",
|
|
35
35
|
"gpt-tokenizer": "^3.4.0",
|
|
36
|
-
"@dawn-ai/core": "0.
|
|
37
|
-
"@dawn-ai/sdk": "0.
|
|
38
|
-
"@dawn-ai/workspace": "0.
|
|
36
|
+
"@dawn-ai/core": "0.8.0",
|
|
37
|
+
"@dawn-ai/sdk": "0.8.0",
|
|
38
|
+
"@dawn-ai/workspace": "0.8.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@langchain/core": "^1.1.47",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"@langchain/xai": "^1.3.18",
|
|
89
89
|
"@types/node": "25.6.0",
|
|
90
90
|
"zod": "4.4.3",
|
|
91
|
-
"@dawn-ai/config-typescript": "0.
|
|
91
|
+
"@dawn-ai/config-typescript": "0.8.0"
|
|
92
92
|
},
|
|
93
93
|
"scripts": {
|
|
94
94
|
"build": "tsc -b tsconfig.json",
|