@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,12 @@
1
+ import type { FileSystem, FileStat } from "@polpo-ai/core/filesystem";
2
+ export declare class NodeFileSystem implements FileSystem {
3
+ readFile(path: string): Promise<string>;
4
+ writeFile(path: string, content: string): Promise<void>;
5
+ exists(path: string): Promise<boolean>;
6
+ readdir(path: string): Promise<string[]>;
7
+ mkdir(path: string): Promise<void>;
8
+ remove(path: string): Promise<void>;
9
+ stat(path: string): Promise<FileStat>;
10
+ rename(oldPath: string, newPath: string): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=node-filesystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-filesystem.d.ts","sourceRoot":"","sources":["../../src/adapters/node-filesystem.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEtE,qBAAa,cAAe,YAAW,UAAU;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUrC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9D"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Node.js FileSystem implementation — wraps node:fs.
3
+ *
4
+ * Default implementation for self-hosted mode. Reads/writes to the real filesystem.
5
+ * Drop-in replacement pattern: swap with AgentFS, SandboxProxyFS, etc.
6
+ */
7
+ import { readFile, writeFile, mkdir, rm, stat, readdir, rename, access } from "node:fs/promises";
8
+ export class NodeFileSystem {
9
+ async readFile(path) {
10
+ return readFile(path, "utf-8");
11
+ }
12
+ async writeFile(path, content) {
13
+ await writeFile(path, content, "utf-8");
14
+ }
15
+ async exists(path) {
16
+ try {
17
+ await access(path);
18
+ return true;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ }
24
+ async readdir(path) {
25
+ return readdir(path);
26
+ }
27
+ async mkdir(path) {
28
+ await mkdir(path, { recursive: true });
29
+ }
30
+ async remove(path) {
31
+ await rm(path, { recursive: true, force: true });
32
+ }
33
+ async stat(path) {
34
+ const s = await stat(path);
35
+ return {
36
+ size: s.size,
37
+ isDirectory: s.isDirectory(),
38
+ isFile: s.isFile(),
39
+ modifiedAt: s.mtime,
40
+ };
41
+ }
42
+ async rename(oldPath, newPath) {
43
+ await rename(oldPath, newPath);
44
+ }
45
+ }
46
+ //# sourceMappingURL=node-filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-filesystem.js","sourceRoot":"","sources":["../../src/adapters/node-filesystem.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGjG,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;QAC3C,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;YAClB,UAAU,EAAE,CAAC,CAAC,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,OAAe;QAC3C,MAAM,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import type { Shell, ShellOptions, ShellResult } from "@polpo-ai/core/shell";
2
+ export declare class NodeShell implements Shell {
3
+ execute(command: string, options?: ShellOptions): Promise<ShellResult>;
4
+ }
5
+ //# sourceMappingURL=node-shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-shell.d.ts","sourceRoot":"","sources":["../../src/adapters/node-shell.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG7E,qBAAa,SAAU,YAAW,KAAK;IAC/B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAsB7E"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Node.js Shell implementation — wraps execa.
3
+ *
4
+ * Default implementation for self-hosted mode. Executes real shell commands.
5
+ * Drop-in replacement pattern: swap with JustBashShell, SandboxProxyShell, etc.
6
+ */
7
+ import { execaCommand } from "execa";
8
+ import { bashSafeEnv } from "../safe-env.js";
9
+ export class NodeShell {
10
+ async execute(command, options) {
11
+ try {
12
+ const result = await execaCommand(command, {
13
+ shell: true,
14
+ cwd: options?.cwd,
15
+ env: { ...bashSafeEnv(), ...options?.env },
16
+ timeout: options?.timeout,
17
+ reject: false,
18
+ });
19
+ return {
20
+ stdout: result.stdout,
21
+ stderr: result.stderr,
22
+ exitCode: result.exitCode ?? 0,
23
+ };
24
+ }
25
+ catch (err) {
26
+ return {
27
+ stdout: "",
28
+ stderr: err.message ?? String(err),
29
+ exitCode: 1,
30
+ };
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=node-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-shell.js","sourceRoot":"","sources":["../../src/adapters/node-shell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAsB;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE;gBACzC,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,OAAO,EAAE,GAAG;gBACjB,GAAG,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;gBAC1C,OAAO,EAAE,OAAO,EAAE,OAAO;gBACzB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;aAC/B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;gBAClC,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Audio tools for speech-to-text (STT) and text-to-speech (TTS).
3
+ *
4
+ * Provides agent capabilities to:
5
+ * - Transcribe audio files to text (audio_transcribe)
6
+ * - Generate speech audio from text (audio_speak)
7
+ *
8
+ * Architecture: direct fetch() to provider REST APIs — zero vendor SDK dependencies.
9
+ *
10
+ * Supported providers:
11
+ * STT: openai (Whisper), deepgram (Nova)
12
+ * TTS: openai (gpt-4o-mini-tts / tts-1), deepgram (Aura), elevenlabs, edge (free, local)
13
+ *
14
+ * Edge TTS: Uses Microsoft Edge's neural TTS engine via the `edge-tts` CLI.
15
+ * Free, no API key, ~400 voices in 60+ languages. Auto-selects voice from
16
+ * language + gender params. Also used as automatic fallback when cloud providers fail.
17
+ * Install: `pip install edge-tts`
18
+ *
19
+ * Credential resolution order (same as email/image tools):
20
+ * 1. Agent vault (per-agent credentials — e.g. service "openai" key "key")
21
+ * 2. Environment variables (global fallback)
22
+ * 3. Edge TTS (automatic fallback — no credentials needed)
23
+ *
24
+ * Environment variables (fallback):
25
+ * OPENAI_API_KEY — openai provider (STT + TTS)
26
+ * DEEPGRAM_API_KEY — deepgram provider (STT + TTS)
27
+ * ELEVENLABS_API_KEY — elevenlabs provider (TTS)
28
+ */
29
+ import type { AgentTool } from "@mariozechner/pi-agent-core";
30
+ import type { ResolvedVault } from "./types.js";
31
+ export type AudioToolName = "audio_transcribe" | "audio_speak";
32
+ export declare const ALL_AUDIO_TOOL_NAMES: AudioToolName[];
33
+ /**
34
+ * Create audio tools for speech-to-text and text-to-speech.
35
+ *
36
+ * @param cwd - Working directory for resolving file paths
37
+ * @param allowedPaths - Sandbox paths for file validation
38
+ * @param allowedTools - Optional filter
39
+ * @param vault - Resolved vault credentials for credential resolution
40
+ */
41
+ export declare function createAudioTools(cwd: string, allowedPaths?: string[], allowedTools?: string[], vault?: ResolvedVault): AgentTool<any>[];
42
+ //# sourceMappingURL=audio-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-tools.d.ts","sourceRoot":"","sources":["../src/audio-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,6BAA6B,CAAC;AAK9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAimBhD,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,aAAa,CAAC;AAE/D,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAAwC,CAAC;AAEzF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,YAAY,CAAC,EAAE,MAAM,EAAE,EACvB,KAAK,CAAC,EAAE,aAAa,GACpB,SAAS,CAAC,GAAG,CAAC,EAAE,CAalB"}