@easynet/agent-runtime 1.0.1

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 (48) hide show
  1. package/.github/workflows/ci.yml +80 -0
  2. package/.github/workflows/release.yml +82 -0
  3. package/.releaserc.cjs +26 -0
  4. package/dist/cli.d.ts +43 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +617 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/config.d.ts +86 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/config.js +84 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/context.d.ts +104 -0
  13. package/dist/context.d.ts.map +1 -0
  14. package/dist/context.js +111 -0
  15. package/dist/context.js.map +1 -0
  16. package/dist/deep-agent.d.ts +29 -0
  17. package/dist/deep-agent.d.ts.map +1 -0
  18. package/dist/deep-agent.js +77 -0
  19. package/dist/deep-agent.js.map +1 -0
  20. package/dist/index.d.ts +8 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +8 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/malformed-tool-call-middleware.d.ts +8 -0
  25. package/dist/malformed-tool-call-middleware.d.ts.map +1 -0
  26. package/dist/malformed-tool-call-middleware.js +191 -0
  27. package/dist/malformed-tool-call-middleware.js.map +1 -0
  28. package/dist/react-agent.d.ts +38 -0
  29. package/dist/react-agent.d.ts.map +1 -0
  30. package/dist/react-agent.js +465 -0
  31. package/dist/react-agent.js.map +1 -0
  32. package/dist/sub-agent.d.ts +34 -0
  33. package/dist/sub-agent.d.ts.map +1 -0
  34. package/dist/sub-agent.js +53 -0
  35. package/dist/sub-agent.js.map +1 -0
  36. package/example/basic-usage.ts +49 -0
  37. package/package.json +53 -0
  38. package/src/cli.ts +745 -0
  39. package/src/config.ts +177 -0
  40. package/src/context.ts +247 -0
  41. package/src/deep-agent.ts +104 -0
  42. package/src/index.ts +53 -0
  43. package/src/malformed-tool-call-middleware.ts +239 -0
  44. package/src/markdown-it-terminal.d.ts +4 -0
  45. package/src/marked-terminal.d.ts +16 -0
  46. package/src/react-agent.ts +576 -0
  47. package/src/sub-agent.ts +82 -0
  48. package/tsconfig.json +18 -0
