@@ -10,7 +10,6 @@ import {
10
10
IAgentRuntime ,
11
11
ModelProviderName ,
12
12
elizaLogger ,
13
- settings ,
14
13
IDatabaseAdapter ,
15
14
Client ,
16
15
UUID ,
@@ -23,87 +22,48 @@ import {
23
22
generateMessageResponse ,
24
23
} from "@ai16z/eliza" ;
25
24
26
-
27
25
import { bootstrapPlugin } from "@ai16z/plugin-bootstrap"
28
26
import initSqlJs from 'sql.js' ;
29
27
30
- export const wait = ( minTime : number = 1000 , maxTime : number = 3000 ) => {
31
- const waitTime =
32
- Math . floor ( Math . random ( ) * ( maxTime - minTime + 1 ) ) + minTime ;
33
- return new Promise ( ( resolve ) => setTimeout ( resolve , waitTime ) ) ;
34
- } ;
35
-
36
-
37
28
export function getTokenForProvider (
38
29
provider : ModelProviderName ,
39
30
character : Character
40
31
) {
41
32
switch ( provider ) {
42
33
case ModelProviderName . OPENAI :
43
- return (
44
- character . settings ?. secrets ?. OPENAI_API_KEY ||
45
- settings . OPENAI_API_KEY
46
- ) ;
34
+ return getSecret ( character , "OPENAI_API_KEY" )
47
35
case ModelProviderName . LLAMACLOUD :
48
- return (
49
- character . settings ?. secrets ?. LLAMACLOUD_API_KEY ||
50
- settings . LLAMACLOUD_API_KEY ||
51
- character . settings ?. secrets ?. TOGETHER_API_KEY ||
52
- settings . TOGETHER_API_KEY ||
53
- character . settings ?. secrets ?. XAI_API_KEY ||
54
- settings . XAI_API_KEY ||
55
- character . settings ?. secrets ?. OPENAI_API_KEY ||
56
- settings . OPENAI_API_KEY
57
- ) ;
36
+ return findSecret ( character , [ "LLAMACLOUD_API_KEY" , "TOGETHER_API_KEY" , "XAI_API_KEY" , "OPENAI_API_KEY" ] )
58
37
case ModelProviderName . ANTHROPIC :
59
- return (
60
- character . settings ?. secrets ?. ANTHROPIC_API_KEY ||
61
- character . settings ?. secrets ?. CLAUDE_API_KEY ||
62
- settings . ANTHROPIC_API_KEY ||
63
- settings . CLAUDE_API_KEY
64
- ) ;
38
+ return findSecret ( character , [ "ANTHROPIC_API_KEY" , "CLAUDE_API_KEY" ] )
65
39
case ModelProviderName . REDPILL :
66
- return (
67
- character . settings ?. secrets ?. REDPILL_API_KEY ||
68
- settings . REDPILL_API_KEY
69
- ) ;
40
+ return getSecret ( character , "REDPILL_API_KEY" ) ;
70
41
case ModelProviderName . OPENROUTER :
71
- return (
72
- character . settings ?. secrets ?. OPENROUTER ||
73
- settings . OPENROUTER_API_KEY
74
- ) ;
42
+ return getSecret ( character , "OPENROUTER_API_KEY" ) ;
75
43
case ModelProviderName . GROK :
76
- return (
77
- character . settings ?. secrets ?. GROK_API_KEY ||
78
- settings . GROK_API_KEY
79
- ) ;
44
+ return getSecret ( character , "GROK_API_KEY" ) ;
80
45
case ModelProviderName . HEURIST :
81
- return (
82
- character . settings ?. secrets ?. HEURIST_API_KEY ||
83
- settings . HEURIST_API_KEY
84
- ) ;
46
+ return getSecret ( character , "HEURIST_API_KEY" ) ;
85
47
case ModelProviderName . GROQ :
86
- return (
87
- character . settings ?. secrets ?. GROQ_API_KEY ||
88
- settings . GROQ_API_KEY
89
- ) ;
48
+ return getSecret ( character , "GROQ_API_KEY" ) ;
90
49
}
91
50
}
92
51
93
-
94
- export async function initializeClients (
95
- character : Character ,
96
- runtime : IAgentRuntime
97
- ) {
98
- const clients : Client [ ] = [ ] ;
99
- const clientTypes =
100
- character . clients ?. map ( ( str ) => str . toLowerCase ( ) ) || [ ] ;
101
-
102
- return clients ;
52
+ function findSecret ( character : Character , secretKeys : string [ ] ) {
53
+ for ( const secret of secretKeys ) {
54
+ const res = getSecret ( character , secret )
55
+ if ( res ) return res ;
56
+ }
103
57
}
104
58
105
59
function getSecret ( character : Character , secret : string ) {
106
- return character . settings ?. secrets ?. [ secret ] || process . env [ secret ] ;
60
+ return character . settings ?. secrets ?. [ secret ] || localStorage . getItem ( character . id + "/secrets/" + secret ) ;
61
+ }
62
+
63
+ class BrowserAgentRuntime extends AgentRuntime {
64
+ getSetting ( key : string ) {
65
+ return getSecret ( this . character , key ) ;
66
+ }
107
67
}
108
68
109
69
export function createAgent (
@@ -118,7 +78,7 @@ export function createAgent(
118
78
character . name
119
79
) ;
120
80
121
- return new AgentRuntime ( {
81
+ return new BrowserAgentRuntime ( {
122
82
databaseAdapter : db ,
123
83
token,
124
84
modelProvider : character . modelProvider ,
@@ -135,6 +95,18 @@ export function createAgent(
135
95
} ) ;
136
96
}
137
97
98
+ async function initializeClients (
99
+ character : Character ,
100
+ runtime : IAgentRuntime
101
+ ) {
102
+ const clients : Client [ ] = [ ] ;
103
+ const clientTypes =
104
+ character . clients ?. map ( ( str ) => str . toLowerCase ( ) ) || [ ] ;
105
+
106
+ return clients ;
107
+ }
108
+
109
+
138
110
async function initializeDatabase ( ) {
139
111
const SQL = await initSqlJs ( {
140
112
// Required to load the wasm binary asynchronously. Of course, you can host it wherever you want
0 commit comments