@poolzin/pool-bot 2026.3.13 → 2026.3.15
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/CHANGELOG.md +87 -0
- package/dist/agents/checkpoint-manager.js +291 -0
- package/dist/agents/poolbot-tools.js +5 -0
- package/dist/agents/subagent-announce-reliability.js +160 -0
- package/dist/agents/tool-result-truncation.js +299 -0
- package/dist/agents/tools/nodes-file-tool.js +197 -0
- package/dist/build-info.json +3 -3
- package/dist/cli/config-cli.js +60 -0
- package/dist/cron/cron-improvements.js +195 -0
- package/dist/discord/discord-improvements.js +167 -0
- package/dist/gateway/auth-rate-limit.js +19 -0
- package/dist/gateway/auth.js +41 -0
- package/dist/gateway/gateway-improvements.js +294 -0
- package/dist/gateway/node-command-policy.js +7 -2
- package/dist/infra/net/ssrf.js +15 -2
- package/dist/infra/shell-security.js +201 -0
- package/dist/memory/memory-improvements.js +239 -0
- package/dist/node-host/runner.js +146 -79
- package/dist/security/prototype-pollution.js +141 -0
- package/dist/security/webhook-security.js +253 -0
- package/dist/shared/net/ip.js +52 -1
- package/dist/slack/slack-improvements.js +225 -0
- package/dist/telegram/telegram-improvements.js +220 -0
- package/dist/ui-plugins/ui-plugins-improvements.js +191 -0
- package/docs/ANALISE_OPENCLAW_PROFISSIONAL.md +520 -0
- package/docs/competitive-analysis.md +421 -0
- package/docs/implementation-analysis.md +393 -0
- package/docs/plans/2026-03-11-file-operations-security-hardening.md +307 -0
- package/docs/plans/2026-03-11-integracao-projetos-poolbot.md +666 -0
- package/extensions/agency-agents/README.md +301 -0
- package/extensions/agency-agents/agents/CONTRIBUTING.md +353 -0
- package/extensions/agency-agents/agents/README.md +602 -0
- package/extensions/agency-agents/agents/design/design-brand-guardian.md +320 -0
- package/extensions/agency-agents/agents/design/design-image-prompt-engineer.md +234 -0
- package/extensions/agency-agents/agents/design/design-ui-designer.md +381 -0
- package/extensions/agency-agents/agents/design/design-ux-architect.md +467 -0
- package/extensions/agency-agents/agents/design/design-ux-researcher.md +327 -0
- package/extensions/agency-agents/agents/design/design-visual-storyteller.md +147 -0
- package/extensions/agency-agents/agents/design/design-whimsy-injector.md +436 -0
- package/extensions/agency-agents/agents/engineering/engineering-ai-engineer.md +144 -0
- package/extensions/agency-agents/agents/engineering/engineering-backend-architect.md +233 -0
- package/extensions/agency-agents/agents/engineering/engineering-devops-automator.md +374 -0
- package/extensions/agency-agents/agents/engineering/engineering-frontend-developer.md +223 -0
- package/extensions/agency-agents/agents/engineering/engineering-mobile-app-builder.md +491 -0
- package/extensions/agency-agents/agents/engineering/engineering-rapid-prototyper.md +460 -0
- package/extensions/agency-agents/agents/engineering/engineering-security-engineer.md +275 -0
- package/extensions/agency-agents/agents/engineering/engineering-senior-developer.md +174 -0
- package/extensions/agency-agents/agents/examples/README.md +48 -0
- package/extensions/agency-agents/agents/examples/nexus-spatial-discovery.md +852 -0
- package/extensions/agency-agents/agents/examples/workflow-landing-page.md +119 -0
- package/extensions/agency-agents/agents/examples/workflow-startup-mvp.md +155 -0
- package/extensions/agency-agents/agents/integrations/README.md +117 -0
- package/extensions/agency-agents/agents/integrations/aider/README.md +38 -0
- package/extensions/agency-agents/agents/integrations/antigravity/README.md +49 -0
- package/extensions/agency-agents/agents/integrations/claude-code/README.md +31 -0
- package/extensions/agency-agents/agents/integrations/cursor/README.md +38 -0
- package/extensions/agency-agents/agents/integrations/gemini-cli/README.md +36 -0
- package/extensions/agency-agents/agents/integrations/opencode/README.md +58 -0
- package/extensions/agency-agents/agents/integrations/windsurf/README.md +26 -0
- package/extensions/agency-agents/agents/marketing/marketing-app-store-optimizer.md +319 -0
- package/extensions/agency-agents/agents/marketing/marketing-content-creator.md +52 -0
- package/extensions/agency-agents/agents/marketing/marketing-growth-hacker.md +52 -0
- package/extensions/agency-agents/agents/marketing/marketing-instagram-curator.md +111 -0
- package/extensions/agency-agents/agents/marketing/marketing-reddit-community-builder.md +121 -0
- package/extensions/agency-agents/agents/marketing/marketing-social-media-strategist.md +123 -0
- package/extensions/agency-agents/agents/marketing/marketing-tiktok-strategist.md +123 -0
- package/extensions/agency-agents/agents/marketing/marketing-twitter-engager.md +124 -0
- package/extensions/agency-agents/agents/marketing/marketing-wechat-official-account.md +143 -0
- package/extensions/agency-agents/agents/marketing/marketing-xiaohongshu-specialist.md +136 -0
- package/extensions/agency-agents/agents/marketing/marketing-zhihu-strategist.md +160 -0
- package/extensions/agency-agents/agents/product/product-feedback-synthesizer.md +117 -0
- package/extensions/agency-agents/agents/product/product-sprint-prioritizer.md +152 -0
- package/extensions/agency-agents/agents/product/product-trend-researcher.md +157 -0
- package/extensions/agency-agents/agents/project-management/project-management-experiment-tracker.md +196 -0
- package/extensions/agency-agents/agents/project-management/project-management-project-shepherd.md +192 -0
- package/extensions/agency-agents/agents/project-management/project-management-studio-operations.md +198 -0
- package/extensions/agency-agents/agents/project-management/project-management-studio-producer.md +201 -0
- package/extensions/agency-agents/agents/project-management/project-manager-senior.md +133 -0
- package/extensions/agency-agents/agents/scripts/convert.sh +362 -0
- package/extensions/agency-agents/agents/scripts/install.sh +465 -0
- package/extensions/agency-agents/agents/scripts/lint-agents.sh +115 -0
- package/extensions/agency-agents/agents/spatial-computing/macos-spatial-metal-engineer.md +335 -0
- package/extensions/agency-agents/agents/spatial-computing/terminal-integration-specialist.md +68 -0
- package/extensions/agency-agents/agents/spatial-computing/visionos-spatial-engineer.md +52 -0
- package/extensions/agency-agents/agents/spatial-computing/xr-cockpit-interaction-specialist.md +30 -0
- package/extensions/agency-agents/agents/spatial-computing/xr-immersive-developer.md +30 -0
- package/extensions/agency-agents/agents/spatial-computing/xr-interface-architect.md +30 -0
- package/extensions/agency-agents/agents/specialized/agentic-identity-trust.md +367 -0
- package/extensions/agency-agents/agents/specialized/agents-orchestrator.md +365 -0
- package/extensions/agency-agents/agents/specialized/data-analytics-reporter.md +52 -0
- package/extensions/agency-agents/agents/specialized/data-consolidation-agent.md +58 -0
- package/extensions/agency-agents/agents/specialized/lsp-index-engineer.md +312 -0
- package/extensions/agency-agents/agents/specialized/report-distribution-agent.md +63 -0
- package/extensions/agency-agents/agents/specialized/sales-data-extraction-agent.md +65 -0
- package/extensions/agency-agents/agents/strategy/EXECUTIVE-BRIEF.md +95 -0
- package/extensions/agency-agents/agents/strategy/QUICKSTART.md +194 -0
- package/extensions/agency-agents/agents/strategy/coordination/agent-activation-prompts.md +401 -0
- package/extensions/agency-agents/agents/strategy/coordination/handoff-templates.md +357 -0
- package/extensions/agency-agents/agents/strategy/nexus-strategy.md +1110 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-0-discovery.md +178 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-1-strategy.md +238 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-2-foundation.md +278 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-3-build.md +286 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-4-hardening.md +332 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-5-launch.md +277 -0
- package/extensions/agency-agents/agents/strategy/playbooks/phase-6-operate.md +318 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-enterprise-feature.md +157 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-incident-response.md +217 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-marketing-campaign.md +187 -0
- package/extensions/agency-agents/agents/strategy/runbooks/scenario-startup-mvp.md +154 -0
- package/extensions/agency-agents/agents/support/support-analytics-reporter.md +363 -0
- package/extensions/agency-agents/agents/support/support-executive-summary-generator.md +210 -0
- package/extensions/agency-agents/agents/support/support-finance-tracker.md +440 -0
- package/extensions/agency-agents/agents/support/support-infrastructure-maintainer.md +616 -0
- package/extensions/agency-agents/agents/support/support-legal-compliance-checker.md +586 -0
- package/extensions/agency-agents/agents/support/support-support-responder.md +583 -0
- package/extensions/agency-agents/agents/testing/testing-accessibility-auditor.md +313 -0
- package/extensions/agency-agents/agents/testing/testing-api-tester.md +304 -0
- package/extensions/agency-agents/agents/testing/testing-evidence-collector.md +208 -0
- package/extensions/agency-agents/agents/testing/testing-performance-benchmarker.md +266 -0
- package/extensions/agency-agents/agents/testing/testing-reality-checker.md +236 -0
- package/extensions/agency-agents/agents/testing/testing-test-results-analyzer.md +303 -0
- package/extensions/agency-agents/agents/testing/testing-tool-evaluator.md +392 -0
- package/extensions/agency-agents/agents/testing/testing-workflow-optimizer.md +448 -0
- package/extensions/agency-agents/index.ts +733 -0
- package/extensions/agency-agents/node_modules/.bin/jiti +21 -0
- package/extensions/agency-agents/node_modules/.bin/tsc +21 -0
- package/extensions/agency-agents/node_modules/.bin/tsserver +21 -0
- package/extensions/agency-agents/node_modules/.bin/tsx +21 -0
- package/extensions/agency-agents/node_modules/.bin/vite +21 -0
- package/extensions/agency-agents/node_modules/.bin/vitest +21 -0
- package/extensions/agency-agents/node_modules/.bin/yaml +21 -0
- package/extensions/agency-agents/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/extensions/agency-agents/package.json +25 -0
- package/extensions/agency-agents/poolbot.plugin.json +11 -0
- package/extensions/agency-agents/src/AgencyAgentsService.test.ts +443 -0
- package/extensions/agency-agents/src/AgencyAgentsService.ts +288 -0
- package/extensions/agency-agents/src/types.ts +147 -0
- package/extensions/agency-agents/vitest.config.ts +8 -0
- package/extensions/hexstrike-ai/README.md +98 -0
- package/extensions/hexstrike-ai/node_modules/.bin/tsc +21 -0
- package/extensions/hexstrike-ai/node_modules/.bin/tsserver +21 -0
- package/extensions/hexstrike-ai/package.json +29 -0
- package/extensions/hexstrike-ai/poolbot.plugin.json +31 -0
- package/extensions/hexstrike-ai/src/client.ts +91 -0
- package/extensions/hexstrike-ai/src/index.ts +170 -0
- package/extensions/hexstrike-ai/src/server/hexstrike_mcp.py +5470 -0
- package/extensions/hexstrike-ai/src/server/hexstrike_server.py +17289 -0
- package/extensions/hexstrike-ai/src/server/requirements.txt +84 -0
- package/extensions/hexstrike-ai/src/server-manager.ts +83 -0
- package/extensions/hexstrike-ai/tsconfig.json +20 -0
- package/extensions/page-agent/README.md +159 -0
- package/extensions/page-agent/index.ts +595 -0
- package/extensions/page-agent/node_modules/.bin/jiti +21 -0
- package/extensions/page-agent/node_modules/.bin/playwright +21 -0
- package/extensions/page-agent/node_modules/.bin/tsc +21 -0
- package/extensions/page-agent/node_modules/.bin/tsserver +21 -0
- package/extensions/page-agent/node_modules/.bin/tsx +21 -0
- package/extensions/page-agent/node_modules/.bin/vitest +21 -0
- package/extensions/page-agent/node_modules/.bin/yaml +21 -0
- package/extensions/page-agent/package.json +43 -0
- package/extensions/page-agent/poolbot.plugin.json +24 -0
- package/extensions/page-agent/src/PageAgentService.test.ts +517 -0
- package/extensions/page-agent/src/PageAgentService.ts +636 -0
- package/extensions/page-agent/src/PoolBotPageController.test.ts +358 -0
- package/extensions/page-agent/src/PoolBotPageController.ts +245 -0
- package/extensions/page-agent/src/index.ts +20 -0
- package/extensions/page-agent/src/tools.test.ts +231 -0
- package/extensions/page-agent/src/tools.ts +167 -0
- package/extensions/page-agent/src/types.ts +198 -0
- package/extensions/xyops/README.md +227 -0
- package/extensions/xyops/index.ts +342 -0
- package/extensions/xyops/node_modules/.bin/jiti +21 -0
- package/extensions/xyops/node_modules/.bin/tsc +21 -0
- package/extensions/xyops/node_modules/.bin/tsserver +21 -0
- package/extensions/xyops/node_modules/.bin/tsx +21 -0
- package/extensions/xyops/node_modules/.bin/vitest +21 -0
- package/extensions/xyops/node_modules/.bin/yaml +21 -0
- package/extensions/xyops/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/extensions/xyops/package.json +39 -0
- package/extensions/xyops/poolbot.plugin.json +21 -0
- package/extensions/xyops/src/client.test.ts +467 -0
- package/extensions/xyops/src/client.ts +157 -0
- package/extensions/xyops/src/types.ts +147 -0
- package/extensions/xyops/vitest.config.ts +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# XYOps Extension for PoolBot
|
|
2
|
+
|
|
3
|
+
Workflow automation and job scheduling integration for PoolBot. Connect to XYOps servers to manage jobs, schedules, and monitor execution events.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Job Management**: Create, update, delete, and list automation jobs
|
|
8
|
+
- **Schedule Management**: Cron-based scheduling with enable/disable controls
|
|
9
|
+
- **Event Monitoring**: Track job execution status and output
|
|
10
|
+
- **System Health**: Monitor XYOps server status and version
|
|
11
|
+
- **Type-Safe API**: Full TypeScript support with comprehensive types
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Install as PoolBot extension
|
|
17
|
+
poolbot extension install @poolbot/xyops
|
|
18
|
+
|
|
19
|
+
# Or manual installation
|
|
20
|
+
cd extensions/xyops
|
|
21
|
+
pnpm install
|
|
22
|
+
pnpm build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Configuration
|
|
26
|
+
|
|
27
|
+
Add to your PoolBot configuration:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"xyops": {
|
|
32
|
+
"baseUrl": "http://localhost:8080",
|
|
33
|
+
"apiKey": "${XYOPS_API_KEY}",
|
|
34
|
+
"timeout": 30000
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
### Initialize Client
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { XYOpsClient } from '@poolbot/xyops'
|
|
45
|
+
|
|
46
|
+
const client = new XYOpsClient({
|
|
47
|
+
baseUrl: 'http://localhost:8080',
|
|
48
|
+
apiKey: 'your-api-key',
|
|
49
|
+
timeout: 30000
|
|
50
|
+
})
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Job Management
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
// Create a job
|
|
57
|
+
const job = await client.createJob({
|
|
58
|
+
title: 'Daily Backup',
|
|
59
|
+
category: 'maintenance',
|
|
60
|
+
plugin: 'backup-plugin',
|
|
61
|
+
params: { target: '/data', destination: '/backup' },
|
|
62
|
+
enabled: true
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
// List all jobs
|
|
66
|
+
const jobs = await client.listJobs()
|
|
67
|
+
|
|
68
|
+
// Get job details
|
|
69
|
+
const jobDetails = await client.getJob(job.id)
|
|
70
|
+
|
|
71
|
+
// Update job
|
|
72
|
+
await client.updateJob(job.id, {
|
|
73
|
+
title: 'Daily Backup - Updated',
|
|
74
|
+
enabled: false
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
// Delete job
|
|
78
|
+
await client.deleteJob(job.id)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Schedule Management
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// Create a schedule (runs daily at 2 AM)
|
|
85
|
+
const schedule = await client.createSchedule({
|
|
86
|
+
jobId: job.id,
|
|
87
|
+
cron: '0 2 * * *',
|
|
88
|
+
enabled: true
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
// List schedules for a job
|
|
92
|
+
const schedules = await client.listSchedules(job.id)
|
|
93
|
+
|
|
94
|
+
// Update schedule
|
|
95
|
+
await client.updateSchedule(schedule.id, {
|
|
96
|
+
cron: '0 3 * * *',
|
|
97
|
+
enabled: false
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
// Delete schedule
|
|
101
|
+
await client.deleteSchedule(schedule.id)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Event Monitoring
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// List events for a job
|
|
108
|
+
const events = await client.listEvents(job.id)
|
|
109
|
+
|
|
110
|
+
// Get specific event
|
|
111
|
+
const event = await client.getEvent(eventId)
|
|
112
|
+
|
|
113
|
+
// Stream events (real-time updates)
|
|
114
|
+
const eventStream = client.streamEvents()
|
|
115
|
+
for await (const event of eventStream) {
|
|
116
|
+
console.log(`Event ${event.id}: ${event.status}`)
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### System Operations
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
// Get server info
|
|
124
|
+
const info = await client.getInfo()
|
|
125
|
+
console.log(`XYOps version: ${info.version}`)
|
|
126
|
+
|
|
127
|
+
// Health check
|
|
128
|
+
const health = await client.healthCheck()
|
|
129
|
+
console.log(`Status: ${health.status}`)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Data Types
|
|
133
|
+
|
|
134
|
+
### XYOpsJob
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
interface XYOpsJob {
|
|
138
|
+
id: string
|
|
139
|
+
title: string
|
|
140
|
+
category: string
|
|
141
|
+
plugin: string
|
|
142
|
+
params: Record<string, unknown>
|
|
143
|
+
enabled: boolean
|
|
144
|
+
created: number
|
|
145
|
+
modified: number
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### XYOpsSchedule
|
|
150
|
+
|
|
151
|
+
```typescript
|
|
152
|
+
interface XYOpsSchedule {
|
|
153
|
+
id: string
|
|
154
|
+
jobId: string
|
|
155
|
+
cron: string
|
|
156
|
+
enabled: boolean
|
|
157
|
+
created: number
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### XYOpsEvent
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
interface XYOpsEvent {
|
|
165
|
+
id: string
|
|
166
|
+
jobId: string
|
|
167
|
+
status: 'pending' | 'running' | 'success' | 'error' | 'aborted'
|
|
168
|
+
startTime: number
|
|
169
|
+
endTime?: number
|
|
170
|
+
output?: string
|
|
171
|
+
error?: string
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Error Handling
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
import { XYOpsError } from '@poolbot/xyops'
|
|
179
|
+
|
|
180
|
+
try {
|
|
181
|
+
await client.getJob('invalid-id')
|
|
182
|
+
} catch (error) {
|
|
183
|
+
if (error instanceof XYOpsError) {
|
|
184
|
+
console.log(`XYOps Error: ${error.message}`)
|
|
185
|
+
console.log(`Status: ${error.statusCode}`)
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Testing
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# Run all tests
|
|
194
|
+
pnpm test
|
|
195
|
+
|
|
196
|
+
# Watch mode
|
|
197
|
+
pnpm test:watch
|
|
198
|
+
|
|
199
|
+
# Coverage
|
|
200
|
+
pnpm test:coverage
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## API Reference
|
|
204
|
+
|
|
205
|
+
### XYOpsClient
|
|
206
|
+
|
|
207
|
+
| Method | Description |
|
|
208
|
+
|--------|-------------|
|
|
209
|
+
| `createJob(job)` | Create a new job |
|
|
210
|
+
| `getJob(id)` | Get job by ID |
|
|
211
|
+
| `updateJob(id, updates)` | Update job fields |
|
|
212
|
+
| `deleteJob(id)` | Delete a job |
|
|
213
|
+
| `listJobs()` | List all jobs |
|
|
214
|
+
| `createSchedule(schedule)` | Create a schedule |
|
|
215
|
+
| `getSchedule(id)` | Get schedule by ID |
|
|
216
|
+
| `updateSchedule(id, updates)` | Update schedule |
|
|
217
|
+
| `deleteSchedule(id)` | Delete a schedule |
|
|
218
|
+
| `listSchedules(jobId)` | List schedules for job |
|
|
219
|
+
| `listEvents(jobId)` | List events for job |
|
|
220
|
+
| `getEvent(id)` | Get event by ID |
|
|
221
|
+
| `streamEvents()` | Stream real-time events |
|
|
222
|
+
| `getInfo()` | Get server info |
|
|
223
|
+
| `healthCheck()` | Check server health |
|
|
224
|
+
|
|
225
|
+
## License
|
|
226
|
+
|
|
227
|
+
MIT
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XYOps Plugin for PoolBot
|
|
3
|
+
*
|
|
4
|
+
* Professional integration of XYOps workflow automation capabilities
|
|
5
|
+
* into PoolBot's native infrastructure.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { PoolBotPluginDefinition, PoolBotPluginApi } from "../../src/plugins/types.js";
|
|
9
|
+
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
|
|
10
|
+
import { XYOpsClient } from "./src/client.js";
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
id: "xyops",
|
|
14
|
+
name: "XYOps",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
description: "XYOps workflow automation integration for PoolBot",
|
|
17
|
+
|
|
18
|
+
async register(api: PoolBotPluginApi) {
|
|
19
|
+
const logger = api.logger;
|
|
20
|
+
const pluginCfg = (api.pluginConfig ?? {}) as { baseUrl?: string; apiKey?: string };
|
|
21
|
+
const config = {
|
|
22
|
+
baseUrl: pluginCfg.baseUrl ?? "http://localhost:3012",
|
|
23
|
+
apiKey: pluginCfg.apiKey ?? process.env.XYOPS_API_KEY,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const client = new XYOpsClient(config);
|
|
27
|
+
logger.info(`[xyops] Client initialized: ${config.baseUrl}`);
|
|
28
|
+
|
|
29
|
+
// Register tools
|
|
30
|
+
api.registerTool({
|
|
31
|
+
name: "xyops_list_jobs",
|
|
32
|
+
label: "List XYOps Jobs",
|
|
33
|
+
description: "List all jobs in XYOps",
|
|
34
|
+
parameters: {
|
|
35
|
+
type: "object",
|
|
36
|
+
properties: {
|
|
37
|
+
offset: { type: "number", description: "Pagination offset" },
|
|
38
|
+
limit: { type: "number", description: "Pagination limit" },
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
42
|
+
const jobs = await client.listJobs(
|
|
43
|
+
(args.offset as number) ?? 0,
|
|
44
|
+
(args.limit as number) ?? 50
|
|
45
|
+
);
|
|
46
|
+
return {
|
|
47
|
+
content: [{ type: "text", text: JSON.stringify(jobs, null, 2) }],
|
|
48
|
+
details: jobs,
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
api.registerTool({
|
|
54
|
+
name: "xyops_get_job",
|
|
55
|
+
label: "Get XYOps Job",
|
|
56
|
+
description: "Get job details by ID",
|
|
57
|
+
parameters: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
jobId: { type: "string", description: "Job ID" },
|
|
61
|
+
},
|
|
62
|
+
required: ["jobId"],
|
|
63
|
+
},
|
|
64
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
65
|
+
const job = await client.getJob(args.jobId as string);
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: "text", text: JSON.stringify(job, null, 2) }],
|
|
68
|
+
details: job,
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
api.registerTool({
|
|
74
|
+
name: "xyops_create_job",
|
|
75
|
+
label: "Create XYOps Job",
|
|
76
|
+
description: "Create a new XYOps job",
|
|
77
|
+
parameters: {
|
|
78
|
+
type: "object",
|
|
79
|
+
properties: {
|
|
80
|
+
title: { type: "string", description: "Job title" },
|
|
81
|
+
category: { type: "string", description: "Job category" },
|
|
82
|
+
plugin: { type: "string", description: "Plugin to use" },
|
|
83
|
+
params: { type: "object", description: "Job parameters" },
|
|
84
|
+
enabled: { type: "boolean", description: "Whether job is enabled" },
|
|
85
|
+
},
|
|
86
|
+
required: ["title", "category", "plugin"],
|
|
87
|
+
},
|
|
88
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
89
|
+
const job = await client.createJob({
|
|
90
|
+
title: args.title as string,
|
|
91
|
+
category: args.category as string,
|
|
92
|
+
plugin: args.plugin as string,
|
|
93
|
+
params: (args.params as Record<string, unknown>) ?? {},
|
|
94
|
+
enabled: (args.enabled as boolean) ?? true,
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
content: [{ type: "text", text: JSON.stringify(job, null, 2) }],
|
|
98
|
+
details: job,
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
api.registerTool({
|
|
104
|
+
name: "xyops_update_job",
|
|
105
|
+
label: "Update XYOps Job",
|
|
106
|
+
description: "Update an existing XYOps job",
|
|
107
|
+
parameters: {
|
|
108
|
+
type: "object",
|
|
109
|
+
properties: {
|
|
110
|
+
jobId: { type: "string", description: "Job ID" },
|
|
111
|
+
title: { type: "string" },
|
|
112
|
+
category: { type: "string" },
|
|
113
|
+
plugin: { type: "string" },
|
|
114
|
+
params: { type: "object" },
|
|
115
|
+
enabled: { type: "boolean" },
|
|
116
|
+
},
|
|
117
|
+
required: ["jobId"],
|
|
118
|
+
},
|
|
119
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
120
|
+
const { jobId, ...updates } = args;
|
|
121
|
+
const job = await client.updateJob(jobId as string, updates);
|
|
122
|
+
return {
|
|
123
|
+
content: [{ type: "text", text: JSON.stringify(job, null, 2) }],
|
|
124
|
+
details: job,
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
api.registerTool({
|
|
130
|
+
name: "xyops_delete_job",
|
|
131
|
+
label: "Delete XYOps Job",
|
|
132
|
+
description: "Delete a job from XYOps",
|
|
133
|
+
parameters: {
|
|
134
|
+
type: "object",
|
|
135
|
+
properties: {
|
|
136
|
+
jobId: { type: "string", description: "Job ID to delete" },
|
|
137
|
+
},
|
|
138
|
+
required: ["jobId"],
|
|
139
|
+
},
|
|
140
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
141
|
+
await client.deleteJob(args.jobId as string);
|
|
142
|
+
const result = { success: true, jobId: args.jobId };
|
|
143
|
+
return {
|
|
144
|
+
content: [{ type: "text", text: JSON.stringify(result) }],
|
|
145
|
+
details: result,
|
|
146
|
+
};
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
api.registerTool({
|
|
151
|
+
name: "xyops_run_job",
|
|
152
|
+
label: "Run XYOps Job",
|
|
153
|
+
description: "Run a job immediately",
|
|
154
|
+
parameters: {
|
|
155
|
+
type: "object",
|
|
156
|
+
properties: {
|
|
157
|
+
jobId: { type: "string", description: "Job ID to run" },
|
|
158
|
+
params: { type: "object", description: "Optional runtime parameters" },
|
|
159
|
+
},
|
|
160
|
+
required: ["jobId"],
|
|
161
|
+
},
|
|
162
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
163
|
+
const result = await client.runJob(
|
|
164
|
+
args.jobId as string,
|
|
165
|
+
(args.params as Record<string, unknown>) ?? undefined
|
|
166
|
+
);
|
|
167
|
+
return {
|
|
168
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
169
|
+
details: result,
|
|
170
|
+
};
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
api.registerTool({
|
|
175
|
+
name: "xyops_list_schedules",
|
|
176
|
+
label: "List XYOps Schedules",
|
|
177
|
+
description: "List job schedules",
|
|
178
|
+
parameters: {
|
|
179
|
+
type: "object",
|
|
180
|
+
properties: {
|
|
181
|
+
jobId: { type: "string", description: "Filter by job ID" },
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
185
|
+
const schedules = await client.listSchedules(args.jobId as string | undefined);
|
|
186
|
+
return {
|
|
187
|
+
content: [{ type: "text", text: JSON.stringify(schedules, null, 2) }],
|
|
188
|
+
details: schedules,
|
|
189
|
+
};
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
api.registerTool({
|
|
194
|
+
name: "xyops_create_schedule",
|
|
195
|
+
label: "Create XYOps Schedule",
|
|
196
|
+
description: "Create a schedule for a job",
|
|
197
|
+
parameters: {
|
|
198
|
+
type: "object",
|
|
199
|
+
properties: {
|
|
200
|
+
jobId: { type: "string", description: "Job ID" },
|
|
201
|
+
cron: { type: "string", description: "Cron expression" },
|
|
202
|
+
enabled: { type: "boolean", description: "Whether schedule is active" },
|
|
203
|
+
},
|
|
204
|
+
required: ["jobId", "cron"],
|
|
205
|
+
},
|
|
206
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
207
|
+
const schedule = await client.createSchedule({
|
|
208
|
+
jobId: args.jobId as string,
|
|
209
|
+
cron: args.cron as string,
|
|
210
|
+
enabled: (args.enabled as boolean) ?? true,
|
|
211
|
+
});
|
|
212
|
+
return {
|
|
213
|
+
content: [{ type: "text", text: JSON.stringify(schedule, null, 2) }],
|
|
214
|
+
details: schedule,
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
api.registerTool({
|
|
220
|
+
name: "xyops_delete_schedule",
|
|
221
|
+
label: "Delete XYOps Schedule",
|
|
222
|
+
description: "Delete a schedule",
|
|
223
|
+
parameters: {
|
|
224
|
+
type: "object",
|
|
225
|
+
properties: {
|
|
226
|
+
scheduleId: { type: "string", description: "Schedule ID" },
|
|
227
|
+
},
|
|
228
|
+
required: ["scheduleId"],
|
|
229
|
+
},
|
|
230
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
231
|
+
await client.deleteSchedule(args.scheduleId as string);
|
|
232
|
+
const result = { success: true, scheduleId: args.scheduleId };
|
|
233
|
+
return {
|
|
234
|
+
content: [{ type: "text", text: JSON.stringify(result) }],
|
|
235
|
+
details: result,
|
|
236
|
+
};
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
api.registerTool({
|
|
241
|
+
name: "xyops_list_events",
|
|
242
|
+
label: "List XYOps Events",
|
|
243
|
+
description: "List job execution events",
|
|
244
|
+
parameters: {
|
|
245
|
+
type: "object",
|
|
246
|
+
properties: {
|
|
247
|
+
jobId: { type: "string", description: "Filter by job ID" },
|
|
248
|
+
limit: { type: "number", description: "Number of events to return" },
|
|
249
|
+
offset: { type: "number", description: "Pagination offset" },
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
253
|
+
const events = await client.listEvents(
|
|
254
|
+
args.jobId as string | undefined,
|
|
255
|
+
(args.limit as number) ?? 50,
|
|
256
|
+
(args.offset as number) ?? 0
|
|
257
|
+
);
|
|
258
|
+
return {
|
|
259
|
+
content: [{ type: "text", text: JSON.stringify(events, null, 2) }],
|
|
260
|
+
details: events,
|
|
261
|
+
};
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
api.registerTool({
|
|
266
|
+
name: "xyops_get_event",
|
|
267
|
+
label: "Get XYOps Event",
|
|
268
|
+
description: "Get event details",
|
|
269
|
+
parameters: {
|
|
270
|
+
type: "object",
|
|
271
|
+
properties: {
|
|
272
|
+
eventId: { type: "string", description: "Event ID" },
|
|
273
|
+
},
|
|
274
|
+
required: ["eventId"],
|
|
275
|
+
},
|
|
276
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
277
|
+
const event = await client.getEvent(args.eventId as string);
|
|
278
|
+
return {
|
|
279
|
+
content: [{ type: "text", text: JSON.stringify(event, null, 2) }],
|
|
280
|
+
details: event,
|
|
281
|
+
};
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
api.registerTool({
|
|
286
|
+
name: "xyops_abort_event",
|
|
287
|
+
label: "Abort XYOps Event",
|
|
288
|
+
description: "Abort a running event",
|
|
289
|
+
parameters: {
|
|
290
|
+
type: "object",
|
|
291
|
+
properties: {
|
|
292
|
+
eventId: { type: "string", description: "Event ID to abort" },
|
|
293
|
+
},
|
|
294
|
+
required: ["eventId"],
|
|
295
|
+
},
|
|
296
|
+
async execute(_toolCallId, args): Promise<AgentToolResult<unknown>> {
|
|
297
|
+
await client.abortEvent(args.eventId as string);
|
|
298
|
+
const result = { success: true, eventId: args.eventId };
|
|
299
|
+
return {
|
|
300
|
+
content: [{ type: "text", text: JSON.stringify(result) }],
|
|
301
|
+
details: result,
|
|
302
|
+
};
|
|
303
|
+
},
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
api.registerTool({
|
|
307
|
+
name: "xyops_get_status",
|
|
308
|
+
label: "Get XYOps Status",
|
|
309
|
+
description: "Get XYOps system status",
|
|
310
|
+
parameters: {
|
|
311
|
+
type: "object",
|
|
312
|
+
properties: {},
|
|
313
|
+
},
|
|
314
|
+
async execute(_toolCallId): Promise<AgentToolResult<unknown>> {
|
|
315
|
+
const status = await client.getStatus();
|
|
316
|
+
return {
|
|
317
|
+
content: [{ type: "text", text: JSON.stringify(status, null, 2) }],
|
|
318
|
+
details: status,
|
|
319
|
+
};
|
|
320
|
+
},
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
api.registerTool({
|
|
324
|
+
name: "xyops_list_plugins",
|
|
325
|
+
label: "List XYOps Plugins",
|
|
326
|
+
description: "List available XYOps plugins",
|
|
327
|
+
parameters: {
|
|
328
|
+
type: "object",
|
|
329
|
+
properties: {},
|
|
330
|
+
},
|
|
331
|
+
async execute(_toolCallId): Promise<AgentToolResult<unknown>> {
|
|
332
|
+
const plugins = await client.listPlugins();
|
|
333
|
+
return {
|
|
334
|
+
content: [{ type: "text", text: JSON.stringify(plugins, null, 2) }],
|
|
335
|
+
details: plugins,
|
|
336
|
+
};
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
logger.info("[xyops] Extension registered with 14 tools");
|
|
341
|
+
},
|
|
342
|
+
} satisfies PoolBotPluginDefinition;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/jiti@2.6.1/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/jiti@2.6.1/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/jiti-cli.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/jiti@2.6.1/node_modules/jiti/lib/jiti-cli.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../typescript/bin/tsc" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/bin/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../typescript/bin/tsserver" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/dist/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/tsx@4.21.0/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/dist/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/tsx@4.21.0/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/dist/cli.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/tsx@4.21.0/node_modules/tsx/dist/cli.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_@types+node@25.2.3__6cb5e51e836830cd2cffacfc8438d429/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_@types+node@25.2.3__6cb5e51e836830cd2cffacfc8438d429/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_@types+node@25.2.3__6cb5e51e836830cd2cffacfc8438d429/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_@types+node@25.2.3__6cb5e51e836830cd2cffacfc8438d429/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../vitest/vitest.mjs" "$@"
|
|
21
|
+
fi
|