@polpo-ai/tools 0.2.4

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.
Files changed (89) hide show
  1. package/dist/adapters/node-filesystem.d.ts +12 -0
  2. package/dist/adapters/node-filesystem.d.ts.map +1 -0
  3. package/dist/adapters/node-filesystem.js +46 -0
  4. package/dist/adapters/node-filesystem.js.map +1 -0
  5. package/dist/adapters/node-shell.d.ts +5 -0
  6. package/dist/adapters/node-shell.d.ts.map +1 -0
  7. package/dist/adapters/node-shell.js +34 -0
  8. package/dist/adapters/node-shell.js.map +1 -0
  9. package/dist/audio-tools.d.ts +42 -0
  10. package/dist/audio-tools.d.ts.map +1 -0
  11. package/dist/audio-tools.js +552 -0
  12. package/dist/audio-tools.js.map +1 -0
  13. package/dist/browser-tools.d.ts +36 -0
  14. package/dist/browser-tools.d.ts.map +1 -0
  15. package/dist/browser-tools.js +525 -0
  16. package/dist/browser-tools.js.map +1 -0
  17. package/dist/coding-tools.d.ts +99 -0
  18. package/dist/coding-tools.d.ts.map +1 -0
  19. package/dist/coding-tools.js +434 -0
  20. package/dist/coding-tools.js.map +1 -0
  21. package/dist/docx-tools.d.ts +22 -0
  22. package/dist/docx-tools.d.ts.map +1 -0
  23. package/dist/docx-tools.js +236 -0
  24. package/dist/docx-tools.js.map +1 -0
  25. package/dist/email-tools.d.ts +34 -0
  26. package/dist/email-tools.d.ts.map +1 -0
  27. package/dist/email-tools.js +787 -0
  28. package/dist/email-tools.js.map +1 -0
  29. package/dist/excel-tools.d.ts +25 -0
  30. package/dist/excel-tools.d.ts.map +1 -0
  31. package/dist/excel-tools.js +409 -0
  32. package/dist/excel-tools.js.map +1 -0
  33. package/dist/http-tools.d.ts +23 -0
  34. package/dist/http-tools.d.ts.map +1 -0
  35. package/dist/http-tools.js +214 -0
  36. package/dist/http-tools.js.map +1 -0
  37. package/dist/image-tools.d.ts +40 -0
  38. package/dist/image-tools.d.ts.map +1 -0
  39. package/dist/image-tools.js +522 -0
  40. package/dist/image-tools.js.map +1 -0
  41. package/dist/index.d.ts +33 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +37 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/memory-tools.d.ts +19 -0
  46. package/dist/memory-tools.d.ts.map +1 -0
  47. package/dist/memory-tools.js +104 -0
  48. package/dist/memory-tools.js.map +1 -0
  49. package/dist/outcome-tools.d.ts +25 -0
  50. package/dist/outcome-tools.d.ts.map +1 -0
  51. package/dist/outcome-tools.js +191 -0
  52. package/dist/outcome-tools.js.map +1 -0
  53. package/dist/path-sandbox.d.ts +28 -0
  54. package/dist/path-sandbox.d.ts.map +1 -0
  55. package/dist/path-sandbox.js +58 -0
  56. package/dist/path-sandbox.js.map +1 -0
  57. package/dist/pdf-tools.d.ts +25 -0
  58. package/dist/pdf-tools.d.ts.map +1 -0
  59. package/dist/pdf-tools.js +363 -0
  60. package/dist/pdf-tools.js.map +1 -0
  61. package/dist/phone-tools.d.ts +27 -0
  62. package/dist/phone-tools.d.ts.map +1 -0
  63. package/dist/phone-tools.js +577 -0
  64. package/dist/phone-tools.js.map +1 -0
  65. package/dist/safe-env.d.ts +26 -0
  66. package/dist/safe-env.d.ts.map +1 -0
  67. package/dist/safe-env.js +76 -0
  68. package/dist/safe-env.js.map +1 -0
  69. package/dist/search-tools.d.ts +22 -0
  70. package/dist/search-tools.d.ts.map +1 -0
  71. package/dist/search-tools.js +205 -0
  72. package/dist/search-tools.js.map +1 -0
  73. package/dist/ssrf-guard.d.ts +17 -0
  74. package/dist/ssrf-guard.d.ts.map +1 -0
  75. package/dist/ssrf-guard.js +95 -0
  76. package/dist/ssrf-guard.js.map +1 -0
  77. package/dist/types.d.ts +21 -0
  78. package/dist/types.d.ts.map +1 -0
  79. package/dist/types.js +5 -0
  80. package/dist/types.js.map +1 -0
  81. package/dist/vault-tools.d.ts +26 -0
  82. package/dist/vault-tools.d.ts.map +1 -0
  83. package/dist/vault-tools.js +86 -0
  84. package/dist/vault-tools.js.map +1 -0
  85. package/dist/whatsapp-tools.d.ts +18 -0
  86. package/dist/whatsapp-tools.d.ts.map +1 -0
  87. package/dist/whatsapp-tools.js +206 -0
  88. package/dist/whatsapp-tools.js.map +1 -0
  89. package/package.json +56 -0
