Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
29 lines
847 B
TypeScript
29 lines
847 B
TypeScript
/**
|
|
* Creates an opaque client identity suitable for cross-host Agent commands.
|
|
* Business provenance belongs in typed command or pending-intent fields, never
|
|
* in this value.
|
|
*/
|
|
export function createAgentClientId(): string {
|
|
const crypto = globalThis.crypto;
|
|
if (typeof crypto?.randomUUID === "function") {
|
|
return crypto.randomUUID();
|
|
}
|
|
if (typeof crypto?.getRandomValues !== "function") {
|
|
throw new Error("Secure UUID generation is unavailable");
|
|
}
|
|
|
|
const bytes = crypto.getRandomValues(new Uint8Array(16));
|
|
bytes[6] = (bytes[6]! & 0x0f) | 0x40;
|
|
bytes[8] = (bytes[8]! & 0x3f) | 0x80;
|
|
const hex = Array.from(bytes, (value) =>
|
|
value.toString(16).padStart(2, "0")
|
|
).join("");
|
|
return [
|
|
hex.slice(0, 8),
|
|
hex.slice(8, 12),
|
|
hex.slice(12, 16),
|
|
hex.slice(16, 20),
|
|
hex.slice(20)
|
|
].join("-");
|
|
}
|