optimus-tool-call 0.1.16 → 0.1.17
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/lib/hardware-uuid.d.ts +3 -9
- package/dist/lib/hardware-uuid.d.ts.map +1 -1
- package/dist/lib/hardware-uuid.js +22 -34
- package/dist/lib/hardware-uuid.js.map +1 -1
- package/dist/lib/machine-auth.d.ts +0 -2
- package/dist/lib/machine-auth.d.ts.map +1 -1
- package/dist/lib/machine-auth.js +2 -3
- package/dist/lib/machine-auth.js.map +1 -1
- package/dist/lib/streaming.d.ts.map +1 -1
- package/dist/lib/streaming.js +3 -21
- package/dist/lib/streaming.js.map +1 -1
- package/dist/test/streaming.test.js +1 -5
- package/dist/test/streaming.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
* `src/log_uuid/hardware_uuid.ts` (see design_notes/user_profile_field_sources.md).
|
|
4
|
-
*/
|
|
5
|
-
/** Shared shell one-liner helper (also used by `user-profile.ts`, same as log-llm-config). */
|
|
6
|
-
export declare function readCommandOutput(command: string): string;
|
|
7
|
-
/** Prefer `OPTIMUS_HARDWARE_UUID`, then macOS probes (matches log-llm-config). */
|
|
8
|
-
export declare function resolveHardwareUuid(): string;
|
|
9
|
-
/** Same as {@link resolveHardwareUuid} but returns null on failure (e.g. Linux CI). */
|
|
1
|
+
/** Resolve hardware UUID from environment or macOS system commands (same strategy as log-llm-config). */
|
|
2
|
+
declare function resolveHardwareUuid(): string;
|
|
10
3
|
export declare function tryResolveHardwareUuid(): string | null;
|
|
4
|
+
export { resolveHardwareUuid };
|
|
11
5
|
//# sourceMappingURL=hardware-uuid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hardware-uuid.d.ts","sourceRoot":"","sources":["../../src/lib/hardware-uuid.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hardware-uuid.d.ts","sourceRoot":"","sources":["../../src/lib/hardware-uuid.ts"],"names":[],"mappings":"AAEA,yGAAyG;AACzG,iBAAS,mBAAmB,IAAI,MAAM,CAyBrC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAMtD;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,46 +1,33 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hardware UUID resolution — same probe order as log-llm-config
|
|
3
|
-
* `src/log_uuid/hardware_uuid.ts` (see design_notes/user_profile_field_sources.md).
|
|
4
|
-
*/
|
|
5
1
|
import { execSync } from "node:child_process";
|
|
6
|
-
/**
|
|
7
|
-
|
|
2
|
+
/** Resolve hardware UUID from environment or macOS system commands (same strategy as log-llm-config). */
|
|
3
|
+
function resolveHardwareUuid() {
|
|
4
|
+
const envUuid = process.env.OPTIMUS_HARDWARE_UUID?.trim();
|
|
5
|
+
if (envUuid)
|
|
6
|
+
return envUuid;
|
|
8
7
|
try {
|
|
9
|
-
|
|
8
|
+
const ioregOutput = execSync("ioreg -rd1 -c IOPlatformExpertDevice", {
|
|
10
9
|
encoding: "utf8",
|
|
11
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
12
10
|
}).trim();
|
|
11
|
+
const ioregMatch = ioregOutput.match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/i);
|
|
12
|
+
if (ioregMatch?.[1])
|
|
13
|
+
return ioregMatch[1];
|
|
13
14
|
}
|
|
14
15
|
catch {
|
|
15
|
-
|
|
16
|
+
// try next method
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const profilerOutput = execSync("system_profiler SPHardwareDataType", {
|
|
20
|
+
encoding: "utf8",
|
|
21
|
+
}).trim();
|
|
22
|
+
const profilerMatch = profilerOutput.match(/Hardware UUID:\s*([A-F0-9-]+)/i);
|
|
23
|
+
if (profilerMatch?.[1])
|
|
24
|
+
return profilerMatch[1];
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// both methods failed
|
|
16
28
|
}
|
|
17
|
-
}
|
|
18
|
-
const readHardwareUuidFromCommands = () => {
|
|
19
|
-
const ioregOutput = readCommandOutput("ioreg -rd1 -c IOPlatformExpertDevice");
|
|
20
|
-
const ioregMatch = ioregOutput.match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/i);
|
|
21
|
-
if (ioregMatch?.[1])
|
|
22
|
-
return ioregMatch[1];
|
|
23
|
-
const profilerOutput = readCommandOutput("system_profiler SPHardwareDataType");
|
|
24
|
-
const profilerMatch = profilerOutput.match(/Hardware UUID:\s*([A-F0-9-]+)/i);
|
|
25
|
-
if (profilerMatch?.[1])
|
|
26
|
-
return profilerMatch[1];
|
|
27
29
|
throw new Error("Unable to determine hardware UUID via ioreg or system_profiler.");
|
|
28
|
-
};
|
|
29
|
-
const normalizeHardwareUuid = (raw) => {
|
|
30
|
-
const trimmed = raw.trim();
|
|
31
|
-
const match = trimmed.match(/[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}/);
|
|
32
|
-
if (match)
|
|
33
|
-
return match[0];
|
|
34
|
-
return trimmed.replace(/^"+|"+$/g, "");
|
|
35
|
-
};
|
|
36
|
-
/** Prefer `OPTIMUS_HARDWARE_UUID`, then macOS probes (matches log-llm-config). */
|
|
37
|
-
export function resolveHardwareUuid() {
|
|
38
|
-
const envUuid = process.env.OPTIMUS_HARDWARE_UUID?.trim();
|
|
39
|
-
if (envUuid)
|
|
40
|
-
return normalizeHardwareUuid(envUuid);
|
|
41
|
-
return normalizeHardwareUuid(readHardwareUuidFromCommands());
|
|
42
30
|
}
|
|
43
|
-
/** Same as {@link resolveHardwareUuid} but returns null on failure (e.g. Linux CI). */
|
|
44
31
|
export function tryResolveHardwareUuid() {
|
|
45
32
|
try {
|
|
46
33
|
return resolveHardwareUuid();
|
|
@@ -49,4 +36,5 @@ export function tryResolveHardwareUuid() {
|
|
|
49
36
|
return null;
|
|
50
37
|
}
|
|
51
38
|
}
|
|
39
|
+
export { resolveHardwareUuid };
|
|
52
40
|
//# sourceMappingURL=hardware-uuid.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hardware-uuid.js","sourceRoot":"","sources":["../../src/lib/hardware-uuid.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hardware-uuid.js","sourceRoot":"","sources":["../../src/lib/hardware-uuid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,yGAAyG;AACzG,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,QAAQ,CAAC,sCAAsC,EAAE;YACnE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAC1E,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,QAAQ,CAAC,oCAAoC,EAAE;YACpE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC7E,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC;QACH,OAAO,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { type StoredAuthKey } from "optimus-tofu";
|
|
2
|
-
/** Same path as log-llm-config: `~/opt-ai-sec/management/auth_key.txt` under `$HOME`. */
|
|
3
|
-
export declare const OPTIMUS_AUTH_KEY_RELATIVE_PATH: string;
|
|
4
2
|
/**
|
|
5
3
|
* Same TOFU + machine key flow as log-llm-config: verify stored key against
|
|
6
4
|
* `/endpoint_security/auth/` or request a new key and persist under HOME.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-auth.d.ts","sourceRoot":"","sources":["../../src/lib/machine-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"machine-auth.d.ts","sourceRoot":"","sources":["../../src/lib/machine-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AA6BtB;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAUxB;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
|
package/dist/lib/machine-auth.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { ensureAuthentication, loadEndpointBase, } from "optimus-tofu";
|
|
3
|
-
|
|
4
|
-
export const OPTIMUS_AUTH_KEY_RELATIVE_PATH = path.join("opt-ai-sec", "management", "auth_key.txt");
|
|
3
|
+
const AUTH_KEY_RELATIVE_PATH = path.join("opt-ai-sec", "management", "auth_key.txt");
|
|
5
4
|
let cached = null;
|
|
6
5
|
async function postJsonForAuth(endpointUrl, body) {
|
|
7
6
|
const res = await fetch(endpointUrl, {
|
|
@@ -27,7 +26,7 @@ export async function ensureToolCallAuth(hardwareUuid) {
|
|
|
27
26
|
const key = await ensureAuthentication({
|
|
28
27
|
hardwareUuid,
|
|
29
28
|
endpointBase: loadEndpointBase(),
|
|
30
|
-
authRelativePath:
|
|
29
|
+
authRelativePath: AUTH_KEY_RELATIVE_PATH,
|
|
31
30
|
postJson: postJsonForAuth,
|
|
32
31
|
});
|
|
33
32
|
cached = { hardwareUuid, key };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine-auth.js","sourceRoot":"","sources":["../../src/lib/machine-auth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAGjB,MAAM,cAAc,CAAC;AAEtB,
|
|
1
|
+
{"version":3,"file":"machine-auth.js","sourceRoot":"","sources":["../../src/lib/machine-auth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAGjB,MAAM,cAAc,CAAC;AAEtB,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACtC,YAAY,EACZ,YAAY,EACZ,cAAc,CACf,CAAC;AAEF,IAAI,MAAM,GAAwD,IAAI,CAAC;AAEvE,KAAK,UAAU,eAAe,CAC5B,WAAmB,EACnB,IAA6B;IAE7B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAoB;IAEpB,IAAI,MAAM,EAAE,YAAY,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC;QACrC,YAAY;QACZ,YAAY,EAAE,gBAAgB,EAAE;QAChC,gBAAgB,EAAE,sBAAsB;QACxC,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAC;IACH,MAAM,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/lib/streaming.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/lib/streaming.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAahD;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBrE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBjD;AA2ID;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CA0BrC"}
|
package/dist/lib/streaming.js
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { createSignature } from "optimus-tofu";
|
|
5
5
|
import { ensureToolCallAuth } from "./machine-auth.js";
|
|
6
|
-
import { ensureStartupIfNoAuthKey } from "./startup-sync.js";
|
|
7
|
-
import { tryResolveHardwareUuid } from "./hardware-uuid.js";
|
|
8
6
|
import { loadEndpointBase } from "./endpoint-config.js";
|
|
7
|
+
import { tryResolveHardwareUuid } from "./hardware-uuid.js";
|
|
9
8
|
// Backend configuration
|
|
10
9
|
const OPTIMUS_API_BASE = loadEndpointBase();
|
|
11
10
|
const BATCH_SIZE = parseInt(process.env.OPTIMUS_BATCH_SIZE || "1", 10); // Default to 1 for testing
|
|
@@ -59,23 +58,8 @@ export async function flushEvents() {
|
|
|
59
58
|
// eventQueue.unshift(...eventsToSend);
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Wire shape for HMAC signing: machine identity comes from batch `hardware_uuid` only;
|
|
64
|
-
* strip client `user_profile` / `hardware_uuid` from nested metadata so the backend links
|
|
65
|
-
* via `EndpointMachine` (populated by log-llm-config startup or our cold-start sync).
|
|
66
|
-
*/
|
|
67
61
|
function eventsWireFromTelemetry(events) {
|
|
68
|
-
return events.map((e) =>
|
|
69
|
-
const raw = JSON.parse(JSON.stringify(e));
|
|
70
|
-
const meta = raw.tool_call_metadata;
|
|
71
|
-
if (meta && typeof meta === "object" && !Array.isArray(meta)) {
|
|
72
|
-
const m = { ...meta };
|
|
73
|
-
delete m.user_profile;
|
|
74
|
-
delete m.hardware_uuid;
|
|
75
|
-
raw.tool_call_metadata = m;
|
|
76
|
-
}
|
|
77
|
-
return raw;
|
|
78
|
-
});
|
|
62
|
+
return events.map((e) => JSON.parse(JSON.stringify(e)));
|
|
79
63
|
}
|
|
80
64
|
/**
|
|
81
65
|
* Send batch of events to Django backend.
|
|
@@ -86,10 +70,8 @@ async function sendBatch(events) {
|
|
|
86
70
|
}
|
|
87
71
|
const hardwareUuid = tryResolveHardwareUuid();
|
|
88
72
|
if (!hardwareUuid) {
|
|
89
|
-
throw new Error("Cannot send tool-call telemetry: set OPTIMUS_HARDWARE_UUID or run on a host "
|
|
90
|
-
"where ioreg/system_profiler can resolve the hardware UUID (same rules as log-llm-config).");
|
|
73
|
+
throw new Error("Cannot send tool-call telemetry: set OPTIMUS_HARDWARE_UUID or run on a host with a hardware UUID.");
|
|
91
74
|
}
|
|
92
|
-
await ensureStartupIfNoAuthKey(hardwareUuid);
|
|
93
75
|
const auth = await ensureToolCallAuth(hardwareUuid);
|
|
94
76
|
const eventsWire = eventsWireFromTelemetry(events);
|
|
95
77
|
const signingPayload = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/lib/streaming.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../../src/lib/streaming.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { test } from "node:test";
|
|
2
2
|
import assert from "node:assert";
|
|
3
3
|
import { queueEvent, flushEvents, ensureShutdown } from "../lib/streaming.js";
|
|
4
|
-
before(() => {
|
|
5
|
-
process.env.OPTIMUS_SKIP_STARTUP_SYNC = "1";
|
|
6
|
-
process.env.OPTIMUS_HARDWARE_UUID = "11111111-1111-1111-1111-111111111111";
|
|
7
|
-
});
|
|
8
4
|
// Note: These tests are basic structure tests. Full integration tests with actual HTTP
|
|
9
5
|
// would require mocking fetch/http, which is done in integration tests.
|
|
10
6
|
// Helper to create a mock event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.test.js","sourceRoot":"","sources":["../../src/test/streaming.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"streaming.test.js","sourceRoot":"","sources":["../../src/test/streaming.test.ts"],"names":[],"mappings":"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"}
|