@github/copilot-sdk 1.0.13-preview.3 → 1.0.13-preview.6

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,232 @@
1
+ import {
2
+ chmodSync,
3
+ copyFileSync,
4
+ existsSync,
5
+ lstatSync,
6
+ mkdirSync,
7
+ mkdtempSync,
8
+ readdirSync,
9
+ renameSync,
10
+ rmSync,
11
+ statSync
12
+ } from "node:fs";
13
+ import { createHash } from "node:crypto";
14
+ import { createRequire } from "node:module";
15
+ import { homedir } from "node:os";
16
+ import { dirname, join, relative, sep } from "node:path";
17
+ import { COPILOT_CLI_USE_NPM_PACKAGE } from "./cliVersion.js";
18
+ const require2 = createRequire(typeof __filename === "string" ? __filename : import.meta.url);
19
+ const RUNTIME_PLATFORMS = [
20
+ "darwin-arm64",
21
+ "darwin-x64",
22
+ "linux-arm64",
23
+ "linux-x64",
24
+ "linuxmusl-arm64",
25
+ "linuxmusl-x64",
26
+ "win32-arm64",
27
+ "win32-x64"
28
+ ];
29
+ const EXCLUDED_TOP_LEVEL = /* @__PURE__ */ new Set([
30
+ "app.js",
31
+ "assets",
32
+ "changelog.json",
33
+ "copilot",
34
+ "copilot.exe",
35
+ "foundry-local-sdk",
36
+ "index.js",
37
+ "LICENSE.md",
38
+ "napi-oop-runtime",
39
+ "npm-loader.js",
40
+ "package.json",
41
+ "pvrecorder",
42
+ "queries",
43
+ "README.md",
44
+ "sea-loader.js",
45
+ "webview"
46
+ ]);
47
+ function validateFile(path, label) {
48
+ if (!existsSync(path)) {
49
+ throw new Error(`${label} not found at ${path}.`);
50
+ }
51
+ if (statSync(path).size === 0) {
52
+ throw new Error(`${label} at ${path} is empty.`);
53
+ }
54
+ }
55
+ function validateRuntimeBundle(wrapper, runtimeNode) {
56
+ validateFile(wrapper, "Copilot runtime wrapper");
57
+ validateFile(runtimeNode, "Copilot runtime.node");
58
+ }
59
+ function isExcluded(relativePath) {
60
+ const parts = relativePath.split(sep);
61
+ const topLevel = parts[0];
62
+ const fileName = parts.at(-1) ?? "";
63
+ return EXCLUDED_TOP_LEVEL.has(topLevel) || /^tree-sitter.*\.wasm$/.test(topLevel) || /^voice-.*\.js$/.test(topLevel) || fileName === "cli-native.node" || parts.includes("mediaremote-adapter") || fileName.startsWith("copilot-runtime-bin");
64
+ }
65
+ function collectRuntimeAssets(sources) {
66
+ const assets = [];
67
+ const visit = (directory) => {
68
+ for (const entry of readdirSync(directory, { withFileTypes: true })) {
69
+ const source = join(directory, entry.name);
70
+ const sourceRelative = relative(sources.packageRoot, source);
71
+ if (isExcluded(sourceRelative)) {
72
+ continue;
73
+ }
74
+ if (entry.isDirectory()) {
75
+ visit(source);
76
+ continue;
77
+ }
78
+ if (!entry.isFile() && !entry.isSymbolicLink()) {
79
+ continue;
80
+ }
81
+ const parts = sourceRelative.split(sep);
82
+ if (parts[0] === "prebuilds") {
83
+ if (parts[1] !== sources.platform || parts.length < 3) {
84
+ continue;
85
+ }
86
+ }
87
+ assets.push({ source, relativePath: sourceRelative });
88
+ }
89
+ };
90
+ visit(sources.packageRoot);
91
+ return assets.sort((left, right) => left.relativePath.localeCompare(right.relativePath));
92
+ }
93
+ function sourceFingerprint(assets) {
94
+ const hash = createHash("sha256");
95
+ for (const asset of assets) {
96
+ const stat = lstatSync(asset.source);
97
+ hash.update(asset.relativePath).update("\0");
98
+ hash.update(`${stat.size}:${stat.mtimeMs}`).update("\0");
99
+ }
100
+ return hash.digest("hex").slice(0, 20);
101
+ }
102
+ function makeExecutable(path) {
103
+ if (process.platform === "win32") {
104
+ return;
105
+ }
106
+ const mode = statSync(path).mode;
107
+ if ((mode & 73) === 0) {
108
+ chmodSync(path, mode | 73);
109
+ }
110
+ }
111
+ function defaultRuntimeCacheRoot(platform = process.platform, home = homedir(), environment = process.env) {
112
+ const cacheDirectory = platform === "win32" ? environment.LOCALAPPDATA ?? join(home, "AppData", "Local") : platform === "darwin" ? join(home, "Library", "Caches") : environment.XDG_CACHE_HOME ?? join(home, ".cache");
113
+ return join(cacheDirectory, "github-copilot-sdk", "runtime");
114
+ }
115
+ function materializeRuntimeBundle(sources, cacheRoot = defaultRuntimeCacheRoot(), cacheKey = `${sources.platform}-${sourceFingerprint(collectRuntimeAssets(sources))}`) {
116
+ const assets = collectRuntimeAssets(sources);
117
+ const wrapperName = sources.platform.startsWith("win32") ? "copilot-runtime.exe" : "copilot-runtime";
118
+ const prebuildDir = join("prebuilds", sources.platform);
119
+ const wrapperRelative = join(prebuildDir, wrapperName);
120
+ const runtimeNodeRelative = join(prebuildDir, "runtime.node");
121
+ const sourceWrapper = assets.find((asset) => asset.relativePath === wrapperRelative)?.source;
122
+ const sourceRuntimeNode = assets.find(
123
+ (asset) => asset.relativePath === runtimeNodeRelative
124
+ )?.source;
125
+ validateRuntimeBundle(sourceWrapper ?? "", sourceRuntimeNode ?? "");
126
+ const installDir = join(cacheRoot, cacheKey);
127
+ const installedWrapper = join(installDir, wrapperRelative);
128
+ const installedRuntimeNode = join(installDir, runtimeNodeRelative);
129
+ if (existsSync(installDir)) {
130
+ validateRuntimeBundle(installedWrapper, installedRuntimeNode);
131
+ makeExecutable(installedWrapper);
132
+ return installedWrapper;
133
+ }
134
+ mkdirSync(cacheRoot, { recursive: true });
135
+ const stagingDir = mkdtempSync(join(cacheRoot, ".runtime-"));
136
+ try {
137
+ for (const asset of assets) {
138
+ const destination = join(stagingDir, asset.relativePath);
139
+ mkdirSync(dirname(destination), { recursive: true });
140
+ copyFileSync(asset.source, destination);
141
+ }
142
+ const stagedWrapper = join(stagingDir, wrapperRelative);
143
+ makeExecutable(stagedWrapper);
144
+ renameSync(stagingDir, installDir);
145
+ } catch (error) {
146
+ if (!existsSync(installDir)) {
147
+ throw error;
148
+ }
149
+ validateRuntimeBundle(installedWrapper, installedRuntimeNode);
150
+ } finally {
151
+ rmSync(stagingDir, { recursive: true, force: true });
152
+ }
153
+ return installedWrapper;
154
+ }
155
+ function isMusl() {
156
+ if (process.platform !== "linux") {
157
+ return false;
158
+ }
159
+ const report = process.report?.getReport();
160
+ return report?.header?.glibcVersionRuntime === void 0;
161
+ }
162
+ function getRuntimePlatform(platform = process.platform, arch = process.arch, musl = isMusl()) {
163
+ if (arch !== "x64" && arch !== "arm64") {
164
+ throw new Error(`Unsupported Copilot CLI architecture: ${arch}.`);
165
+ }
166
+ if (platform === "linux") {
167
+ return `${musl ? "linuxmusl" : "linux"}-${arch}`;
168
+ }
169
+ if (platform === "darwin" || platform === "win32") {
170
+ return `${platform}-${arch}`;
171
+ }
172
+ throw new Error(`Unsupported Copilot CLI platform: ${platform}-${arch}.`);
173
+ }
174
+ function getRuntimeReleaseAssetName(version, platform) {
175
+ return `github-copilot-${version}-${platform}.tgz`;
176
+ }
177
+ function getRuntimePackageName(platform) {
178
+ return `@github/copilot-sdk-${platform}`;
179
+ }
180
+ function resolvePackageRoot(packageName, searchPaths = require2.resolve.paths(packageName) ?? []) {
181
+ return searchPaths.map((base) => join(base, ...packageName.split("/"))).find((candidate) => existsSync(join(candidate, "package.json")));
182
+ }
183
+ async function ensureRuntimeBundle(version, options = {}) {
184
+ const platform = options.platform ?? getRuntimePlatform();
185
+ if (COPILOT_CLI_USE_NPM_PACKAGE) {
186
+ const packageName2 = `@github/copilot-${platform}`;
187
+ const packageRoot2 = resolvePackageRoot(packageName2, options.packageSearchPaths);
188
+ if (!packageRoot2) {
189
+ throw new Error(`Could not resolve ${packageName2} for Copilot CLI ${version}.`);
190
+ }
191
+ validateFile(
192
+ join(packageRoot2, "prebuilds", platform, "runtime.node"),
193
+ "Copilot runtime.node"
194
+ );
195
+ return materializeRuntimeBundle(
196
+ { packageRoot: packageRoot2, platform },
197
+ options.cacheRoot,
198
+ `${version}-${platform}`
199
+ );
200
+ }
201
+ const packageName = getRuntimePackageName(platform);
202
+ const packageRoot = resolvePackageRoot(packageName, options.packageSearchPaths);
203
+ if (!packageRoot) {
204
+ throw new Error(
205
+ `Could not resolve ${packageName}. Reinstall @github/copilot-sdk so its platform package is installed.`
206
+ );
207
+ }
208
+ const wrapperName = platform.startsWith("win32") ? "copilot-runtime.exe" : "copilot-runtime";
209
+ const prebuildDir = join(packageRoot, "prebuilds", platform);
210
+ const wrapper = join(prebuildDir, wrapperName);
211
+ try {
212
+ validateRuntimeBundle(wrapper, join(prebuildDir, "runtime.node"));
213
+ } catch (error) {
214
+ throw new Error(
215
+ `${packageName} is missing required Copilot CLI runtime files. Reinstall @github/copilot-sdk.`,
216
+ { cause: error }
217
+ );
218
+ }
219
+ makeExecutable(wrapper);
220
+ return wrapper;
221
+ }
222
+ export {
223
+ RUNTIME_PLATFORMS,
224
+ defaultRuntimeCacheRoot,
225
+ ensureRuntimeBundle,
226
+ getRuntimePackageName,
227
+ getRuntimePlatform,
228
+ getRuntimeReleaseAssetName,
229
+ materializeRuntimeBundle,
230
+ resolvePackageRoot,
231
+ validateFile
232
+ };
package/dist/types.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  import type { Canvas } from "./canvas.js";
5
5
  import type { SessionFsProvider } from "./sessionFsProvider.js";
