Lines 1-22javascript
2import { createHash, randomBytes } from "node:crypto";
3import { execFileSync, spawnSync } from "node:child_process";
4import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync, copyFileSync } from "node:fs";
5import { homedir, hostname, userInfo } from "node:os";
6import { resolve } from "node:path";
7import { fileURLToPath } from "node:url";
8import { readApiKeyCredential, storeApiKey } from "./credentials.mjs";
10const DEFAULT_OUT_DIR = "~/.traice/internal-spend-codex";
11const LEGACY_INSTALL_CONFIG = ".traice-internal-spend/install.json";
12const DEFAULT_WORKSPACE_SLUG = "internal-spend-poc";
13const DEFAULT_WORKSPACE_NAME = "Internal Spend POC";
14const DEFAULT_KEY_NAME = "internal-spend-codex-device";
15const BEGIN_MARKER = "# BEGIN trAIce Internal Spend Codex OTel";
16const END_MARKER = "# END trAIce Internal Spend Codex OTel";
17const LEGACY_BEGIN_MARKER = "# BEGIN trAIce Codex OTel POC";
18const LEGACY_END_MARKER = "# END trAIce Codex OTel POC";
19const LAUNCH_AGENT_LABEL = "com.traice.internal-spend-codex-collector";
21const args = parseArgs(process.argv.slice(2));
22const inheritedApiKey = process.env.TRAICE_API_KEY;
MediumInstall Persistence
Source writes installer persistence such as shell profile or service configuration.
install.mjsView on unpkg · L2