@relayplane/proxy 1.9.18 → 1.9.21

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.
@@ -0,0 +1,2 @@
1
+ export declare function sendPing(event: 'startup' | 'dashboard'): Promise<void>;
2
+ //# sourceMappingURL=telemetryPinger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetryPinger.d.ts","sourceRoot":"","sources":["../src/telemetryPinger.ts"],"names":[],"mappings":"AAuCA,wBAAsB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,iBAgD5D"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sendPing = sendPing;
7
+ const config_1 = require("./config");
8
+ const node_fetch_1 = __importDefault(require("node-fetch"));
9
+ // This function needs to exist somewhere to get the current proxy version.
10
+ // Assuming it's in a utils or version file.
11
+ function getVersion() {
12
+ try {
13
+ const pkg = require('../package.json');
14
+ return pkg.version || 'unknown';
15
+ }
16
+ catch {
17
+ return 'unknown';
18
+ }
19
+ }
20
+ const PING_ENDPOINT = 'https://relayplane.com/api/v1/ping';
21
+ function isDayElapsed(lastPing) {
22
+ if (!lastPing)
23
+ return true;
24
+ const lastDate = new Date(lastPing);
25
+ const today = new Date();
26
+ lastDate.setHours(0, 0, 0, 0);
27
+ today.setHours(0, 0, 0, 0);
28
+ return today.getTime() > lastDate.getTime();
29
+ }
30
+ function isHourElapsed(lastPing) {
31
+ if (!lastPing)
32
+ return true;
33
+ const oneHour = 60 * 60 * 1000;
34
+ return (new Date().getTime() - new Date(lastPing).getTime()) > oneHour;
35
+ }
36
+ async function sendPing(event) {
37
+ const config = (0, config_1.loadConfig)();
38
+ if (!config.telemetry_enabled || config.telemetry_exclude) {
39
+ return;
40
+ }
41
+ const now = new Date().toISOString();
42
+ let configNeedsSave = false;
43
+ if (event === 'startup') {
44
+ if (!isDayElapsed(config.last_ping_date)) {
45
+ return;
46
+ }
47
+ config.last_ping_date = now;
48
+ configNeedsSave = true;
49
+ }
50
+ if (event === 'dashboard') {
51
+ if (!isHourElapsed(config.last_dashboard_ping)) {
52
+ return;
53
+ }
54
+ config.last_dashboard_ping = now;
55
+ configNeedsSave = true;
56
+ }
57
+ const payload = {
58
+ v: getVersion(),
59
+ event,
60
+ did: config.device_id,
61
+ };
62
+ try {
63
+ const response = await (0, node_fetch_1.default)(PING_ENDPOINT, {
64
+ method: 'POST',
65
+ headers: { 'Content-Type': 'application/json' },
66
+ body: JSON.stringify(payload),
67
+ timeout: 2500,
68
+ });
69
+ if (response.ok && configNeedsSave) {
70
+ (0, config_1.saveConfig)(config);
71
+ }
72
+ else if (!response.ok) {
73
+ console.warn(`[Telemetry] Ping failed with status: ${response.status}`);
74
+ }
75
+ }
76
+ catch (error) {
77
+ console.warn(`[Telemetry] Ping failed with network error.`);
78
+ }
79
+ }
80
+ //# sourceMappingURL=telemetryPinger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetryPinger.js","sourceRoot":"","sources":["../src/telemetryPinger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@relayplane/proxy",
3
- "version": "1.9.18",
3
+ "version": "1.9.21",
4
4
  "description": "Open source cost intelligence proxy for AI agents. Cut LLM costs ~80% with smart model routing. Dashboard, policy engine, 11 providers. MIT licensed.",
5
5
  "homepage": "https://relayplane.com",
6
6
  "repository": {
@@ -43,7 +43,8 @@
43
43
  "@relayplane/core": "^0.1.4",
44
44
  "fastest-levenshtein": "^1.0.16",
45
45
  "@relayplane/learning-engine": "^0.1.0",
46
- "better-sqlite3": "^11.10.0"
46
+ "better-sqlite3": "^11.10.0",
47
+ "js-yaml": "^4.1.0"
47
48
  },
48
49
  "optionalDependencies": {
49
50
  "@relayplane/auth-gate": "^0.1.0",
@@ -54,6 +55,7 @@
54
55
  "better-sqlite3": "^11.0.0"
55
56
  },
56
57
  "devDependencies": {
58
+ "@types/js-yaml": "^4.0.9",
57
59
  "typescript": "^5.3.3",
58
60
  "vitest": "^1.1.0"
59
61
  },