1+ <?php
2+ /**
3+ *
4+ * THIS SCRIPT IS AUTOMATICALLY GENERATED, NO CHANGES WILL APPLY
5+ *
6+ * @package modai
7+ * @subpackage build
8+ *
9+ * @var \xPDO\Transport\xPDOTransport $transport
10+ * @var array $object
11+ * @var array $options
12+ */
13+
14+
15+ return (function () {
16+ return new class () {
17+ /**
18+ * @var \MODX\Revolution\modX
19+ */
20+ private $ modx ;
21+
22+ /**
23+ * @var int
24+ */
25+ private $ action ;
26+
27+ /**
28+ * @param \MODX\Revolution\modX $modx
29+ * @param int $action
30+ * @return bool
31+ */
32+ public function __invoke (&$ modx , $ action )
33+ {
34+ $ this ->modx =& $ modx ;
35+ $ this ->action = $ action ;
36+
37+ if ($ this ->action === \xPDO \Transport \xPDOTransport::ACTION_UNINSTALL ) {
38+ return true ;
39+ }
40+
41+ $ tools = [
42+ [
43+ 'name ' => \modAI \Tools \GetWeather::getSuggestedName (),
44+ 'class ' => \modAI \Tools \GetWeather::class,
45+ 'config ' => [],
46+ 'enabled ' => true ,
47+ 'default ' => false ,
48+ ]
49+ ];
50+
51+ foreach ($ tools as $ tool ) {
52+ $ exists = $ this ->modx ->getCount (\modAI \Model \Tool::class, ['name ' => $ tool ['name ' ]]);
53+ if ($ exists > 0 ) {
54+ continue ;
55+ }
56+
57+ $ toolObjects = $ this ->modx ->newObject (\modAI \Model \Tool::class, $ tool );
58+ $ toolObjects ->save ();
59+ }
60+
61+ $ contextProviders = [
62+ [
63+ 'name ' => 'resources ' ,
64+ 'description ' => 'Pinecone instance for storing resources ' ,
65+ 'class ' => \modAI \ContextProviders \Pinecone::class,
66+ 'config ' => [
67+ 'endpoint ' => 'ss:pinecone_url ' ,
68+ 'api_key ' => 'ss:pinecone_key ' ,
69+ 'namespace ' => 'resources ' ,
70+ 'fields ' => 'pagetitle,introtext,content ' ,
71+ 'intro_msg ' => 'Potential relevant context from resource {id}: ' ,
72+ ],
73+ 'enabled ' => true ,
74+ ]
75+ ];
76+
77+ foreach ($ contextProviders as $ contextProvider ) {
78+ $ exists = $ this ->modx ->getCount (\modAI \Model \ContextProvider::class, ['name ' => $ contextProvider ['name ' ]]);
79+ if ($ exists > 0 ) {
80+ continue ;
81+ }
82+
83+ $ contextProviderObjects = $ this ->modx ->newObject (\modAI \Model \ContextProvider::class, $ contextProvider );
84+ $ contextProviderObjects ->save ();
85+ }
86+
87+ $ agents = [
88+ [
89+ 'name ' => 'RedneckWeatherMan ' ,
90+ 'description ' => 'Presents weather in a funny form ' ,
91+ 'prompt ' => 'You are a weather man! Report on weather in a funny redneck way. ' ,
92+ 'enabled ' => true ,
93+ 'model ' => '' ,
94+ 'tools ' => [
95+ \modAI \Tools \GetWeather::getSuggestedName (),
96+ ]
97+ ],
98+ [
99+ 'name ' => 'ContentWriter ' ,
100+ 'description ' => 'Writes a decent content ' ,
101+ 'prompt ' => '' ,
102+ 'enabled ' => true ,
103+ 'model ' => '' ,
104+ 'tools ' => [
105+ \modAI \Tools \GetWeather::getSuggestedName (),
106+ ],
107+ 'contextProviders ' => [
108+ 'resources '
109+ ]
110+ ]
111+ ];
112+
113+ foreach ($ agents as $ agent ) {
114+ $ exists = $ this ->modx ->getCount (\modAI \Model \Agent::class, ['name ' => $ agent ['name ' ]]);
115+ if ($ exists > 0 ) {
116+ continue ;
117+ }
118+
119+ $ agentObject = $ this ->modx ->newObject (\modAI \Model \Agent::class);
120+ $ agentObject ->set ('name ' , $ agent ['name ' ]);
121+ $ agentObject ->set ('description ' , $ agent ['description ' ]);
122+ $ agentObject ->set ('enabled ' , $ agent ['enabled ' ]);
123+
124+ if (!empty ($ agent ['prompt ' ])) {
125+ $ agentObject ->set ('prompt ' , $ agent ['prompt ' ]);
126+ }
127+ $ agentObject ->save ();
128+
129+ if (!empty ($ agent ['tools ' ])) {
130+ foreach ($ agent ['tools ' ] as $ toolName ) {
131+ $ tool = $ this ->modx ->getObject (\modAI \Model \Tool::class, ['name ' => $ toolName ]);
132+ if (!$ tool ) {
133+ continue ;
134+ }
135+
136+ $ agentTool = $ this ->modx ->newObject (\modAI \Model \AgentTool::class);
137+ $ agentTool ->set ('agent_id ' , $ agentObject ->id );
138+ $ agentTool ->set ('tool_id ' , $ tool ->id );
139+ $ agentTool ->save ();
140+ }
141+ }
142+
143+ if (!empty ($ agent ['contextProviders ' ])) {
144+ foreach ($ agent ['contextProviders ' ] as $ contextProviderName ) {
145+ $ contextProvider = $ this ->modx ->getObject (\modAI \Model \ContextProvider::class, ['name ' => $ contextProviderName ]);
146+ if (!$ contextProvider ) {
147+ continue ;
148+ }
149+
150+ $ agentContextProvider = $ this ->modx ->newObject (\modAI \Model \AgentContextProvider::class);
151+ $ agentContextProvider ->set ('agent_id ' , $ agentObject ->id );
152+ $ agentContextProvider ->set ('context_provider_id ' , $ contextProvider ->id );
153+ $ agentContextProvider ->save ();
154+ }
155+ }
156+ }
157+
158+ return true ;
159+ }
160+ };
161+ })()($ transport ->xpdo , $ options [xPDOTransport::PACKAGE_ACTION ]);
0 commit comments