+1
-1
@@ -34,3 +34,3 @@ #!/usr/bin/env node | ||
| name: 'webear', | ||
| version: '1.0.0', | ||
| version: '1.2.0', | ||
| }); | ||
@@ -37,0 +37,0 @@ server.tool('capture_audio', 'Record a short clip of what the running web app is currently outputting. Returns a capture ID you can pass to analyze_audio or describe_audio.', captureAudioSchema, captureAudioHandler); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"analyzeAudio.d.ts","sourceRoot":"","sources":["../../src/tools/analyzeAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAKF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;;;;GAwErE"} | ||
| {"version":3,"file":"analyzeAudio.d.ts","sourceRoot":"","sources":["../../src/tools/analyzeAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,kBAAkB;;CAE9B,CAAC;AAOF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;;;;GAuFrE"} |
@@ -7,7 +7,16 @@ import { z } from 'zod'; | ||
| const API_BASE = process.env.MCP_API_URL || 'https://www.codedswitch.com'; | ||
| const API_KEY = process.env.CODEDSWITCH_API_KEY || 'dev-key-123'; | ||
| const API_KEY = process.env.CODEDSWITCH_API_KEY || ''; | ||
| function log(msg) { process.stderr.write(`[webear] ${msg}\n`); } | ||
| export async function analyzeAudioHandler(args) { | ||
| if (!API_KEY) { | ||
| return { | ||
| content: [{ | ||
| type: 'text', | ||
| text: 'CODEDSWITCH_API_KEY is not set. Get a free key at https://www.codedswitch.com/developer and add it to your MCP env config.', | ||
| }], | ||
| }; | ||
| } | ||
| let buffer; | ||
| try { | ||
| buffer = await waitForCapture(args.capture_id, 2000); | ||
| buffer = await waitForCapture(args.capture_id, 5000); | ||
| } | ||
@@ -23,8 +32,14 @@ catch { | ||
| try { | ||
| const formData = new FormData(); | ||
| formData.append('audio', new Blob([new Uint8Array(buffer)], { type: 'audio/webm' }), 'capture.webm'); | ||
| // Build multipart body manually for reliable Node.js compatibility | ||
| const boundary = `----webear${Date.now()}`; | ||
| const header = `--${boundary}\r\nContent-Disposition: form-data; name="audio"; filename="capture.webm"\r\nContent-Type: audio/webm\r\n\r\n`; | ||
| const footer = `\r\n--${boundary}--\r\n`; | ||
| const body = Buffer.concat([Buffer.from(header), buffer, Buffer.from(footer)]); | ||
| const res = await fetch(`${API_BASE}/api/mcp/analyze`, { | ||
| method: 'POST', | ||
| headers: { 'Authorization': `Bearer ${API_KEY}` }, | ||
| body: formData, | ||
| headers: { | ||
| 'Authorization': `Bearer ${API_KEY}`, | ||
| 'Content-Type': `multipart/form-data; boundary=${boundary}`, | ||
| }, | ||
| body, | ||
| }); | ||
@@ -31,0 +46,0 @@ if (!res.ok) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"analyzeAudio.js","sourceRoot":"","sources":["../../src/tools/analyzeAudio.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"analyzeAudio.js","sourceRoot":"","sources":["../../src/tools/analyzeAudio.ts"],"names":[],"mappings":"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"} |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"describeAudio.d.ts","sourceRoot":"","sources":["../../src/tools/describeAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAKF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;;;;GAyCtE"} | ||
| {"version":3,"file":"describeAudio.d.ts","sourceRoot":"","sources":["../../src/tools/describeAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAKF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;;;;GAwDtE"} |
@@ -7,7 +7,15 @@ import { z } from 'zod'; | ||
| const API_BASE = process.env.MCP_API_URL || 'https://www.codedswitch.com'; | ||
| const API_KEY = process.env.CODEDSWITCH_API_KEY || 'dev-key-123'; | ||
| const API_KEY = process.env.CODEDSWITCH_API_KEY || ''; | ||
| export async function describeAudioHandler(args) { | ||
| if (!API_KEY) { | ||
| return { | ||
| content: [{ | ||
| type: 'text', | ||
| text: 'CODEDSWITCH_API_KEY is not set. Get a free key at https://www.codedswitch.com/developer and add it to your MCP env config.', | ||
| }], | ||
| }; | ||
| } | ||
| let buffer; | ||
| try { | ||
| buffer = await waitForCapture(args.capture_id, 2000); | ||
| buffer = await waitForCapture(args.capture_id, 5000); | ||
| } | ||
@@ -23,8 +31,14 @@ catch { | ||
| try { | ||
| const formData = new FormData(); | ||
| formData.append('audio', new Blob([new Uint8Array(buffer)], { type: 'audio/webm' }), 'capture.webm'); | ||
| // Build multipart body manually for reliable Node.js compatibility | ||
| const boundary = `----webear${Date.now()}`; | ||
| const header = `--${boundary}\r\nContent-Disposition: form-data; name="audio"; filename="capture.webm"\r\nContent-Type: audio/webm\r\n\r\n`; | ||
| const footer = `\r\n--${boundary}--\r\n`; | ||
| const body = Buffer.concat([Buffer.from(header), buffer, Buffer.from(footer)]); | ||
| const res = await fetch(`${API_BASE}/api/mcp/describe`, { | ||
| method: 'POST', | ||
| headers: { 'Authorization': `Bearer ${API_KEY}` }, | ||
| body: formData, | ||
| headers: { | ||
| 'Authorization': `Bearer ${API_KEY}`, | ||
| 'Content-Type': `multipart/form-data; boundary=${boundary}`, | ||
| }, | ||
| body, | ||
| }); | ||
@@ -31,0 +45,0 @@ if (!res.ok) { |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"describeAudio.js","sourceRoot":"","sources":["../../src/tools/describeAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;CACxF,CAAC;AAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,6BAA6B,CAAC;AAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,aAAa,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA4B;IACrE,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,YAAY,IAAI,CAAC,UAAU,uCAAuC;iBACzE,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QAErG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,mBAAmB,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,OAAO,EAAE,EAAE;YACjD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QAEhD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,0BAA0B,GAAG,CAAC,OAAO,6CAA6C;iBACzF,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC"} | ||
| {"version":3,"file":"describeAudio.js","sourceRoot":"","sources":["../../src/tools/describeAudio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;CACxF,CAAC;AAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,6BAA6B,CAAC;AAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA4B;IACrE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4HAA4H;iBACnI,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,YAAY,IAAI,CAAC,UAAU,uCAAuC;iBACzE,CAAC;SACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,QAAQ,GAAG,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,QAAQ,+GAA+G,CAAC;QAC5I,MAAM,MAAM,GAAG,SAAS,QAAQ,QAAQ,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE/E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,mBAAmB,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,OAAO,EAAE;gBACpC,cAAc,EAAE,iCAAiC,QAAQ,EAAE;aAC5D;YACD,IAAI;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,EAAS,CAAC;QAEhD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,0BAA0B,GAAG,CAAC,OAAO,6CAA6C;iBACzF,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC"} |
+10
-1
| { | ||
| "name": "webear", | ||
| "version": "1.1.0", | ||
| "version": "1.2.0", | ||
| "description": "Give your AI coding assistant ears — capture, analyze, and describe live audio from any web app. Works with Windsurf, Cursor, Claude Code, and any MCP-compatible IDE.", | ||
@@ -62,3 +62,12 @@ "type": "module", | ||
| }, | ||
| "peerDependencies": { | ||
| "express": "^4.0.0 || ^5.0.0" | ||
| }, | ||
| "peerDependenciesMeta": { | ||
| "express": { | ||
| "optional": true | ||
| } | ||
| }, | ||
| "devDependencies": { | ||
| "@types/express": "^4.17.21", | ||
| "tsx": "^4.7.0", | ||
@@ -65,0 +74,0 @@ "typescript": "^5.4.0" |
AI-detected potential malware
Supply chain riskAI has identified this package as malware. This is a strong signal that the package may be malicious.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
AI-detected potential malware
Supply chain riskAI has identified this package as malware. This is a strong signal that the package may be malicious.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
116517
1.87%1507
1.96%3
50%3
50%