6
6
  import type { CopilotRequestHandler } from "./copilotRequestHandler.js";
7
- import type { PermissionRequest as GeneratedPermissionRequest, PermissionRequestedData as GeneratedPermissionRequestedData, PermissionRequestedEvent as GeneratedPermissionRequestedEvent, ReasoningSummary, SessionLimitsConfig, SessionEvent as GeneratedSessionEvent } from "./generated/session-events.js";
7
+ import type { AutoTier, PermissionRequest as GeneratedPermissionRequest, PermissionRequestedData as GeneratedPermissionRequestedData, PermissionRequestedEvent as GeneratedPermissionRequestedEvent, ReasoningSummary, SessionLimitsConfig, SessionEvent as GeneratedSessionEvent } from "./generated/session-events.js";
8
8
  import type { CopilotSession } from "./session.js";
9
9
  import type { FactoryJsonSchema, JsonValue } from "./factory.js";
10
10
  import type { GitHubTokenAcquireRequest, GitHubTokenAcquireResult, GitHubTelemetryNotification, ModelBillingTokenPrices, OpenCanvasInstance, RemoteSessionMode, CurrentToolMetadata } from "./generated/rpc.js";
@@ -34,7 +34,7 @@ export type { ModelBillingTokenPrices, ModelBillingTokenPricesLongContext, } fro
34
34
  export type SessionEvent = Exclude<GeneratedSessionEvent, {
35
35
  type: "permission.requested";
36
36
  }> | PermissionRequestedEvent;
