@poolzin/pool-bot 2026.3.21 → 2026.3.23
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 +81 -0
- package/dist/acp/bindings-store.js +209 -0
- package/dist/acp/control-plane/runtime-cache.js +54 -0
- package/dist/acp/control-plane/runtime-options.js +215 -0
- package/dist/acp/control-plane/session-actor-queue.js +36 -0
- package/dist/acp/runtime/errors.js +47 -0
- package/dist/acp/runtime/registry.js +86 -0
- package/dist/acp/runtime/types.js +1 -0
- package/dist/acp/translator.js +97 -0
- package/dist/agents/failover-error.js +145 -47
- package/dist/browser/browser-profile-manager.js +319 -0
- package/dist/browser/cdp-proxy-bypass.js +129 -0
- package/dist/browser/cdp-timeouts.js +41 -0
- package/dist/browser/chrome-extension-validator.js +406 -0
- package/dist/browser/chrome-mcp-snapshot.js +222 -0
- package/dist/browser/chrome-mcp.js +421 -0
- package/dist/browser/chrome-mcp.snapshot.js +133 -0
- package/dist/browser/errors.js +67 -0
- package/dist/browser/form-fields.js +22 -0
- package/dist/browser/output-atomic.js +44 -0
- package/dist/browser/profile-capabilities.js +47 -0
- package/dist/browser/safe-filename.js +25 -0
- package/dist/browser/snapshot-roles.js +60 -0
- package/dist/build-info.json +3 -3
- package/dist/commands/security-owner-only.js +86 -0
- package/dist/control-ui/assets/{index-Dvkl4Xlx.js → index-D7shnQwQ.js} +404 -388
- package/dist/control-ui/assets/index-D7shnQwQ.js.map +1 -0
- package/dist/control-ui/index.html +1 -1
- package/dist/cron/cron-filters.js +150 -0
- package/dist/gateway/device-pairing-security.js +197 -0
- package/dist/gateway/event-deduplication.js +167 -0
- package/dist/gateway/run-tracker.js +253 -0
- package/dist/gateway/server-methods/nodes.js +14 -0
- package/dist/gateway/websocket-preauth-security.js +188 -0
- package/dist/infra/errors.js +53 -13
- package/dist/infra/exec-approvals-security.js +217 -0
- package/dist/infra/security/command-analyzer.js +257 -0
- package/dist/plugins/loader.js +16 -8
- package/dist/security/external-content.js +51 -1
- package/dist/sessions/session-costs.js +228 -0
- package/dist/shared/param-key.js +16 -0
- package/dist/shared/poll-params.js +58 -0
- package/dist/shared/polls.js +55 -0
- package/docs/DASHBOARD-GAP-ANALYSIS-AND-PLAN.md +430 -0
- package/docs/FEATURES.md +523 -0
- package/docs/FINAL-IMPLEMENTATION-REVIEW.md +274 -0
- package/docs/FINAL-IMPLEMENTATION-SUMMARY.md +356 -0
- package/docs/FINAL-PROFESSIONAL-EVALUATION.md +312 -0
- package/docs/IMPLEMENTATION-PRIORITY-EVALUATION.md +298 -0
- package/docs/IMPLEMENTATION-PROGRESS.md +237 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE1-2.md +381 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE4.md +389 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE5.md +420 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE6.md +422 -0
- package/docs/IMPLEMENTATION-REVIEW-PHASE7-FINAL.md +184 -0
- package/docs/MIKRODASH-ANALYSIS.md +412 -0
- package/docs/OPENCLAW-GAP-ANALYSIS-FINAL.md +431 -0
- package/docs/OPENCLAW-VS-POOLBOT-ANALYSIS.md +351 -0
- package/docs/PHASE-7-SUMMARY.md +144 -0
- package/docs/POOLBOT-OFFICE-PLAN.md +697 -0
- package/docs/PROJECT-FINAL-STATUS.md +237 -0
- package/docs/README.md +116 -0
- package/docs/REAL-IMPROVEMENTS-EVALUATION.md +477 -0
- package/docs/SECURITY-HARDENING-IMPLEMENTATION.md +161 -0
- package/docs/channels/googlechat.md +235 -206
- package/docs/channels/irc.md +332 -0
- package/docs/channels/nostr.md +255 -168
- package/docs/components/command-palette.md +166 -0
- package/docs/components/login-gate.md +219 -0
- package/docs/getting-started/installation.md +191 -0
- package/docs/getting-started/introduction.md +120 -0
- package/docs/improvements/USAGE-GUIDE.md +359 -0
- package/docs/plans/2026-03-15-openclaw-features-implementation.md +1632 -0
- package/docs/reference/deadcode-detection.md +72 -0
- package/extensions/acpx/node_modules/.bin/acpx +21 -0
- package/extensions/agency-agents/node_modules/.bin/vite +4 -4
- package/extensions/agency-agents/node_modules/.bin/vitest +2 -2
- package/extensions/googlechat/node_modules/.bin/tsc +21 -0
- package/extensions/googlechat/node_modules/.bin/tsserver +21 -0
- package/extensions/googlechat/node_modules/.bin/vitest +21 -0
- package/extensions/googlechat/package.json +11 -28
- package/extensions/googlechat/src/googlechat-channel.test.ts +60 -0
- package/extensions/googlechat/src/googlechat-channel.ts +120 -0
- package/extensions/googlechat/src/index.ts +14 -0
- package/extensions/irc/node_modules/.bin/tsc +21 -0
- package/extensions/irc/node_modules/.bin/tsserver +21 -0
- package/extensions/irc/node_modules/.bin/vitest +21 -0
- package/extensions/irc/package.json +16 -8
- package/extensions/irc/src/index.ts +14 -0
- package/extensions/irc/src/irc-channel.test.ts +43 -0
- package/extensions/irc/src/irc-channel.ts +191 -0
- package/extensions/keyed-async-queue/node_modules/.bin/tsc +21 -0
- package/extensions/keyed-async-queue/node_modules/.bin/tsserver +21 -0
- package/extensions/keyed-async-queue/node_modules/.bin/vitest +21 -0
- package/extensions/keyed-async-queue/package.json +20 -0
- package/extensions/keyed-async-queue/src/index.ts +14 -0
- package/extensions/keyed-async-queue/src/queue.test.ts +135 -0
- package/extensions/keyed-async-queue/src/queue.ts +200 -0
- package/extensions/memory-core/node_modules/.bin/tsc +21 -0
- package/extensions/memory-core/node_modules/.bin/tsserver +21 -0
- package/extensions/memory-core/node_modules/.bin/vitest +21 -0
- package/extensions/memory-core/package.json +11 -8
- package/extensions/memory-core/src/index.ts +14 -0
- package/extensions/memory-core/src/memory-manager.test.ts +124 -0
- package/extensions/memory-core/src/memory-manager.ts +186 -0
- package/extensions/nostr/node_modules/.bin/tsc +2 -2
- package/extensions/nostr/node_modules/.bin/tsserver +2 -2
- package/extensions/nostr/node_modules/.bin/vitest +21 -0
- package/extensions/nostr/package.json +15 -24
- package/extensions/nostr/src/index.ts +14 -0
- package/extensions/nostr/src/nostr-channel.test.ts +55 -0
- package/extensions/nostr/src/nostr-channel.ts +228 -0
- package/extensions/page-agent/node_modules/.bin/vitest +2 -2
- package/extensions/test-utils/node_modules/.bin/jiti +21 -0
- package/extensions/test-utils/node_modules/.bin/playwright +21 -0
- package/extensions/test-utils/node_modules/.bin/tsx +21 -0
- package/extensions/test-utils/node_modules/.bin/vite +21 -0
- package/extensions/test-utils/node_modules/.bin/vitest +21 -0
- package/extensions/test-utils/node_modules/.bin/yaml +21 -0
- package/extensions/xyops/node_modules/.bin/vitest +2 -2
- package/package.json +2 -1
- package/dist/control-ui/assets/index-Dvkl4Xlx.js.map +0 -1
- package/extensions/googlechat/node_modules/.bin/poolbot +0 -21
- package/extensions/memory-core/node_modules/.bin/poolbot +0 -21
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nostr Channel Implementation
|
|
3
|
+
* Supports publishing to relays, subscribing to events, and NIP-04 DMs
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
generateSecretKey,
|
|
8
|
+
getPublicKey,
|
|
9
|
+
signEvent,
|
|
10
|
+
verifyEvent,
|
|
11
|
+
type Event as NostrEvent,
|
|
12
|
+
type Filter,
|
|
13
|
+
} from "nostr-tools";
|
|
14
|
+
import type { Channel, ChannelMessage, ChannelPresence } from "../../../src/channels/types.js";
|
|
15
|
+
|
|
16
|
+
export type NostrConfig = {
|
|
17
|
+
relays: string[];
|
|
18
|
+
privateKey?: string; // hex encoded
|
|
19
|
+
publicKey?: string; // hex encoded
|
|
20
|
+
subscribeFilter?: Filter;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export class NostrChannel implements Channel {
|
|
24
|
+
public readonly id = "nostr";
|
|
25
|
+
public readonly name = "Nostr";
|
|
26
|
+
|
|
27
|
+
private config: NostrConfig;
|
|
28
|
+
private secretKey?: Uint8Array;
|
|
29
|
+
private publicKey: string;
|
|
30
|
+
private connected = false;
|
|
31
|
+
private messageCallback?: (message: ChannelMessage) => void;
|
|
32
|
+
private relayConnections: any[] = [];
|
|
33
|
+
|
|
34
|
+
constructor(config: NostrConfig) {
|
|
35
|
+
this.config = config;
|
|
36
|
+
|
|
37
|
+
if (config.privateKey) {
|
|
38
|
+
this.secretKey = hexToBytes(config.privateKey);
|
|
39
|
+
this.publicKey = getPublicKey(this.secretKey);
|
|
40
|
+
} else if (config.publicKey) {
|
|
41
|
+
this.publicKey = config.publicKey;
|
|
42
|
+
} else {
|
|
43
|
+
// Generate new keypair
|
|
44
|
+
this.secretKey = generateSecretKey();
|
|
45
|
+
this.publicKey = getPublicKey(this.secretKey);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async connect(): Promise<void> {
|
|
50
|
+
try {
|
|
51
|
+
// Import relay library dynamically
|
|
52
|
+
const { SimplePool } = await import("nostr-tools/pool");
|
|
53
|
+
const pool = new SimplePool();
|
|
54
|
+
|
|
55
|
+
// Connect to relays
|
|
56
|
+
this.relayConnections = this.config.relays.map((url) => {
|
|
57
|
+
const relay = pool.ensureRelay(url);
|
|
58
|
+
return relay;
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
this.connected = true;
|
|
62
|
+
|
|
63
|
+
// Subscribe to events if filter provided
|
|
64
|
+
if (this.config.subscribeFilter) {
|
|
65
|
+
this.subscribe(this.config.subscribeFilter);
|
|
66
|
+
}
|
|
67
|
+
} catch (error) {
|
|
68
|
+
throw new Error(`Nostr connection failed: ${(error as Error).message}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async disconnect(): Promise<void> {
|
|
73
|
+
for (const relay of this.relayConnections) {
|
|
74
|
+
relay?.close?.();
|
|
75
|
+
}
|
|
76
|
+
this.relayConnections = [];
|
|
77
|
+
this.connected = false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async publishEvent(event: NostrEvent): Promise<void> {
|
|
81
|
+
if (!this.connected) {
|
|
82
|
+
throw new Error("Nostr channel not connected");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const { SimplePool } = await import("nostr-tools/pool");
|
|
86
|
+
const pool = new SimplePool();
|
|
87
|
+
|
|
88
|
+
const signedEvent = this.secretKey ? signEvent(event, this.secretKey) : event;
|
|
89
|
+
|
|
90
|
+
const publishResults = await Promise.allSettled(
|
|
91
|
+
this.config.relays.map((url) => pool.publish(url, signedEvent)),
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
const successCount = publishResults.filter((r) => r.status === "fulfilled").length;
|
|
95
|
+
if (successCount === 0) {
|
|
96
|
+
throw new Error("Failed to publish to any relay");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async sendMessage(message: ChannelMessage): Promise<void> {
|
|
101
|
+
const event: NostrEvent = {
|
|
102
|
+
kind: 1, // Text note
|
|
103
|
+
pubkey: this.publicKey,
|
|
104
|
+
created_at: Math.floor(Date.now() / 1000),
|
|
105
|
+
tags: message.threadId ? [["e", message.threadId]] : [],
|
|
106
|
+
content: message.text,
|
|
107
|
+
id: "",
|
|
108
|
+
sig: "",
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
await this.publishEvent(event);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
async sendDirectMessage(recipientPubkey: string, message: string): Promise<void> {
|
|
115
|
+
if (!this.secretKey) {
|
|
116
|
+
throw new Error("Cannot send DM without private key");
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const { nip04 } = await import("nostr-tools/nip04");
|
|
120
|
+
const encrypted = await nip04.encrypt(this.secretKey, recipientPubkey, message);
|
|
121
|
+
|
|
122
|
+
const event: NostrEvent = {
|
|
123
|
+
kind: 4, // Direct message
|
|
124
|
+
pubkey: this.publicKey,
|
|
125
|
+
created_at: Math.floor(Date.now() / 1000),
|
|
126
|
+
tags: [["p", recipientPubkey]],
|
|
127
|
+
content: encrypted,
|
|
128
|
+
id: "",
|
|
129
|
+
sig: "",
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
await this.publishEvent(event);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
async subscribe(filter: Filter): Promise<void> {
|
|
136
|
+
if (!this.connected) {
|
|
137
|
+
throw new Error("Nostr channel not connected");
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const { SimplePool } = await import("nostr-tools/pool");
|
|
141
|
+
const pool = new SimplePool();
|
|
142
|
+
|
|
143
|
+
const sub = pool.subscribeMany(this.config.relays, [filter], {
|
|
144
|
+
onevent: (event) => {
|
|
145
|
+
if (this.messageCallback) {
|
|
146
|
+
this.messageCallback({
|
|
147
|
+
id: event.id,
|
|
148
|
+
text: event.content,
|
|
149
|
+
from: event.pubkey,
|
|
150
|
+
timestamp: event.created_at * 1000,
|
|
151
|
+
threadId: event.tags.find((t) => t[0] === "e")?.[1],
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Store subscription for cleanup
|
|
158
|
+
this.relayConnections.push(sub);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
async receiveMessages(callback: (message: ChannelMessage) => void): Promise<void> {
|
|
162
|
+
this.messageCallback = callback;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
async getPresences(): Promise<ChannelPresence[]> {
|
|
166
|
+
// Nostr doesn't have presence tracking
|
|
167
|
+
// Return public key as a presence
|
|
168
|
+
return [
|
|
169
|
+
{
|
|
170
|
+
channelId: this.publicKey,
|
|
171
|
+
userId: this.publicKey,
|
|
172
|
+
status: "online",
|
|
173
|
+
lastSeen: Date.now(),
|
|
174
|
+
},
|
|
175
|
+
];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
getStatus(): "connected" | "disconnected" | "error" {
|
|
179
|
+
return this.connected ? "connected" : "disconnected";
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
getPublicKey(): string {
|
|
183
|
+
return this.publicKey;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
getProfile(): Promise<{ name?: string; about?: string; picture?: string }> {
|
|
187
|
+
return new Promise(async (resolve) => {
|
|
188
|
+
const { SimplePool } = await import("nostr-tools/pool");
|
|
189
|
+
const pool = new SimplePool();
|
|
190
|
+
|
|
191
|
+
const profileFilter: Filter = {
|
|
192
|
+
kinds: [0], // Kind 0 is user metadata
|
|
193
|
+
authors: [this.publicKey],
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
const events = await pool.querySync(this.config.relays, profileFilter);
|
|
197
|
+
const profileEvent = events[0];
|
|
198
|
+
|
|
199
|
+
if (profileEvent) {
|
|
200
|
+
try {
|
|
201
|
+
resolve(JSON.parse(profileEvent.content));
|
|
202
|
+
} catch {
|
|
203
|
+
resolve({});
|
|
204
|
+
}
|
|
205
|
+
} else {
|
|
206
|
+
resolve({});
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Convert hex string to Uint8Array
|
|
214
|
+
*/
|
|
215
|
+
function hexToBytes(hex: string): Uint8Array {
|
|
216
|
+
const bytes = new Uint8Array(hex.length / 2);
|
|
217
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
218
|
+
bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
|
|
219
|
+
}
|
|
220
|
+
return bytes;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Create Nostr channel from config
|
|
225
|
+
*/
|
|
226
|
+
export function createNostrChannel(config: NostrConfig): NostrChannel {
|
|
227
|
+
return new NostrChannel(config);
|
|
228
|
+
}
|
|
@@ -10,9 +10,9 @@ case `uname` in
|
|
|
10
10
|
esac
|
|
11
11
|
|
|
12
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.
|
|
13
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules"
|
|
14
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.
|
|
15
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
16
|
fi
|
|
17
17
|
if [ -x "$basedir/node" ]; then
|
|
18
18
|
exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
|
|
@@ -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/playwright@1.58.0/node_modules/playwright/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/playwright@1.58.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/playwright@1.58.0/node_modules/playwright/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/playwright@1.58.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/playwright@1.58.0/node_modules/playwright/cli.js" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/playwright@1.58.0/node_modules/playwright/cli.js" "$@"
|
|
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/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/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/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/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/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/vite.js" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/vite@7.3.1_@types+node@25.2.3_jiti@2.6.1_lightningcss@1.31.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/vite.js" "$@"
|
|
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@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.2.3_@vitest+browser-playwright@4._b9f8f126cce2d3e8c6a1e9b4ad03cf0f/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.2.3_@vitest+browser-playwright@4._b9f8f126cce2d3e8c6a1e9b4ad03cf0f/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@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.2.3_@vitest+browser-playwright@4._b9f8f126cce2d3e8c6a1e9b4ad03cf0f/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@4.0.18_@opentelemetry+api@1.9.0_@types+node@25.2.3_@vitest+browser-playwright@4._b9f8f126cce2d3e8c6a1e9b4ad03cf0f/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
|
|
@@ -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/yaml@2.8.2/node_modules/yaml/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/yaml@2.8.2/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/yaml@2.8.2/node_modules/yaml/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/yaml@2.8.2/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/yaml@2.8.2/node_modules/yaml/bin.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../../../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/bin.mjs" "$@"
|
|
21
|
+
fi
|
|
@@ -10,9 +10,9 @@ case `uname` in
|
|
|
10
10
|
esac
|
|
11
11
|
|
|
12
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.
|
|
13
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules"
|
|
14
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.
|
|
15
|
+
export NODE_PATH="/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules/vitest/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.19.15_@vitest+browser@4.0.18_vite@7.3.1_a261f604c6bbd7c7044da940aa93c023/node_modules:/Users/pool/Documents/GitHub/pool-bot/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
16
|
fi
|
|
17
17
|
if [ -x "$basedir/node" ]; then
|
|
18
18
|
exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@poolzin/pool-bot",
|
|
3
|
-
"version": "2026.3.
|
|
3
|
+
"version": "2026.3.23",
|
|
4
4
|
"description": "🎱 Pool Bot - AI assistant with PLCODE integrations",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"license": "MIT",
|
|
@@ -239,6 +239,7 @@
|
|
|
239
239
|
"@grammyjs/types": "^3.24.0",
|
|
240
240
|
"@lit-labs/signals": "^0.2.0",
|
|
241
241
|
"@lit/context": "^1.1.6",
|
|
242
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
242
243
|
"@types/express": "^5.0.6",
|
|
243
244
|
"@types/markdown-it": "^14.1.2",
|
|
244
245
|
"@types/node": "^25.2.2",
|