@oxlayer/cli 0.0.1 → 0.0.3

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/package.json CHANGED
@@ -1,25 +1,19 @@
1
1
  {
2
2
  "name": "@oxlayer/cli",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
+ "access": "public",
6
7
  "registry": "https://registry.npmjs.org/"
7
8
  },
8
9
  "description": "OxLayer CLI - Install and manage OxLayer SDK packages",
9
10
  "bin": {
10
- "oxlayer": "./dist/cli.js"
11
+ "ox": "./dist/cli.js"
11
12
  },
12
13
  "files": [
13
14
  "dist",
14
15
  "README.md"
15
16
  ],
16
- "scripts": {
17
- "dev": "bun src/cli.ts",
18
- "build": "tsup",
19
- "start": "node dist/cli.js",
20
- "typecheck": "tsc --noEmit",
21
- "prepublishOnly": "bun run build"
22
- },
23
17
  "dependencies": {
24
18
  "commander": "^12.1.0",
25
19
  "node-fetch": "^3.3.2",
@@ -38,6 +32,14 @@
38
32
  "@types/prompts": "^2.4.9",
39
33
  "tsup": "^8.3.5",
40
34
  "tsx": "^4.19.2",
41
- "typescript": "^5.7.3"
35
+ "typescript": "^5.7.3",
36
+ "javascript-obfuscator": "^4.1.1"
37
+ },
38
+ "scripts": {
39
+ "dev": "bun src/cli.ts",
40
+ "build": "tsup",
41
+ "build:obfuscated": "tsup && bun scripts/obfuscate.ts",
42
+ "start": "node dist/cli.js",
43
+ "typecheck": "tsc --noEmit"
42
44
  }
43
45
  }