37
- export type { ReasoningSummary } from "./generated/session-events.js";
37
+ export type { AutoTier, ReasoningSummary } from "./generated/session-events.js";
38
38
  export type { SessionFsProvider } from "./sessionFsProvider.js";
39
39
  export { createSessionFsAdapter } from "./sessionFsProvider.js";
40
40
  export type { SessionFsFileInfo } from "./sessionFsProvider.js";
@@ -216,6 +216,33 @@ export declare const RuntimeConnection: {
216
216
  * ambient behavior is unsafe (e.g. multi-user servers).
217
217
  */
218
218
  export type CopilotClientMode = "empty" | "copilot-cli";
219
+ /**
220
+ * Identity of the integrating application, declared once on the `server.connect`
221
+ * handshake so the telemetry the runtime emits on this connection is attributed
222
+ * to a single, consistent surface rather than to the runtime's own build.
223
+ *
224
+ * All fields are optional; omit any of them (or the whole object) to keep the
225
+ * runtime's default attribution. Version fields are ignored by the runtime
226
+ * unless they look like a version string.
227
+ */
228
+ export interface CopilotClientInfo {
229
+ /**
230
+ * Name of the application using the SDK, e.g. `"acme-developer-portal"`.
231
+ */
232
+ applicationName?: string;
233
+ /**
234
+ * Version of the application using the SDK, e.g. `"2.4.0"`.
235
+ */
236
+ applicationVersion?: string;
237
+ /**
238
+ * Optional name of a specific integration within the application, such as an extension or plugin.
239
+ */
240
+ integrationName?: string;
241
+ /**
242
+ * Optional version of the integration identified by `integrationName`.
243
+ */
244
+ integrationVersion?: string;
245
+ }
219
246
  export interface CopilotClientOptions {
220
247
  /**
221
248
  * How to connect to the Copilot runtime. When omitted, defaults to
@@ -370,6 +397,15 @@ export interface CopilotClientOptions {
370
397
  * @default false
371
398
  */
372
399
  enableRemoteSessions?: boolean;
400
+ /**
401
+ * Identity of the integrating application, forwarded to the runtime on the
402
+ * `server.connect` handshake. Declaring it lets the telemetry the runtime
403
+ * emits on this connection be attributed to a single, consistent surface
404
+ * (e.g. the application and its Copilot integration) instead of the
405
+ * runtime's own build. All fields are optional; omit it to keep the default
406
+ * attribution.
407
+ */
408
+ clientInfo?: CopilotClientInfo;
373
409
  }
374
410
  /**
375
411
  * Configuration for creating a session
@@ -1705,6 +1741,16 @@ export interface FactoryMeta {
1705
1741
  * provider-level choices are conceptually per-provider rather than global.
1706
1742
  */
1707
1743
  export interface CapiSessionOptions {
1744
+ /**
1745
+ * Routing preference used when the session model is `auto`.
1746
+ * Requires a runtime with Auto tier support and V2 Auto routing.
1747
+ *
1748
+ * When omitted on create, the runtime uses its default routing behavior.
1749
+ * The runtime persists this preference across cold resume; an explicit tier
1750
+ * on cold resume overrides the persisted value. For an already-resident
1751
+ * session, omission preserves the current tier and a different tier is rejected.
1752
+ */
1753
+ autoTier?: AutoTier;
1708
1754
  /**
1709
1755
  * Whether to use the WebSocket transport for the CAPI Responses API.
1710
1756
  *
@@ -2375,6 +2421,11 @@ export interface SessionConfigBase {
2375
2421
  * only if {@link CopilotClientOptions.sessionFs} is configured.
2376
2422
  */
2377
2423
  createSessionFsProvider?: (session: CopilotSession) => SessionFsProvider;
2424
+ /**
2425
+ * Feature-flag values resolved by the host for this session.
2426
+ * Re-supply them when resuming after a runtime restart.
2427
+ */
2428
+ featureFlags?: Record<string, boolean>;
2378
2429
  }
2379
2430
  /**
2380
2431
  * Configuration for creating a new session via {@link CopilotClient.createSession}.
package/package.json CHANGED
@@ -1,92 +1,107 @@
1
1
  {
2
- "name": "@github/copilot-sdk",
3
- "repository": {
4
- "type": "git",
5
- "url": "https://github.com/github/copilot-sdk.git"
6
- },
7
- "version": "1.0.13-preview.3",
8
- "description": "TypeScript SDK for programmatic control of GitHub Copilot CLI via JSON-RPC",
9
- "main": "./dist/cjs/index.js",
10
- "types": "./dist/index.d.ts",
11
- "exports": {
12
- ".": {
13
- "import": {
14
- "types": "./dist/index.d.ts",
15
- "default": "./dist/index.js"
16
- },
17
- "require": {
18
- "types": "./dist/index.d.ts",
19
- "default": "./dist/cjs/index.js"
20
- }
2
+ "name": "@github/copilot-sdk",
3
+ "repository": {
4
+ "type": "git",
5
+ "url": "https://github.com/github/copilot-sdk.git"
21
6
  },
22
- "./extension": {
23
- "import": {
24
- "types": "./dist/extension.d.ts",
25
- "default": "./dist/extension.js"
26
- },
27
- "require": {
28
- "types": "./dist/extension.d.ts",
29
- "default": "./dist/cjs/extension.js"
30
- }
7
+ "version": "1.0.13-preview.6",
8
+ "copilotCliVersion": "1.0.83-3",
9
+ "description": "TypeScript SDK for programmatic control of GitHub Copilot CLI via JSON-RPC",
10
+ "main": "./dist/cjs/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "import": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ },
18
+ "require": {
19
+ "types": "./dist/index.d.ts",
20
+ "default": "./dist/cjs/index.js"
21
+ }
22
+ },
23
+ "./extension": {
24
+ "import": {
25
+ "types": "./dist/extension.d.ts",
26
+ "default": "./dist/extension.js"
27
+ },
28
+ "require": {
29
+ "types": "./dist/extension.d.ts",
30
+ "default": "./dist/cjs/extension.js"
31
+ }
32
+ }
33
+ },
34
+ "type": "module",
35
+ "scripts": {
36
+ "clean": "rimraf --glob dist *.tgz",
37
+ "build": "tsx esbuild-copilotsdk-nodejs.ts",
38
+ "pack:release": "tsx scripts/package-sdk.ts",
39
+ "verify:release-packages": "tsx scripts/verify-release-packages.ts",
40
+ "prepare:runtime": "tsx scripts/prepare-runtime.ts",
41
+ "test": "vitest run",
42
+ "test:watch": "vitest",
43
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path .prettierignore",
44
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path .prettierignore",
45
+ "lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"",
46
+ "lint:fix": "eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"",
47
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
48
+ "generate": "cd ../scripts/codegen && npm run generate",
49
+ "set:cli-version": "node scripts/set-cli-version.js",
50
+ "update:protocol-version": "tsx scripts/update-protocol-version.ts",
51
+ "prepublishOnly": "npm run build",
52
+ "package": "npm run clean && npm run build && node scripts/set-version.js && npm run pack:release && npm version 0.0.0-dev --no-git-tag-version --allow-same-version"
53
+ },
54
+ "keywords": [
55
+ "github",
56
+ "copilot",
57
+ "sdk",
58
+ "jsonrpc",
59
+ "agent"
60
+ ],
61
+ "author": "GitHub",
62
+ "license": "MIT",
63
+ "dependencies": {
64
+ "koffi": "^3.1.0",
65
+ "vscode-jsonrpc": "^8.2.1",
66
+ "zod": "^4.3.6"
67
+ },
68
+ "devDependencies": {
69
+ "@platformatic/vfs": "^0.3.0",
70
+ "@types/node": "^25.2.0",
71
+ "@types/ws": "^8.18.1",
72
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
73
+ "@typescript-eslint/parser": "^8.54.0",
74
+ "esbuild": "^0.28.1",
75
+ "eslint": "^9.0.0",
76
+ "glob": "^13.0.1",
77
+ "json-schema": "^0.4.0",
78
+ "json-schema-to-typescript": "^15.0.4",
79
+ "prettier": "^3.8.1",
80
+ "quicktype-core": "^23.2.6",
81
+ "rimraf": "^6.1.2",
82
+ "semver": "^7.7.3",
83
+ "tar": "^7.5.22",
84
+ "tsx": "^4.20.6",
85
+ "typescript": "^5.0.0",
86
+ "vitest": "^4.0.18",
87
+ "ws": "^8.21.0"
88
+ },
89
+ "engines": {
90
+ "node": "^20.19.0 || >=22.12.0"
91
+ },
92
+ "files": [
93
+ "dist/**/*",
94
+ "docs/**/*",
95
+ "README.md"
96
+ ],
97
+ "optionalDependencies": {
98
+ "@github/copilot-sdk-darwin-arm64": "1.0.13-preview.6",
99
+ "@github/copilot-sdk-darwin-x64": "1.0.13-preview.6",
100
+ "@github/copilot-sdk-linux-arm64": "1.0.13-preview.6",
101
+ "@github/copilot-sdk-linux-x64": "1.0.13-preview.6",
102
+ "@github/copilot-sdk-linuxmusl-arm64": "1.0.13-preview.6",
103
+ "@github/copilot-sdk-linuxmusl-x64": "1.0.13-preview.6",
104
+ "@github/copilot-sdk-win32-arm64": "1.0.13-preview.6",
105
+ "@github/copilot-sdk-win32-x64": "1.0.13-preview.6"
31
106
  }