@@ -0,0 +1,206 @@
1
+ /**
2
+ * WhatsApp tools — agent-level tools for reading, sending, and searching
3
+ * WhatsApp messages via the Baileys bridge.
4
+ *
5
+ * Requires an active WhatsApp bridge connection (configured in polpo.json).
6
+ * Messages are stored locally in `.polpo/whatsapp.db`.
7
+ */
8
+ import { Type } from "@sinclair/typebox";
9
+ // ─── Schemas ──────────────────────────────────
10
+ const WhatsAppListSchema = Type.Object({
11
+ limit: Type.Optional(Type.Number({ description: "Max chats to return (default 20)", default: 20 })),
12
+ });
13
+ const WhatsAppReadSchema = Type.Object({
14
+ chat: Type.String({ description: "Phone number, contact name, or JID of the chat to read" }),
15
+ limit: Type.Optional(Type.Number({ description: "Max messages to return (default 30)", default: 30 })),
16
+ });
17
+ const WhatsAppSendSchema = Type.Object({
18
+ to: Type.String({ description: "Recipient phone number (with country code, no +), contact name, or JID" }),
19
+ message: Type.String({ description: "Message text to send" }),
20
+ });
21
+ const WhatsAppSearchSchema = Type.Object({
22
+ query: Type.String({ description: "Text to search for in message content" }),
23
+ chat: Type.Optional(Type.String({ description: "Limit search to a specific chat (phone, name, or JID)" })),
24
+ limit: Type.Optional(Type.Number({ description: "Max results (default 20)", default: 20 })),
25
+ });
26
+ const WhatsAppContactsSchema = Type.Object({
27
+ query: Type.Optional(Type.String({ description: "Search contacts by name or phone number" })),
28
+ limit: Type.Optional(Type.Number({ description: "Max contacts to return (default 50)", default: 50 })),
29
+ });
30
+ // ─── Helpers ──────────────────────────────────
31
+ /** Resolve a user input (phone, name, JID) to a JID. */
32
+ function resolveJid(input, store) {
33
+ // Already a JID?
34
+ if (input.includes("@"))
35
+ return input;
36
+ // Try contact lookup by name or phone
37
+ const contact = store.resolveContact(input);
38
+ if (contact)
39
+ return contact.jid;
40
+ // Assume it's a phone number — clean and make JID
41
+ const clean = input.replace(/[+\s-]/g, "");
42
+ return `${clean}@s.whatsapp.net`;
43
+ }
44
+ function formatTimestamp(ts) {
45
+ return new Date(ts * 1000).toISOString().replace("T", " ").slice(0, 19);
46
+ }
47
+ function createWhatsAppListTool(deps) {
48
+ return {
49
+ name: "whatsapp_list",
50
+ label: "List WhatsApp Chats",
51
+ description: "List recent WhatsApp chats with last message preview, contact name, and unread count.",
52
+ parameters: WhatsAppListSchema,
53
+ async execute(_id, params) {
54
+ const chats = deps.store.listChats(params.limit ?? 20);
55
+ if (chats.length === 0) {
56
+ return { content: [{ type: "text", text: "No WhatsApp chats found." }], details: {} };
57
+ }
58
+ const lines = chats.map((c, i) => {
59
+ const name = c.name ? `${c.name} (${c.phone})` : c.phone;
60
+ const preview = c.lastMessage ? c.lastMessage.slice(0, 60).replace(/\n/g, " ") : "(no messages)";
61
+ const time = c.lastMessageAt ? formatTimestamp(c.lastMessageAt) : "";
62
+ const unread = c.unread > 0 ? ` [${c.unread} unread]` : "";
63
+ return `${i + 1}. ${name}${unread}\n ${time} — ${preview}`;
64
+ });
65
+ return {
66
+ content: [{ type: "text", text: `WhatsApp chats (${chats.length}):\n\n${lines.join("\n\n")}` }],
67
+ details: { count: chats.length },
68
+ };
69
+ },
70
+ };
71
+ }
72
+ function createWhatsAppReadTool(deps) {
73
+ return {
74
+ name: "whatsapp_read",
75
+ label: "Read WhatsApp Chat",
76
+ description: "Read messages from a WhatsApp chat. Specify contact name, phone number, or JID.",
77
+ parameters: WhatsAppReadSchema,
78
+ async execute(_id, params) {
79
+ const jid = resolveJid(params.chat, deps.store);
80
+ const messages = deps.store.listMessages(jid, params.limit ?? 30);
81
+ if (messages.length === 0) {
82
+ return { content: [{ type: "text", text: `No messages found for ${params.chat}` }], details: {} };
83
+ }
84
+ // Reverse to show oldest first (chronological)
85
+ const reversed = [...messages].reverse();
86
+ const lines = reversed.map(m => {
87
+ const sender = m.fromMe ? "You" : (m.senderName ?? m.senderJid.replace(/@.*/, ""));
88
+ const time = formatTimestamp(m.timestamp);
89
+ const media = m.mediaType ? ` [${m.mediaType}]` : "";
90
+ return `[${time}] ${sender}${media}: ${m.text}`;
91
+ });
92
+ const contact = deps.store.resolveContact(params.chat);
93
+ const header = contact ? `${contact.name} (${contact.phone})` : params.chat;
94
+ return {
95
+ content: [{ type: "text", text: `Messages with ${header} (${messages.length}):\n\n${lines.join("\n")}` }],
96
+ details: { count: messages.length, chatJid: jid },
97
+ };
98
+ },
99
+ };
100
+ }
101
+ function createWhatsAppSendTool(deps) {
102
+ return {
103
+ name: "whatsapp_send",
104
+ label: "Send WhatsApp Message",
105
+ description: "Send a WhatsApp message to a phone number or contact name.",
106
+ parameters: WhatsAppSendSchema,
107
+ async execute(_id, params) {
108
+ const jid = resolveJid(params.to, deps.store);
109
+ try {
110
+ const msgId = await deps.sendMessage(jid, params.message);
111
+ // Store outbound message
112
+ if (msgId) {
113
+ deps.store.appendMessage({
114
+ id: msgId,
115
+ chatJid: jid,
116
+ senderJid: "me",
117
+ text: params.message,
118
+ fromMe: true,
119
+ timestamp: Math.floor(Date.now() / 1000),
120
+ });
121
+ }
122
+ const contact = deps.store.resolveContact(params.to);
123
+ const recipient = contact ? `${contact.name} (${contact.phone})` : params.to;
124
+ return {
125
+ content: [{ type: "text", text: `Message sent to ${recipient}.` }],
126
+ details: { jid, messageId: msgId },
127
+ };
128
+ }
129
+ catch (err) {
130
+ const msg = err instanceof Error ? err.message : String(err);
131
+ return { content: [{ type: "text", text: `Failed to send WhatsApp message: ${msg}` }], details: { error: msg } };
132
+ }
133
+ },
134
+ };
135
+ }
136
+ function createWhatsAppSearchTool(deps) {
137
+ return {
138
+ name: "whatsapp_search",
139
+ label: "Search WhatsApp Messages",
140
+ description: "Search WhatsApp messages by text content. Optionally limit to a specific chat.",
141
+ parameters: WhatsAppSearchSchema,
142
+ async execute(_id, params) {
143
+ const chatJid = params.chat ? resolveJid(params.chat, deps.store) : undefined;
144
+ const results = deps.store.searchMessages(params.query, params.limit ?? 20, chatJid);
145
+ if (results.length === 0) {
146
+ return { content: [{ type: "text", text: `No messages found matching "${params.query}"` }], details: {} };
147
+ }
148
+ const lines = results.map((m) => {
149
+ const sender = m.fromMe ? "You" : (m.senderName ?? m.senderJid.replace(/@.*/, ""));
150
+ const time = formatTimestamp(m.timestamp);
151
+ const chat = m.chatJid.replace(/@.*/, "");
152
+ return `[${time}] ${chat} — ${sender}: ${m.text.slice(0, 120)}`;
153
+ });
154
+ return {
155
+ content: [{ type: "text", text: `Search results for "${params.query}" (${results.length}):\n\n${lines.join("\n")}` }],
156
+ details: { count: results.length },
157
+ };
158
+ },
159
+ };
160
+ }
161
+ function createWhatsAppContactsTool(deps) {
162
+ return {
163
+ name: "whatsapp_contacts",
164
+ label: "WhatsApp Contacts",
165
+ description: "List or search WhatsApp contacts. Shows name, phone number, and last seen time.",
166
+ parameters: WhatsAppContactsSchema,
167
+ async execute(_id, params) {
168
+ const contacts = params.query
169
+ ? deps.store.searchContacts(params.query, params.limit ?? 50)
170
+ : deps.store.listContacts(params.limit ?? 50);
171
+ if (contacts.length === 0) {
172
+ const qualifier = params.query ? ` matching "${params.query}"` : "";
173
+ return { content: [{ type: "text", text: `No contacts found${qualifier}.` }], details: {} };
174
+ }
175
+ const lines = contacts.map((c, i) => {
176
+ const lastSeen = formatTimestamp(c.lastSeen);
177
+ return `${i + 1}. ${c.name} — +${c.phone} (last seen: ${lastSeen})`;
178
+ });
179
+ return {
180
+ content: [{ type: "text", text: `WhatsApp contacts (${contacts.length}):\n\n${lines.join("\n")}` }],
181
+ details: { count: contacts.length },
182
+ };
183
+ },
184
+ };
185
+ }
186
+ export const ALL_WHATSAPP_TOOL_NAMES = [
187
+ "whatsapp_list",
188
+ "whatsapp_read",
189
+ "whatsapp_send",
190
+ "whatsapp_search",
191
+ "whatsapp_contacts",
192
+ ];
193
+ export function createWhatsAppTools(deps, allowedTools) {
194
+ const factories = {
195
+ whatsapp_list: () => createWhatsAppListTool(deps),
196
+ whatsapp_read: () => createWhatsAppReadTool(deps),
197
+ whatsapp_send: () => createWhatsAppSendTool(deps),
198
+ whatsapp_search: () => createWhatsAppSearchTool(deps),
199
+ whatsapp_contacts: () => createWhatsAppContactsTool(deps),
200
+ };
201
+ const names = allowedTools
202
+ ? ALL_WHATSAPP_TOOL_NAMES.filter(n => allowedTools.some(a => a.toLowerCase() === n))
203
+ : ALL_WHATSAPP_TOOL_NAMES;
204
+ return names.map(n => factories[n]());
205
+ }
206
+ //# sourceMappingURL=whatsapp-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-tools.js","sourceRoot":"","sources":["../src/whatsapp-tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@polpo-ai/tools",
3
+ "version": "0.2.4",
4
+ "description": "Agent tools for Polpo — coding, browser, email, search, and more. Core tools work everywhere, extended tools are opt-in.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "prepublishOnly": "tsc"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "dependencies": {
23
+ "@polpo-ai/core": "^0.2.4",
24
+ "@mariozechner/pi-agent-core": "^0.57.1",
25
+ "@sinclair/typebox": "^0.34.0",
26
+ "execa": "^9.0.0",
27
+ "nanoid": "^5.0.0"
28
+ },
29
+ "optionalDependencies": {
30
+ "playwright-core": "^1.52.0",
31
+ "nodemailer": "^8.0.0",
32
+ "imapflow": "^1.2.0",
33
+ "exceljs": "^4.4.0",
34
+ "pdf-lib": "^1.17.0",
35
+ "docx": "^9.5.0",
36
+ "mammoth": "^1.11.0"
37
+ },
38
+ "peerDependencies": {
39
+ "zod": ">=3.0.0 || >=4.0.0"
40
+ },
41
+ "license": "MIT",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "https://github.com/lumea-labs/polpo",
45
+ "directory": "packages/tools"
46
+ },
47
+ "keywords": [
48
+ "polpo",
49
+ "agent",
50
+ "tools",
51
+ "coding",
52
+ "filesystem",
53
+ "shell",
54
+ "ai"
55
+ ]
56
+ }