@lobu/worker 2.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/dist/core/error-handler.d.ts +7 -0
- package/dist/core/error-handler.d.ts.map +1 -0
- package/dist/core/error-handler.js +58 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/project-scanner.d.ts +9 -0
- package/dist/core/project-scanner.d.ts.map +1 -0
- package/dist/core/project-scanner.js +64 -0
- package/dist/core/project-scanner.js.map +1 -0
- package/dist/core/types.d.ts +102 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/url-utils.d.ts +5 -0
- package/dist/core/url-utils.d.ts.map +1 -0
- package/dist/core/url-utils.js +13 -0
- package/dist/core/url-utils.js.map +1 -0
- package/dist/core/workspace.d.ts +29 -0
- package/dist/core/workspace.d.ts.map +1 -0
- package/dist/core/workspace.js +104 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/embedded/just-bash-bootstrap.d.ts +21 -0
- package/dist/embedded/just-bash-bootstrap.d.ts.map +1 -0
- package/dist/embedded/just-bash-bootstrap.js +215 -0
- package/dist/embedded/just-bash-bootstrap.js.map +1 -0
- package/dist/gateway/gateway-integration.d.ts +57 -0
- package/dist/gateway/gateway-integration.d.ts.map +1 -0
- package/dist/gateway/gateway-integration.js +209 -0
- package/dist/gateway/gateway-integration.js.map +1 -0
- package/dist/gateway/message-batcher.d.ts +27 -0
- package/dist/gateway/message-batcher.d.ts.map +1 -0
- package/dist/gateway/message-batcher.js +102 -0
- package/dist/gateway/message-batcher.js.map +1 -0
- package/dist/gateway/sse-client.d.ts +74 -0
- package/dist/gateway/sse-client.d.ts.map +1 -0
- package/dist/gateway/sse-client.js +748 -0
- package/dist/gateway/sse-client.js.map +1 -0
- package/dist/gateway/types.d.ts +60 -0
- package/dist/gateway/types.d.ts.map +1 -0
- package/dist/gateway/types.js +6 -0
- package/dist/gateway/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +112 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions/builder.d.ts +8 -0
- package/dist/instructions/builder.d.ts.map +1 -0
- package/dist/instructions/builder.js +53 -0
- package/dist/instructions/builder.js.map +1 -0
- package/dist/instructions/providers.d.ts +13 -0
- package/dist/instructions/providers.d.ts.map +1 -0
- package/dist/instructions/providers.js +26 -0
- package/dist/instructions/providers.js.map +1 -0
- package/dist/modules/lifecycle.d.ts +18 -0
- package/dist/modules/lifecycle.d.ts.map +1 -0
- package/dist/modules/lifecycle.js +56 -0
- package/dist/modules/lifecycle.js.map +1 -0
- package/dist/openclaw/custom-tools.d.ts +17 -0
- package/dist/openclaw/custom-tools.d.ts.map +1 -0
- package/dist/openclaw/custom-tools.js +195 -0
- package/dist/openclaw/custom-tools.js.map +1 -0
- package/dist/openclaw/instructions.d.ts +15 -0
- package/dist/openclaw/instructions.d.ts.map +1 -0
- package/dist/openclaw/instructions.js +32 -0
- package/dist/openclaw/instructions.js.map +1 -0
- package/dist/openclaw/model-resolver.d.ts +30 -0
- package/dist/openclaw/model-resolver.d.ts.map +1 -0
- package/dist/openclaw/model-resolver.js +147 -0
- package/dist/openclaw/model-resolver.js.map +1 -0
- package/dist/openclaw/plugin-loader.d.ts +39 -0
- package/dist/openclaw/plugin-loader.d.ts.map +1 -0
- package/dist/openclaw/plugin-loader.js +347 -0
- package/dist/openclaw/plugin-loader.js.map +1 -0
- package/dist/openclaw/processor.d.ts +38 -0
- package/dist/openclaw/processor.d.ts.map +1 -0
- package/dist/openclaw/processor.js +182 -0
- package/dist/openclaw/processor.js.map +1 -0
- package/dist/openclaw/session-context.d.ts +44 -0
- package/dist/openclaw/session-context.d.ts.map +1 -0
- package/dist/openclaw/session-context.js +151 -0
- package/dist/openclaw/session-context.js.map +1 -0
- package/dist/openclaw/tool-policy.d.ts +23 -0
- package/dist/openclaw/tool-policy.d.ts.map +1 -0
- package/dist/openclaw/tool-policy.js +151 -0
- package/dist/openclaw/tool-policy.js.map +1 -0
- package/dist/openclaw/tools.d.ts +6 -0
- package/dist/openclaw/tools.d.ts.map +1 -0
- package/dist/openclaw/tools.js +158 -0
- package/dist/openclaw/tools.js.map +1 -0
- package/dist/openclaw/worker.d.ts +39 -0
- package/dist/openclaw/worker.d.ts.map +1 -0
- package/dist/openclaw/worker.js +1340 -0
- package/dist/openclaw/worker.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +304 -0
- package/dist/server.js.map +1 -0
- package/dist/shared/audio-provider-suggestions.d.ts +13 -0
- package/dist/shared/audio-provider-suggestions.d.ts.map +1 -0
- package/dist/shared/audio-provider-suggestions.js +105 -0
- package/dist/shared/audio-provider-suggestions.js.map +1 -0
- package/dist/shared/processor-utils.d.ts +6 -0
- package/dist/shared/processor-utils.d.ts.map +1 -0
- package/dist/shared/processor-utils.js +30 -0
- package/dist/shared/processor-utils.js.map +1 -0
- package/dist/shared/provider-auth-hints.d.ts +6 -0
- package/dist/shared/provider-auth-hints.d.ts.map +1 -0
- package/dist/shared/provider-auth-hints.js +51 -0
- package/dist/shared/provider-auth-hints.js.map +1 -0
- package/dist/shared/tool-display-config.d.ts +16 -0
- package/dist/shared/tool-display-config.d.ts.map +1 -0
- package/dist/shared/tool-display-config.js +67 -0
- package/dist/shared/tool-display-config.js.map +1 -0
- package/dist/shared/tool-implementations.d.ts +55 -0
- package/dist/shared/tool-implementations.d.ts.map +1 -0
- package/dist/shared/tool-implementations.js +519 -0
- package/dist/shared/tool-implementations.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createOpenClawCustomTools = createOpenClawCustomTools;
|
|
4
|
+
exports.createMcpToolDefinitions = createMcpToolDefinitions;
|
|
5
|
+
const core_1 = require("@lobu/core");
|
|
6
|
+
const typebox_1 = require("@sinclair/typebox");
|
|
7
|
+
const tool_implementations_1 = require("../shared/tool-implementations");
|
|
8
|
+
/** Adapt shared TextResult to OpenClaw's ToolResult (adds details field) */
|
|
9
|
+
function toToolResult(result) {
|
|
10
|
+
return { content: result.content, details: {} };
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a ToolDefinition with proper type bridging between TypeBox schemas
|
|
14
|
+
* and the shared tool implementation functions. Eliminates per-tool `as` casts
|
|
15
|
+
* by casting once at the boundary.
|
|
16
|
+
*/
|
|
17
|
+
function defineTool(config) {
|
|
18
|
+
return {
|
|
19
|
+
name: config.name,
|
|
20
|
+
label: config.name,
|
|
21
|
+
description: config.description,
|
|
22
|
+
parameters: config.parameters,
|
|
23
|
+
execute: async (_toolCallId, args) => toToolResult(await config.run(args)),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function createOpenClawCustomTools(params) {
|
|
27
|
+
const gw = {
|
|
28
|
+
gatewayUrl: params.gatewayUrl,
|
|
29
|
+
workerToken: params.workerToken,
|
|
30
|
+
channelId: params.channelId,
|
|
31
|
+
conversationId: params.conversationId,
|
|
32
|
+
platform: params.platform || "slack",
|
|
33
|
+
};
|
|
34
|
+
const tools = [
|
|
35
|
+
defineTool({
|
|
36
|
+
name: "UploadUserFile",
|
|
37
|
+
description: (0, core_1.getCustomToolDescription)("UploadUserFile"),
|
|
38
|
+
parameters: typebox_1.Type.Object({
|
|
39
|
+
file_path: typebox_1.Type.String({
|
|
40
|
+
description: "Path to the file to show (absolute or relative to workspace)",
|
|
41
|
+
}),
|
|
42
|
+
description: typebox_1.Type.Optional(typebox_1.Type.String({
|
|
43
|
+
description: "Optional description of what the file contains or shows",
|
|
44
|
+
})),
|
|
45
|
+
}),
|
|
46
|
+
run: (args) => (0, tool_implementations_1.uploadUserFile)(gw, args),
|
|
47
|
+
}),
|
|
48
|
+
defineTool({
|
|
49
|
+
name: "ScheduleReminder",
|
|
50
|
+
description: (0, core_1.getCustomToolDescription)("ScheduleReminder"),
|
|
51
|
+
parameters: typebox_1.Type.Object({
|
|
52
|
+
task: typebox_1.Type.String({
|
|
53
|
+
description: "Description of what you need to do when reminded",
|
|
54
|
+
}),
|
|
55
|
+
delayMinutes: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
56
|
+
description: "Minutes from now to trigger (1-1440, max 24 hours). Use this OR cron, not both.",
|
|
57
|
+
})),
|
|
58
|
+
cron: typebox_1.Type.Optional(typebox_1.Type.String({
|
|
59
|
+
description: "Cron expression for recurring schedule (e.g., '*/30 * * * *' for every 30 min). Use this OR delayMinutes, not both.",
|
|
60
|
+
})),
|
|
61
|
+
maxIterations: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
62
|
+
description: "Maximum iterations for recurring schedules (default: 10, max: 100). Only used with cron.",
|
|
63
|
+
})),
|
|
64
|
+
}),
|
|
65
|
+
run: (args) => (0, tool_implementations_1.scheduleReminder)(gw, args),
|
|
66
|
+
}),
|
|
67
|
+
defineTool({
|
|
68
|
+
name: "CancelReminder",
|
|
69
|
+
description: (0, core_1.getCustomToolDescription)("CancelReminder"),
|
|
70
|
+
parameters: typebox_1.Type.Object({
|
|
71
|
+
scheduleId: typebox_1.Type.String({
|
|
72
|
+
description: "The schedule ID returned from ScheduleReminder",
|
|
73
|
+
}),
|
|
74
|
+
}),
|
|
75
|
+
run: (args) => (0, tool_implementations_1.cancelReminder)(gw, args),
|
|
76
|
+
}),
|
|
77
|
+
defineTool({
|
|
78
|
+
name: "ListReminders",
|
|
79
|
+
description: (0, core_1.getCustomToolDescription)("ListReminders"),
|
|
80
|
+
parameters: typebox_1.Type.Object({}),
|
|
81
|
+
run: () => (0, tool_implementations_1.listReminders)(gw),
|
|
82
|
+
}),
|
|
83
|
+
defineTool({
|
|
84
|
+
name: "GenerateImage",
|
|
85
|
+
description: (0, core_1.getCustomToolDescription)("GenerateImage"),
|
|
86
|
+
parameters: typebox_1.Type.Object({
|
|
87
|
+
prompt: typebox_1.Type.String({
|
|
88
|
+
description: "The image prompt to generate",
|
|
89
|
+
}),
|
|
90
|
+
size: typebox_1.Type.Optional(typebox_1.Type.Union([
|
|
91
|
+
typebox_1.Type.Literal("1024x1024"),
|
|
92
|
+
typebox_1.Type.Literal("1024x1536"),
|
|
93
|
+
typebox_1.Type.Literal("1536x1024"),
|
|
94
|
+
typebox_1.Type.Literal("auto"),
|
|
95
|
+
], {
|
|
96
|
+
description: "Output image size (default: 1024x1024)",
|
|
97
|
+
})),
|
|
98
|
+
quality: typebox_1.Type.Optional(typebox_1.Type.Union([
|
|
99
|
+
typebox_1.Type.Literal("low"),
|
|
100
|
+
typebox_1.Type.Literal("medium"),
|
|
101
|
+
typebox_1.Type.Literal("high"),
|
|
102
|
+
typebox_1.Type.Literal("auto"),
|
|
103
|
+
], {
|
|
104
|
+
description: "Image quality (default: auto)",
|
|
105
|
+
})),
|
|
106
|
+
background: typebox_1.Type.Optional(typebox_1.Type.Union([
|
|
107
|
+
typebox_1.Type.Literal("transparent"),
|
|
108
|
+
typebox_1.Type.Literal("opaque"),
|
|
109
|
+
typebox_1.Type.Literal("auto"),
|
|
110
|
+
], {
|
|
111
|
+
description: "Background style (default: auto)",
|
|
112
|
+
})),
|
|
113
|
+
format: typebox_1.Type.Optional(typebox_1.Type.Union([typebox_1.Type.Literal("png"), typebox_1.Type.Literal("jpeg"), typebox_1.Type.Literal("webp")], {
|
|
114
|
+
description: "Output image format (default: png)",
|
|
115
|
+
})),
|
|
116
|
+
}),
|
|
117
|
+
run: (args) => (0, tool_implementations_1.generateImage)(gw, args),
|
|
118
|
+
}),
|
|
119
|
+
defineTool({
|
|
120
|
+
name: "GenerateAudio",
|
|
121
|
+
description: (0, core_1.getCustomToolDescription)("GenerateAudio"),
|
|
122
|
+
parameters: typebox_1.Type.Object({
|
|
123
|
+
text: typebox_1.Type.String({
|
|
124
|
+
description: "The text to convert to speech (max 4096 characters)",
|
|
125
|
+
}),
|
|
126
|
+
voice: typebox_1.Type.Optional(typebox_1.Type.String({
|
|
127
|
+
description: "Voice ID (provider-specific). OpenAI: alloy, echo, fable, onyx, nova, shimmer. Leave empty for default.",
|
|
128
|
+
})),
|
|
129
|
+
speed: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
130
|
+
description: "Speech speed (0.5-2.0, default 1.0).",
|
|
131
|
+
})),
|
|
132
|
+
}),
|
|
133
|
+
run: (args) => (0, tool_implementations_1.generateAudio)(gw, args),
|
|
134
|
+
}),
|
|
135
|
+
defineTool({
|
|
136
|
+
name: "GetChannelHistory",
|
|
137
|
+
description: (0, core_1.getCustomToolDescription)("GetChannelHistory"),
|
|
138
|
+
parameters: typebox_1.Type.Object({
|
|
139
|
+
limit: typebox_1.Type.Optional(typebox_1.Type.Number({
|
|
140
|
+
description: "Number of messages to fetch (default 50, max 100)",
|
|
141
|
+
})),
|
|
142
|
+
before: typebox_1.Type.Optional(typebox_1.Type.String({
|
|
143
|
+
description: "ISO timestamp cursor - fetch messages before this time (for pagination)",
|
|
144
|
+
})),
|
|
145
|
+
}),
|
|
146
|
+
run: (args) => (0, tool_implementations_1.getChannelHistory)(gw, args),
|
|
147
|
+
}),
|
|
148
|
+
defineTool({
|
|
149
|
+
name: "AskUserQuestion",
|
|
150
|
+
description: (0, core_1.getCustomToolDescription)("AskUserQuestion"),
|
|
151
|
+
parameters: typebox_1.Type.Object({
|
|
152
|
+
question: typebox_1.Type.String({
|
|
153
|
+
description: "The question to ask the user",
|
|
154
|
+
}),
|
|
155
|
+
options: typebox_1.Type.Array(typebox_1.Type.String(), {
|
|
156
|
+
description: "Array of button labels for the user to choose from",
|
|
157
|
+
}),
|
|
158
|
+
}),
|
|
159
|
+
run: (args) => (0, tool_implementations_1.askUserQuestion)(gw, args),
|
|
160
|
+
}),
|
|
161
|
+
];
|
|
162
|
+
return tools;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Convert MCP tool definitions from session context into first-class
|
|
166
|
+
* OpenClaw ToolDefinition objects that call the MCP proxy directly.
|
|
167
|
+
* Tools are dynamically discovered from each MCP server (e.g. owletto).
|
|
168
|
+
*/
|
|
169
|
+
function createMcpToolDefinitions(mcpTools, gw, mcpContext) {
|
|
170
|
+
const tools = [];
|
|
171
|
+
for (const [mcpId, defs] of Object.entries(mcpTools)) {
|
|
172
|
+
const contextPrefix = mcpContext?.[mcpId];
|
|
173
|
+
for (const def of defs) {
|
|
174
|
+
if (!def.name || typeof def.name !== "string" || !def.name.trim()) {
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const schema = def.inputSchema
|
|
178
|
+
? typebox_1.Type.Unsafe(def.inputSchema)
|
|
179
|
+
: typebox_1.Type.Object({});
|
|
180
|
+
const baseDescription = def.description || `MCP tool from ${mcpId}`;
|
|
181
|
+
const description = contextPrefix
|
|
182
|
+
? `[${contextPrefix}] ${baseDescription}`
|
|
183
|
+
: baseDescription;
|
|
184
|
+
tools.push({
|
|
185
|
+
name: def.name,
|
|
186
|
+
label: `${mcpId}/${def.name}`,
|
|
187
|
+
description,
|
|
188
|
+
parameters: schema,
|
|
189
|
+
execute: async (_toolCallId, args) => toToolResult(await (0, tool_implementations_1.callMcpTool)(gw, mcpId, def.name, (args || {}))),
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return tools;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=custom-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-tools.js","sourceRoot":"","sources":["../../src/openclaw/custom-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type InstructionContext, type InstructionProvider } from "@lobu/core";
|
|
2
|
+
/**
|
|
3
|
+
* OpenClaw core instructions
|
|
4
|
+
*/
|
|
5
|
+
export declare class OpenClawCoreInstructionProvider implements InstructionProvider {
|
|
6
|
+
name: string;
|
|
7
|
+
priority: number;
|
|
8
|
+
getInstructions(context: InstructionContext): string;
|
|
9
|
+
}
|
|
10
|
+
export declare class OpenClawPromptIntentInstructionProvider implements InstructionProvider {
|
|
11
|
+
name: string;
|
|
12
|
+
priority: number;
|
|
13
|
+
getInstructions(context: InstructionContext): string;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=instructions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/openclaw/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAIzB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,+BAAgC,YAAW,mBAAmB;IACzE,IAAI,SAAU;IACd,QAAQ,SAAM;IAEd,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM;CAWrD;AAED,qBAAa,uCACX,YAAW,mBAAmB;IAE9B,IAAI,SAAmB;IACvB,QAAQ,SAAM;IAEd,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM;CAGrD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenClawPromptIntentInstructionProvider = exports.OpenClawCoreInstructionProvider = void 0;
|
|
4
|
+
const core_1 = require("@lobu/core");
|
|
5
|
+
/**
|
|
6
|
+
* OpenClaw core instructions
|
|
7
|
+
*/
|
|
8
|
+
class OpenClawCoreInstructionProvider {
|
|
9
|
+
name = "core";
|
|
10
|
+
priority = 10;
|
|
11
|
+
getInstructions(context) {
|
|
12
|
+
return [
|
|
13
|
+
`You are a Lobu agent for user ${context.userId}.`,
|
|
14
|
+
`Working directory: ${context.workingDirectory}`,
|
|
15
|
+
(0, core_1.renderBaselineAgentPolicy)(),
|
|
16
|
+
(0, core_1.renderAlwaysOnToolPolicyRules)(),
|
|
17
|
+
`## Image Analysis
|
|
18
|
+
|
|
19
|
+
If the user asks to analyze an uploaded image, use the image content already attached to the prompt and provide direct analysis.`,
|
|
20
|
+
].join("\n\n");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.OpenClawCoreInstructionProvider = OpenClawCoreInstructionProvider;
|
|
24
|
+
class OpenClawPromptIntentInstructionProvider {
|
|
25
|
+
name = "prompt-intent";
|
|
26
|
+
priority = 15;
|
|
27
|
+
getInstructions(context) {
|
|
28
|
+
return (0, core_1.renderDetectedToolIntentRules)(context.userPrompt || "");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.OpenClawPromptIntentInstructionProvider = OpenClawPromptIntentInstructionProvider;
|
|
32
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/openclaw/instructions.ts"],"names":[],"mappings":";;;AAAA,qCAMoB;AAEpB;;GAEG;AACH,MAAa,+BAA+B;IAC1C,IAAI,GAAG,MAAM,CAAC;IACd,QAAQ,GAAG,EAAE,CAAC;IAEd,eAAe,CAAC,OAA2B;QACzC,OAAO;YACL,iCAAiC,OAAO,CAAC,MAAM,GAAG;YAClD,sBAAsB,OAAO,CAAC,gBAAgB,EAAE;YAChD,IAAA,gCAAyB,GAAE;YAC3B,IAAA,oCAA6B,GAAE;YAC/B;;iIAE2H;SAC5H,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC;CACF;AAfD,0EAeC;AAED,MAAa,uCAAuC;IAGlD,IAAI,GAAG,eAAe,CAAC;IACvB,QAAQ,GAAG,EAAE,CAAC;IAEd,eAAe,CAAC,OAA2B;QACzC,OAAO,IAAA,oCAA6B,EAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AATD,0FASC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model resolution and session management helpers.
|
|
3
|
+
* Extracted from worker.ts for clarity.
|
|
4
|
+
*/
|
|
5
|
+
import { type ConfigProviderMeta } from "@lobu/core";
|
|
6
|
+
import { SessionManager } from "@mariozechner/pi-coding-agent";
|
|
7
|
+
/** Hardcoded fallback map for provider base URL env vars. */
|
|
8
|
+
export declare const DEFAULT_PROVIDER_BASE_URL_ENV: Record<string, string>;
|
|
9
|
+
/** Default model IDs per provider, used when no explicit model is configured. */
|
|
10
|
+
export declare const DEFAULT_PROVIDER_MODELS: Record<string, string>;
|
|
11
|
+
/**
|
|
12
|
+
* Map gateway provider slugs to model-registry provider names.
|
|
13
|
+
* The gateway uses slugs like "z-ai" while the model registry uses "zai".
|
|
14
|
+
*/
|
|
15
|
+
export declare const PROVIDER_REGISTRY_ALIASES: Record<string, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Register a config-driven provider at runtime.
|
|
18
|
+
* Extends the base URL env, default model, and registry alias maps
|
|
19
|
+
* so resolveModelRef() and the worker can handle the provider.
|
|
20
|
+
*/
|
|
21
|
+
export declare function registerDynamicProvider(id: string, config: ConfigProviderMeta): void;
|
|
22
|
+
export declare function resolveModelRef(rawModelRef: string, overrides?: {
|
|
23
|
+
defaultModel?: string;
|
|
24
|
+
defaultProvider?: string;
|
|
25
|
+
}): {
|
|
26
|
+
provider: string;
|
|
27
|
+
modelId: string;
|
|
28
|
+
};
|
|
29
|
+
export declare function openOrCreateSessionManager(sessionFile: string, workspaceDir: string): Promise<SessionManager>;
|
|
30
|
+
//# sourceMappingURL=model-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../../src/openclaw/model-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,kBAAkB,EAAgB,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI/D,6DAA6D;AAC7D,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOhE,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE5D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,kBAAkB,GACzB,IAAI,CA2BN;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAiDA;AAED,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC,CAYzB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Model resolution and session management helpers.
|
|
4
|
+
* Extracted from worker.ts for clarity.
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.PROVIDER_REGISTRY_ALIASES = exports.DEFAULT_PROVIDER_MODELS = exports.DEFAULT_PROVIDER_BASE_URL_ENV = void 0;
|
|
41
|
+
exports.registerDynamicProvider = registerDynamicProvider;
|
|
42
|
+
exports.resolveModelRef = resolveModelRef;
|
|
43
|
+
exports.openOrCreateSessionManager = openOrCreateSessionManager;
|
|
44
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
45
|
+
const path = __importStar(require("node:path"));
|
|
46
|
+
const core_1 = require("@lobu/core");
|
|
47
|
+
const pi_coding_agent_1 = require("@mariozechner/pi-coding-agent");
|
|
48
|
+
const logger = (0, core_1.createLogger)("model-resolver");
|
|
49
|
+
/** Hardcoded fallback map for provider base URL env vars. */
|
|
50
|
+
exports.DEFAULT_PROVIDER_BASE_URL_ENV = {
|
|
51
|
+
anthropic: "ANTHROPIC_BASE_URL",
|
|
52
|
+
openai: "OPENAI_BASE_URL",
|
|
53
|
+
"openai-codex": "OPENAI_BASE_URL",
|
|
54
|
+
google: "GEMINI_API_BASE_URL",
|
|
55
|
+
nvidia: "NVIDIA_API_BASE_URL",
|
|
56
|
+
"z-ai": "Z_AI_API_BASE_URL",
|
|
57
|
+
};
|
|
58
|
+
/** Default model IDs per provider, used when no explicit model is configured. */
|
|
59
|
+
exports.DEFAULT_PROVIDER_MODELS = {
|
|
60
|
+
anthropic: "claude-sonnet-4-20250514",
|
|
61
|
+
openai: "gpt-4.1",
|
|
62
|
+
"openai-codex": "gpt-5.1-codex-max",
|
|
63
|
+
google: "gemini-2.5-pro",
|
|
64
|
+
nvidia: "nvidia/moonshotai/kimi-k2.5",
|
|
65
|
+
"z-ai": "glm-4.7",
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Map gateway provider slugs to model-registry provider names.
|
|
69
|
+
* The gateway uses slugs like "z-ai" while the model registry uses "zai".
|
|
70
|
+
*/
|
|
71
|
+
exports.PROVIDER_REGISTRY_ALIASES = {
|
|
72
|
+
"z-ai": "zai",
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Register a config-driven provider at runtime.
|
|
76
|
+
* Extends the base URL env, default model, and registry alias maps
|
|
77
|
+
* so resolveModelRef() and the worker can handle the provider.
|
|
78
|
+
*/
|
|
79
|
+
function registerDynamicProvider(id, config) {
|
|
80
|
+
const alreadyRegistered = !!exports.DEFAULT_PROVIDER_BASE_URL_ENV[id];
|
|
81
|
+
if (!alreadyRegistered) {
|
|
82
|
+
exports.DEFAULT_PROVIDER_BASE_URL_ENV[id] = config.baseUrlEnvVar;
|
|
83
|
+
}
|
|
84
|
+
// Always update default model and alias even for pre-registered providers
|
|
85
|
+
if (config.defaultModel && !exports.DEFAULT_PROVIDER_MODELS[id]) {
|
|
86
|
+
exports.DEFAULT_PROVIDER_MODELS[id] = config.defaultModel;
|
|
87
|
+
}
|
|
88
|
+
// Map to model registry name: explicit alias, or "openai" for sdkCompat providers
|
|
89
|
+
if (!exports.PROVIDER_REGISTRY_ALIASES[id]) {
|
|
90
|
+
const alias = config.registryAlias ||
|
|
91
|
+
(config.sdkCompat === "openai" ? "openai" : undefined);
|
|
92
|
+
if (alias) {
|
|
93
|
+
exports.PROVIDER_REGISTRY_ALIASES[id] = alias;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (alreadyRegistered)
|
|
97
|
+
return;
|
|
98
|
+
logger.info(`Registered dynamic provider: ${id} (baseUrlEnv=${config.baseUrlEnvVar}, sdkCompat=${config.sdkCompat || "none"})`);
|
|
99
|
+
}
|
|
100
|
+
function resolveModelRef(rawModelRef, overrides) {
|
|
101
|
+
const defaultModelRef = overrides?.defaultModel || process.env.AGENT_DEFAULT_MODEL || "";
|
|
102
|
+
const defaultProvider = overrides?.defaultProvider || process.env.AGENT_DEFAULT_PROVIDER || "";
|
|
103
|
+
const normalizedRaw = rawModelRef?.trim();
|
|
104
|
+
let modelRef = normalizedRaw || defaultModelRef;
|
|
105
|
+
// When no model is configured but a provider is known, use the provider's
|
|
106
|
+
// default model so auto-mode provider selection works end-to-end.
|
|
107
|
+
if (!modelRef && defaultProvider) {
|
|
108
|
+
const fallbackModel = exports.DEFAULT_PROVIDER_MODELS[defaultProvider];
|
|
109
|
+
if (fallbackModel) {
|
|
110
|
+
logger.info(`No model configured, using default for ${defaultProvider}: ${fallbackModel}`);
|
|
111
|
+
modelRef = fallbackModel;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (!modelRef) {
|
|
115
|
+
throw new Error("No model configured. Ask an admin to connect a provider for the base agent.");
|
|
116
|
+
}
|
|
117
|
+
const parts = modelRef.split("/").filter(Boolean);
|
|
118
|
+
if (parts.length >= 2) {
|
|
119
|
+
const provider = parts[0];
|
|
120
|
+
let modelId = parts.slice(1).join("/");
|
|
121
|
+
// Resolve "auto" to the provider's default model
|
|
122
|
+
if (modelId === "auto") {
|
|
123
|
+
const fallback = exports.DEFAULT_PROVIDER_MODELS[provider];
|
|
124
|
+
if (fallback) {
|
|
125
|
+
logger.info(`Resolved auto model for ${provider}: ${fallback}`);
|
|
126
|
+
modelId = fallback;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return { provider, modelId };
|
|
130
|
+
}
|
|
131
|
+
if (!defaultProvider) {
|
|
132
|
+
throw new Error(`No provider specified for model "${modelRef}". Use "provider/model" format or set AGENT_DEFAULT_PROVIDER.`);
|
|
133
|
+
}
|
|
134
|
+
return { provider: defaultProvider, modelId: modelRef };
|
|
135
|
+
}
|
|
136
|
+
async function openOrCreateSessionManager(sessionFile, workspaceDir) {
|
|
137
|
+
try {
|
|
138
|
+
await fs.stat(sessionFile);
|
|
139
|
+
return pi_coding_agent_1.SessionManager.open(sessionFile);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
const sessionManager = pi_coding_agent_1.SessionManager.create(workspaceDir, path.dirname(sessionFile));
|
|
143
|
+
sessionManager.setSessionFile(sessionFile);
|
|
144
|
+
return sessionManager;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=model-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/openclaw/model-resolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CH,0DA8BC;AAED,0CAuDC;AAED,gEAeC;AAhJD,qDAAuC;AACvC,gDAAkC;AAClC,qCAAmE;AACnE,mEAA+D;AAE/D,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,gBAAgB,CAAC,CAAC;AAE9C,6DAA6D;AAChD,QAAA,6BAA6B,GAA2B;IACnE,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,iBAAiB;IACzB,cAAc,EAAE,iBAAiB;IACjC,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,mBAAmB;CAC5B,CAAC;AAEF,iFAAiF;AACpE,QAAA,uBAAuB,GAA2B;IAC7D,SAAS,EAAE,0BAA0B;IACrC,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,mBAAmB;IACnC,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,6BAA6B;IACrC,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF;;;GAGG;AACU,QAAA,yBAAyB,GAA2B;IAC/D,MAAM,EAAE,KAAK;CACd,CAAC;AAEF;;;;GAIG;AACH,SAAgB,uBAAuB,CACrC,EAAU,EACV,MAA0B;IAE1B,MAAM,iBAAiB,GAAG,CAAC,CAAC,qCAA6B,CAAC,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,qCAA6B,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3D,CAAC;IAED,0EAA0E;IAC1E,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,+BAAuB,CAAC,EAAE,CAAC,EAAE,CAAC;QACxD,+BAAuB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;IACpD,CAAC;IAED,kFAAkF;IAClF,IAAI,CAAC,iCAAyB,CAAC,EAAE,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GACT,MAAM,CAAC,aAAa;YACpB,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,KAAK,EAAE,CAAC;YACV,iCAAyB,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACxC,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB;QAAE,OAAO;IAE9B,MAAM,CAAC,IAAI,CACT,gCAAgC,EAAE,gBAAgB,MAAM,CAAC,aAAa,eAAe,MAAM,CAAC,SAAS,IAAI,MAAM,GAAG,CACnH,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAC7B,WAAmB,EACnB,SAA+D;IAK/D,MAAM,eAAe,GACnB,SAAS,EAAE,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;IACnE,MAAM,eAAe,GACnB,SAAS,EAAE,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAEzE,MAAM,aAAa,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,aAAa,IAAI,eAAe,CAAC;IAEhD,0EAA0E;IAC1E,kEAAkE;IAClE,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,+BAAuB,CAAC,eAAe,CAAC,CAAC;QAC/D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CACT,0CAA0C,eAAe,KAAK,aAAa,EAAE,CAC9E,CAAC;YACF,QAAQ,GAAG,aAAa,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC3B,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,iDAAiD;QACjD,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,+BAAuB,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,2BAA2B,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;gBAChE,OAAO,GAAG,QAAQ,CAAC;YACrB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,oCAAoC,QAAQ,+DAA+D,CAC5G,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAC9C,WAAmB,EACnB,YAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,OAAO,gCAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,cAAc,GAAG,gCAAc,CAAC,MAAM,CAC1C,YAAY,EACZ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAC1B,CAAC;QACF,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw plugin loader.
|
|
3
|
+
*
|
|
4
|
+
* Loads plugin modules by dynamic import and provides a compatibility shim.
|
|
5
|
+
* Supports both legacy function-style plugins and object-style plugins with
|
|
6
|
+
* a `register(api)` method.
|
|
7
|
+
*/
|
|
8
|
+
import { type PluginManifest, type PluginsConfig, type ProviderRegistration } from "@lobu/core";
|
|
9
|
+
import type { ToolDefinition } from "@mariozechner/pi-coding-agent";
|
|
10
|
+
type PluginHookName = "before_agent_start" | "agent_end";
|
|
11
|
+
export type PluginHookHandler = (event: Record<string, unknown>, ctx: Record<string, unknown>) => unknown | Promise<unknown>;
|
|
12
|
+
export interface PluginService {
|
|
13
|
+
id: string;
|
|
14
|
+
start?: () => unknown | Promise<unknown>;
|
|
15
|
+
stop?: () => unknown | Promise<unknown>;
|
|
16
|
+
}
|
|
17
|
+
/** Result of loading a single plugin */
|
|
18
|
+
export interface LoadedPlugin {
|
|
19
|
+
manifest: PluginManifest;
|
|
20
|
+
/** Raw ToolDefinition objects captured from registerTool() — no bridging needed */
|
|
21
|
+
tools: ToolDefinition[];
|
|
22
|
+
providers: ProviderRegistration[];
|
|
23
|
+
hooks: Record<PluginHookName, PluginHookHandler[]>;
|
|
24
|
+
services: PluginService[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Load all enabled plugins from config.
|
|
28
|
+
*/
|
|
29
|
+
export declare function loadPlugins(config: PluginsConfig | undefined, cwd?: string): Promise<LoadedPlugin[]>;
|
|
30
|
+
export declare function runPluginHooks(params: {
|
|
31
|
+
plugins: LoadedPlugin[];
|
|
32
|
+
hook: PluginHookName;
|
|
33
|
+
event: Record<string, unknown>;
|
|
34
|
+
ctx: Record<string, unknown>;
|
|
35
|
+
}): Promise<unknown[]>;
|
|
36
|
+
export declare function startPluginServices(plugins: LoadedPlugin[]): Promise<void>;
|
|
37
|
+
export declare function stopPluginServices(plugins: LoadedPlugin[]): Promise<void>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=plugin-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../src/openclaw/plugin-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAIpE,KAAK,cAAc,GAAG,oBAAoB,GAAG,WAAW,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,wCAAwC;AACxC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,mFAAmF;IACnF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnD,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,EAAE,CAAC,CA0CzB;AAuQD,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAmBrB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAaf"}
|