32
- },
33
- "type": "module",
34
- "scripts": {
35
- "clean": "rimraf --glob dist *.tgz",
36
- "build": "tsx esbuild-copilotsdk-nodejs.ts",
37
- "test": "vitest run",
38
- "test:watch": "vitest",
39
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path .prettierignore",
40
- "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" --ignore-path .prettierignore",
41
- "lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"",
42
- "lint:fix": "eslint --fix \"src/**/*.ts\" \"test/**/*.ts\"",
43
- "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
44
- "generate": "cd ../scripts/codegen && npm run generate",
45
- "update:protocol-version": "tsx scripts/update-protocol-version.ts",
46
- "prepublishOnly": "npm run build",
47
- "package": "npm run clean && npm run build && node scripts/set-version.js && npm pack && npm version 0.0.0-dev --no-git-tag-version --allow-same-version"
48
- },
49
- "keywords": [
50
- "github",
51
- "copilot",
52
- "sdk",
53
- "jsonrpc",
54
- "agent"
55
- ],
56
- "author": "GitHub",
57
- "license": "MIT",
58
- "dependencies": {
59
- "@github/copilot": "^1.0.83-0",
60
- "koffi": "^3.1.0",
61
- "vscode-jsonrpc": "^8.2.1",
62
- "zod": "^4.3.6"
63
- },
64
- "devDependencies": {
65
- "@platformatic/vfs": "^0.3.0",
66
- "@types/node": "^25.2.0",
67
- "@types/ws": "^8.18.1",
68
- "@typescript-eslint/eslint-plugin": "^8.54.0",
69
- "@typescript-eslint/parser": "^8.54.0",
70
- "esbuild": "^0.28.1",
71
- "eslint": "^9.0.0",
72
- "glob": "^13.0.1",
73
- "json-schema": "^0.4.0",
74
- "json-schema-to-typescript": "^15.0.4",
75
- "prettier": "^3.8.1",
76
- "quicktype-core": "^23.2.6",
77
- "rimraf": "^6.1.2",
78
- "semver": "^7.7.3",
79
- "tsx": "^4.20.6",
80
- "typescript": "^5.0.0",
81
- "vitest": "^4.0.18",
82
- "ws": "^8.21.0"
83
- },
84
- "engines": {
85
- "node": "^20.19.0 || >=22.12.0"
86
- },
87
- "files": [
88
- "dist/**/*",
89
- "docs/**/*",
90
- "README.md"
91
- ]
92
107
  }