@@ -0,0 +1,86 @@
1
+ import type { ConfigApi, BaseAppConfig } from "./context.js";
2
+ /** Resolved skills configuration for an agent. */
3
+ export interface SkillsConfig {
4
+ path: string;
5
+ mode?: "prompt" | "subagent";
6
+ inject_metadata?: boolean;
7
+ embedding_threshold?: number;
8
+ keyword_threshold?: number;
9
+ }
10
+ export type AgentProfileConfig = {
11
+ path?: string;
12
+ models?: {
13
+ path?: string;
14
+ };
15
+ llm?: {
16
+ path?: string;
17
+ };
18
+ memory?: {
19
+ path?: string;
20
+ namespace?: string;
21
+ top_k?: number;
22
+ budget_tokens?: number;
23
+ auto_write?: boolean;
24
+ auto_write_scope?: "thread" | "cross_thread" | "knowledge" | "auto";
25
+ auto_write_max_chars?: number;
26
+ auto_write_user?: boolean;
27
+ auto_write_assistant?: boolean;
28
+ };
29
+ tools?: {
30
+ path?: string;
31
+ development?: string;
32
+ production?: string;
33
+ };
34
+ skills?: {
35
+ path?: string;
36
+ mode?: "prompt" | "subagent";
37
+ inject_metadata?: boolean;
38
+ embedding_threshold?: number;
39
+ keyword_threshold?: number;
40
+ };
41
+ system_prompt?: string;
42
+ max_steps?: number;
43
+ print_steps?: boolean;
44
+ fallback_text?: string;
45
+ command_window_label?: string;
46
+ recursion_limit?: number;
47
+ memories_path?: string;
48
+ };
49
+ export interface AppConfig extends BaseAppConfig {
50
+ app?: {
51
+ name?: string;
52
+ env?: string;
53
+ memory?: {
54
+ namespace_mode?: "thread" | "fixed";
55
+ namespace?: string;
56
+ };
57
+ agent?: Record<string, AgentProfileConfig>;
58
+ };
59
+ }
60
+ export interface AppConfigDefaults {
61
+ /** Default models config path, e.g. "config/agents/shared/models.yaml" */
62
+ modelsPath?: string;
63
+ /** Default memory config path, e.g. "config/agents/shared/memory.yaml" */
64
+ memoryPath?: string;
65
+ /** Default tool config path, e.g. "config/agents/shared/tool.yaml" */
66
+ toolPath?: string;
67
+ /** Default tool config path for development */
68
+ toolDevPath?: string;
69
+ /** Default tool config path for production */
70
+ toolProdPath?: string;
71
+ }
72
+ export declare function loadAppConfig(configPath?: string): Promise<AppConfig>;
73
+ export declare function getModelsConfigPath(config?: AppConfig, agentName?: string, defaults?: AppConfigDefaults): string;
74
+ export declare function getMemoryConfigPath(config?: AppConfig, agentName?: string, defaults?: AppConfigDefaults): string;
75
+ export declare function getToolConfigPath(config: AppConfig | undefined, agentName: string | undefined, defaults?: AppConfigDefaults): string;
76
+ /**
77
+ * Create a ConfigApi suitable for `createContextBuilders`.
78
+ * Apps can supply defaults (e.g. custom tool paths) or use the built-in ones.
79
+ */
80
+ export declare function createConfigApi(defaults?: AppConfigDefaults): ConfigApi<AppConfig>;
81
+ /**
82
+ * Resolve the SkillsConfig for a given agent, if configured.
83
+ * Resolves relative `path` to absolute using APP_ROOT.
84
+ */
85
+ export declare function getSkillsConfig(config: AppConfig | undefined, agentName?: string): SkillsConfig | undefined;
86
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js ADDED
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Shared app config: YAML loading, path resolution.
3
+ * Apps supply only their defaults (e.g. tool file paths).
4
+ */
5
+ import { join } from "node:path";
6
+ import { loadYamlFile } from "@easynet/agent-common";
7
+ const APP_ROOT = process.cwd();
8
+ const DEFAULT_MODELS_PATH = "config/agents/shared/models.yaml";
9
+ const DEFAULT_MEMORY_PATH = "config/agents/shared/memory.yaml";
10
+ const DEFAULT_TOOL_PATH = "config/agents/shared/tool.yaml";
11
+ export async function loadAppConfig(configPath) {
12
+ const path = configPath ?? join(APP_ROOT, "config", "app.yaml");
13
+ const loaded = (await loadYamlFile(path)) ?? {};
14
+ const agents = loaded.app?.agent;
15
+ if (!agents)
16
+ return loaded;
17
+ const mergedAgents = Object.fromEntries(await Promise.all(Object.entries(agents).map(async ([agentName, agentConfig]) => {
18
+ const filePath = agentConfig?.path;
19
+ if (!filePath)
20
+ return [agentName, agentConfig];
21
+ const resolved = filePath.startsWith("/") ? filePath : join(APP_ROOT, filePath);
22
+ const loadedAgent = (await loadYamlFile(resolved)) ?? {};
23
+ return [agentName, { ...loadedAgent, ...agentConfig, path: filePath }];
24
+ })));
25
+ return {
26
+ ...loaded,
27
+ app: {
28
+ ...loaded.app,
29
+ agent: mergedAgents,
30
+ },
31
+ };
32
+ }
33
+ export function getModelsConfigPath(config, agentName = "react", defaults) {
34
+ const agent = config?.app?.agent?.[agentName];
35
+ const p = agent?.models?.path ?? agent?.llm?.path ?? defaults?.modelsPath ?? DEFAULT_MODELS_PATH;
36
+ return p.startsWith("/") ? p : join(APP_ROOT, p);
37
+ }
38
+ export function getMemoryConfigPath(config, agentName = "react", defaults) {
39
+ const p = config?.app?.agent?.[agentName]?.memory?.path ?? defaults?.memoryPath ?? DEFAULT_MEMORY_PATH;
40
+ return p.startsWith("/") ? p : join(APP_ROOT, p);
41
+ }
42
+ export function getToolConfigPath(config, agentName, defaults) {
43
+ const name = agentName ?? "react";
44
+ const envFromProcess = (process.env.APP_ENV ?? process.env.NODE_ENV ?? "").trim().toLowerCase();
45
+ const envFromConfig = (config?.app?.env ?? "").trim().toLowerCase();
46
+ const env = envFromProcess || envFromConfig || "development";
47
+ const isProd = env === "production" || env === "prod";
48
+ const tools = config?.app?.agent?.[name]?.tools;
49
+ const fallback = defaults?.toolPath ?? DEFAULT_TOOL_PATH;
50
+ const p = isProd
51
+ ? (tools?.production ?? tools?.path ?? defaults?.toolProdPath ?? fallback)
52
+ : (tools?.development ?? tools?.path ?? defaults?.toolDevPath ?? fallback);
53
+ return p.startsWith("/") ? p : join(APP_ROOT, p);
54
+ }
55
+ /**
56
+ * Create a ConfigApi suitable for `createContextBuilders`.
57
+ * Apps can supply defaults (e.g. custom tool paths) or use the built-in ones.
58
+ */
59
+ export function createConfigApi(defaults) {
60
+ return {
61
+ loadAppConfig,
62
+ getModelsConfigPath: (config, agentName) => getModelsConfigPath(config, agentName, defaults),
63
+ getMemoryConfigPath: (config, agentName) => getMemoryConfigPath(config, agentName, defaults),
64
+ getToolConfigPath: (config, agentName) => getToolConfigPath(config, agentName, defaults),
65
+ };
66
+ }
67
+ /**
68
+ * Resolve the SkillsConfig for a given agent, if configured.
69
+ * Resolves relative `path` to absolute using APP_ROOT.
70
+ */
71
+ export function getSkillsConfig(config, agentName = "react") {
72
+ const raw = config?.app?.agent?.[agentName]?.skills;
73
+ if (!raw?.path)
74
+ return undefined;
75
+ const resolved = raw.path.startsWith("/") ? raw.path : join(APP_ROOT, raw.path);
76
+ return {
77
+ path: resolved,
78
+ mode: raw.mode,
79
+ inject_metadata: raw.inject_metadata,
80
+ embedding_threshold: raw.embedding_threshold,
81
+ keyword_threshold: raw.keyword_threshold,
82
+ };
83
+ }
84
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { createLangChainToolsAsync as createToolsClient } from "@easynet/agent-tool/api";
2
+ import type { BaseChatModel } from "@langchain/core/language_models/chat_models";
3
+ import type { AgentMemoryClient } from "@easynet/agent-memory";
4
+ import { type AgentEventBus } from "@easynet/agent-common";
5
+ import { type SkillSet } from "@easynet/agent-skill";
6
+ import { type AppConfigDefaults } from "./config.js";
7
+ export interface BaseAppConfig {
8
+ app?: {
9
+ name?: string;
10
+ env?: string;
11
+ memory?: {
12
+ namespace_mode?: "thread" | "fixed";
13
+ namespace?: string;
14
+ };
15
+ agent?: Record<string, {
16
+ models?: {
17
+ path?: string;
18
+ };
19
+ llm?: {
20
+ path?: string;
21
+ };
22
+ memory?: {
23
+ path?: string;
24
+ namespace?: string;
25
+ top_k?: number;
26
+ budget_tokens?: number;
27
+ auto_write?: boolean;
28
+ auto_write_scope?: "thread" | "cross_thread" | "knowledge" | "auto";
29
+ auto_write_max_chars?: number;
30
+ auto_write_user?: boolean;
31
+ auto_write_assistant?: boolean;
32
+ };
33
+ tools?: {
34
+ path?: string;
35
+ development?: string;
36
+ production?: string;
37
+ };
38
+ skills?: {
39
+ path?: string;
40
+ mode?: "prompt" | "subagent";
41
+ inject_metadata?: boolean;
42
+ embedding_threshold?: number;
43
+ keyword_threshold?: number;
44
+ };
45
+ system_prompt?: string;
46
+ max_steps?: number;
47
+ print_steps?: boolean;
48
+ fallback_text?: string;
49
+ command_window_label?: string;
50
+ recursion_limit?: number;
51
+ memories_path?: string;
52
+ }>;
53
+ };
54
+ }
55
+ export type AgentName = string;
56
+ export type BotTool = Awaited<ReturnType<typeof createToolsClient>>[number];
57
+ export interface BotContext<TConfig extends BaseAppConfig = BaseAppConfig, TTool = BotTool> {
58
+ llm: BaseChatModel;
59
+ memory: AgentMemoryClient;
60
+ tools: TTool[];
61
+ config: TConfig;
62
+ events: AgentEventBus;
63
+ skillSet?: SkillSet;
64
+ }
65
+ export interface CreateContextOptions<TTool = BotTool> {
66
+ configPath?: string;
67
+ agentName?: AgentName;
68
+ events?: AgentEventBus;
69
+ llm?: BaseChatModel;
70
+ memory?: AgentMemoryClient;
71
+ tools?: TTool[];
72
+ }
73
+ export interface ConfigApi<TConfig> {
74
+ loadAppConfig: (configPath?: string) => Promise<TConfig>;
75
+ getModelsConfigPath: (config: TConfig, agentName?: AgentName) => string;
76
+ getMemoryConfigPath: (config: TConfig, agentName?: AgentName) => string;
77
+ getToolConfigPath: (config: TConfig, agentName?: AgentName) => string;
78
+ }
79
+ export declare function createContextBuilders<TConfig extends BaseAppConfig>(params: {
80
+ configApi: ConfigApi<TConfig>;
81
+ }): {
82
+ createAgentLlm: (config: TConfig, events: AgentEventBus, agentName?: AgentName) => Promise<BaseChatModel>;
83
+ createAgentMemory: (config: TConfig, events: AgentEventBus, agentName?: AgentName) => Promise<AgentMemoryClient>;
84
+ createAgentTools: (config: TConfig, events: AgentEventBus, agentName?: AgentName) => Promise<BotTool[]>;
85
+ createAgent: (options?: CreateContextOptions<BotTool>) => Promise<BotContext<TConfig, BotTool>>;
86
+ createBotContext: (configPath?: string, agentName?: AgentName) => Promise<BotContext<TConfig, BotTool>>;
87
+ };
88
+ /**
89
+ * High-level factory: creates context builders from config defaults.
90
+ * Apps call this once and destructure the helpers they need.
91
+ *
92
+ * ```ts
93
+ * const { createBotContext, createAgent } = createAppContext();
94
+ * ```
95
+ */
96
+ export interface AppContextBuilders {
97
+ createAgentLlm: (config: BaseAppConfig, events: AgentEventBus, agentName?: AgentName) => Promise<BaseChatModel>;
98
+ createAgentMemory: (config: BaseAppConfig, events: AgentEventBus, agentName?: AgentName) => Promise<AgentMemoryClient>;
99
+ createAgentTools: (config: BaseAppConfig, events: AgentEventBus, agentName?: AgentName) => Promise<BotTool[]>;
100
+ createAgent: (options?: CreateContextOptions<BotTool>) => Promise<BotContext>;
101
+ createBotContext: (configPath?: string, agentName?: AgentName) => Promise<BotContext>;
102
+ }
103
+ export declare function createAppContext(defaults?: AppConfigDefaults): AppContextBuilders;
104
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { createAgentLlm as createModelLlm, applyToolChoiceAuto, createEmbedFnFromModelsConfig } from "@easynet/agent-model";
2
+ import { createAgentMemory as createMemoryClient } from "@easynet/agent-memory";
3
+ import { createLangChainToolsAsync as createToolsClient } from "@easynet/agent-tool/api";
4
+ import { createAgentEventBus, loadYamlFile, } from "@easynet/agent-common";
5
+ import { createSkills } from "@easynet/agent-skill";
6
+ import { createConfigApi, getSkillsConfig } from "./config.js";
7
+ import { resolve, dirname } from "node:path";
8
+ function publishEvent(events, name, from, to, payload) {
9
+ events.publish({ name, from, to, payload });
10
+ }
11
+ export function createContextBuilders(params) {
12
+ const { loadAppConfig, getModelsConfigPath, getMemoryConfigPath, getToolConfigPath, } = params.configApi;
13
+ async function createAgentLlm(config, events, agentName = "react") {
14
+ const modelsPath = getModelsConfigPath(config, agentName);
15
+ publishEvent(events, "llm.init.start", "app", "llm", { configPath: modelsPath });
16
+ const llm = await createModelLlm({ configPath: modelsPath });
17
+ applyToolChoiceAuto(llm);
18
+ publishEvent(events, "llm.init.done", "llm", "app");
19
+ return llm;
20
+ }
21
+ async function createAgentMemory(config, events, agentName = "react") {
22
+ const memoryPath = getMemoryConfigPath(config, agentName);
23
+ publishEvent(events, "memory.init.start", "app", "memory", { configPath: memoryPath });
24
+ const memory = await createMemoryClient({ configPath: memoryPath });
25
+ publishEvent(events, "memory.init.done", "memory", "app");
26
+ return memory;
27
+ }
28
+ async function createAgentTools(config, events, agentName = "react") {
29
+ const toolPath = getToolConfigPath(config, agentName);
30
+ publishEvent(events, "tools.init.start", "app", "tools", { configPath: toolPath });
31
+ const tools = await createToolsClient({ configFilePath: toolPath });
32
+ publishEvent(events, "tools.init.done", "tools", "app", { count: tools.length });
33
+ return tools;
34
+ }
35
+ async function createAgent(options = {}) {
36
+ const config = await loadAppConfig(options.configPath);
37
+ const agentName = options.agentName ?? "react";
38
+ const events = options.events ?? createAgentEventBus();
39
+ publishEvent(events, "agent.context.init.start", "app", "runtime");
40
+ const [llm, memory, tools] = await Promise.all([
41
+ options.llm ?? createAgentLlm(config, events, agentName),
42
+ options.memory ?? createAgentMemory(config, events, agentName),
43
+ options.tools ?? createAgentTools(config, events, agentName),
44
+ ]);
45
+ // Load skills via createSkills (scans directory, builds index)
46
+ let skillSet;
47
+ const skillsConfig = getSkillsConfig(config, agentName);
48
+ if (skillsConfig) {
49
+ publishEvent(events, "skills.init.start", "app", "skills", { path: skillsConfig.path });
50
+ // Build embedFn from models.yaml embed section (unified source)
51
+ let embedFn;
52
+ try {
53
+ const modelsPath = getModelsConfigPath(config, agentName);
54
+ embedFn = createEmbedFnFromModelsConfig(modelsPath);
55
+ }
56
+ catch {
57
+ // Embedding is optional; skill matching falls back to keywords
58
+ }
59
+ // Resolve skills directory path (from YAML or direct path)
60
+ const skillsDir = await resolveSkillsDir(skillsConfig.path);
61
+ skillSet = await createSkills({ path: skillsDir, embed: embedFn });
62
+ // Inject skill metadata into system prompt (prompt mode)
63
+ const mode = skillsConfig.mode ?? "prompt";
64
+ if (mode === "prompt" && skillsConfig.inject_metadata !== false) {
65
+ const section = skillSet.promptSection();
66
+ if (section) {
67
+ const agentConfig = config.app?.agent?.[agentName];
68
+ if (agentConfig) {
69
+ const currentPrompt = agentConfig.system_prompt ?? "";
70
+ agentConfig.system_prompt = currentPrompt.trimEnd() + "\n\n" + section;
71
+ }
72
+ }
73
+ }
74
+ publishEvent(events, "skills.init.done", "skills", "app", {
75
+ count: skillSet.list().length,
76
+ mode,
77
+ });
78
+ }
79
+ publishEvent(events, "agent.context.init.done", "runtime", "app");
80
+ return { llm, memory, tools, config, events, skillSet };
81
+ }
82
+ async function createBotContext(configPath, agentName = "react") {
83
+ return createAgent({ configPath, agentName });
84
+ }
85
+ return {
86
+ createAgentLlm,
87
+ createAgentMemory,
88
+ createAgentTools,
89
+ createAgent,
90
+ createBotContext,
91
+ };
92
+ }
93
+ /**
94
+ * Resolve skills directory path from either a YAML config file or a direct path.
95
+ * If the path ends with .yaml/.yml, loads the YAML and extracts the `path:` field.
96
+ */
97
+ async function resolveSkillsDir(skillsPath) {
98
+ if (/\.ya?ml$/i.test(skillsPath)) {
99
+ const raw = await loadYamlFile(skillsPath);
100
+ if (!raw?.path) {
101
+ throw new Error(`skills config missing "path" field: ${skillsPath}`);
102
+ }
103
+ return resolve(dirname(skillsPath), raw.path);
104
+ }
105
+ return skillsPath;
106
+ }
107
+ export function createAppContext(defaults) {
108
+ const configApi = createConfigApi(defaults);
109
+ return createContextBuilders({ configApi });
110
+ }
111
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { BaseAppConfig, BotContext } from "./context.js";
2
+ export interface DeepAgentRuntime {
3
+ agent: unknown;
4
+ run: (userMessage: string) => Promise<{
5
+ text: string;
6
+ messages?: unknown;
7
+ }>;
8
+ }
9
+ export interface DeepAgentOptions {
10
+ agentName?: string;
11
+ systemPrompt?: string;
12
+ recursionLimit?: number;
13
+ autoWriteMemory?: boolean;
14
+ }
15
+ export declare function createDeepAgent<TConfig extends BaseAppConfig>(ctx: BotContext<TConfig>, options?: DeepAgentOptions): Promise<{
16
+ agent: {
17
+ invoke: (input: {
18
+ messages: Array<{
19
+ role: "user" | "assistant";
20
+ content: string;
21
+ }>;
22
+ }) => Promise<unknown>;
23
+ };
24
+ run(userMessage: string): Promise<{
25
+ text: string;
26
+ messages?: unknown;
27
+ }>;
28
+ }>;
29
+ //# sourceMappingURL=deep-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-agent.d.ts","sourceRoot":"","sources":["../src/deep-agent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,eAAe,CAAC,OAAO,SAAS,aAAa,EACjE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,EACxB,OAAO,GAAE,gBAAqB;;gBA0BpB,CAAC,KAAK,EAAE;YACd,QAAQ,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAClE,KAAK,OAAO,CAAC,OAAO,CAAC;;qBASC,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;GA6ChF"}
@@ -0,0 +1,77 @@
1
+ import { createDeepAgent as createDeepAgentRuntime, StateBackend, } from "deepagents";
2
+ import { extractLastMessageText } from "@easynet/agent-common";
3
+ export async function createDeepAgent(ctx, options = {}) {
4
+ const publish = (name, from, to, payload) => {
5
+ ctx.events.publish({ name, from, to, payload });
6
+ };
7
+ publish("agent.deep.init.start", "app", "deep-agent");
8
+ const agentName = options.agentName ?? "deep";
9
+ const configDeep = ctx.config.app?.agent?.[agentName];
10
+ const promptFromConfig = configDeep?.system_prompt;
11
+ const systemPrompt = options.systemPrompt ?? promptFromConfig;
12
+ const recursionLimit = options.recursionLimit ?? configDeep?.recursion_limit;
13
+ const namespace = configDeep?.memory?.namespace;
14
+ const autoWriteMemory = options.autoWriteMemory ?? (configDeep?.memory?.auto_write ?? true);
15
+ const autoWriteScope = configDeep?.memory?.auto_write_scope ?? "thread";
16
+ const autoWriteMaxChars = configDeep?.memory?.auto_write_max_chars ?? 2400;
17
+ const autoWriteUser = configDeep?.memory?.auto_write_user ?? true;
18
+ const autoWriteAssistant = configDeep?.memory?.auto_write_assistant ?? true;
19
+ const agent = createDeepAgentRuntime({
20
+ model: ctx.llm,
21
+ tools: ctx.tools,
22
+ backend: (config) => new StateBackend(config),
23
+ systemPrompt,
24
+ });
25
+ const conversationHistory = [];
26
+ const maxHistoryMessages = 24;
27
+ publish("agent.deep.init.done", "deep-agent", "app");
28
+ return {
29
+ agent,
30
+ async run(userMessage) {
31
+ publish("agent.deep.run.start", "user", "deep-agent", { userMessage });
32
+ const runnable = typeof recursionLimit === "number"
33
+ ? (agent
34
+ .withConfig?.({ recursionLimit }) ?? agent)
35
+ : agent;
36
+ const result = await runnable.invoke({
37
+ messages: [...conversationHistory, { role: "user", content: userMessage }],
38
+ });
39
+ const messages = result?.messages ?? result;
40
+ const text = extractLastMessageText(result);
41
+ conversationHistory.push({ role: "user", content: userMessage });
42
+ if (text.trim().length > 0) {
43
+ conversationHistory.push({ role: "assistant", content: text });
44
+ }
45
+ if (conversationHistory.length > maxHistoryMessages) {
46
+ conversationHistory.splice(0, conversationHistory.length - maxHistoryMessages);
47
+ }
48
+ if (namespace && autoWriteMemory) {
49
+ const scope = autoWriteScope === "auto" ? "thread" : autoWriteScope;
50
+ const writeItems = [];
51
+ if (autoWriteUser && userMessage.trim().length > 0) {
52
+ writeItems.push(`[user]\n${userMessage.trim()}`);
53
+ }
54
+ if (autoWriteAssistant && text.trim().length > 0) {
55
+ writeItems.push(`[assistant]\n${text.trim()}`);
56
+ }
57
+ const content = writeItems.join("\n\n").slice(0, Math.max(0, autoWriteMaxChars));
58
+ if (content.length > 0) {
59
+ try {
60
+ publish("agent.deep.memory.write.start", "deep-agent", "memory", { type: scope, auto: true });
61
+ await ctx.memory.memorize(namespace, scope, content);
62
+ publish("agent.deep.memory.write.done", "memory", "deep-agent", { type: scope, auto: true });
63
+ }
64
+ catch (err) {
65
+ publish("agent.deep.memory.write.error", "memory", "deep-agent", {
66
+ auto: true,
67
+ error: err instanceof Error ? err.message : String(err),
68
+ });
69
+ }
70
+ }
71
+ }
72
+ publish("agent.deep.run.done", "deep-agent", "user", { text });
73
+ return { text, messages };
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=deep-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-agent.js","sourceRoot":"","sources":["../src/deep-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { createContextBuilders, createAppContext, type AppContextBuilders, type BaseAppConfig, type BotContext, type BotTool, type CreateContextOptions, type ConfigApi, } from "./context.js";
2
+ export { createReactAgent, printReactSteps, type ReactAgentOptions, type ReactAgentRuntime, } from "./react-agent.js";
3
+ export { createDeepAgent, type DeepAgentOptions, type DeepAgentRuntime, } from "./deep-agent.js";
4
+ export { createConfigApi, loadAppConfig, getModelsConfigPath, getMemoryConfigPath, getToolConfigPath, type AppConfig, type AppConfigDefaults, type AgentProfileConfig, } from "./config.js";
5
+ export { runAppCli, createStructuredRunEventListener, type AppCliOptions, type AppCliUiOptions, } from "./cli.js";
6
+ export { malformedToolCallMiddleware, type MalformedToolCallMiddlewareConfig, } from "./malformed-tool-call-middleware.js";
7
+ export { createSubAgentRunner, type SubAgentRunner, type SubAgentOptions, type SubAgentResult, } from "./sub-agent.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,oBAAoB,EACzB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,SAAS,EACT,gCAAgC,EAChC,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,2BAA2B,EAC3B,KAAK,iCAAiC,GACvC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { createContextBuilders, createAppContext, } from "./context.js";
2
+ export { createReactAgent, printReactSteps, } from "./react-agent.js";
3
+ export { createDeepAgent, } from "./deep-agent.js";
4
+ export { createConfigApi, loadAppConfig, getModelsConfigPath, getMemoryConfigPath, getToolConfigPath, } from "./config.js";
5
+ export { runAppCli, createStructuredRunEventListener, } from "./cli.js";
6
+ export { malformedToolCallMiddleware, } from "./malformed-tool-call-middleware.js";
7
+ export { createSubAgentRunner, } from "./sub-agent.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GAOjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,gBAAgB,EAChB,eAAe,GAGhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,GAGhB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAIlB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,SAAS,EACT,gCAAgC,GAGjC,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,2BAA2B,GAE5B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,oBAAoB,GAIrB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface MalformedToolCallMiddlewareConfig {
2
+ /** Maximum retry attempts after JSON extraction fails. Default: 1 */
3
+ maxRetries?: number;
4
+ /** Log recovery attempts to stderr. Default: true */
5
+ verbose?: boolean;
6
+ }
7
+ export declare function malformedToolCallMiddleware(config?: MalformedToolCallMiddlewareConfig): import("langchain").AgentMiddleware<undefined, undefined, unknown, readonly (import("@langchain/core/tools").ClientTool | import("@langchain/core/tools").ServerTool)[]>;
8
+ //# sourceMappingURL=malformed-tool-call-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"malformed-tool-call-middleware.d.ts","sourceRoot":"","sources":["../src/malformed-tool-call-middleware.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iCAAiC;IAChD,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA4HD,wBAAgB,2BAA2B,CACzC,MAAM,CAAC,EAAE,iCAAiC,4KAiG3C"}