pi-harness-runtime 1.1.338 → 1.1.340
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/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/connection-runtime/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/contracts/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/durable-review/package.json +1 -1
- package/packages/e2e-tester/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-sink/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/permission-mode/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/relay/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/telegram/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/voice-api/package.json +1 -1
- package/packages/webmcp-tester/package.json +1 -1
- package/packages/wiki/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
- package/scripts/voice-api-example.ts +112 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/provider-router",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.340",
|
|
4
4
|
"description": "Enhanced Provider Router for pi-harness-runtime — intelligent routing with capabilities, costs, and quotas",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/provider-router.js",
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voice API Example - Telegram Voice to Command
|
|
3
|
+
*
|
|
4
|
+
* This script demonstrates how to:
|
|
5
|
+
* 1. Receive voice message from Telegram
|
|
6
|
+
* 2. Transcribe with Whisper API
|
|
7
|
+
* 3. Execute as pi-harness command
|
|
8
|
+
*
|
|
9
|
+
* Run:
|
|
10
|
+
* OPENAI_API_KEY=sk-xxx bun run scripts/voice-api-example.ts
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import * as fs from "node:fs";
|
|
14
|
+
import * as path from "node:path";
|
|
15
|
+
import { VoiceTranscriber } from "../packages/voice-api/dist/transcriber.js";
|
|
16
|
+
import { TelegramVoiceHandler } from "../packages/voice-api/dist/telegram.js";
|
|
17
|
+
|
|
18
|
+
// Load API keys from key files
|
|
19
|
+
function loadKey(filename: string): string | null {
|
|
20
|
+
const keysDir = path.join(process.env.HOME || "/home/frappe", ".pi-harness-runtime", "keys");
|
|
21
|
+
const filepath = path.join(keysDir, filename);
|
|
22
|
+
try {
|
|
23
|
+
return fs.readFileSync(filepath, "utf8").trim();
|
|
24
|
+
} catch {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async function main() {
|
|
30
|
+
console.log("=".repeat(60));
|
|
31
|
+
console.log("Voice API Example - Telegram Voice to Command");
|
|
32
|
+
console.log("=".repeat(60));
|
|
33
|
+
|
|
34
|
+
// Load API keys
|
|
35
|
+
const openaiApiKey = process.env.OPENAI_API_KEY || loadKey("openai-api-key.txt");
|
|
36
|
+
const telegramBotToken = loadKey("telegram-bot-token.txt");
|
|
37
|
+
|
|
38
|
+
if (!openaiApiKey) {
|
|
39
|
+
console.log("❌ OpenAI API key not found");
|
|
40
|
+
console.log(" Set OPENAI_API_KEY or create ~/.pi-harness-runtime/keys/openai-api-key.txt");
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
console.log("✓ OpenAI API key loaded");
|
|
45
|
+
|
|
46
|
+
// Create transcriber
|
|
47
|
+
const transcriber = new VoiceTranscriber({ openaiApiKey });
|
|
48
|
+
console.log("✓ VoiceTranscriber created");
|
|
49
|
+
|
|
50
|
+
if (!transcriber.isConfigured()) {
|
|
51
|
+
console.log("❌ Transcriber not configured");
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
console.log(`✓ Providers: ${transcriber.getProviders().join(", ")}`);
|
|
56
|
+
console.log(`✓ Default: ${transcriber.getDefaultProvider()}`);
|
|
57
|
+
|
|
58
|
+
// If Telegram token provided, create handler
|
|
59
|
+
if (telegramBotToken) {
|
|
60
|
+
console.log("✓ Telegram bot token loaded");
|
|
61
|
+
|
|
62
|
+
const handler = new TelegramVoiceHandler({
|
|
63
|
+
botToken: telegramBotToken,
|
|
64
|
+
transcriber,
|
|
65
|
+
onTranscribed: async (chatId, text, result) => {
|
|
66
|
+
console.log("\n" + "=".repeat(60));
|
|
67
|
+
console.log("Voice transcribed:");
|
|
68
|
+
console.log(` Chat: ${chatId}`);
|
|
69
|
+
console.log(` Text: ${text}`);
|
|
70
|
+
console.log(` Provider: ${result.provider}`);
|
|
71
|
+
console.log(` Language: ${result.language || "auto"}`);
|
|
72
|
+
console.log("=".repeat(60));
|
|
73
|
+
|
|
74
|
+
// Here you would execute the command in pi-harness
|
|
75
|
+
console.log("\n[pi-harness] Would execute:");
|
|
76
|
+
console.log(` ${text}`);
|
|
77
|
+
},
|
|
78
|
+
onError: (chatId, error) => {
|
|
79
|
+
console.log(`❌ Error for chat ${chatId}: ${error.message}`);
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
console.log("✓ TelegramVoiceHandler created");
|
|
84
|
+
console.log("\nListening for Telegram voice messages...");
|
|
85
|
+
console.log("(This is a demo - actual webhook server not started)");
|
|
86
|
+
} else {
|
|
87
|
+
console.log("⚠ Telegram bot token not found");
|
|
88
|
+
console.log(" Create ~/.pi-harness-runtime/keys/telegram-bot-token.txt for Telegram integration");
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Demo: transcribe a local audio file
|
|
92
|
+
console.log("\n" + "-".repeat(60));
|
|
93
|
+
console.log("Demo: Transcribing test audio file...");
|
|
94
|
+
|
|
95
|
+
// Note: In production, this would be triggered by actual Telegram/LINE webhooks
|
|
96
|
+
// For testing, you can manually transcribe an audio file:
|
|
97
|
+
//
|
|
98
|
+
// const result = await transcriber.transcribe({
|
|
99
|
+
// audioUrl: "https://example.com/audio.ogg",
|
|
100
|
+
// language: "en",
|
|
101
|
+
// });
|
|
102
|
+
// console.log("Transcribed:", result.text);
|
|
103
|
+
|
|
104
|
+
console.log("\n" + "=".repeat(60));
|
|
105
|
+
console.log("Ready for voice commands!");
|
|
106
|
+
console.log("=".repeat(60));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
main().catch(err => {
|
|
110
|
+
console.error("❌ Error:", err);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
});
|