@olane/o-tool-registry 0.1.0 → 0.1.2
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/apple/apple.tool.d.ts +2 -67
- package/dist/apple/apple.tool.d.ts.map +1 -1
- package/dist/apple/apple.tool.js +3 -4
- package/dist/apple/index.js +1 -1
- package/dist/apple/notes.tool.d.ts +3 -67
- package/dist/apple/notes.tool.d.ts.map +1 -1
- package/dist/apple/notes.tool.js +4 -5
- package/dist/auth/index.js +0 -1
- package/dist/auth/interfaces/index.js +0 -1
- package/dist/auth/interfaces/oAuth-tokens.interface.js +0 -1
- package/dist/auth/interfaces/oAuth-user-info.interface.js +0 -1
- package/dist/auth/interfaces/oAuth.config.js +0 -1
- package/dist/auth/methods/auth.methods.js +0 -1
- package/dist/auth/oAuth.tool.js +15 -6
- package/dist/embeddings/embeddings.tool.d.ts +2 -66
- package/dist/embeddings/embeddings.tool.d.ts.map +1 -1
- package/dist/embeddings/embeddings.tool.js +3 -4
- package/dist/embeddings/huggingface-text-embeddings.tool.d.ts.map +1 -1
- package/dist/embeddings/huggingface-text-embeddings.tool.js +1 -3
- package/dist/embeddings/index.js +0 -1
- package/dist/embeddings/methods/text-embeddings.method.js +0 -1
- package/dist/embeddings/text-embeddings.tool.d.ts +3 -66
- package/dist/embeddings/text-embeddings.tool.d.ts.map +1 -1
- package/dist/embeddings/text-embeddings.tool.js +3 -4
- package/dist/index.js +0 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +0 -1
- package/dist/intelligence/anthropic-intelligence.tool.d.ts +33 -67
- package/dist/intelligence/anthropic-intelligence.tool.d.ts.map +1 -1
- package/dist/intelligence/anthropic-intelligence.tool.js +39 -9
- package/dist/intelligence/gemini-intelligence.tool.d.ts +18 -67
- package/dist/intelligence/gemini-intelligence.tool.d.ts.map +1 -1
- package/dist/intelligence/gemini-intelligence.tool.js +24 -11
- package/dist/intelligence/index.js +0 -1
- package/dist/intelligence/intelligence.tool.d.ts +2 -67
- package/dist/intelligence/intelligence.tool.d.ts.map +1 -1
- package/dist/intelligence/intelligence.tool.js +10 -6
- package/dist/intelligence/methods/intelligence.methods.js +0 -1
- package/dist/intelligence/ollama-intelligence.tool.d.ts +24 -67
- package/dist/intelligence/ollama-intelligence.tool.d.ts.map +1 -1
- package/dist/intelligence/ollama-intelligence.tool.js +34 -10
- package/dist/intelligence/openai-intelligence.tool.d.ts +18 -67
- package/dist/intelligence/openai-intelligence.tool.d.ts.map +1 -1
- package/dist/intelligence/openai-intelligence.tool.js +25 -12
- package/dist/intelligence/perplexity-intelligence.tool.d.ts +18 -67
- package/dist/intelligence/perplexity-intelligence.tool.d.ts.map +1 -1
- package/dist/intelligence/perplexity-intelligence.tool.js +26 -9
- package/dist/mcp/index.js +0 -1
- package/dist/mcp/mcp-bridge.tool.d.ts +3 -67
- package/dist/mcp/mcp-bridge.tool.d.ts.map +1 -1
- package/dist/mcp/mcp-bridge.tool.js +17 -4
- package/dist/mcp/mcp.tool.d.ts +3 -68
- package/dist/mcp/mcp.tool.d.ts.map +1 -1
- package/dist/mcp/mcp.tool.js +8 -5
- package/dist/mcp/methods/mcp-bridge.methods.js +0 -1
- package/dist/nlp/index.js +0 -1
- package/dist/nlp/methods/nlp.methods.js +0 -1
- package/dist/nlp/ner.tool.d.ts +3 -67
- package/dist/nlp/ner.tool.d.ts.map +1 -1
- package/dist/nlp/ner.tool.js +3 -4
- package/dist/vector-store/index.js +0 -1
- package/dist/vector-store/langchain-memory.vector-store.tool.d.ts.map +1 -1
- package/dist/vector-store/langchain-memory.vector-store.tool.js +0 -2
- package/dist/vector-store/methods/vector-store.methods.js +0 -1
- package/dist/vector-store/vector-memory.tool.d.ts +3 -67
- package/dist/vector-store/vector-memory.tool.d.ts.map +1 -1
- package/dist/vector-store/vector-memory.tool.js +3 -4
- package/package.json +16 -22
- package/dist/apple/apple.tool.js.map +0 -1
- package/dist/apple/index.js.map +0 -1
- package/dist/apple/notes.tool.js.map +0 -1
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/interfaces/index.js.map +0 -1
- package/dist/auth/interfaces/oAuth-tokens.interface.js.map +0 -1
- package/dist/auth/interfaces/oAuth-user-info.interface.js.map +0 -1
- package/dist/auth/interfaces/oAuth.config.js.map +0 -1
- package/dist/auth/methods/auth.methods.js.map +0 -1
- package/dist/auth/oAuth.tool.js.map +0 -1
- package/dist/embeddings/embeddings.tool.js.map +0 -1
- package/dist/embeddings/huggingface-text-embeddings.tool.js.map +0 -1
- package/dist/embeddings/index.js.map +0 -1
- package/dist/embeddings/methods/text-embeddings.method.js.map +0 -1
- package/dist/embeddings/text-embeddings.tool.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/intelligence/anthropic-intelligence.tool.js.map +0 -1
- package/dist/intelligence/gemini-intelligence.tool.js.map +0 -1
- package/dist/intelligence/index.js.map +0 -1
- package/dist/intelligence/intelligence.tool.js.map +0 -1
- package/dist/intelligence/methods/intelligence.methods.js.map +0 -1
- package/dist/intelligence/ollama-intelligence.tool.js.map +0 -1
- package/dist/intelligence/openai-intelligence.tool.js.map +0 -1
- package/dist/intelligence/perplexity-intelligence.tool.js.map +0 -1
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/mcp-bridge.tool.js.map +0 -1
- package/dist/mcp/mcp.tool.js.map +0 -1
- package/dist/mcp/methods/mcp-bridge.methods.js.map +0 -1
- package/dist/nlp/index.js.map +0 -1
- package/dist/nlp/methods/nlp.methods.js.map +0 -1
- package/dist/nlp/ner.tool.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vector-store/index.js.map +0 -1
- package/dist/vector-store/langchain-memory.vector-store.tool.js.map +0 -1
- package/dist/vector-store/methods/vector-store.methods.js.map +0 -1
- package/dist/vector-store/vector-memory.tool.js.map +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { oAddress
|
|
1
|
+
import { oVirtualTool } from '@olane/o-tool';
|
|
2
|
+
import { oAddress } from '@olane/o-core';
|
|
3
3
|
import { AnthropicIntelligenceTool } from './anthropic-intelligence.tool';
|
|
4
4
|
import { OpenAIIntelligenceTool } from './openai-intelligence.tool';
|
|
5
5
|
import { OllamaIntelligenceTool } from './ollama-intelligence.tool';
|
|
6
6
|
import { PerplexityIntelligenceTool } from './perplexity-intelligence.tool';
|
|
7
|
-
export class IntelligenceTool extends
|
|
8
|
-
roundRobinIndex = 0;
|
|
7
|
+
export class IntelligenceTool extends oVirtualTool {
|
|
9
8
|
constructor(config) {
|
|
10
9
|
super({
|
|
11
10
|
...config,
|
|
@@ -25,6 +24,7 @@ export class IntelligenceTool extends oTool(oVirtualNode) {
|
|
|
25
24
|
},
|
|
26
25
|
],
|
|
27
26
|
});
|
|
27
|
+
this.roundRobinIndex = 0;
|
|
28
28
|
this.addChildNode(new AnthropicIntelligenceTool({
|
|
29
29
|
...config,
|
|
30
30
|
parent: null,
|
|
@@ -47,6 +47,7 @@ export class IntelligenceTool extends oTool(oVirtualNode) {
|
|
|
47
47
|
}));
|
|
48
48
|
}
|
|
49
49
|
async requestMissingData() {
|
|
50
|
+
// if the anthropic key is not in the vault, ask the human
|
|
50
51
|
this.logger.info('Anthropic API key not found in vault, asking human');
|
|
51
52
|
const humanResponse = await this.use(new oAddress('o://human'), {
|
|
52
53
|
method: 'question',
|
|
@@ -54,6 +55,7 @@ export class IntelligenceTool extends oTool(oVirtualNode) {
|
|
|
54
55
|
question: 'Enter the anthropic api key',
|
|
55
56
|
},
|
|
56
57
|
});
|
|
58
|
+
// process the human response
|
|
57
59
|
const { answer } = humanResponse.result.data;
|
|
58
60
|
this.logger.info('Human answer: ', answer);
|
|
59
61
|
await this.use(new oAddress('o://memory'), {
|
|
@@ -69,12 +71,14 @@ export class IntelligenceTool extends oTool(oVirtualNode) {
|
|
|
69
71
|
};
|
|
70
72
|
}
|
|
71
73
|
async chooseIntelligence(request) {
|
|
74
|
+
// check to see if anthropic key is in vault
|
|
72
75
|
const response = await this.use(new oAddress('o://memory'), {
|
|
73
76
|
method: 'get',
|
|
74
77
|
params: {
|
|
75
78
|
key: 'anthropic-api-key',
|
|
76
79
|
},
|
|
77
80
|
});
|
|
81
|
+
// if the anthropic key is in the vault, use it
|
|
78
82
|
if (response.result.data) {
|
|
79
83
|
const { value } = response.result.data;
|
|
80
84
|
if (value) {
|
|
@@ -87,13 +91,14 @@ export class IntelligenceTool extends oTool(oVirtualNode) {
|
|
|
87
91
|
const result = await this.requestMissingData();
|
|
88
92
|
return result;
|
|
89
93
|
}
|
|
94
|
+
// we cannot wrap this tool use in a plan because it is a core dependency in all planning
|
|
90
95
|
async _tool_prompt(request) {
|
|
91
96
|
const { prompt } = request.params;
|
|
92
97
|
const intelligence = await this.chooseIntelligence(request);
|
|
93
98
|
const response = await this.use(new oAddress(intelligence.choice), {
|
|
94
99
|
method: 'completion',
|
|
95
100
|
params: {
|
|
96
|
-
model: 'claude-
|
|
101
|
+
model: 'claude-sonnet-4-20250514',
|
|
97
102
|
apiKey: intelligence.apiKey,
|
|
98
103
|
messages: [
|
|
99
104
|
{
|
|
@@ -106,4 +111,3 @@ export class IntelligenceTool extends oTool(oVirtualNode) {
|
|
|
106
111
|
return response.result.data;
|
|
107
112
|
}
|
|
108
113
|
}
|
|
109
|
-
//# sourceMappingURL=intelligence.tool.js.map
|
|
@@ -1,79 +1,36 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { oToolConfig, ToolResult } from '@olane/o-tool';
|
|
3
|
-
declare
|
|
4
|
-
validateToolCall(oRequest: oRequest): boolean;
|
|
5
|
-
handleProtocol(address: oAddress): Promise<void>;
|
|
6
|
-
initialize(): Promise<void>;
|
|
7
|
-
use(address: oAddress, data: {
|
|
8
|
-
[key: string]: unknown;
|
|
9
|
-
}, config?: import("@olane/o-core").UseOptions): Promise<import("@olane/o-core").oResponse>;
|
|
10
|
-
handleStream(streamData: import("@olane/o-config/dist").IncomingStreamData): Promise<void>;
|
|
11
|
-
execute(req: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<import("@olane/o-tool").RunResult>;
|
|
12
|
-
run(request: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<import("@olane/o-tool").RunResult>;
|
|
13
|
-
myTools(): string[];
|
|
14
|
-
myToolParams(tool: string): Record<string, any>;
|
|
15
|
-
callMyTool(request: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<ToolResult>;
|
|
16
|
-
index(): Promise<{
|
|
17
|
-
provider: string;
|
|
18
|
-
summary: string;
|
|
19
|
-
} | {
|
|
20
|
-
summary: string | null;
|
|
21
|
-
provider?: undefined;
|
|
22
|
-
}>;
|
|
23
|
-
_tool_index_network(request: oRequest): Promise<ToolResult>;
|
|
24
|
-
whoami(): Promise<{
|
|
25
|
-
tools: string[];
|
|
26
|
-
description: string;
|
|
27
|
-
}>;
|
|
28
|
-
findMissingParams(methodName: string, params: any): import("@olane/o-protocol/dist").oParameter[];
|
|
29
|
-
readonly config: import("@olane/o-core").CoreConfig;
|
|
30
|
-
p2pNode: import("@olane/o-config/dist").Libp2p;
|
|
31
|
-
logger: import("@olane/o-core").Logger;
|
|
32
|
-
networkConfig: import("@olane/o-config/dist").Libp2pConfig;
|
|
33
|
-
address: oAddress;
|
|
34
|
-
readonly staticAddress: oAddress;
|
|
35
|
-
peerId: import("@olane/o-config/dist").PeerId;
|
|
36
|
-
state: import("@olane/o-core").NodeState;
|
|
37
|
-
errors: Error[];
|
|
38
|
-
connectionManager: import("@olane/o-core").oConnectionManager;
|
|
39
|
-
leaders: import("@olane/o-config/dist").Multiaddr[];
|
|
40
|
-
addressResolution: import("@olane/o-core").oAddressResolution;
|
|
41
|
-
readonly description: string;
|
|
42
|
-
dependencies: import("@olane/o-core").oDependency[];
|
|
43
|
-
methods: {
|
|
44
|
-
[key: string]: import("@olane/o-protocol/dist").oMethod;
|
|
45
|
-
};
|
|
46
|
-
successCount: number;
|
|
47
|
-
errorCount: number;
|
|
48
|
-
get type(): import("@olane/o-core").NodeType;
|
|
49
|
-
get transports(): string[];
|
|
50
|
-
get parent(): oAddress | null;
|
|
51
|
-
get parentTransports(): import("@olane/o-config/dist").Multiaddr[];
|
|
52
|
-
getTransports(address: oAddress): import("@olane/o-config/dist").Multiaddr[];
|
|
53
|
-
handleStaticAddressTranslation(addressInput: oAddress): Promise<oAddress>;
|
|
54
|
-
translateAddress(addressWithLeaderTransports: oAddress): Promise<{
|
|
55
|
-
nextHopAddress: oAddress;
|
|
56
|
-
targetAddress: oAddress;
|
|
57
|
-
}>;
|
|
58
|
-
advertiseToNetwork(): Promise<void>;
|
|
59
|
-
connectToParent(): Promise<void>;
|
|
60
|
-
register(): Promise<void>;
|
|
61
|
-
connect(nextHopAddress: oAddress, targetAddress: oAddress): Promise<import("@olane/o-core").oConnection>;
|
|
62
|
-
teardown(): Promise<void>;
|
|
63
|
-
start(): Promise<void>;
|
|
64
|
-
stop(): Promise<void>;
|
|
65
|
-
}) & typeof oVirtualNode;
|
|
66
|
-
export declare class OllamaIntelligenceTool extends OllamaIntelligenceTool_base {
|
|
1
|
+
import { oRequest } from '@olane/o-core';
|
|
2
|
+
import { oToolConfig, oVirtualTool, ToolResult } from '@olane/o-tool';
|
|
3
|
+
export declare class OllamaIntelligenceTool extends oVirtualTool {
|
|
67
4
|
static defaultModel: string;
|
|
68
5
|
static defaultUrl: string;
|
|
69
6
|
constructor(config: oToolConfig);
|
|
7
|
+
/**
|
|
8
|
+
* Chat completion with Ollama
|
|
9
|
+
*/
|
|
70
10
|
_tool_completion(request: oRequest): Promise<ToolResult>;
|
|
11
|
+
/**
|
|
12
|
+
* Generate text with Ollama
|
|
13
|
+
*/
|
|
71
14
|
_tool_generate(request: oRequest): Promise<ToolResult>;
|
|
15
|
+
/**
|
|
16
|
+
* List available models
|
|
17
|
+
*/
|
|
72
18
|
_tool_list_models(request: oRequest): Promise<ToolResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Pull a model from Ollama library
|
|
21
|
+
*/
|
|
73
22
|
_tool_pull_model(request: oRequest): Promise<ToolResult>;
|
|
23
|
+
/**
|
|
24
|
+
* Delete a model
|
|
25
|
+
*/
|
|
74
26
|
_tool_delete_model(request: oRequest): Promise<ToolResult>;
|
|
27
|
+
/**
|
|
28
|
+
* Get model information
|
|
29
|
+
*/
|
|
75
30
|
_tool_model_info(request: oRequest): Promise<ToolResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Check Ollama server status
|
|
33
|
+
*/
|
|
76
34
|
_tool_status(request: oRequest): Promise<ToolResult>;
|
|
77
35
|
}
|
|
78
|
-
export {};
|
|
79
36
|
//# sourceMappingURL=ollama-intelligence.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-intelligence.tool.d.ts","sourceRoot":"","sources":["../../src/intelligence/ollama-intelligence.tool.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ollama-intelligence.tool.d.ts","sourceRoot":"","sources":["../../src/intelligence/ollama-intelligence.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAgB,MAAM,eAAe,CAAC;AACjE,OAAO,EAAS,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA+G7E,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,MAAM,CAAC,YAAY,SAAqB;IACxC,MAAM,CAAC,UAAU,SAA4B;gBAEjC,MAAM,EAAE,WAAW;IAY/B;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA4D9D;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAgE5D;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAmC/D;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAiE9D;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA6ChE;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAwC9D;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CAyB3D"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { oAddress
|
|
2
|
-
import {
|
|
1
|
+
import { oAddress } from '@olane/o-core';
|
|
2
|
+
import { oVirtualTool } from '@olane/o-tool';
|
|
3
3
|
import { INTELLIGENCE_PARAMS } from './methods/intelligence.methods';
|
|
4
|
-
export class OllamaIntelligenceTool extends
|
|
5
|
-
static defaultModel = 'llama3.2:latest';
|
|
6
|
-
static defaultUrl = 'http://localhost:11434';
|
|
4
|
+
export class OllamaIntelligenceTool extends oVirtualTool {
|
|
7
5
|
constructor(config) {
|
|
8
6
|
super({
|
|
9
7
|
...config,
|
|
@@ -12,11 +10,17 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
12
10
|
methods: INTELLIGENCE_PARAMS,
|
|
13
11
|
dependencies: [],
|
|
14
12
|
});
|
|
13
|
+
// this.baseUrl = config.ollamaUrl || 'http://localhost:11434';
|
|
14
|
+
// this.defaultModel = config.defaultModel || 'llama2';
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Chat completion with Ollama
|
|
18
|
+
*/
|
|
16
19
|
async _tool_completion(request) {
|
|
17
20
|
try {
|
|
18
21
|
const params = request.params;
|
|
19
22
|
const { model = OllamaIntelligenceTool.defaultModel, messages, options = {}, } = params;
|
|
23
|
+
// let's validate the params and ask for ones that are missing
|
|
20
24
|
if (!messages || !Array.isArray(messages)) {
|
|
21
25
|
return {
|
|
22
26
|
success: false,
|
|
@@ -43,7 +47,7 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
43
47
|
error: `Ollama API error: ${response.status} - ${errorText}`,
|
|
44
48
|
};
|
|
45
49
|
}
|
|
46
|
-
const result = await response.json();
|
|
50
|
+
const result = (await response.json());
|
|
47
51
|
return {
|
|
48
52
|
message: result.message.content,
|
|
49
53
|
model: result.model,
|
|
@@ -59,6 +63,9 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
59
63
|
};
|
|
60
64
|
}
|
|
61
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Generate text with Ollama
|
|
68
|
+
*/
|
|
62
69
|
async _tool_generate(request) {
|
|
63
70
|
try {
|
|
64
71
|
const params = request.params;
|
|
@@ -90,7 +97,7 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
90
97
|
error: `Ollama API error: ${response.status} - ${errorText}`,
|
|
91
98
|
};
|
|
92
99
|
}
|
|
93
|
-
const result = await response.json();
|
|
100
|
+
const result = (await response.json());
|
|
94
101
|
return {
|
|
95
102
|
success: true,
|
|
96
103
|
response: result.response,
|
|
@@ -108,6 +115,9 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
108
115
|
};
|
|
109
116
|
}
|
|
110
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* List available models
|
|
120
|
+
*/
|
|
111
121
|
async _tool_list_models(request) {
|
|
112
122
|
try {
|
|
113
123
|
const response = await fetch(`${OllamaIntelligenceTool.defaultUrl}/api/tags`, {
|
|
@@ -123,7 +133,7 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
123
133
|
error: `Ollama API error: ${response.status} - ${errorText}`,
|
|
124
134
|
};
|
|
125
135
|
}
|
|
126
|
-
const result = await response.json();
|
|
136
|
+
const result = (await response.json());
|
|
127
137
|
return {
|
|
128
138
|
success: true,
|
|
129
139
|
models: result.models,
|
|
@@ -136,6 +146,9 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
136
146
|
};
|
|
137
147
|
}
|
|
138
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Pull a model from Ollama library
|
|
151
|
+
*/
|
|
139
152
|
async _tool_pull_model(request) {
|
|
140
153
|
try {
|
|
141
154
|
const params = request.params;
|
|
@@ -163,6 +176,7 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
163
176
|
error: `Ollama API error: ${response.status} - ${errorText}`,
|
|
164
177
|
};
|
|
165
178
|
}
|
|
179
|
+
// For pull operations, we need to handle streaming response
|
|
166
180
|
const reader = response.body?.getReader();
|
|
167
181
|
if (!reader) {
|
|
168
182
|
return {
|
|
@@ -191,6 +205,9 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
191
205
|
};
|
|
192
206
|
}
|
|
193
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Delete a model
|
|
210
|
+
*/
|
|
194
211
|
async _tool_delete_model(request) {
|
|
195
212
|
try {
|
|
196
213
|
const params = request.params;
|
|
@@ -229,6 +246,9 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
229
246
|
};
|
|
230
247
|
}
|
|
231
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Get model information
|
|
251
|
+
*/
|
|
232
252
|
async _tool_model_info(request) {
|
|
233
253
|
try {
|
|
234
254
|
const params = request.params;
|
|
@@ -249,7 +269,7 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
249
269
|
error: `Ollama API error: ${response.status} - ${errorText}`,
|
|
250
270
|
};
|
|
251
271
|
}
|
|
252
|
-
const result = await response.json();
|
|
272
|
+
const result = (await response.json());
|
|
253
273
|
return {
|
|
254
274
|
success: true,
|
|
255
275
|
model_info: result,
|
|
@@ -262,6 +282,9 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
262
282
|
};
|
|
263
283
|
}
|
|
264
284
|
}
|
|
285
|
+
/**
|
|
286
|
+
* Check Ollama server status
|
|
287
|
+
*/
|
|
265
288
|
async _tool_status(request) {
|
|
266
289
|
try {
|
|
267
290
|
const response = await fetch(`${OllamaIntelligenceTool.defaultUrl}/api/tags`, {
|
|
@@ -285,4 +308,5 @@ export class OllamaIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
285
308
|
}
|
|
286
309
|
}
|
|
287
310
|
}
|
|
288
|
-
|
|
311
|
+
OllamaIntelligenceTool.defaultModel = 'llama3.2:latest';
|
|
312
|
+
OllamaIntelligenceTool.defaultUrl = 'http://localhost:11434';
|
|
@@ -1,79 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { oToolConfig, ToolResult } from '@olane/o-tool';
|
|
3
|
-
declare
|
|
4
|
-
validateToolCall(oRequest: oRequest): boolean;
|
|
5
|
-
handleProtocol(address: oAddress): Promise<void>;
|
|
6
|
-
initialize(): Promise<void>;
|
|
7
|
-
use(address: oAddress, data: {
|
|
8
|
-
[key: string]: unknown;
|
|
9
|
-
}, config?: import("@olane/o-core").UseOptions): Promise<import("@olane/o-core").oResponse>;
|
|
10
|
-
handleStream(streamData: import("@olane/o-config/dist").IncomingStreamData): Promise<void>;
|
|
11
|
-
execute(req: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<import("@olane/o-tool").RunResult>;
|
|
12
|
-
run(request: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<import("@olane/o-tool").RunResult>;
|
|
13
|
-
myTools(): string[];
|
|
14
|
-
myToolParams(tool: string): Record<string, any>;
|
|
15
|
-
callMyTool(request: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<ToolResult>;
|
|
16
|
-
index(): Promise<{
|
|
17
|
-
provider: string;
|
|
18
|
-
summary: string;
|
|
19
|
-
} | {
|
|
20
|
-
summary: string | null;
|
|
21
|
-
provider?: undefined;
|
|
22
|
-
}>;
|
|
23
|
-
_tool_index_network(request: oRequest): Promise<ToolResult>;
|
|
24
|
-
whoami(): Promise<{
|
|
25
|
-
tools: string[];
|
|
26
|
-
description: string;
|
|
27
|
-
}>;
|
|
28
|
-
findMissingParams(methodName: string, params: any): import("@olane/o-protocol/dist").oParameter[];
|
|
29
|
-
readonly config: import("@olane/o-core").CoreConfig;
|
|
30
|
-
p2pNode: import("@olane/o-config/dist").Libp2p;
|
|
31
|
-
logger: import("@olane/o-core").Logger;
|
|
32
|
-
networkConfig: import("@olane/o-config/dist").Libp2pConfig;
|
|
33
|
-
address: oAddress;
|
|
34
|
-
readonly staticAddress: oAddress;
|
|
35
|
-
peerId: import("@olane/o-config/dist").PeerId;
|
|
36
|
-
state: import("@olane/o-core").NodeState;
|
|
37
|
-
errors: Error[];
|
|
38
|
-
connectionManager: import("@olane/o-core").oConnectionManager;
|
|
39
|
-
leaders: import("@olane/o-config/dist").Multiaddr[];
|
|
40
|
-
addressResolution: import("@olane/o-core").oAddressResolution;
|
|
41
|
-
readonly description: string;
|
|
42
|
-
dependencies: import("@olane/o-core").oDependency[];
|
|
43
|
-
methods: {
|
|
44
|
-
[key: string]: import("@olane/o-protocol/dist").oMethod;
|
|
45
|
-
};
|
|
46
|
-
successCount: number;
|
|
47
|
-
errorCount: number;
|
|
48
|
-
get type(): import("@olane/o-core").NodeType;
|
|
49
|
-
get transports(): string[];
|
|
50
|
-
get parent(): oAddress | null;
|
|
51
|
-
get parentTransports(): import("@olane/o-config/dist").Multiaddr[];
|
|
52
|
-
getTransports(address: oAddress): import("@olane/o-config/dist").Multiaddr[];
|
|
53
|
-
handleStaticAddressTranslation(addressInput: oAddress): Promise<oAddress>;
|
|
54
|
-
translateAddress(addressWithLeaderTransports: oAddress): Promise<{
|
|
55
|
-
nextHopAddress: oAddress;
|
|
56
|
-
targetAddress: oAddress;
|
|
57
|
-
}>;
|
|
58
|
-
advertiseToNetwork(): Promise<void>;
|
|
59
|
-
connectToParent(): Promise<void>;
|
|
60
|
-
register(): Promise<void>;
|
|
61
|
-
connect(nextHopAddress: oAddress, targetAddress: oAddress): Promise<import("@olane/o-core").oConnection>;
|
|
62
|
-
teardown(): Promise<void>;
|
|
63
|
-
start(): Promise<void>;
|
|
64
|
-
stop(): Promise<void>;
|
|
65
|
-
}) & typeof oVirtualNode;
|
|
66
|
-
export declare class OpenAIIntelligenceTool extends OpenAIIntelligenceTool_base {
|
|
1
|
+
import { oRequest } from '@olane/o-core';
|
|
2
|
+
import { oToolConfig, oVirtualTool, ToolResult } from '@olane/o-tool';
|
|
3
|
+
export declare class OpenAIIntelligenceTool extends oVirtualTool {
|
|
67
4
|
private apiKey;
|
|
68
5
|
private baseUrl;
|
|
69
6
|
private defaultModel;
|
|
70
7
|
private organization?;
|
|
71
8
|
constructor(config: oToolConfig);
|
|
9
|
+
/**
|
|
10
|
+
* Chat completion with OpenAI
|
|
11
|
+
*/
|
|
72
12
|
_tool_completion(request: oRequest): Promise<ToolResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Generate text with OpenAI
|
|
15
|
+
*/
|
|
73
16
|
_tool_generate(request: oRequest): Promise<ToolResult>;
|
|
17
|
+
/**
|
|
18
|
+
* List available models
|
|
19
|
+
*/
|
|
74
20
|
_tool_list_models(request: oRequest): Promise<ToolResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Get model information
|
|
23
|
+
*/
|
|
75
24
|
_tool_model_info(request: oRequest): Promise<ToolResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Check OpenAI API status
|
|
27
|
+
*/
|
|
76
28
|
_tool_status(request: oRequest): Promise<ToolResult>;
|
|
77
29
|
}
|
|
78
|
-
export {};
|
|
79
30
|
//# sourceMappingURL=openai-intelligence.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-intelligence.tool.d.ts","sourceRoot":"","sources":["../../src/intelligence/openai-intelligence.tool.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"openai-intelligence.tool.d.ts","sourceRoot":"","sources":["../../src/intelligence/openai-intelligence.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAoHtE,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;gBAElB,MAAM,EAAE,WAAW;IAU/B;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAoE9D;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAmE5D;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA6C/D;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA+C9D;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CAoC3D"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { oAddress
|
|
2
|
-
import {
|
|
1
|
+
import { oAddress } from '@olane/o-core';
|
|
2
|
+
import { oVirtualTool } from '@olane/o-tool';
|
|
3
3
|
import { INTELLIGENCE_PARAMS } from './methods/intelligence.methods';
|
|
4
|
-
export class OpenAIIntelligenceTool extends
|
|
5
|
-
apiKey;
|
|
6
|
-
baseUrl;
|
|
7
|
-
defaultModel;
|
|
8
|
-
organization;
|
|
4
|
+
export class OpenAIIntelligenceTool extends oVirtualTool {
|
|
9
5
|
constructor(config) {
|
|
10
6
|
super({
|
|
11
7
|
...config,
|
|
@@ -15,6 +11,9 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
15
11
|
dependencies: [],
|
|
16
12
|
});
|
|
17
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Chat completion with OpenAI
|
|
16
|
+
*/
|
|
18
17
|
async _tool_completion(request) {
|
|
19
18
|
try {
|
|
20
19
|
const params = request.params;
|
|
@@ -56,7 +55,7 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
56
55
|
error: `OpenAI API error: ${response.status} - ${errorText}`,
|
|
57
56
|
};
|
|
58
57
|
}
|
|
59
|
-
const result = await response.json();
|
|
58
|
+
const result = (await response.json());
|
|
60
59
|
return {
|
|
61
60
|
success: true,
|
|
62
61
|
response: result.choices[0]?.message?.content || '',
|
|
@@ -73,6 +72,9 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
73
72
|
};
|
|
74
73
|
}
|
|
75
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate text with OpenAI
|
|
77
|
+
*/
|
|
76
78
|
async _tool_generate(request) {
|
|
77
79
|
try {
|
|
78
80
|
const params = request.params;
|
|
@@ -99,6 +101,9 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
99
101
|
'Content-Type': 'application/json',
|
|
100
102
|
Authorization: `Bearer ${this.apiKey}`,
|
|
101
103
|
};
|
|
104
|
+
// if (this.organization) {
|
|
105
|
+
// headers['OpenAI-Organization'] = this.organization;
|
|
106
|
+
// }
|
|
102
107
|
const response = await fetch(`${this.baseUrl}/completions`, {
|
|
103
108
|
method: 'POST',
|
|
104
109
|
headers,
|
|
@@ -111,7 +116,7 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
111
116
|
error: `OpenAI API error: ${response.status} - ${errorText}`,
|
|
112
117
|
};
|
|
113
118
|
}
|
|
114
|
-
const result = await response.json();
|
|
119
|
+
const result = (await response.json());
|
|
115
120
|
return {
|
|
116
121
|
success: true,
|
|
117
122
|
response: result.choices[0]?.text || '',
|
|
@@ -127,6 +132,9 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
127
132
|
};
|
|
128
133
|
}
|
|
129
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* List available models
|
|
137
|
+
*/
|
|
130
138
|
async _tool_list_models(request) {
|
|
131
139
|
try {
|
|
132
140
|
if (!this.apiKey) {
|
|
@@ -152,7 +160,7 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
152
160
|
error: `OpenAI API error: ${response.status} - ${errorText}`,
|
|
153
161
|
};
|
|
154
162
|
}
|
|
155
|
-
const result = await response.json();
|
|
163
|
+
const result = (await response.json());
|
|
156
164
|
return {
|
|
157
165
|
success: true,
|
|
158
166
|
models: result.data,
|
|
@@ -165,6 +173,9 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
165
173
|
};
|
|
166
174
|
}
|
|
167
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Get model information
|
|
178
|
+
*/
|
|
168
179
|
async _tool_model_info(request) {
|
|
169
180
|
try {
|
|
170
181
|
const params = request.params;
|
|
@@ -192,7 +203,7 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
192
203
|
error: `OpenAI API error: ${response.status} - ${errorText}`,
|
|
193
204
|
};
|
|
194
205
|
}
|
|
195
|
-
const result = await response.json();
|
|
206
|
+
const result = (await response.json());
|
|
196
207
|
return {
|
|
197
208
|
success: true,
|
|
198
209
|
model_info: result,
|
|
@@ -205,6 +216,9 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
205
216
|
};
|
|
206
217
|
}
|
|
207
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Check OpenAI API status
|
|
221
|
+
*/
|
|
208
222
|
async _tool_status(request) {
|
|
209
223
|
try {
|
|
210
224
|
if (!this.apiKey) {
|
|
@@ -239,4 +253,3 @@ export class OpenAIIntelligenceTool extends oTool(oVirtualNode) {
|
|
|
239
253
|
}
|
|
240
254
|
}
|
|
241
255
|
}
|
|
242
|
-
//# sourceMappingURL=openai-intelligence.tool.js.map
|
|
@@ -1,76 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { oToolConfig, ToolResult } from '@olane/o-tool';
|
|
3
|
-
declare
|
|
4
|
-
validateToolCall(oRequest: oRequest): boolean;
|
|
5
|
-
handleProtocol(address: oAddress): Promise<void>;
|
|
6
|
-
initialize(): Promise<void>;
|
|
7
|
-
use(address: oAddress, data: {
|
|
8
|
-
[key: string]: unknown;
|
|
9
|
-
}, config?: import("@olane/o-core").UseOptions): Promise<import("@olane/o-core").oResponse>;
|
|
10
|
-
handleStream(streamData: import("@olane/o-config/dist").IncomingStreamData): Promise<void>;
|
|
11
|
-
execute(req: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<import("@olane/o-tool").RunResult>;
|
|
12
|
-
run(request: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<import("@olane/o-tool").RunResult>;
|
|
13
|
-
myTools(): string[];
|
|
14
|
-
myToolParams(tool: string): Record<string, any>;
|
|
15
|
-
callMyTool(request: oRequest, stream?: import("@olane/o-config/dist").Stream): Promise<ToolResult>;
|
|
16
|
-
index(): Promise<{
|
|
17
|
-
provider: string;
|
|
18
|
-
summary: string;
|
|
19
|
-
} | {
|
|
20
|
-
summary: string | null;
|
|
21
|
-
provider?: undefined;
|
|
22
|
-
}>;
|
|
23
|
-
_tool_index_network(request: oRequest): Promise<ToolResult>;
|
|
24
|
-
whoami(): Promise<{
|
|
25
|
-
tools: string[];
|
|
26
|
-
description: string;
|
|
27
|
-
}>;
|
|
28
|
-
findMissingParams(methodName: string, params: any): import("@olane/o-protocol/dist").oParameter[];
|
|
29
|
-
readonly config: import("@olane/o-core").CoreConfig;
|
|
30
|
-
p2pNode: import("@olane/o-config/dist").Libp2p;
|
|
31
|
-
logger: import("@olane/o-core").Logger;
|
|
32
|
-
networkConfig: import("@olane/o-config/dist").Libp2pConfig;
|
|
33
|
-
address: oAddress;
|
|
34
|
-
readonly staticAddress: oAddress;
|
|
35
|
-
peerId: import("@olane/o-config/dist").PeerId;
|
|
36
|
-
state: import("@olane/o-core").NodeState;
|
|
37
|
-
errors: Error[];
|
|
38
|
-
connectionManager: import("@olane/o-core").oConnectionManager;
|
|
39
|
-
leaders: import("@olane/o-config/dist").Multiaddr[];
|
|
40
|
-
addressResolution: import("@olane/o-core").oAddressResolution;
|
|
41
|
-
readonly description: string;
|
|
42
|
-
dependencies: import("@olane/o-core").oDependency[];
|
|
43
|
-
methods: {
|
|
44
|
-
[key: string]: import("@olane/o-protocol/dist").oMethod;
|
|
45
|
-
};
|
|
46
|
-
successCount: number;
|
|
47
|
-
errorCount: number;
|
|
48
|
-
get type(): import("@olane/o-core").NodeType;
|
|
49
|
-
get transports(): string[];
|
|
50
|
-
get parent(): oAddress | null;
|
|
51
|
-
get parentTransports(): import("@olane/o-config/dist").Multiaddr[];
|
|
52
|
-
getTransports(address: oAddress): import("@olane/o-config/dist").Multiaddr[];
|
|
53
|
-
handleStaticAddressTranslation(addressInput: oAddress): Promise<oAddress>;
|
|
54
|
-
translateAddress(addressWithLeaderTransports: oAddress): Promise<{
|
|
55
|
-
nextHopAddress: oAddress;
|
|
56
|
-
targetAddress: oAddress;
|
|
57
|
-
}>;
|
|
58
|
-
advertiseToNetwork(): Promise<void>;
|
|
59
|
-
connectToParent(): Promise<void>;
|
|
60
|
-
register(): Promise<void>;
|
|
61
|
-
connect(nextHopAddress: oAddress, targetAddress: oAddress): Promise<import("@olane/o-core").oConnection>;
|
|
62
|
-
teardown(): Promise<void>;
|
|
63
|
-
start(): Promise<void>;
|
|
64
|
-
stop(): Promise<void>;
|
|
65
|
-
}) & typeof oVirtualNode;
|
|
66
|
-
export declare class PerplexityIntelligenceTool extends PerplexityIntelligenceTool_base {
|
|
1
|
+
import { oRequest } from '@olane/o-core';
|
|
2
|
+
import { oToolConfig, oVirtualTool, ToolResult } from '@olane/o-tool';
|
|
3
|
+
export declare class PerplexityIntelligenceTool extends oVirtualTool {
|
|
67
4
|
private defaultModel;
|
|
68
5
|
constructor(config: oToolConfig);
|
|
6
|
+
/**
|
|
7
|
+
* Chat completion with Perplexity
|
|
8
|
+
*/
|
|
69
9
|
_tool_completion(request: oRequest): Promise<ToolResult>;
|
|
10
|
+
/**
|
|
11
|
+
* Generate text with Perplexity (alias for completion)
|
|
12
|
+
*/
|
|
70
13
|
_tool_generate(request: oRequest): Promise<ToolResult>;
|
|
14
|
+
/**
|
|
15
|
+
* List available models
|
|
16
|
+
*/
|
|
71
17
|
_tool_list_models(request: oRequest): Promise<ToolResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Search with Perplexity
|
|
20
|
+
*/
|
|
72
21
|
_tool_search(request: oRequest): Promise<ToolResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Check Perplexity API status
|
|
24
|
+
*/
|
|
73
25
|
_tool_status(request: oRequest): Promise<ToolResult>;
|
|
74
26
|
}
|
|
75
|
-
export {};
|
|
76
27
|
//# sourceMappingURL=perplexity-intelligence.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"perplexity-intelligence.tool.d.ts","sourceRoot":"","sources":["../../src/intelligence/perplexity-intelligence.tool.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"perplexity-intelligence.tool.d.ts","sourceRoot":"","sources":["../../src/intelligence/perplexity-intelligence.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAqFtE,qBAAa,0BAA2B,SAAQ,YAAY;IAC1D,OAAO,CAAC,YAAY,CAAU;gBAElB,MAAM,EAAE,WAAW;IAU/B;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA+F9D;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAuG5D;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAyC/D;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA6E1D;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CAgC3D"}
|