@oxprotocol/cli 0.1.7 → 0.1.8
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/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +24 -7
- package/dist/commands/dev.js.map +1 -1
- package/dist/lib/ide-launch.d.ts +7 -0
- package/dist/lib/ide-launch.d.ts.map +1 -0
- package/dist/lib/ide-launch.js +159 -0
- package/dist/lib/ide-launch.js.map +1 -0
- package/package.json +4 -3
- package/vendor/oxp-vscode.json +5 -0
- package/vendor/oxp-vscode.vsix +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAsCA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuMzD"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -23,9 +23,11 @@ import chokidar from "chokidar";
|
|
|
23
23
|
import { WebSocketServer } from "ws";
|
|
24
24
|
import { packBundle } from "@oxprotocol/bundle";
|
|
25
25
|
import { findProjectRoot, fail, info } from "../util.js";
|
|
26
|
+
import { launchIdeForDev } from "../lib/ide-launch.js";
|
|
26
27
|
export async function dev(args) {
|
|
27
|
-
// Parse args: [--port N] [dir]
|
|
28
|
+
// Parse args: [--port N] [--no-ide] [dir]
|
|
28
29
|
let port = Number(process.env.OXP_DEV_PORT ?? 7373);
|
|
30
|
+
let openIde = process.env.OXP_DEV_NO_IDE !== "1";
|
|
29
31
|
const positional = [];
|
|
30
32
|
for (let i = 0; i < args.length; i++) {
|
|
31
33
|
const a = args[i];
|
|
@@ -38,6 +40,9 @@ export async function dev(args) {
|
|
|
38
40
|
else if (a.startsWith("--port=")) {
|
|
39
41
|
port = Number(a.slice("--port=".length));
|
|
40
42
|
}
|
|
43
|
+
else if (a === "--no-ide") {
|
|
44
|
+
openIde = false;
|
|
45
|
+
}
|
|
41
46
|
else {
|
|
42
47
|
positional.push(a);
|
|
43
48
|
}
|
|
@@ -170,12 +175,24 @@ export async function dev(args) {
|
|
|
170
175
|
info("oxp dev — backend ready. ⚠ DEV mode (signature bypass, do not ship)");
|
|
171
176
|
info(` watching: ${root}`);
|
|
172
177
|
info("");
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
178
|
+
if (openIde) {
|
|
179
|
+
const ok = launchIdeForDev(root);
|
|
180
|
+
info("");
|
|
181
|
+
if (ok) {
|
|
182
|
+
info("Your IDE is opening. Click the OXP icon in the activity bar (or press F5)");
|
|
183
|
+
info("to attach the running extension. The UI renders inside the IDE.");
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
info("Render the extension inside your IDE:");
|
|
187
|
+
info(" • VS Code / Cursor: install the OXP host, then run \u201cOXP: Start Dev Session\u201d");
|
|
188
|
+
info(" • JetBrains / Neovim: see hosts/<ide>/README.md");
|
|
189
|
+
info("");
|
|
190
|
+
info("Disable IDE auto-launch with --no-ide (or env OXP_DEV_NO_IDE=1).");
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
info("IDE auto-launch disabled (--no-ide). Attach manually from your IDE.");
|
|
195
|
+
}
|
|
179
196
|
info("");
|
|
180
197
|
info("Press Ctrl+C to stop.");
|
|
181
198
|
// Keep alive until SIGINT.
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,YAAY,GAGb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public entry point. Idempotent: if the host is already installed at the
|
|
3
|
+
* expected version we just open the IDE. Returns true on success, false
|
|
4
|
+
* if no supported IDE was found (caller should print fallback hints).
|
|
5
|
+
*/
|
|
6
|
+
export declare function launchIdeForDev(projectRoot: string): boolean;
|
|
7
|
+
//# sourceMappingURL=ide-launch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ide-launch.d.ts","sourceRoot":"","sources":["../../src/lib/ide-launch.ts"],"names":[],"mappings":"AAoJA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAiC5D"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-launch a supported IDE with the OXP host extension installed.
|
|
3
|
+
*
|
|
4
|
+
* Goal: a developer running `oxp dev` should not need to know what an
|
|
5
|
+
* "extension host" is. We:
|
|
6
|
+
* 1. Detect a supported IDE (VS Code, Cursor, VS Code Insiders).
|
|
7
|
+
* 2. Make sure the OXP host extension is installed at the version we
|
|
8
|
+
* bundle alongside the CLI (`vendor/oxp-vscode.vsix`).
|
|
9
|
+
* 3. Open the project folder in that IDE so the host's
|
|
10
|
+
* `workspaceContains:oxp.json` activation event fires and the OXP
|
|
11
|
+
* activity-bar view appears.
|
|
12
|
+
*
|
|
13
|
+
* The dev backend is still the CLI; the IDE attaches via WebSocket.
|
|
14
|
+
* No browser, no manual install step.
|
|
15
|
+
*/
|
|
16
|
+
import { spawn, spawnSync as nodeSpawnSync } from "node:child_process";
|
|
17
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
18
|
+
import { dirname, join } from "node:path";
|
|
19
|
+
import { fileURLToPath } from "node:url";
|
|
20
|
+
import { info } from "../util.js";
|
|
21
|
+
const SUPPORTED_IDES = [
|
|
22
|
+
{ name: "Cursor", bin: "cursor" },
|
|
23
|
+
{ name: "VS Code", bin: "code" },
|
|
24
|
+
{ name: "VS Code Insiders", bin: "code-insiders" },
|
|
25
|
+
];
|
|
26
|
+
const HOST_EXTENSION_ID = "oxp.oxp-vscode";
|
|
27
|
+
/**
|
|
28
|
+
* Locate the VSIX shipped inside the CLI npm package
|
|
29
|
+
* (`<cli>/vendor/oxp-vscode.vsix`). When the CLI is run from source the
|
|
30
|
+
* vendor dir lives next to dist/, so we walk up from this module's path.
|
|
31
|
+
*/
|
|
32
|
+
function locateVendoredVsix() {
|
|
33
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
34
|
+
// dist/lib/ide-launch.js → ../../vendor (built)
|
|
35
|
+
// src/lib/ide-launch.ts → ../../vendor (tsx)
|
|
36
|
+
const candidates = [
|
|
37
|
+
join(here, "..", "..", "vendor"),
|
|
38
|
+
join(here, "..", "..", "..", "vendor"),
|
|
39
|
+
];
|
|
40
|
+
for (const dir of candidates) {
|
|
41
|
+
const manifestPath = join(dir, "oxp-vscode.json");
|
|
42
|
+
if (!existsSync(manifestPath))
|
|
43
|
+
continue;
|
|
44
|
+
try {
|
|
45
|
+
const m = JSON.parse(readFileSync(manifestPath, "utf8"));
|
|
46
|
+
const vsix = join(dir, m.vsixFile);
|
|
47
|
+
if (!existsSync(vsix))
|
|
48
|
+
continue;
|
|
49
|
+
return {
|
|
50
|
+
vsixPath: vsix,
|
|
51
|
+
version: m.version,
|
|
52
|
+
extensionId: m.extensionId,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
function pickIde() {
|
|
62
|
+
for (const ide of SUPPORTED_IDES) {
|
|
63
|
+
if (commandExists(ide.bin))
|
|
64
|
+
return ide;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
function commandExists(bin) {
|
|
69
|
+
try {
|
|
70
|
+
const r = spawnSync("which", [bin]);
|
|
71
|
+
return r.status === 0;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function spawnSync(cmd, args) {
|
|
78
|
+
const r = nodeSpawnSync(cmd, args, { encoding: "utf8" });
|
|
79
|
+
return {
|
|
80
|
+
status: r.status,
|
|
81
|
+
stdout: r.stdout ?? "",
|
|
82
|
+
stderr: r.stderr ?? "",
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function isHostInstalled(ide, expectedVersion) {
|
|
86
|
+
const r = spawnSync(ide.bin, ["--list-extensions", "--show-versions"]);
|
|
87
|
+
if (r.status !== 0)
|
|
88
|
+
return false;
|
|
89
|
+
const wanted = `${HOST_EXTENSION_ID}@${expectedVersion}`.toLowerCase();
|
|
90
|
+
return r.stdout
|
|
91
|
+
.split(/\r?\n/)
|
|
92
|
+
.some((l) => l.trim().toLowerCase() === wanted);
|
|
93
|
+
}
|
|
94
|
+
function installHost(ide, vsixPath) {
|
|
95
|
+
info(`▸ installing OXP host into ${ide.name}…`);
|
|
96
|
+
const r = spawnSync(ide.bin, [
|
|
97
|
+
"--install-extension",
|
|
98
|
+
vsixPath,
|
|
99
|
+
"--force",
|
|
100
|
+
]);
|
|
101
|
+
if (r.status !== 0) {
|
|
102
|
+
info(`✖ failed to install host: ${r.stderr.trim() || "exit " + r.status}`);
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
info(" ✓ host installed");
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
function openInIde(ide, projectRoot) {
|
|
109
|
+
// Detached so the IDE keeps running after `oxp dev` exits, and also so
|
|
110
|
+
// closing the IDE window doesn't kill the backend.
|
|
111
|
+
try {
|
|
112
|
+
const child = spawn(ide.bin, [projectRoot], {
|
|
113
|
+
detached: true,
|
|
114
|
+
stdio: "ignore",
|
|
115
|
+
});
|
|
116
|
+
child.unref();
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Public entry point. Idempotent: if the host is already installed at the
|
|
125
|
+
* expected version we just open the IDE. Returns true on success, false
|
|
126
|
+
* if no supported IDE was found (caller should print fallback hints).
|
|
127
|
+
*/
|
|
128
|
+
export function launchIdeForDev(projectRoot) {
|
|
129
|
+
const vsix = locateVendoredVsix();
|
|
130
|
+
if (!vsix) {
|
|
131
|
+
info("ℹ︎ no bundled host VSIX found — skipping IDE auto-launch");
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
const ide = pickIde();
|
|
135
|
+
if (!ide) {
|
|
136
|
+
info("");
|
|
137
|
+
info("ℹ︎ No supported IDE found on your PATH (looked for: cursor, code, code-insiders).");
|
|
138
|
+
info(" Install the 'code' shell command from VS Code:");
|
|
139
|
+
info(" Command Palette → Shell Command: Install 'code' command in PATH");
|
|
140
|
+
info(" Or install Cursor: https://cursor.sh");
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
info(`▸ detected ${ide.name} on PATH`);
|
|
144
|
+
if (!isHostInstalled(ide, vsix.version)) {
|
|
145
|
+
if (!installHost(ide, vsix.vsixPath)) {
|
|
146
|
+
info(" (continuing — backend is still running, install the host manually)");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
info(` ✓ OXP host ${vsix.version} already installed`);
|
|
151
|
+
}
|
|
152
|
+
info(`▸ opening ${projectRoot} in ${ide.name}…`);
|
|
153
|
+
if (!openInIde(ide, projectRoot)) {
|
|
154
|
+
info(`✖ failed to spawn ${ide.bin}`);
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=ide-launch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ide-launch.js","sourceRoot":"","sources":["../../src/lib/ide-launch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxprotocol/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Command-line tool for the Open eXtensions Protocol.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"files": [
|
|
20
20
|
"dist",
|
|
21
21
|
"templates",
|
|
22
|
+
"vendor",
|
|
22
23
|
"README.md"
|
|
23
24
|
],
|
|
24
25
|
"publishConfig": {
|
|
@@ -28,10 +29,10 @@
|
|
|
28
29
|
"chokidar": "^4.0.3",
|
|
29
30
|
"ws": "^8.18.0",
|
|
30
31
|
"@oxprotocol/bundle": "0.1.5",
|
|
31
|
-
"@oxprotocol/
|
|
32
|
+
"@oxprotocol/host-core": "0.1.4",
|
|
32
33
|
"@oxprotocol/wit": "0.1.4",
|
|
33
34
|
"@oxprotocol/types": "0.1.4",
|
|
34
|
-
"@oxprotocol/
|
|
35
|
+
"@oxprotocol/schema": "0.1.4"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@types/node": "^22.10.2",
|
|
Binary file
|