@getverbal/cli 0.6.0 → 0.7.0
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/dist/cli.js +18760 -1833
- package/package.json +2 -1
- package/dist/agent-hooks/claude.d.ts +0 -10
- package/dist/agent-hooks/claude.d.ts.map +0 -1
- package/dist/agent-hooks/claude.js +0 -218
- package/dist/agent-hooks/claude.js.map +0 -1
- package/dist/agent-hooks/cli.d.ts +0 -2
- package/dist/agent-hooks/cli.d.ts.map +0 -1
- package/dist/agent-hooks/cli.js +0 -271
- package/dist/agent-hooks/cli.js.map +0 -1
- package/dist/agent-hooks/codex.d.ts +0 -9
- package/dist/agent-hooks/codex.d.ts.map +0 -1
- package/dist/agent-hooks/codex.js +0 -349
- package/dist/agent-hooks/codex.js.map +0 -1
- package/dist/agent-hooks/config.d.ts +0 -32
- package/dist/agent-hooks/config.d.ts.map +0 -1
- package/dist/agent-hooks/config.js +0 -176
- package/dist/agent-hooks/config.js.map +0 -1
- package/dist/agent-hooks/ingest.d.ts +0 -4
- package/dist/agent-hooks/ingest.d.ts.map +0 -1
- package/dist/agent-hooks/ingest.js +0 -22
- package/dist/agent-hooks/ingest.js.map +0 -1
- package/dist/agent-hooks/launchagent.d.ts +0 -7
- package/dist/agent-hooks/launchagent.d.ts.map +0 -1
- package/dist/agent-hooks/launchagent.js +0 -51
- package/dist/agent-hooks/launchagent.js.map +0 -1
- package/dist/agent-hooks/runtime-context.d.ts +0 -20
- package/dist/agent-hooks/runtime-context.d.ts.map +0 -1
- package/dist/agent-hooks/runtime-context.js +0 -90
- package/dist/agent-hooks/runtime-context.js.map +0 -1
- package/dist/agent-hooks/state.d.ts +0 -26
- package/dist/agent-hooks/state.d.ts.map +0 -1
- package/dist/agent-hooks/state.js +0 -67
- package/dist/agent-hooks/state.js.map +0 -1
- package/dist/agent-hooks/tokscale.d.ts +0 -70
- package/dist/agent-hooks/tokscale.d.ts.map +0 -1
- package/dist/agent-hooks/tokscale.js +0 -142
- package/dist/agent-hooks/tokscale.js.map +0 -1
- package/dist/agent-hooks/tool-extraction.d.ts +0 -7
- package/dist/agent-hooks/tool-extraction.d.ts.map +0 -1
- package/dist/agent-hooks/tool-extraction.js +0 -100
- package/dist/agent-hooks/tool-extraction.js.map +0 -1
- package/dist/agent-hooks/trace.d.ts +0 -17
- package/dist/agent-hooks/trace.d.ts.map +0 -1
- package/dist/agent-hooks/trace.js +0 -25
- package/dist/agent-hooks/trace.js.map +0 -1
- package/dist/auth/browser-auth.d.ts +0 -6
- package/dist/auth/browser-auth.d.ts.map +0 -1
- package/dist/auth/browser-auth.js +0 -202
- package/dist/auth/browser-auth.js.map +0 -1
- package/dist/auth/credentials.d.ts +0 -6
- package/dist/auth/credentials.d.ts.map +0 -1
- package/dist/auth/credentials.js +0 -78
- package/dist/auth/credentials.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -2
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -19
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/hooks.d.ts +0 -2
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js +0 -6
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/import.d.ts +0 -2
- package/dist/commands/import.d.ts.map +0 -1
- package/dist/commands/import.js +0 -129
- package/dist/commands/import.js.map +0 -1
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -262
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -2
- package/dist/commands/logout.d.ts.map +0 -1
- package/dist/commands/logout.js +0 -17
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/mcp-serve.d.ts +0 -2
- package/dist/commands/mcp-serve.d.ts.map +0 -1
- package/dist/commands/mcp-serve.js +0 -7
- package/dist/commands/mcp-serve.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -43
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -2
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js +0 -43
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/update.d.ts +0 -2
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -58
- package/dist/commands/update.js.map +0 -1
- package/dist/configure/claude-code.d.ts +0 -7
- package/dist/configure/claude-code.d.ts.map +0 -1
- package/dist/configure/claude-code.js +0 -11
- package/dist/configure/claude-code.js.map +0 -1
- package/dist/configure/claude-desktop.d.ts +0 -8
- package/dist/configure/claude-desktop.d.ts.map +0 -1
- package/dist/configure/claude-desktop.js +0 -28
- package/dist/configure/claude-desktop.js.map +0 -1
- package/dist/configure/codex.d.ts +0 -7
- package/dist/configure/codex.d.ts.map +0 -1
- package/dist/configure/codex.js +0 -12
- package/dist/configure/codex.js.map +0 -1
- package/dist/configure/cursor.d.ts +0 -7
- package/dist/configure/cursor.d.ts.map +0 -1
- package/dist/configure/cursor.js +0 -12
- package/dist/configure/cursor.js.map +0 -1
- package/dist/configure/index.d.ts +0 -34
- package/dist/configure/index.d.ts.map +0 -1
- package/dist/configure/index.js +0 -153
- package/dist/configure/index.js.map +0 -1
- package/dist/detect/claude-code.d.ts +0 -3
- package/dist/detect/claude-code.d.ts.map +0 -1
- package/dist/detect/claude-code.js +0 -82
- package/dist/detect/claude-code.js.map +0 -1
- package/dist/detect/claude-desktop.d.ts +0 -3
- package/dist/detect/claude-desktop.d.ts.map +0 -1
- package/dist/detect/claude-desktop.js +0 -89
- package/dist/detect/claude-desktop.js.map +0 -1
- package/dist/detect/codex.d.ts +0 -3
- package/dist/detect/codex.d.ts.map +0 -1
- package/dist/detect/codex.js +0 -64
- package/dist/detect/codex.js.map +0 -1
- package/dist/detect/cursor.d.ts +0 -3
- package/dist/detect/cursor.d.ts.map +0 -1
- package/dist/detect/cursor.js +0 -81
- package/dist/detect/cursor.js.map +0 -1
- package/dist/detect/index.d.ts +0 -3
- package/dist/detect/index.d.ts.map +0 -1
- package/dist/detect/index.js +0 -28
- package/dist/detect/index.js.map +0 -1
- package/dist/import/file-upload.d.ts +0 -10
- package/dist/import/file-upload.d.ts.map +0 -1
- package/dist/import/file-upload.js +0 -37
- package/dist/import/file-upload.js.map +0 -1
- package/dist/import/index.d.ts +0 -11
- package/dist/import/index.d.ts.map +0 -1
- package/dist/import/index.js +0 -51
- package/dist/import/index.js.map +0 -1
- package/dist/mcp/exports.d.ts +0 -13
- package/dist/mcp/exports.d.ts.map +0 -1
- package/dist/mcp/exports.js +0 -13
- package/dist/mcp/exports.js.map +0 -1
- package/dist/mcp/git-context.d.ts +0 -17
- package/dist/mcp/git-context.d.ts.map +0 -1
- package/dist/mcp/git-context.js +0 -72
- package/dist/mcp/git-context.js.map +0 -1
- package/dist/mcp/hooks/anthropic.d.ts +0 -31
- package/dist/mcp/hooks/anthropic.d.ts.map +0 -1
- package/dist/mcp/hooks/anthropic.js +0 -137
- package/dist/mcp/hooks/anthropic.js.map +0 -1
- package/dist/mcp/hooks/google.d.ts +0 -53
- package/dist/mcp/hooks/google.d.ts.map +0 -1
- package/dist/mcp/hooks/google.js +0 -161
- package/dist/mcp/hooks/google.js.map +0 -1
- package/dist/mcp/hooks/index.d.ts +0 -9
- package/dist/mcp/hooks/index.d.ts.map +0 -1
- package/dist/mcp/hooks/index.js +0 -7
- package/dist/mcp/hooks/index.js.map +0 -1
- package/dist/mcp/hooks/openai.d.ts +0 -59
- package/dist/mcp/hooks/openai.d.ts.map +0 -1
- package/dist/mcp/hooks/openai.js +0 -158
- package/dist/mcp/hooks/openai.js.map +0 -1
- package/dist/mcp/hooks/types.d.ts +0 -8
- package/dist/mcp/hooks/types.d.ts.map +0 -1
- package/dist/mcp/hooks/types.js +0 -5
- package/dist/mcp/hooks/types.js.map +0 -1
- package/dist/mcp/ingestor.d.ts +0 -23
- package/dist/mcp/ingestor.d.ts.map +0 -1
- package/dist/mcp/ingestor.js +0 -310
- package/dist/mcp/ingestor.js.map +0 -1
- package/dist/mcp/pricing.d.ts +0 -19
- package/dist/mcp/pricing.d.ts.map +0 -1
- package/dist/mcp/pricing.js +0 -130
- package/dist/mcp/pricing.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -10
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -689
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session-tracker.d.ts +0 -52
- package/dist/mcp/session-tracker.d.ts.map +0 -1
- package/dist/mcp/session-tracker.js +0 -186
- package/dist/mcp/session-tracker.js.map +0 -1
- package/dist/mcp/tools/analyze-spending-trend.d.ts +0 -10
- package/dist/mcp/tools/analyze-spending-trend.d.ts.map +0 -1
- package/dist/mcp/tools/analyze-spending-trend.js +0 -126
- package/dist/mcp/tools/analyze-spending-trend.js.map +0 -1
- package/dist/mcp/tools/get-budget-status.d.ts +0 -9
- package/dist/mcp/tools/get-budget-status.d.ts.map +0 -1
- package/dist/mcp/tools/get-budget-status.js +0 -59
- package/dist/mcp/tools/get-budget-status.js.map +0 -1
- package/dist/mcp/tools/get-cost-breakdown.d.ts +0 -10
- package/dist/mcp/tools/get-cost-breakdown.d.ts.map +0 -1
- package/dist/mcp/tools/get-cost-breakdown.js +0 -52
- package/dist/mcp/tools/get-cost-breakdown.js.map +0 -1
- package/dist/mcp/tools/get-model-efficiency.d.ts +0 -9
- package/dist/mcp/tools/get-model-efficiency.d.ts.map +0 -1
- package/dist/mcp/tools/get-model-efficiency.js +0 -137
- package/dist/mcp/tools/get-model-efficiency.js.map +0 -1
- package/dist/mcp/tools/get-recent-prompts.d.ts +0 -13
- package/dist/mcp/tools/get-recent-prompts.d.ts.map +0 -1
- package/dist/mcp/tools/get-recent-prompts.js +0 -56
- package/dist/mcp/tools/get-recent-prompts.js.map +0 -1
- package/dist/mcp/tools/get-roi-metrics.d.ts +0 -9
- package/dist/mcp/tools/get-roi-metrics.d.ts.map +0 -1
- package/dist/mcp/tools/get-roi-metrics.js +0 -84
- package/dist/mcp/tools/get-roi-metrics.js.map +0 -1
- package/dist/mcp/tools/get-usage-summary.d.ts +0 -10
- package/dist/mcp/tools/get-usage-summary.d.ts.map +0 -1
- package/dist/mcp/tools/get-usage-summary.js +0 -47
- package/dist/mcp/tools/get-usage-summary.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -221
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js +0 -161
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/mcp/tools/list-projects.d.ts +0 -6
- package/dist/mcp/tools/list-projects.d.ts.map +0 -1
- package/dist/mcp/tools/list-projects.js +0 -43
- package/dist/mcp/tools/list-projects.js.map +0 -1
- package/dist/mcp/tools/optimize-prompt.d.ts +0 -44
- package/dist/mcp/tools/optimize-prompt.d.ts.map +0 -1
- package/dist/mcp/tools/optimize-prompt.js +0 -95
- package/dist/mcp/tools/optimize-prompt.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -118
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -5
- package/dist/mcp/types.js.map +0 -1
- package/dist/types.d.ts +0 -18
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/update-check/check.d.ts +0 -6
- package/dist/update-check/check.d.ts.map +0 -1
- package/dist/update-check/check.js +0 -64
- package/dist/update-check/check.js.map +0 -1
- package/dist/update-check/notify.d.ts +0 -6
- package/dist/update-check/notify.d.ts.map +0 -1
- package/dist/update-check/notify.js +0 -40
- package/dist/update-check/notify.js.map +0 -1
- package/dist/verify.d.ts +0 -7
- package/dist/verify.d.ts.map +0 -1
- package/dist/verify.js +0 -40
- package/dist/verify.js.map +0 -1
- package/dist/version.d.ts +0 -9
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -21
- package/dist/version.js.map +0 -1
package/dist/detect/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detect/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QACvC,gBAAgB,EAAE;QAClB,mBAAmB,EAAE;QACrB,YAAY,EAAE;QACd,WAAW,EAAE;KACd,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,4DAA4D;QAC5D,MAAM,KAAK,GAA8B,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAE,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,KAAK;YACrB,OAAO,EAAE,GAAG,IAAI,qBAAqB,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;SACtH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Credentials } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Upload a Claude or ChatGPT export file to the backend import endpoint.
|
|
4
|
-
*/
|
|
5
|
-
export declare function uploadExportFile(filePath: string, source: 'claude' | 'chatgpt', credentials: Credentials): Promise<{
|
|
6
|
-
success: boolean;
|
|
7
|
-
eventsCreated: number;
|
|
8
|
-
error?: string;
|
|
9
|
-
}>;
|
|
10
|
-
//# sourceMappingURL=file-upload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../src/import/file-upload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAuCtE"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { readFileSync, statSync } from 'node:fs';
|
|
2
|
-
const MAX_FILE_SIZE = 100 * 1024 * 1024; // 100 MB (matches server limit)
|
|
3
|
-
/**
|
|
4
|
-
* Upload a Claude or ChatGPT export file to the backend import endpoint.
|
|
5
|
-
*/
|
|
6
|
-
export async function uploadExportFile(filePath, source, credentials) {
|
|
7
|
-
const stat = statSync(filePath);
|
|
8
|
-
if (stat.size > MAX_FILE_SIZE) {
|
|
9
|
-
return {
|
|
10
|
-
success: false,
|
|
11
|
-
eventsCreated: 0,
|
|
12
|
-
error: `File too large (${Math.round(stat.size / 1024 / 1024)}MB). Maximum is 100MB.`,
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
const content = readFileSync(filePath, 'utf-8');
|
|
16
|
-
const endpoint = source === 'claude'
|
|
17
|
-
? `${credentials.api_url}/api/v1/import/claude`
|
|
18
|
-
: `${credentials.api_url}/api/v1/import/chatgpt`;
|
|
19
|
-
const res = await fetch(endpoint, {
|
|
20
|
-
method: 'POST',
|
|
21
|
-
headers: {
|
|
22
|
-
Authorization: `Bearer ${credentials.api_key}`,
|
|
23
|
-
'Content-Type': 'application/json',
|
|
24
|
-
},
|
|
25
|
-
body: content,
|
|
26
|
-
});
|
|
27
|
-
if (!res.ok) {
|
|
28
|
-
const body = await res.text();
|
|
29
|
-
return { success: false, eventsCreated: 0, error: `HTTP ${res.status}: ${body}` };
|
|
30
|
-
}
|
|
31
|
-
const result = (await res.json());
|
|
32
|
-
return {
|
|
33
|
-
success: result.success,
|
|
34
|
-
eventsCreated: result.events_created ?? result.conversations_processed ?? 0,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=file-upload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/import/file-upload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,gCAAgC;AAEzE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,MAA4B,EAC5B,WAAwB;IAExB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,CAAC;YAChB,KAAK,EAAE,mBAAmB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,wBAAwB;SACtF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GACZ,MAAM,KAAK,QAAQ;QACjB,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,uBAAuB;QAC/C,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,wBAAwB,CAAC;IAErD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,WAAW,CAAC,OAAO,EAAE;YAC9C,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,EAAE,CAAC;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI/B,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,uBAAuB,IAAI,CAAC;KAC5E,CAAC;AACJ,CAAC"}
|
package/dist/import/index.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export interface ImportSource {
|
|
2
|
-
id: string;
|
|
3
|
-
label: string;
|
|
4
|
-
path: string;
|
|
5
|
-
count: number;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Scan the local filesystem for importable AI tool history.
|
|
9
|
-
*/
|
|
10
|
-
export declare function detectImportSources(): ImportSource[];
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAiCpD"}
|
package/dist/import/index.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { existsSync, readdirSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { homedir } from 'node:os';
|
|
4
|
-
/**
|
|
5
|
-
* Scan the local filesystem for importable AI tool history.
|
|
6
|
-
*/
|
|
7
|
-
export function detectImportSources() {
|
|
8
|
-
const sources = [];
|
|
9
|
-
const home = homedir();
|
|
10
|
-
// Claude Code history
|
|
11
|
-
const claudeDir = join(home, '.claude');
|
|
12
|
-
if (existsSync(claudeDir)) {
|
|
13
|
-
const sessions = countSessions(claudeDir, 'projects');
|
|
14
|
-
if (sessions > 0) {
|
|
15
|
-
sources.push({
|
|
16
|
-
id: 'claude-code',
|
|
17
|
-
label: 'Claude Code history (~/.claude/)',
|
|
18
|
-
path: claudeDir,
|
|
19
|
-
count: sessions,
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
// Codex sessions
|
|
24
|
-
const codexDir = join(home, '.codex');
|
|
25
|
-
if (existsSync(codexDir)) {
|
|
26
|
-
const sessions = countSessions(codexDir, 'sessions');
|
|
27
|
-
if (sessions > 0) {
|
|
28
|
-
sources.push({
|
|
29
|
-
id: 'codex',
|
|
30
|
-
label: 'Codex sessions (~/.codex/)',
|
|
31
|
-
path: codexDir,
|
|
32
|
-
count: sessions,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return sources;
|
|
37
|
-
}
|
|
38
|
-
function countSessions(dir, subdir) {
|
|
39
|
-
try {
|
|
40
|
-
const target = join(dir, subdir);
|
|
41
|
-
if (!existsSync(target))
|
|
42
|
-
return 0;
|
|
43
|
-
return readdirSync(target, { recursive: true })
|
|
44
|
-
.filter((f) => String(f).endsWith('.jsonl') || String(f).endsWith('.json'))
|
|
45
|
-
.length;
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
return 0;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=index.js.map
|
package/dist/import/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASlC;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,sBAAsB;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,kCAAkC;gBACzC,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,4BAA4B;gBACnC,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,MAAc;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,CAAC;QAClC,OAAO,WAAW,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC1E,MAAM,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
package/dist/mcp/exports.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public API exports for @verbal/mcp-service
|
|
3
|
-
*
|
|
4
|
-
* Import from this module when using the SDK hooks in your application:
|
|
5
|
-
* ```ts
|
|
6
|
-
* import { VerbalIngestor, createAnthropicHook } from '@verbal/mcp-service';
|
|
7
|
-
* ```
|
|
8
|
-
*/
|
|
9
|
-
export { VerbalIngestor, attachExitHooks } from './ingestor.js';
|
|
10
|
-
export type { UsageEvent, IngestPayload, IngestorConfig, IngestResult } from './types.js';
|
|
11
|
-
export { createAnthropicHook, attachAnthropicStreamHooks, createOpenAIHooks, createOpenAIFetchHook, createGoogleHook, trackGoogleWithOTel, } from './hooks/index.js';
|
|
12
|
-
export type { HookTracker, OpenAIRunHooks } from './hooks/index.js';
|
|
13
|
-
//# sourceMappingURL=exports.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/mcp/exports.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1F,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/mcp/exports.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public API exports for @verbal/mcp-service
|
|
3
|
-
*
|
|
4
|
-
* Import from this module when using the SDK hooks in your application:
|
|
5
|
-
* ```ts
|
|
6
|
-
* import { VerbalIngestor, createAnthropicHook } from '@verbal/mcp-service';
|
|
7
|
-
* ```
|
|
8
|
-
*/
|
|
9
|
-
// Core ingestor
|
|
10
|
-
export { VerbalIngestor, attachExitHooks } from './ingestor.js';
|
|
11
|
-
// Hook adapters
|
|
12
|
-
export { createAnthropicHook, attachAnthropicStreamHooks, createOpenAIHooks, createOpenAIFetchHook, createGoogleHook, trackGoogleWithOTel, } from './hooks/index.js';
|
|
13
|
-
//# sourceMappingURL=exports.js.map
|
package/dist/mcp/exports.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/mcp/exports.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKhE,gBAAgB;AAChB,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface GitContext {
|
|
2
|
-
repo_name: string | null;
|
|
3
|
-
branch: string | null;
|
|
4
|
-
commit_hash: string | null;
|
|
5
|
-
commit_message: string | null;
|
|
6
|
-
files_changed: number;
|
|
7
|
-
lines_added: number;
|
|
8
|
-
lines_deleted: number;
|
|
9
|
-
is_dirty: boolean;
|
|
10
|
-
remote_url: string | null;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Gather git context from the current working directory
|
|
14
|
-
* Returns null if not a git repository
|
|
15
|
-
*/
|
|
16
|
-
export declare function getGitContext(cwd: string): GitContext | null;
|
|
17
|
-
//# sourceMappingURL=git-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../src/mcp/git-context.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAiBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CA2D5D"}
|
package/dist/mcp/git-context.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { execSync } from 'child_process';
|
|
2
|
-
/**
|
|
3
|
-
* Execute git command and return output (or null on failure)
|
|
4
|
-
*/
|
|
5
|
-
function gitCommand(cmd, cwd) {
|
|
6
|
-
try {
|
|
7
|
-
return execSync(cmd, {
|
|
8
|
-
cwd,
|
|
9
|
-
encoding: 'utf8',
|
|
10
|
-
stdio: ['pipe', 'pipe', 'ignore'], // Suppress stderr
|
|
11
|
-
}).trim();
|
|
12
|
-
}
|
|
13
|
-
catch (error) {
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Gather git context from the current working directory
|
|
19
|
-
* Returns null if not a git repository
|
|
20
|
-
*/
|
|
21
|
-
export function getGitContext(cwd) {
|
|
22
|
-
// Check if we're in a git repo
|
|
23
|
-
const isGitRepo = gitCommand('git rev-parse --is-inside-work-tree', cwd);
|
|
24
|
-
if (!isGitRepo) {
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
// Get branch name
|
|
28
|
-
const branch = gitCommand('git rev-parse --abbrev-ref HEAD', cwd);
|
|
29
|
-
// Get commit hash
|
|
30
|
-
const commitHash = gitCommand('git rev-parse HEAD', cwd);
|
|
31
|
-
// Get commit message (first line)
|
|
32
|
-
const commitMessage = gitCommand('git log -1 --pretty=%s', cwd);
|
|
33
|
-
// Get repo name from remote URL
|
|
34
|
-
const remoteUrl = gitCommand('git config --get remote.origin.url', cwd);
|
|
35
|
-
let repoName = null;
|
|
36
|
-
if (remoteUrl) {
|
|
37
|
-
// Extract repo name from URL (works for GitHub, GitLab, etc.)
|
|
38
|
-
const match = remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);
|
|
39
|
-
repoName = match ? match[1] : null;
|
|
40
|
-
}
|
|
41
|
-
// Check for uncommitted changes
|
|
42
|
-
const statusOutput = gitCommand('git status --porcelain', cwd);
|
|
43
|
-
const isDirty = statusOutput ? statusOutput.length > 0 : false;
|
|
44
|
-
// Get file change stats (uncommitted changes)
|
|
45
|
-
let filesChanged = 0;
|
|
46
|
-
let linesAdded = 0;
|
|
47
|
-
let linesDeleted = 0;
|
|
48
|
-
if (isDirty) {
|
|
49
|
-
const diffStats = gitCommand('git diff --stat', cwd);
|
|
50
|
-
if (diffStats) {
|
|
51
|
-
// Parse output like: "3 files changed, 42 insertions(+), 7 deletions(-)"
|
|
52
|
-
const filesMatch = diffStats.match(/(\d+) files? changed/);
|
|
53
|
-
const insertionsMatch = diffStats.match(/(\d+) insertions?/);
|
|
54
|
-
const deletionsMatch = diffStats.match(/(\d+) deletions?/);
|
|
55
|
-
filesChanged = filesMatch ? parseInt(filesMatch[1], 10) : 0;
|
|
56
|
-
linesAdded = insertionsMatch ? parseInt(insertionsMatch[1], 10) : 0;
|
|
57
|
-
linesDeleted = deletionsMatch ? parseInt(deletionsMatch[1], 10) : 0;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return {
|
|
61
|
-
repo_name: repoName,
|
|
62
|
-
branch,
|
|
63
|
-
commit_hash: commitHash,
|
|
64
|
-
commit_message: commitMessage,
|
|
65
|
-
files_changed: filesChanged,
|
|
66
|
-
lines_added: linesAdded,
|
|
67
|
-
lines_deleted: linesDeleted,
|
|
68
|
-
is_dirty: isDirty,
|
|
69
|
-
remote_url: remoteUrl,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=git-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../src/mcp/git-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Anthropic SDK hook adapter using custom fetch middleware
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* ```ts
|
|
6
|
-
* import Anthropic from '@anthropic-ai/sdk';
|
|
7
|
-
* import { createAnthropicHook } from '@verbal/mcp-service/hooks/anthropic';
|
|
8
|
-
*
|
|
9
|
-
* const trackedFetch = createAnthropicHook(ingestor);
|
|
10
|
-
* const client = new Anthropic({
|
|
11
|
-
* apiKey: process.env.ANTHROPIC_API_KEY,
|
|
12
|
-
* fetch: trackedFetch,
|
|
13
|
-
* });
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
import type { HookTracker } from './types.js';
|
|
17
|
-
export declare function createAnthropicHook(tracker: HookTracker): typeof fetch;
|
|
18
|
-
/**
|
|
19
|
-
* Hook for Anthropic streaming responses using event listeners
|
|
20
|
-
*
|
|
21
|
-
* Usage:
|
|
22
|
-
* ```ts
|
|
23
|
-
* const stream = await client.messages.stream({...});
|
|
24
|
-
* attachStreamHooks(stream, ingestor, promptContent);
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export declare function attachAnthropicStreamHooks(stream: {
|
|
28
|
-
on(event: 'message', handler: (message: unknown) => void): void;
|
|
29
|
-
on(event: 'error', handler: (error: unknown) => void): void;
|
|
30
|
-
}, tracker: HookTracker, promptContent: string, startTime?: number): void;
|
|
31
|
-
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/mcp/hooks/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK,CAsDtE;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE;IACN,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAChE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CAC7D,EACD,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,MAAM,EACrB,SAAS,GAAE,MAAmB,GAC7B,IAAI,CAiCN"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Anthropic SDK hook adapter using custom fetch middleware
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* ```ts
|
|
6
|
-
* import Anthropic from '@anthropic-ai/sdk';
|
|
7
|
-
* import { createAnthropicHook } from '@verbal/mcp-service/hooks/anthropic';
|
|
8
|
-
*
|
|
9
|
-
* const trackedFetch = createAnthropicHook(ingestor);
|
|
10
|
-
* const client = new Anthropic({
|
|
11
|
-
* apiKey: process.env.ANTHROPIC_API_KEY,
|
|
12
|
-
* fetch: trackedFetch,
|
|
13
|
-
* });
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
export function createAnthropicHook(tracker) {
|
|
17
|
-
return async (url, init) => {
|
|
18
|
-
const startTime = Date.now();
|
|
19
|
-
let requestBody = null;
|
|
20
|
-
// Capture request body for prompt extraction
|
|
21
|
-
if (init?.body && typeof init.body === 'string') {
|
|
22
|
-
try {
|
|
23
|
-
requestBody = JSON.parse(init.body);
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
// Ignore parse errors
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
// Call original fetch
|
|
30
|
-
const response = await fetch(url, init);
|
|
31
|
-
// Only track API calls to Anthropic
|
|
32
|
-
const urlString = typeof url === 'string' ? url : url instanceof URL ? url.href : url.url;
|
|
33
|
-
if (!urlString.includes('anthropic.com/v1/messages')) {
|
|
34
|
-
return response;
|
|
35
|
-
}
|
|
36
|
-
// Clone response to read body without consuming it
|
|
37
|
-
const clonedResponse = response.clone();
|
|
38
|
-
try {
|
|
39
|
-
const responseBody = await clonedResponse.json();
|
|
40
|
-
// Only track successful responses with usage metadata
|
|
41
|
-
if (response.ok && responseBody.usage) {
|
|
42
|
-
const promptContent = extractPromptContent(requestBody);
|
|
43
|
-
const responseContent = extractResponseContent(responseBody);
|
|
44
|
-
const usage = responseBody.usage;
|
|
45
|
-
await tracker.track({
|
|
46
|
-
event_type: 'prompt',
|
|
47
|
-
provider: 'anthropic',
|
|
48
|
-
model: responseBody.model,
|
|
49
|
-
tokens_in: usage.input_tokens,
|
|
50
|
-
tokens_out: usage.output_tokens,
|
|
51
|
-
total_tokens: usage.input_tokens + usage.output_tokens,
|
|
52
|
-
duration_ms: Date.now() - startTime,
|
|
53
|
-
request_id: responseBody.id,
|
|
54
|
-
prompt: promptContent,
|
|
55
|
-
response: responseContent,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
console.warn('[AnthropicHook] Failed to track usage:', error);
|
|
61
|
-
}
|
|
62
|
-
return response;
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Extract prompt content from Anthropic request body
|
|
67
|
-
*/
|
|
68
|
-
function extractPromptContent(body) {
|
|
69
|
-
if (!body || !body.messages)
|
|
70
|
-
return undefined;
|
|
71
|
-
const messages = body.messages;
|
|
72
|
-
const parts = [];
|
|
73
|
-
// Include system prompt if present
|
|
74
|
-
if (typeof body.system === 'string') {
|
|
75
|
-
parts.push(body.system);
|
|
76
|
-
}
|
|
77
|
-
for (const msg of messages) {
|
|
78
|
-
if (typeof msg.content === 'string') {
|
|
79
|
-
parts.push(msg.content);
|
|
80
|
-
}
|
|
81
|
-
else if (Array.isArray(msg.content)) {
|
|
82
|
-
for (const block of msg.content) {
|
|
83
|
-
if (block.type === 'text' && typeof block.text === 'string') {
|
|
84
|
-
parts.push(block.text);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return parts.length > 0 ? parts.join('\n') : undefined;
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Extract response content from Anthropic response body
|
|
93
|
-
*/
|
|
94
|
-
function extractResponseContent(body) {
|
|
95
|
-
if (!body.content || !Array.isArray(body.content))
|
|
96
|
-
return undefined;
|
|
97
|
-
return body.content
|
|
98
|
-
.filter((block) => block.type === 'text' && block.text)
|
|
99
|
-
.map((block) => block.text)
|
|
100
|
-
.join('');
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Hook for Anthropic streaming responses using event listeners
|
|
104
|
-
*
|
|
105
|
-
* Usage:
|
|
106
|
-
* ```ts
|
|
107
|
-
* const stream = await client.messages.stream({...});
|
|
108
|
-
* attachStreamHooks(stream, ingestor, promptContent);
|
|
109
|
-
* ```
|
|
110
|
-
*/
|
|
111
|
-
export function attachAnthropicStreamHooks(stream, tracker, promptContent, startTime = Date.now()) {
|
|
112
|
-
stream.on('message', (message) => {
|
|
113
|
-
const msg = message;
|
|
114
|
-
if (msg.usage) {
|
|
115
|
-
const responseContent = msg.content
|
|
116
|
-
?.filter((block) => block.type === 'text' && block.text)
|
|
117
|
-
.map((block) => block.text)
|
|
118
|
-
.join('');
|
|
119
|
-
tracker.track({
|
|
120
|
-
event_type: 'prompt',
|
|
121
|
-
provider: 'anthropic',
|
|
122
|
-
model: msg.model,
|
|
123
|
-
tokens_in: msg.usage.input_tokens,
|
|
124
|
-
tokens_out: msg.usage.output_tokens,
|
|
125
|
-
total_tokens: msg.usage.input_tokens + msg.usage.output_tokens,
|
|
126
|
-
duration_ms: Date.now() - startTime,
|
|
127
|
-
request_id: msg.id,
|
|
128
|
-
prompt: promptContent,
|
|
129
|
-
response: responseContent,
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
stream.on('error', (error) => {
|
|
134
|
-
console.error('[AnthropicStreamHook] Stream error:', error);
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/mcp/hooks/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Google Generative AI SDK hook adapter using custom fetch middleware
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* ```ts
|
|
6
|
-
* import { GoogleGenerativeAI } from '@google/generative-ai';
|
|
7
|
-
* import { createGoogleHook } from '@verbal/mcp-service/hooks/google';
|
|
8
|
-
*
|
|
9
|
-
* const trackedFetch = createGoogleHook(ingestor);
|
|
10
|
-
* const genai = new GoogleGenerativeAI({
|
|
11
|
-
* apiKey: process.env.GOOGLE_API_KEY,
|
|
12
|
-
* fetch: trackedFetch,
|
|
13
|
-
* });
|
|
14
|
-
* ```
|
|
15
|
-
*/
|
|
16
|
-
import type { HookTracker } from './types.js';
|
|
17
|
-
export declare function createGoogleHook(tracker: HookTracker): typeof fetch;
|
|
18
|
-
/**
|
|
19
|
-
* OpenTelemetry-based tracking for Google AI (advanced)
|
|
20
|
-
*
|
|
21
|
-
* Usage:
|
|
22
|
-
* ```ts
|
|
23
|
-
* import { trace } from '@opentelemetry/api';
|
|
24
|
-
* import { trackGoogleWithOTel } from '@verbal/mcp-service/hooks/google';
|
|
25
|
-
*
|
|
26
|
-
* const tracer = trace.getTracer('gemini-client');
|
|
27
|
-
* const result = await trackGoogleWithOTel(
|
|
28
|
-
* tracer,
|
|
29
|
-
* ingestor,
|
|
30
|
-
* model,
|
|
31
|
-
* async () => model.generateContent(prompt)
|
|
32
|
-
* );
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export declare function trackGoogleWithOTel<T extends {
|
|
36
|
-
response: {
|
|
37
|
-
usageMetadata?: {
|
|
38
|
-
promptTokenCount?: number;
|
|
39
|
-
candidatesTokenCount?: number;
|
|
40
|
-
totalTokenCount?: number;
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
}>(tracer: {
|
|
44
|
-
startSpan(name: string): {
|
|
45
|
-
setAttributes(attributes: Record<string, unknown>): void;
|
|
46
|
-
setStatus(status: {
|
|
47
|
-
code: number;
|
|
48
|
-
}): void;
|
|
49
|
-
recordException(error: Error): void;
|
|
50
|
-
end(): void;
|
|
51
|
-
};
|
|
52
|
-
}, tracker: HookTracker, modelName: string, operation: () => Promise<T>): Promise<T>;
|
|
53
|
-
//# sourceMappingURL=google.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../../src/mcp/hooks/google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,KAAK,CAwDnE;AA0DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE;QAAE,aAAa,CAAC,EAAE;YAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,EAC1K,MAAM,EAAE;IACN,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;QACvB,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACzD,SAAS,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAC1C,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;QACpC,GAAG,IAAI,IAAI,CAAC;KACb,CAAC;CACH,EACD,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,CAAC,CAAC,CAwCZ"}
|