@@ -1,17 +0,0 @@
1
- import {
2
- api_service_default,
3
- getLatestVersion,
4
- healthCheck,
5
- requestPackageDownload,
6
- resolveCapabilities
7
- } from "./chunk-DOYXC6AO.js";
8
- import "./chunk-QERPYPW4.js";
9
- import "./chunk-HQST7GVM.js";
10
- export {
11
- api_service_default as default,
12
- getLatestVersion,
13
- healthCheck,
14
- requestPackageDownload,
15
- resolveCapabilities
16
- };
17
- //# sourceMappingURL=api.service-CDPTVMJM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,93 +0,0 @@
1
- import {
2
- getAccessToken,
3
- init_device_auth_service,
4
- validateToken
5
- } from "./chunk-QERPYPW4.js";
6
- import {
7
- init_esm_shims
8
- } from "./chunk-HQST7GVM.js";
9
-
10
- // src/services/api.service.ts
11
- init_esm_shims();
12
- init_device_auth_service();
13
- function getApiEndpoint() {
14
- return "http://localhost:3001";
15
- }
16
- async function apiRequest(endpoint, options = {}) {
17
- const token = process.env.OXLAYER_TOKEN || await getAccessToken();
18
- if (!token || !validateToken(token)) {
19
- throw new Error(
20
- "Invalid or missing access token. Please run: oxlayer login"
21
- );
22
- }
23
- const url = `${getApiEndpoint()}${endpoint}`;
24
- const response = await fetch(url, {
25
- ...options,
26
- headers: {
27
- "Content-Type": "application/json",
28
- "Authorization": `Bearer ${token}`,
29
- ...options.headers
30
- }
31
- });
32
- if (!response.ok) {
33
- const error = await response.text();
34
- throw new Error(`API request failed (${response.status}): ${error}`);
35
- }
36
- return response.json();
37
- }
38
- async function resolveCapabilities(requested, environment = "development", projectId) {
39
- const result = await apiRequest(
40
- "/v1/capabilities/resolve",
41
- {
42
- method: "POST",
43
- body: JSON.stringify({
44
- projectId,
45
- environment,
46
- requested
47
- })
48
- }
49
- );
50
- return result.data;
51
- }
52
- async function requestPackageDownload(packageType, version) {
53
- const result = await apiRequest(
54
- "/v1/packages/download",
55
- {
56
- method: "POST",
57
- body: JSON.stringify({
58
- packageType,
59
- version
60
- })
61
- }
62
- );
63
- return result.data;
64
- }
65
- async function getLatestVersion() {
66
- const result = await apiRequest(
67
- "/v1/latest-version"
68
- );
69
- return result.data.version;
70
- }
71
- async function healthCheck() {
72
- try {
73
- await apiRequest("/v1/health");
74
- return true;
75
- } catch {
76
- return false;
77
- }
78
- }
79
- var api_service_default = {
80
- resolveCapabilities,
81
- requestPackageDownload,
82
- getLatestVersion,
83
- healthCheck
84
- };
85
-
86
- export {
87
- resolveCapabilities,
88
- requestPackageDownload,
89
- getLatestVersion,
90
- healthCheck,
91
- api_service_default
92
- };
93
- //# sourceMappingURL=chunk-DOYXC6AO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/services/api.service.ts"],"sourcesContent":["/**\n * API Service\n *\n * Handles communication with the OxLayer Control Panel API using scoped tokens.\n *\n * @deprecated This service will be refactored to use capability manifests.\n * New code should work with manifests directly via device-auth.service.ts.\n */\n\nimport type {\n CapabilityResolutionResponse,\n PackageDownloadResponse,\n} from '../types/capabilities.js';\nimport type {\n CapabilityName,\n Environment,\n SdkPackageType,\n} from '../types/index.js';\nimport { getAccessToken, validateToken } from './device-auth.service.js';\n\nconst DEFAULT_API_ENDPOINT = 'https://api.oxlayer.dev';\n\n/**\n * Get API endpoint from config or default\n */\nfunction getApiEndpoint(): string {\n return process.env.OXLAYER_API_ENDPOINT || DEFAULT_API_ENDPOINT;\n}\n\n/**\n * Make an authenticated API request using scoped token\n */\nasync function apiRequest<T>(\n endpoint: string,\n options: RequestInit = {}\n): Promise<T> {\n const token = process.env.OXLAYER_TOKEN || await getAccessToken();\n\n if (!token || !validateToken(token)) {\n throw new Error(\n 'Invalid or missing access token. Please run: oxlayer login'\n );\n }\n\n const url = `${getApiEndpoint()}${endpoint}`;\n\n const response = await fetch(url, {\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`,\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`API request failed (${response.status}): ${error}`);\n }\n\n return response.json();\n}\n\n/**\n * Resolve capabilities for the current project\n *\n * This is the main method that SDKs call to get their configuration.\n *\n * @deprecated Use getManifest from device-auth.service.ts instead\n */\nexport async function resolveCapabilities(\n requested: CapabilityName[],\n environment: Environment = 'development',\n projectId?: string\n): Promise<CapabilityResolutionResponse> {\n const result = await apiRequest<{ data: CapabilityResolutionResponse }>(\n '/v1/capabilities/resolve',\n {\n method: 'POST',\n body: JSON.stringify({\n projectId,\n environment,\n requested,\n }),\n }\n );\n\n return result.data;\n}\n\n/**\n * Request a package download URL\n *\n * Returns a signed URL for downloading a package from R2/S3\n *\n * @deprecated Use getManifest from device-auth.service.ts to get package URLs\n */\nexport async function requestPackageDownload(\n packageType: SdkPackageType,\n version?: string\n): Promise<PackageDownloadResponse> {\n const result = await apiRequest<{ data: PackageDownloadResponse }>(\n '/v1/packages/download',\n {\n method: 'POST',\n body: JSON.stringify({\n packageType,\n version,\n }),\n }\n );\n\n return result.data;\n}\n\n/**\n * Get latest release version\n */\nexport async function getLatestVersion(): Promise<string> {\n const result = await apiRequest<{ data: { version: string } }>(\n '/v1/latest-version'\n );\n return result.data.version;\n}\n\n/**\n * Check API health\n */\nexport async function healthCheck(): Promise<boolean> {\n try {\n await apiRequest<{ status: string }>('/v1/health');\n return true;\n } catch {\n return false;\n }\n}\n\nexport default {\n resolveCapabilities,\n requestPackageDownload,\n getLatestVersion,\n healthCheck,\n};\n"],"mappings":";;;;;;;;;;AAAA;AAkBA;AAOA,SAAS,iBAAyB;AAChC,SAAO;AACT;AAKA,eAAe,WACb,UACA,UAAuB,CAAC,GACZ;AACZ,QAAM,QAAQ,QAAQ,IAAI,iBAAiB,MAAM,eAAe;AAEhE,MAAI,CAAC,SAAS,CAAC,cAAc,KAAK,GAAG;AACnC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,MAAM,GAAG,eAAe,CAAC,GAAG,QAAQ;AAE1C,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,GAAG;AAAA,IACH,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,iBAAiB,UAAU,KAAK;AAAA,MAChC,GAAG,QAAQ;AAAA,IACb;AAAA,EACF,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,QAAQ,MAAM,SAAS,KAAK;AAClC,UAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,MAAM,KAAK,EAAE;AAAA,EACrE;AAEA,SAAO,SAAS,KAAK;AACvB;AASA,eAAsB,oBACpB,WACA,cAA2B,eAC3B,WACuC;AACvC,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AASA,eAAsB,uBACpB,aACA,SACkC;AAClC,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;AAKA,eAAsB,mBAAoC;AACxD,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,EACF;AACA,SAAO,OAAO,KAAK;AACrB;AAKA,eAAsB,cAAgC;AACpD,MAAI;AACF,UAAM,WAA+B,YAAY;AACjD,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,IAAO,sBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}
@@ -1,108 +0,0 @@
1
- import {
2
- init_esm_shims
3
- } from "./chunk-HQST7GVM.js";
4
-
5
- // src/utils/cli.ts
6
- init_esm_shims();
7
- import chalk from "chalk";
8
- import Table from "cli-table3";
9
- import ora from "ora";
10
- function info(message) {
11
- console.log(chalk.blue("\u2139"), message);
12
- }
13
- function success(message) {
14
- console.log(chalk.green("\u2713"), message);
15
- }
16
- function warning(message) {
17
- console.log(chalk.yellow("\u26A0"), message);
18
- }
19
- function error(message) {
20
- console.error(chalk.red("\u2717"), message);
21
- }
22
- function header(title) {
23
- console.log();
24
- console.log(chalk.bold.white(title));
25
- console.log(chalk.gray("\u2500".repeat(title.length)));
26
- }
27
- function printCapabilities(capabilities) {
28
- if (Object.keys(capabilities).length === 0) {
29
- info("No capabilities available");
30
- return;
31
- }
32
- const table = new Table({
33
- head: [chalk.cyan("Capability"), chalk.cyan("Limits")],
34
- colWidths: [20, 60]
35
- });
36
- for (const [name, limits] of Object.entries(capabilities)) {
37
- const limitStr = Object.entries(limits).filter(([_, value]) => value !== void 0).map(([key, value]) => {
38
- if (typeof value === "boolean") {
39
- return value ? chalk.green(key) : chalk.red(key);
40
- }
41
- return `${key}: ${chalk.yellow(String(value))}`;
42
- }).join(", ");
43
- table.push([chalk.white(name), limitStr || "No limits configured"]);
44
- }
45
- console.log(table.toString());
46
- }
47
- function printList(items) {
48
- items.forEach((item) => console.log(` ${chalk.gray("\u2022")} ${item}`));
49
- }
50
- function createSpinner(text) {
51
- return ora({
52
- text,
53
- color: "blue"
54
- });
55
- }
56
- async function confirm(message) {
57
- const { default: prompts } = await import("prompts");
58
- const result = await prompts({
59
- type: "confirm",
60
- name: "value",
61
- message,
62
- initial: false
63
- });
64
- return result.value;
65
- }
66
- function formatSize(bytes) {
67
- const units = ["B", "KB", "MB", "GB"];
68
- let size = bytes;
69
- let unitIndex = 0;
70
- while (size >= 1024 && unitIndex < units.length - 1) {
71
- size /= 1024;
72
- unitIndex++;
73
- }
74
- return `${size.toFixed(2)} ${units[unitIndex]}`;
75
- }
76
- function formatDuration(ms) {
77
- const seconds = Math.floor(ms / 1e3);
78
- const minutes = Math.floor(seconds / 60);
79
- const hours = Math.floor(minutes / 60);
80
- if (hours > 0) {
81
- return `${hours}h ${minutes % 60}m`;
82
- }
83
- if (minutes > 0) {
84
- return `${minutes}m ${seconds % 60}s`;
85
- }
86
- return `${seconds}s`;
87
- }
88
- function getBanner() {
89
- return `
90
- ${chalk.gray("OxLayer CLI")}
91
- `;
92
- }
93
-
94
- export {
95
- info,
96
- success,
97
- warning,
98
- error,
99
- header,
100
- printCapabilities,
101
- printList,
102
- createSpinner,
103
- confirm,
104
- formatSize,
105
- formatDuration,
106
- getBanner
107
- };
108
- //# sourceMappingURL=chunk-HOFSFUN5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/cli.ts"],"sourcesContent":["/**\n * CLI Utilities\n *\n * Shared utilities for CLI output and formatting\n */\n\nimport chalk from 'chalk';\nimport Table from 'cli-table3';\nimport type { CapabilityLimits } from '../types/index.js';\nimport ora from 'ora';\n\n/**\n * Print an info message\n */\nexport function info(message: string): void {\n console.log(chalk.blue('ℹ'), message);\n}\n\n/**\n * Print a success message\n */\nexport function success(message: string): void {\n console.log(chalk.green('✓'), message);\n}\n\n/**\n * Print a warning message\n */\nexport function warning(message: string): void {\n console.log(chalk.yellow('⚠'), message);\n}\n\n/**\n * Print an error message\n */\nexport function error(message: string): void {\n console.error(chalk.red('✗'), message);\n}\n\n/**\n * Print a header/section title\n */\nexport function header(title: string): void {\n console.log();\n console.log(chalk.bold.white(title));\n console.log(chalk.gray('─'.repeat(title.length)));\n}\n\n/**\n * Print capability limits as a table\n */\nexport function printCapabilities(capabilities: Record<string, CapabilityLimits>): void {\n if (Object.keys(capabilities).length === 0) {\n info('No capabilities available');\n return;\n }\n\n const table = new Table({\n head: [chalk.cyan('Capability'), chalk.cyan('Limits')],\n colWidths: [20, 60],\n });\n\n for (const [name, limits] of Object.entries(capabilities)) {\n const limitStr = Object.entries(limits)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => {\n if (typeof value === 'boolean') {\n return value ? chalk.green(key) : chalk.red(key);\n }\n return `${key}: ${chalk.yellow(String(value))}`;\n })\n .join(', ');\n\n table.push([chalk.white(name), limitStr || 'No limits configured']);\n }\n\n console.log(table.toString());\n}\n\n/**\n * Print a list of items\n */\nexport function printList(items: string[]): void {\n items.forEach((item) => console.log(` ${chalk.gray('•')} ${item}`));\n}\n\n/**\n * Create a spinner for long-running operations\n */\nexport function createSpinner(text: string) {\n return ora({\n text,\n color: 'blue',\n });\n}\n\n/**\n * Ask for confirmation\n */\nexport async function confirm(message: string): Promise<boolean> {\n const { default: prompts } = await import('prompts');\n const result = await prompts({\n type: 'confirm',\n name: 'value',\n message,\n initial: false,\n });\n return result.value;\n}\n\n/**\n * Format a file size\n */\nexport function formatSize(bytes: number): string {\n const units = ['B', 'KB', 'MB', 'GB'];\n let size = bytes;\n let unitIndex = 0;\n\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n\n return `${size.toFixed(2)} ${units[unitIndex]}`;\n}\n\n/**\n * Format a duration\n */\nexport function formatDuration(ms: number): string {\n const seconds = Math.floor(ms / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m`;\n }\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n return `${seconds}s`;\n}\n\n/**\n * Get the OxLayer banner\n */\nexport function getBanner(): string {\n return `\\n${chalk.gray('OxLayer CLI')}\\n`;\n}\n"],"mappings":"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","names":[]}
@@ -1,26 +0,0 @@
1
- var __getOwnPropNames = Object.getOwnPropertyNames;
2
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
3
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
4
- }) : x)(function(x) {
5
- if (typeof require !== "undefined") return require.apply(this, arguments);
6
- throw Error('Dynamic require of "' + x + '" is not supported');
7
- });
8
- var __esm = (fn, res) => function __init() {
9
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10
- };
11
-
12
- // ../../node_modules/tsup/assets/esm_shims.js
13
- import path from "path";
14
- import { fileURLToPath } from "url";
15
- var init_esm_shims = __esm({
16
- "../../node_modules/tsup/assets/esm_shims.js"() {
17
- "use strict";
18
- }
19
- });
20
-
21
- export {
22
- __require,
23
- __esm,
24
- init_esm_shims
25
- };
26
- //# sourceMappingURL=chunk-HQST7GVM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/tsup/assets/esm_shims.js"],"sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n"],"mappings":";;;;;;;;;;;;AACA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAF9B;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -1,105 +0,0 @@
1
- import {
2
- init_esm_shims
3
- } from "./chunk-HQST7GVM.js";
4
-
5
- // src/services/package.service.ts
6
- init_esm_shims();
7
- import { promises as fs } from "fs";
8
- import { join } from "path";
9
- async function readPackageJson(cwd = process.cwd()) {
10
- const packageJsonPath = join(cwd, "package.json");
11
- try {
12
- const content = await fs.readFile(packageJsonPath, "utf-8");
13
- return JSON.parse(content);
14
- } catch (error) {
15
- throw new Error(`No package.json found in ${cwd}`);
16
- }
17
- }
18
- async function writePackageJson(packageJson, cwd = process.cwd()) {
19
- const packageJsonPath = join(cwd, "package.json");
20
- await fs.writeFile(
21
- packageJsonPath,
22
- JSON.stringify(packageJson, null, 2) + "\n"
23
- );
24
- }
25
- async function addSdkDependencies(manifest, options = {}, cwd = process.cwd()) {
26
- const packageJson = await readPackageJson(cwd);
27
- if (!packageJson.dependencies) {
28
- packageJson.dependencies = {};
29
- }
30
- if (!packageJson.devDependencies) {
31
- packageJson.devDependencies = {};
32
- }
33
- for (const [packageName, packageInfo] of Object.entries(manifest.packages)) {
34
- const target = options.saveDev ? packageJson.devDependencies : packageJson.dependencies;
35
- if (options.save || options.saveDev) {
36
- target[packageName] = manifest.version;
37
- }
38
- }
39
- await writePackageJson(packageJson, cwd);
40
- }
41
- async function freezeWorkspaceVersions(cwd = process.cwd()) {
42
- const packageJson = await readPackageJson(cwd);
43
- const replaceWorkspaceVersion = (deps) => {
44
- if (!deps) return;
45
- for (const [name, version] of Object.entries(deps)) {
46
- if (version === "workspace:*" || version === "workspace:^") {
47
- }
48
- }
49
- };
50
- replaceWorkspaceVersion(packageJson.dependencies);
51
- replaceWorkspaceVersion(packageJson.devDependencies);
52
- await writePackageJson(packageJson, cwd);
53
- }
54
- async function hasPackageJson(cwd = process.cwd()) {
55
- try {
56
- await fs.access(join(cwd, "package.json"));
57
- return true;
58
- } catch {
59
- return false;
60
- }
61
- }
62
- function getVendorDir(version, cwd = process.cwd()) {
63
- return join(cwd, ".capabilities-vendor", version);
64
- }
65
- async function isVersionInstalled(version, cwd = process.cwd()) {
66
- const vendorDir = getVendorDir(version, cwd);
67
- try {
68
- await fs.access(vendorDir);
69
- return true;
70
- } catch {
71
- return false;
72
- }
73
- }
74
- async function getInstalledVersion(cwd = process.cwd()) {
75
- const vendorDir = join(cwd, ".capabilities-vendor");
76
- try {
77
- const versions = await fs.readdir(vendorDir);
78
- return versions.sort().reverse()[0] || null;
79
- } catch {
80
- return null;
81
- }
82
- }
83
- var package_service_default = {
84
- readPackageJson,
85
- writePackageJson,
86
- addSdkDependencies,
87
- freezeWorkspaceVersions,
88
- hasPackageJson,
89
- getVendorDir,
90
- isVersionInstalled,
91
- getInstalledVersion
92
- };
93
-
94
- export {
95
- readPackageJson,
96
- writePackageJson,
97
- addSdkDependencies,
98
- freezeWorkspaceVersions,
99
- hasPackageJson,
100
- getVendorDir,
101
- isVersionInstalled,
102
- getInstalledVersion,
103
- package_service_default
104
- };
105
- //# sourceMappingURL=chunk-M3AAB53U.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/services/package.service.ts"],"sourcesContent":["/**\n * Package Service\n *\n * Handles modifying package.json and managing dependencies\n */\n\nimport { promises as fs } from 'fs';\nimport { join } from 'path';\n\n/**\n * Package.json structure (subset)\n */\ninterface PackageJson {\n name?: string;\n version?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n [key: string]: unknown;\n}\n\n/**\n * Read package.json from a directory\n */\nexport async function readPackageJson(cwd: string = process.cwd()): Promise<PackageJson> {\n const packageJsonPath = join(cwd, 'package.json');\n\n try {\n const content = await fs.readFile(packageJsonPath, 'utf-8');\n return JSON.parse(content);\n } catch (error) {\n throw new Error(`No package.json found in ${cwd}`);\n }\n}\n\n/**\n * Write package.json to a directory\n */\nexport async function writePackageJson(\n packageJson: PackageJson,\n cwd: string = process.cwd()\n): Promise<void> {\n const packageJsonPath = join(cwd, 'package.json');\n\n await fs.writeFile(\n packageJsonPath,\n JSON.stringify(packageJson, null, 2) + '\\n'\n );\n}\n\n/**\n * Add SDK dependencies to package.json\n *\n * This injects exact versions into dependencies or devDependencies\n * based on the manifest and install options\n */\nexport async function addSdkDependencies(\n manifest: import('../types/index.js').ReleaseManifest,\n options: {\n save?: boolean;\n saveDev?: boolean;\n } = {},\n cwd: string = process.cwd()\n): Promise<void> {\n const packageJson = await readPackageJson(cwd);\n\n // Initialize dependencies if needed\n if (!packageJson.dependencies) {\n packageJson.dependencies = {};\n }\n if (!packageJson.devDependencies) {\n packageJson.devDependencies = {};\n }\n\n // Add each package from the manifest with exact version\n for (const [packageName, packageInfo] of Object.entries(manifest.packages)) {\n const target = options.saveDev ? packageJson.devDependencies : packageJson.dependencies;\n\n if (options.save || options.saveDev) {\n // Use exact version from manifest\n target[packageName] = manifest.version;\n }\n }\n\n await writePackageJson(packageJson, cwd);\n}\n\n/**\n * Remove workspace:* references and replace with exact versions\n */\nexport async function freezeWorkspaceVersions(\n cwd: string = process.cwd()\n): Promise<void> {\n const packageJson = await readPackageJson(cwd);\n\n const replaceWorkspaceVersion = (deps: Record<string, string> | undefined) => {\n if (!deps) return;\n\n for (const [name, version] of Object.entries(deps)) {\n if (version === 'workspace:*' || version === 'workspace:^') {\n // Keep as is for local development\n // In production, this would be replaced with actual version\n }\n }\n };\n\n replaceWorkspaceVersion(packageJson.dependencies);\n replaceWorkspaceVersion(packageJson.devDependencies);\n\n await writePackageJson(packageJson, cwd);\n}\n\n/**\n * Check if package.json exists\n */\nexport async function hasPackageJson(cwd: string = process.cwd()): Promise<boolean> {\n try {\n await fs.access(join(cwd, 'package.json'));\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Get the vendor directory path for a specific version\n */\nexport function getVendorDir(version: string, cwd: string = process.cwd()): string {\n return join(cwd, '.capabilities-vendor', version);\n}\n\n/**\n * Check if a version is already installed\n */\nexport async function isVersionInstalled(\n version: string,\n cwd: string = process.cwd()\n): Promise<boolean> {\n const vendorDir = getVendorDir(version, cwd);\n\n try {\n await fs.access(vendorDir);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Get the currently installed version (if any)\n */\nexport async function getInstalledVersion(cwd: string = process.cwd()): Promise<string | null> {\n const vendorDir = join(cwd, '.capabilities-vendor');\n\n try {\n const versions = await fs.readdir(vendorDir);\n // Return the most recent version (assuming semantic naming)\n return versions.sort().reverse()[0] || null;\n } catch {\n return null;\n }\n}\n\nexport default {\n readPackageJson,\n writePackageJson,\n addSdkDependencies,\n freezeWorkspaceVersions,\n hasPackageJson,\n getVendorDir,\n isVersionInstalled,\n getInstalledVersion,\n};\n"],"mappings":";;;;;AAAA;AAMA,SAAS,YAAY,UAAU;AAC/B,SAAS,YAAY;AAgBrB,eAAsB,gBAAgB,MAAc,QAAQ,IAAI,GAAyB;AACvF,QAAM,kBAAkB,KAAK,KAAK,cAAc;AAEhD,MAAI;AACF,UAAM,UAAU,MAAM,GAAG,SAAS,iBAAiB,OAAO;AAC1D,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B,SAAS,OAAO;AACd,UAAM,IAAI,MAAM,4BAA4B,GAAG,EAAE;AAAA,EACnD;AACF;AAKA,eAAsB,iBACpB,aACA,MAAc,QAAQ,IAAI,GACX;AACf,QAAM,kBAAkB,KAAK,KAAK,cAAc;AAEhD,QAAM,GAAG;AAAA,IACP;AAAA,IACA,KAAK,UAAU,aAAa,MAAM,CAAC,IAAI;AAAA,EACzC;AACF;AAQA,eAAsB,mBACpB,UACA,UAGI,CAAC,GACL,MAAc,QAAQ,IAAI,GACX;AACf,QAAM,cAAc,MAAM,gBAAgB,GAAG;AAG7C,MAAI,CAAC,YAAY,cAAc;AAC7B,gBAAY,eAAe,CAAC;AAAA,EAC9B;AACA,MAAI,CAAC,YAAY,iBAAiB;AAChC,gBAAY,kBAAkB,CAAC;AAAA,EACjC;AAGA,aAAW,CAAC,aAAa,WAAW,KAAK,OAAO,QAAQ,SAAS,QAAQ,GAAG;AAC1E,UAAM,SAAS,QAAQ,UAAU,YAAY,kBAAkB,YAAY;AAE3E,QAAI,QAAQ,QAAQ,QAAQ,SAAS;AAEnC,aAAO,WAAW,IAAI,SAAS;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,iBAAiB,aAAa,GAAG;AACzC;AAKA,eAAsB,wBACpB,MAAc,QAAQ,IAAI,GACX;AACf,QAAM,cAAc,MAAM,gBAAgB,GAAG;AAE7C,QAAM,0BAA0B,CAAC,SAA6C;AAC5E,QAAI,CAAC,KAAM;AAEX,eAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,IAAI,GAAG;AAClD,UAAI,YAAY,iBAAiB,YAAY,eAAe;AAAA,MAG5D;AAAA,IACF;AAAA,EACF;AAEA,0BAAwB,YAAY,YAAY;AAChD,0BAAwB,YAAY,eAAe;AAEnD,QAAM,iBAAiB,aAAa,GAAG;AACzC;AAKA,eAAsB,eAAe,MAAc,QAAQ,IAAI,GAAqB;AAClF,MAAI;AACF,UAAM,GAAG,OAAO,KAAK,KAAK,cAAc,CAAC;AACzC,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAKO,SAAS,aAAa,SAAiB,MAAc,QAAQ,IAAI,GAAW;AACjF,SAAO,KAAK,KAAK,wBAAwB,OAAO;AAClD;AAKA,eAAsB,mBACpB,SACA,MAAc,QAAQ,IAAI,GACR;AAClB,QAAM,YAAY,aAAa,SAAS,GAAG;AAE3C,MAAI;AACF,UAAM,GAAG,OAAO,SAAS;AACzB,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAKA,eAAsB,oBAAoB,MAAc,QAAQ,IAAI,GAA2B;AAC7F,QAAM,YAAY,KAAK,KAAK,sBAAsB;AAElD,MAAI;AACF,UAAM,WAAW,MAAM,GAAG,QAAQ,SAAS;AAE3C,WAAO,SAAS,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK;AAAA,EACzC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,IAAO,0BAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}