runpane 2.2.11 → 2.3.0
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.d.ts +3 -4
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +19 -119
- package/dist/commands.js.map +1 -1
- package/dist/generated/contract.d.ts +202 -0
- package/dist/generated/contract.d.ts.map +1 -0
- package/dist/generated/contract.js +583 -0
- package/dist/generated/contract.js.map +1 -0
- package/package.json +1 -1
package/dist/commands.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
export type
|
|
3
|
-
export type ArtifactFormat = 'auto' | 'appimage' | 'deb' | 'dmg' | 'zip' | 'exe';
|
|
1
|
+
import { type ArtifactFormat, type InstallTarget, type RunpaneChannel, type RunpaneCommand } from './generated/contract';
|
|
2
|
+
export type { ArtifactFormat, InstallTarget, RunpaneCommand };
|
|
4
3
|
export interface ParsedArgs {
|
|
5
4
|
command: RunpaneCommand;
|
|
6
5
|
helpTopic?: string;
|
|
7
6
|
target: InstallTarget;
|
|
8
7
|
paneVersion: string;
|
|
9
|
-
channel:
|
|
8
|
+
channel: RunpaneChannel;
|
|
10
9
|
format: ArtifactFormat;
|
|
11
10
|
downloadDir?: string;
|
|
12
11
|
panePath?: string;
|
package/dist/commands.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAqBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4C3D;AAuGD,wBAAgB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/C"}
|
package/dist/commands.js
CHANGED
|
@@ -2,35 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseRunpaneArgs = parseRunpaneArgs;
|
|
4
4
|
exports.helpText = helpText;
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
'--channel',
|
|
13
|
-
'--base-url',
|
|
14
|
-
'--pane-dir',
|
|
15
|
-
'--listen-port',
|
|
16
|
-
'--port',
|
|
17
|
-
'--repo-ref'
|
|
18
|
-
]);
|
|
19
|
-
const REMOTE_BOOLEAN_FLAGS = new Set([
|
|
20
|
-
'--auto-listen-port',
|
|
21
|
-
'--interactive-tailscale-setup',
|
|
22
|
-
'--no-install-service',
|
|
23
|
-
'--no-tailscale-serve',
|
|
24
|
-
'--print-only'
|
|
25
|
-
]);
|
|
5
|
+
const contract_1 = require("./generated/contract");
|
|
6
|
+
const COMMANDS = new Set(contract_1.RUNPANE_CONTRACT.commands.map((command) => command.name));
|
|
7
|
+
const TARGETS = new Set(contract_1.RUNPANE_CONTRACT.enums.installTargets);
|
|
8
|
+
const FORMATS = new Set(contract_1.RUNPANE_CONTRACT.enums.artifactFormats);
|
|
9
|
+
const CHANNELS = new Set(contract_1.RUNPANE_CONTRACT.enums.channels);
|
|
10
|
+
const REMOTE_VALUE_FLAGS = new Set(contract_1.RUNPANE_CONTRACT.flags.remoteValue.map((flag) => flag.name));
|
|
11
|
+
const REMOTE_BOOLEAN_FLAGS = new Set(contract_1.RUNPANE_CONTRACT.flags.remoteBoolean.map((flag) => flag.name));
|
|
26
12
|
const DEFAULTS = {
|
|
27
|
-
target:
|
|
28
|
-
paneVersion:
|
|
29
|
-
channel:
|
|
30
|
-
format:
|
|
31
|
-
dryRun:
|
|
32
|
-
yes:
|
|
33
|
-
verbose:
|
|
13
|
+
target: contract_1.RUNPANE_CONTRACT.defaults.target,
|
|
14
|
+
paneVersion: contract_1.RUNPANE_CONTRACT.defaults.paneVersion,
|
|
15
|
+
channel: contract_1.RUNPANE_CONTRACT.defaults.channel,
|
|
16
|
+
format: contract_1.RUNPANE_CONTRACT.defaults.format,
|
|
17
|
+
dryRun: contract_1.RUNPANE_CONTRACT.defaults.dryRun,
|
|
18
|
+
yes: contract_1.RUNPANE_CONTRACT.defaults.yes,
|
|
19
|
+
verbose: contract_1.RUNPANE_CONTRACT.defaults.verbose,
|
|
34
20
|
remoteSetupArgs: []
|
|
35
21
|
};
|
|
36
22
|
function parseRunpaneArgs(argv) {
|
|
@@ -162,96 +148,10 @@ function readValue(args, index, flag) {
|
|
|
162
148
|
return value;
|
|
163
149
|
}
|
|
164
150
|
function helpText(topic) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
'Examples:',
|
|
171
|
-
' npx --yes runpane@latest install client',
|
|
172
|
-
' npx --yes runpane@latest install daemon --label "My Server"',
|
|
173
|
-
' pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label "VM"',
|
|
174
|
-
'',
|
|
175
|
-
'Wrapper options:',
|
|
176
|
-
' --version <latest|vX.Y.Z> Pane release to install',
|
|
177
|
-
' --format <auto|appimage|deb|dmg|zip|exe>',
|
|
178
|
-
' --download-dir <path>',
|
|
179
|
-
' --pane-path <path> Use an existing Pane executable',
|
|
180
|
-
' --dry-run Print the plan without downloading',
|
|
181
|
-
' --yes Skip interactive prompts where possible',
|
|
182
|
-
' --verbose',
|
|
183
|
-
'',
|
|
184
|
-
'Daemon passthrough options:',
|
|
185
|
-
' --label <name>',
|
|
186
|
-
' --prefer-tunnel <tailscale|ssh|manual|auto>',
|
|
187
|
-
' --channel <stable|nightly>',
|
|
188
|
-
' --base-url <url>',
|
|
189
|
-
' --pane-dir <path>',
|
|
190
|
-
' --listen-port <port> / --port <port>',
|
|
191
|
-
' --auto-listen-port',
|
|
192
|
-
' --interactive-tailscale-setup',
|
|
193
|
-
' --no-install-service',
|
|
194
|
-
' --no-tailscale-serve',
|
|
195
|
-
' --print-only',
|
|
196
|
-
' --repo-ref <ref>'
|
|
197
|
-
].join('\n');
|
|
198
|
-
}
|
|
199
|
-
if (topic === 'setup') {
|
|
200
|
-
return [
|
|
201
|
-
'Usage:',
|
|
202
|
-
' runpane setup',
|
|
203
|
-
'',
|
|
204
|
-
'Opens the guided setup for desktop install, remote host setup, update, and diagnostics.',
|
|
205
|
-
'',
|
|
206
|
-
'Quick start:',
|
|
207
|
-
' npx --yes runpane@latest',
|
|
208
|
-
' npm i -g runpane && runpane setup'
|
|
209
|
-
].join('\n');
|
|
210
|
-
}
|
|
211
|
-
if (topic === 'update') {
|
|
212
|
-
return [
|
|
213
|
-
'Usage:',
|
|
214
|
-
' runpane update [options]',
|
|
215
|
-
'',
|
|
216
|
-
'Updates Pane using the same artifact selection as "runpane install client".',
|
|
217
|
-
'',
|
|
218
|
-
'Options:',
|
|
219
|
-
' --version <latest|vX.Y.Z>',
|
|
220
|
-
' --format <auto|appimage|deb|dmg|zip|exe>',
|
|
221
|
-
' --download-dir <path>',
|
|
222
|
-
' --pane-path <path>',
|
|
223
|
-
' --dry-run',
|
|
224
|
-
' --yes',
|
|
225
|
-
' --verbose'
|
|
226
|
-
].join('\n');
|
|
227
|
-
}
|
|
228
|
-
if (topic === 'version') {
|
|
229
|
-
return 'Usage:\n runpane version\n runpane --version';
|
|
230
|
-
}
|
|
231
|
-
if (topic === 'doctor') {
|
|
232
|
-
return 'Usage:\n runpane doctor [--pane-path <path>] [--format <format>] [--verbose]';
|
|
233
|
-
}
|
|
234
|
-
return [
|
|
235
|
-
'Usage:',
|
|
236
|
-
' runpane',
|
|
237
|
-
' runpane setup',
|
|
238
|
-
' runpane install [client|daemon] [options]',
|
|
239
|
-
' runpane update [options]',
|
|
240
|
-
' runpane version',
|
|
241
|
-
' runpane doctor',
|
|
242
|
-
' runpane help [command]',
|
|
243
|
-
'',
|
|
244
|
-
'Quick start:',
|
|
245
|
-
' npx --yes runpane@latest',
|
|
246
|
-
' npm i -g runpane && runpane setup',
|
|
247
|
-
'',
|
|
248
|
-
'Advanced examples:',
|
|
249
|
-
' npx --yes runpane@latest install client',
|
|
250
|
-
' npx --yes runpane@latest install daemon --label "My Server"',
|
|
251
|
-
' pnpm dlx runpane@latest',
|
|
252
|
-
' pipx run runpane',
|
|
253
|
-
'',
|
|
254
|
-
'Run "runpane help install" for install options.'
|
|
255
|
-
].join('\n');
|
|
151
|
+
const helpTopics = contract_1.RUNPANE_CONTRACT.help.npm;
|
|
152
|
+
const key = topic && Object.prototype.hasOwnProperty.call(helpTopics, topic)
|
|
153
|
+
? topic
|
|
154
|
+
: 'default';
|
|
155
|
+
return helpTopics[key].join('\n');
|
|
256
156
|
}
|
|
257
157
|
//# sourceMappingURL=commands.js.map
|
package/dist/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
export declare const RUNPANE_CONTRACT: {
|
|
2
|
+
readonly $schema: "./schema.json";
|
|
3
|
+
readonly schemaVersion: 1;
|
|
4
|
+
readonly name: "runpane";
|
|
5
|
+
readonly description: "Thin installer and local control CLI for Pane";
|
|
6
|
+
readonly packageInstallPolicy: readonly ["The packages must not download, install, or configure Pane during package installation.", "Work starts only when a user runs `runpane ...`."];
|
|
7
|
+
readonly compatibility: {
|
|
8
|
+
readonly node: ">=18.17.0";
|
|
9
|
+
readonly python: ">=3.8";
|
|
10
|
+
};
|
|
11
|
+
readonly terminology: {
|
|
12
|
+
readonly repo: "Saved Pane repository/project record";
|
|
13
|
+
readonly pane: "User-visible Pane session";
|
|
14
|
+
readonly tool: "Terminal-backed tab";
|
|
15
|
+
readonly agent: "Built-in agent command template";
|
|
16
|
+
};
|
|
17
|
+
readonly defaults: {
|
|
18
|
+
readonly target: "client";
|
|
19
|
+
readonly paneVersion: "latest";
|
|
20
|
+
readonly channel: "stable";
|
|
21
|
+
readonly format: "auto";
|
|
22
|
+
readonly dryRun: false;
|
|
23
|
+
readonly yes: false;
|
|
24
|
+
readonly verbose: false;
|
|
25
|
+
};
|
|
26
|
+
readonly enums: {
|
|
27
|
+
readonly installTargets: readonly ["client", "daemon"];
|
|
28
|
+
readonly artifactFormats: readonly ["auto", "appimage", "deb", "dmg", "zip", "exe"];
|
|
29
|
+
readonly channels: readonly ["stable", "nightly"];
|
|
30
|
+
};
|
|
31
|
+
readonly commands: readonly [{
|
|
32
|
+
readonly name: "help";
|
|
33
|
+
readonly summary: "Show help for runpane or a specific command.";
|
|
34
|
+
readonly usage: readonly ["runpane help [command]"];
|
|
35
|
+
}, {
|
|
36
|
+
readonly name: "setup";
|
|
37
|
+
readonly summary: "Open the guided setup wizard for install, remote host setup, update, and diagnostics.";
|
|
38
|
+
readonly usage: readonly ["runpane setup"];
|
|
39
|
+
readonly interactiveEntrypoint: true;
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "install";
|
|
42
|
+
readonly summary: "Install Pane on this machine or configure this machine as a remote daemon host.";
|
|
43
|
+
readonly usage: readonly ["runpane install [client|daemon] [options]"];
|
|
44
|
+
readonly defaultTarget: "client";
|
|
45
|
+
readonly targets: readonly ["client", "daemon"];
|
|
46
|
+
readonly unknownDaemonFlagsForwarded: true;
|
|
47
|
+
}, {
|
|
48
|
+
readonly name: "update";
|
|
49
|
+
readonly summary: "Update the Pane desktop app using the same artifact path as install client.";
|
|
50
|
+
readonly usage: readonly ["runpane update [options]"];
|
|
51
|
+
readonly target: "client";
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "version";
|
|
54
|
+
readonly summary: "Print the runpane wrapper version and installed Pane version when detectable.";
|
|
55
|
+
readonly usage: readonly ["runpane version", "runpane --version"];
|
|
56
|
+
}, {
|
|
57
|
+
readonly name: "doctor";
|
|
58
|
+
readonly summary: "Run platform, release, installed Pane, and remote setup diagnostics.";
|
|
59
|
+
readonly usage: readonly ["runpane doctor"];
|
|
60
|
+
}];
|
|
61
|
+
readonly flags: {
|
|
62
|
+
readonly wrapper: readonly [{
|
|
63
|
+
readonly name: "--version";
|
|
64
|
+
readonly value: "<latest|vX.Y.Z>";
|
|
65
|
+
readonly description: "Pane release to install or inspect.";
|
|
66
|
+
}, {
|
|
67
|
+
readonly name: "--download-dir";
|
|
68
|
+
readonly value: "<path>";
|
|
69
|
+
readonly description: "Directory for downloaded Pane release artifacts.";
|
|
70
|
+
}, {
|
|
71
|
+
readonly name: "--pane-path";
|
|
72
|
+
readonly value: "<path>";
|
|
73
|
+
readonly description: "Use or inspect an existing Pane executable.";
|
|
74
|
+
}, {
|
|
75
|
+
readonly name: "--format";
|
|
76
|
+
readonly value: "<auto|appimage|deb|dmg|zip|exe>";
|
|
77
|
+
readonly description: "Pane release artifact format.";
|
|
78
|
+
}, {
|
|
79
|
+
readonly name: "--dry-run";
|
|
80
|
+
readonly description: "Print the plan without downloading or installing.";
|
|
81
|
+
}, {
|
|
82
|
+
readonly name: "--yes";
|
|
83
|
+
readonly aliases: readonly ["-y"];
|
|
84
|
+
readonly description: "Skip interactive prompts where possible.";
|
|
85
|
+
}, {
|
|
86
|
+
readonly name: "--verbose";
|
|
87
|
+
readonly description: "Print extra diagnostics.";
|
|
88
|
+
}];
|
|
89
|
+
readonly remoteValue: readonly [{
|
|
90
|
+
readonly name: "--label";
|
|
91
|
+
readonly value: "<name>";
|
|
92
|
+
}, {
|
|
93
|
+
readonly name: "--prefer-tunnel";
|
|
94
|
+
readonly value: "<tailscale|ssh|manual|auto>";
|
|
95
|
+
}, {
|
|
96
|
+
readonly name: "--channel";
|
|
97
|
+
readonly value: "<stable|nightly>";
|
|
98
|
+
}, {
|
|
99
|
+
readonly name: "--base-url";
|
|
100
|
+
readonly value: "<url>";
|
|
101
|
+
}, {
|
|
102
|
+
readonly name: "--pane-dir";
|
|
103
|
+
readonly value: "<path>";
|
|
104
|
+
}, {
|
|
105
|
+
readonly name: "--listen-port";
|
|
106
|
+
readonly value: "<port>";
|
|
107
|
+
}, {
|
|
108
|
+
readonly name: "--port";
|
|
109
|
+
readonly value: "<port>";
|
|
110
|
+
}, {
|
|
111
|
+
readonly name: "--repo-ref";
|
|
112
|
+
readonly value: "<ref>";
|
|
113
|
+
}];
|
|
114
|
+
readonly remoteBoolean: readonly [{
|
|
115
|
+
readonly name: "--auto-listen-port";
|
|
116
|
+
}, {
|
|
117
|
+
readonly name: "--interactive-tailscale-setup";
|
|
118
|
+
}, {
|
|
119
|
+
readonly name: "--no-install-service";
|
|
120
|
+
}, {
|
|
121
|
+
readonly name: "--no-tailscale-serve";
|
|
122
|
+
}, {
|
|
123
|
+
readonly name: "--print-only";
|
|
124
|
+
}];
|
|
125
|
+
};
|
|
126
|
+
readonly help: {
|
|
127
|
+
readonly npm: {
|
|
128
|
+
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane help [command]", "", "Quick start:", " npx --yes runpane@latest", " npm i -g runpane && runpane setup", "", "Advanced examples:", " npx --yes runpane@latest install client", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest", " pipx run runpane", "", "Run \"runpane help install\" for install options."];
|
|
129
|
+
readonly install: readonly ["Usage:", " runpane install [client|daemon] [options]", "", "Examples:", " npx --yes runpane@latest install client", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label \"VM\"", "", "Wrapper options:", " --version <latest|vX.Y.Z> Pane release to install", " --format <auto|appimage|deb|dmg|zip|exe>", " --download-dir <path>", " --pane-path <path> Use an existing Pane executable", " --dry-run Print the plan without downloading", " --yes Skip interactive prompts where possible", " --verbose", "", "Daemon passthrough options:", " --label <name>", " --prefer-tunnel <tailscale|ssh|manual|auto>", " --channel <stable|nightly>", " --base-url <url>", " --pane-dir <path>", " --listen-port <port> / --port <port>", " --auto-listen-port", " --interactive-tailscale-setup", " --no-install-service", " --no-tailscale-serve", " --print-only", " --repo-ref <ref>"];
|
|
130
|
+
readonly setup: readonly ["Usage:", " runpane setup", "", "Opens the guided setup for desktop install, remote host setup, update, and diagnostics.", "", "Quick start:", " npx --yes runpane@latest", " npm i -g runpane && runpane setup"];
|
|
131
|
+
readonly update: readonly ["Usage:", " runpane update [options]", "", "Updates Pane using the same artifact selection as \"runpane install client\".", "", "Options:", " --version <latest|vX.Y.Z>", " --format <auto|appimage|deb|dmg|zip|exe>", " --download-dir <path>", " --pane-path <path>", " --dry-run", " --yes", " --verbose"];
|
|
132
|
+
readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
|
|
133
|
+
readonly doctor: readonly ["Usage:", " runpane doctor [--pane-path <path>] [--format <format>] [--verbose]"];
|
|
134
|
+
};
|
|
135
|
+
readonly pip: {
|
|
136
|
+
readonly default: readonly ["Usage:", " runpane", " runpane setup", " runpane install [client|daemon] [options]", " runpane update [options]", " runpane version", " runpane doctor", " runpane help [command]", "", "Quick start:", " pipx run runpane", " python -m pip install runpane && python -m runpane setup", "", "Advanced examples:", " pipx run runpane install client", " pipx run runpane install daemon --label \"My Server\"", " uvx runpane@latest", "", "Run \"runpane help install\" for install options."];
|
|
137
|
+
readonly install: readonly ["Usage:", " runpane install [client|daemon] [options]", "", "Examples:", " npx --yes runpane@latest install daemon --label \"My Server\"", " pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label \"VM\"", " pipx run runpane install daemon --label \"My Server\"", "", "Wrapper options:", " --version <latest|vX.Y.Z>", " --format <auto|appimage|deb|dmg|zip|exe>", " --download-dir <path>", " --pane-path <path>", " --dry-run", " --yes", " --verbose", "", "Daemon passthrough options:", " --label <name>", " --prefer-tunnel <tailscale|ssh|manual|auto>", " --channel <stable|nightly>", " --base-url <url>", " --pane-dir <path>", " --listen-port <port> / --port <port>", " --auto-listen-port", " --interactive-tailscale-setup", " --no-install-service", " --no-tailscale-serve", " --print-only", " --repo-ref <ref>"];
|
|
138
|
+
readonly setup: readonly ["Usage:", " runpane setup", "", "Opens the guided setup for desktop install, remote host setup, update, and diagnostics.", "", "Quick start:", " pipx run runpane", " python -m pip install runpane && python -m runpane setup"];
|
|
139
|
+
readonly update: readonly ["Usage:", " runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"];
|
|
140
|
+
readonly version: readonly ["Usage:", " runpane version", " runpane --version"];
|
|
141
|
+
readonly doctor: readonly ["Usage:", " runpane doctor [--pane-path <path>] [--format <format>] [--verbose]"];
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
readonly docs: {
|
|
145
|
+
readonly maintainerRules: readonly ["Treat `contracts/runpane/contract.json` as the source of truth for both wrapper packages and generated docs.", "Every command, flag, platform default, artifact-selection rule, and attribution rule change must be reflected in the contract.", "The npm and PyPI wrappers must expose the same command behavior unless the contract explicitly documents a package-manager-specific difference.", "Root `README.md` and package READMEs should lead with one guided quick-start command. Explicit commands, package-manager variants, and flags belong in an Advanced section.", "Release version bumps must keep root `package.json`, `packages/runpane`, and `packages/runpane-py` versions in sync. Run `pnpm run check:runpane-package-versions` before release.", "`pnpm run test:runpane-contract` must pass before changing wrapper command parsing, help output, platform defaults, release asset selection, or generated contract artifacts.", "Token-based npm or PyPI publishing is a temporary fallback. Prefer trusted publishing once the package names are reserved and trusted publishers are configured."];
|
|
146
|
+
readonly recommendedQuickStarts: readonly ["npx --yes runpane@latest", "npm i -g runpane && runpane setup", "pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
|
|
147
|
+
readonly npmCommands: readonly ["npx --yes runpane@latest", "npx --yes runpane@latest setup", "npx --yes runpane@latest install client", "npx --yes runpane@latest install daemon --label \"My Server\"", "pnpm dlx runpane@latest", "pnpm dlx runpane@latest install daemon --label \"My Server\"", "npm i -g runpane && runpane", "npm i -g runpane && runpane setup", "npm i -g runpane && runpane install daemon --label \"My Server\"", "pnpm add -g runpane && runpane", "pnpm add -g runpane && runpane setup", "pnpm add -g runpane && runpane install daemon --label \"My Server\"", "yarn dlx runpane@latest install daemon --label \"My Server\"", "bunx runpane@latest install daemon --label \"My Server\""];
|
|
148
|
+
readonly pythonCommands: readonly ["pipx run runpane", "pipx run runpane setup", "python -m pip install runpane", "runpane", "runpane setup", "python -m runpane setup", "runpane install daemon --label \"My Server\"", "pipx install runpane", "runpane", "runpane setup", "pipx run runpane install daemon --label \"My Server\"", "uvx runpane@latest", "uvx runpane@latest setup", "uvx runpane@latest install daemon --label \"My Server\"", "python -m runpane install daemon --label \"My Server\""];
|
|
149
|
+
readonly packageManagerNotes: readonly ["Use `pnpm dlx` for one-shot pnpm execution and `pnpm add -g` for persistent CLI installation.", "Do not document `pnpm install runpane` as the public CLI install path."];
|
|
150
|
+
readonly commandUsages: readonly ["runpane", "runpane setup", "runpane install", "runpane install client", "runpane install daemon", "runpane update", "runpane version", "runpane doctor", "runpane help", "runpane <command> --help"];
|
|
151
|
+
readonly commandDescriptions: readonly ["`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help and exit successfully instead of waiting for input.", "`runpane install` is an alias for `runpane install client`.", "`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.", "`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.", "The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.", "`runpane update` uses the same release resolution and installer path as `install client`.", "`runpane version` prints the wrapper package version, the installed Pane version when detectable, and the latest GitHub release version when reachable.", "`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, and remote-daemon hints."];
|
|
152
|
+
readonly wrapperFlagNote: "The top-level `runpane --version` form prints the wrapper version. The install subcommand form `runpane install --version vX.Y.Z` selects a Pane release.";
|
|
153
|
+
readonly daemonFlagNote: "Unknown daemon flags should be forwarded rather than dropped so newer Pane versions can extend `--remote-setup` without requiring an immediate wrapper release. Unknown flags for non-daemon commands should fail clearly.";
|
|
154
|
+
readonly downloadAttribution: readonly ["The npm package uses `source=npm` for all npm-registry consumers, including `npx`, `pnpm dlx`, `yarn dlx`, `bunx`, and global npm/pnpm installs.", "The PyPI package uses `source=pip` for all Python consumers, including pip, pipx, uvx, and `python -m runpane`.", "Wrappers should prefer `https://runpane.com/api/download?platform=<platform>&arch=<arch>&format=<format>&version=<version>&channel=<channel>&source=<npm|pip>`.", "If the website route cannot satisfy the download, wrappers may fall back to the matching GitHub release asset and print a warning that website attribution may be incomplete for that run."];
|
|
155
|
+
readonly publishingCredentials: readonly ["Local implementation, build, and dry-run validation do not need npm or PyPI API tokens.", "Release publishing should prefer npm Trusted Publishing and PyPI Trusted Publishing from GitHub Actions.", "Fallback `NPM_TOKEN` or `PYPI_API_TOKEN` credentials may be used for first package reservation or manual publication only. They must be supplied through local environment variables or GitHub Actions secrets, never committed, and revoked or rotated after use."];
|
|
156
|
+
};
|
|
157
|
+
readonly testFixtures: {
|
|
158
|
+
readonly parserSamples: readonly [readonly ["setup"], readonly ["install"], readonly ["install", "client", "--version", "v2.2.8", "--format", "dmg", "--download-dir", "/tmp/pane-downloads", "--dry-run", "--yes"], readonly ["install", "daemon", "--label", "VM", "--prefer-tunnel", "ssh", "--channel", "nightly", "--base-url", "https://example.test", "--pane-dir", "/tmp/pane", "--listen-port", "4555", "--auto-listen-port", "--print-only", "--repo-ref", "main", "--unknown-future-flag", "future-value", "--dry-run", "--verbose"], readonly ["update", "--version", "latest", "--format", "appimage", "--pane-path", "/usr/bin/pane", "--dry-run"], readonly ["doctor", "--pane-path", "/usr/bin/pane", "--format", "zip", "--verbose"], readonly ["--version"]];
|
|
159
|
+
readonly topLevelHelpIncludes: readonly ["runpane setup", "runpane install", "runpane update", "runpane version", "runpane doctor"];
|
|
160
|
+
readonly npmHelpIncludes: readonly ["pnpm dlx runpane@latest", "npx --yes runpane@latest"];
|
|
161
|
+
readonly pipHelpIncludes: readonly ["pipx run runpane", "python -m pip install runpane && python -m runpane setup"];
|
|
162
|
+
readonly installHelpIncludes: readonly ["--version <latest|vX.Y.Z>", "--format <auto|appimage|deb|dmg|zip|exe>", "--download-dir <path>", "--pane-path <path>", "--label <name>", "--prefer-tunnel <tailscale|ssh|manual|auto>", "--repo-ref <ref>"];
|
|
163
|
+
};
|
|
164
|
+
readonly jsonSchemas: {
|
|
165
|
+
readonly error: {
|
|
166
|
+
readonly type: "object";
|
|
167
|
+
readonly required: readonly ["ok", "error"];
|
|
168
|
+
readonly properties: {
|
|
169
|
+
readonly ok: {
|
|
170
|
+
readonly const: false;
|
|
171
|
+
};
|
|
172
|
+
readonly error: {
|
|
173
|
+
readonly type: "object";
|
|
174
|
+
readonly required: readonly ["message"];
|
|
175
|
+
readonly properties: {
|
|
176
|
+
readonly message: {
|
|
177
|
+
readonly type: "string";
|
|
178
|
+
};
|
|
179
|
+
readonly code: {
|
|
180
|
+
readonly type: "string";
|
|
181
|
+
};
|
|
182
|
+
};
|
|
183
|
+
readonly additionalProperties: false;
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
readonly additionalProperties: false;
|
|
187
|
+
};
|
|
188
|
+
readonly "future.repoListResult": {
|
|
189
|
+
readonly type: "object";
|
|
190
|
+
readonly description: "Reserved for #252 repo listing output.";
|
|
191
|
+
};
|
|
192
|
+
readonly "future.paneCreateResult": {
|
|
193
|
+
readonly type: "object";
|
|
194
|
+
readonly description: "Reserved for #252 pane creation output.";
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
export type RunpaneCommand = typeof RUNPANE_CONTRACT.commands[number]['name'];
|
|
199
|
+
export type InstallTarget = typeof RUNPANE_CONTRACT.enums.installTargets[number];
|
|
200
|
+
export type ArtifactFormat = typeof RUNPANE_CONTRACT.enums.artifactFormats[number];
|
|
201
|
+
export type RunpaneChannel = typeof RUNPANE_CONTRACT.enums.channels[number];
|
|
202
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/generated/contract.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAikBnB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,OAAO,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Generated by scripts/generate-runpane-contract.js. Do not edit by hand.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.RUNPANE_CONTRACT = void 0;
|
|
5
|
+
exports.RUNPANE_CONTRACT = {
|
|
6
|
+
"$schema": "./schema.json",
|
|
7
|
+
"schemaVersion": 1,
|
|
8
|
+
"name": "runpane",
|
|
9
|
+
"description": "Thin installer and local control CLI for Pane",
|
|
10
|
+
"packageInstallPolicy": [
|
|
11
|
+
"The packages must not download, install, or configure Pane during package installation.",
|
|
12
|
+
"Work starts only when a user runs `runpane ...`."
|
|
13
|
+
],
|
|
14
|
+
"compatibility": {
|
|
15
|
+
"node": ">=18.17.0",
|
|
16
|
+
"python": ">=3.8"
|
|
17
|
+
},
|
|
18
|
+
"terminology": {
|
|
19
|
+
"repo": "Saved Pane repository/project record",
|
|
20
|
+
"pane": "User-visible Pane session",
|
|
21
|
+
"tool": "Terminal-backed tab",
|
|
22
|
+
"agent": "Built-in agent command template"
|
|
23
|
+
},
|
|
24
|
+
"defaults": {
|
|
25
|
+
"target": "client",
|
|
26
|
+
"paneVersion": "latest",
|
|
27
|
+
"channel": "stable",
|
|
28
|
+
"format": "auto",
|
|
29
|
+
"dryRun": false,
|
|
30
|
+
"yes": false,
|
|
31
|
+
"verbose": false
|
|
32
|
+
},
|
|
33
|
+
"enums": {
|
|
34
|
+
"installTargets": [
|
|
35
|
+
"client",
|
|
36
|
+
"daemon"
|
|
37
|
+
],
|
|
38
|
+
"artifactFormats": [
|
|
39
|
+
"auto",
|
|
40
|
+
"appimage",
|
|
41
|
+
"deb",
|
|
42
|
+
"dmg",
|
|
43
|
+
"zip",
|
|
44
|
+
"exe"
|
|
45
|
+
],
|
|
46
|
+
"channels": [
|
|
47
|
+
"stable",
|
|
48
|
+
"nightly"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"commands": [
|
|
52
|
+
{
|
|
53
|
+
"name": "help",
|
|
54
|
+
"summary": "Show help for runpane or a specific command.",
|
|
55
|
+
"usage": [
|
|
56
|
+
"runpane help [command]"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "setup",
|
|
61
|
+
"summary": "Open the guided setup wizard for install, remote host setup, update, and diagnostics.",
|
|
62
|
+
"usage": [
|
|
63
|
+
"runpane setup"
|
|
64
|
+
],
|
|
65
|
+
"interactiveEntrypoint": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "install",
|
|
69
|
+
"summary": "Install Pane on this machine or configure this machine as a remote daemon host.",
|
|
70
|
+
"usage": [
|
|
71
|
+
"runpane install [client|daemon] [options]"
|
|
72
|
+
],
|
|
73
|
+
"defaultTarget": "client",
|
|
74
|
+
"targets": [
|
|
75
|
+
"client",
|
|
76
|
+
"daemon"
|
|
77
|
+
],
|
|
78
|
+
"unknownDaemonFlagsForwarded": true
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "update",
|
|
82
|
+
"summary": "Update the Pane desktop app using the same artifact path as install client.",
|
|
83
|
+
"usage": [
|
|
84
|
+
"runpane update [options]"
|
|
85
|
+
],
|
|
86
|
+
"target": "client"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "version",
|
|
90
|
+
"summary": "Print the runpane wrapper version and installed Pane version when detectable.",
|
|
91
|
+
"usage": [
|
|
92
|
+
"runpane version",
|
|
93
|
+
"runpane --version"
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "doctor",
|
|
98
|
+
"summary": "Run platform, release, installed Pane, and remote setup diagnostics.",
|
|
99
|
+
"usage": [
|
|
100
|
+
"runpane doctor"
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"flags": {
|
|
105
|
+
"wrapper": [
|
|
106
|
+
{
|
|
107
|
+
"name": "--version",
|
|
108
|
+
"value": "<latest|vX.Y.Z>",
|
|
109
|
+
"description": "Pane release to install or inspect."
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"name": "--download-dir",
|
|
113
|
+
"value": "<path>",
|
|
114
|
+
"description": "Directory for downloaded Pane release artifacts."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "--pane-path",
|
|
118
|
+
"value": "<path>",
|
|
119
|
+
"description": "Use or inspect an existing Pane executable."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"name": "--format",
|
|
123
|
+
"value": "<auto|appimage|deb|dmg|zip|exe>",
|
|
124
|
+
"description": "Pane release artifact format."
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "--dry-run",
|
|
128
|
+
"description": "Print the plan without downloading or installing."
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "--yes",
|
|
132
|
+
"aliases": [
|
|
133
|
+
"-y"
|
|
134
|
+
],
|
|
135
|
+
"description": "Skip interactive prompts where possible."
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"name": "--verbose",
|
|
139
|
+
"description": "Print extra diagnostics."
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"remoteValue": [
|
|
143
|
+
{
|
|
144
|
+
"name": "--label",
|
|
145
|
+
"value": "<name>"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "--prefer-tunnel",
|
|
149
|
+
"value": "<tailscale|ssh|manual|auto>"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "--channel",
|
|
153
|
+
"value": "<stable|nightly>"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "--base-url",
|
|
157
|
+
"value": "<url>"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "--pane-dir",
|
|
161
|
+
"value": "<path>"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "--listen-port",
|
|
165
|
+
"value": "<port>"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"name": "--port",
|
|
169
|
+
"value": "<port>"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "--repo-ref",
|
|
173
|
+
"value": "<ref>"
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
"remoteBoolean": [
|
|
177
|
+
{
|
|
178
|
+
"name": "--auto-listen-port"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"name": "--interactive-tailscale-setup"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "--no-install-service"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"name": "--no-tailscale-serve"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "--print-only"
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
"help": {
|
|
195
|
+
"npm": {
|
|
196
|
+
"default": [
|
|
197
|
+
"Usage:",
|
|
198
|
+
" runpane",
|
|
199
|
+
" runpane setup",
|
|
200
|
+
" runpane install [client|daemon] [options]",
|
|
201
|
+
" runpane update [options]",
|
|
202
|
+
" runpane version",
|
|
203
|
+
" runpane doctor",
|
|
204
|
+
" runpane help [command]",
|
|
205
|
+
"",
|
|
206
|
+
"Quick start:",
|
|
207
|
+
" npx --yes runpane@latest",
|
|
208
|
+
" npm i -g runpane && runpane setup",
|
|
209
|
+
"",
|
|
210
|
+
"Advanced examples:",
|
|
211
|
+
" npx --yes runpane@latest install client",
|
|
212
|
+
" npx --yes runpane@latest install daemon --label \"My Server\"",
|
|
213
|
+
" pnpm dlx runpane@latest",
|
|
214
|
+
" pipx run runpane",
|
|
215
|
+
"",
|
|
216
|
+
"Run \"runpane help install\" for install options."
|
|
217
|
+
],
|
|
218
|
+
"install": [
|
|
219
|
+
"Usage:",
|
|
220
|
+
" runpane install [client|daemon] [options]",
|
|
221
|
+
"",
|
|
222
|
+
"Examples:",
|
|
223
|
+
" npx --yes runpane@latest install client",
|
|
224
|
+
" npx --yes runpane@latest install daemon --label \"My Server\"",
|
|
225
|
+
" pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label \"VM\"",
|
|
226
|
+
"",
|
|
227
|
+
"Wrapper options:",
|
|
228
|
+
" --version <latest|vX.Y.Z> Pane release to install",
|
|
229
|
+
" --format <auto|appimage|deb|dmg|zip|exe>",
|
|
230
|
+
" --download-dir <path>",
|
|
231
|
+
" --pane-path <path> Use an existing Pane executable",
|
|
232
|
+
" --dry-run Print the plan without downloading",
|
|
233
|
+
" --yes Skip interactive prompts where possible",
|
|
234
|
+
" --verbose",
|
|
235
|
+
"",
|
|
236
|
+
"Daemon passthrough options:",
|
|
237
|
+
" --label <name>",
|
|
238
|
+
" --prefer-tunnel <tailscale|ssh|manual|auto>",
|
|
239
|
+
" --channel <stable|nightly>",
|
|
240
|
+
" --base-url <url>",
|
|
241
|
+
" --pane-dir <path>",
|
|
242
|
+
" --listen-port <port> / --port <port>",
|
|
243
|
+
" --auto-listen-port",
|
|
244
|
+
" --interactive-tailscale-setup",
|
|
245
|
+
" --no-install-service",
|
|
246
|
+
" --no-tailscale-serve",
|
|
247
|
+
" --print-only",
|
|
248
|
+
" --repo-ref <ref>"
|
|
249
|
+
],
|
|
250
|
+
"setup": [
|
|
251
|
+
"Usage:",
|
|
252
|
+
" runpane setup",
|
|
253
|
+
"",
|
|
254
|
+
"Opens the guided setup for desktop install, remote host setup, update, and diagnostics.",
|
|
255
|
+
"",
|
|
256
|
+
"Quick start:",
|
|
257
|
+
" npx --yes runpane@latest",
|
|
258
|
+
" npm i -g runpane && runpane setup"
|
|
259
|
+
],
|
|
260
|
+
"update": [
|
|
261
|
+
"Usage:",
|
|
262
|
+
" runpane update [options]",
|
|
263
|
+
"",
|
|
264
|
+
"Updates Pane using the same artifact selection as \"runpane install client\".",
|
|
265
|
+
"",
|
|
266
|
+
"Options:",
|
|
267
|
+
" --version <latest|vX.Y.Z>",
|
|
268
|
+
" --format <auto|appimage|deb|dmg|zip|exe>",
|
|
269
|
+
" --download-dir <path>",
|
|
270
|
+
" --pane-path <path>",
|
|
271
|
+
" --dry-run",
|
|
272
|
+
" --yes",
|
|
273
|
+
" --verbose"
|
|
274
|
+
],
|
|
275
|
+
"version": [
|
|
276
|
+
"Usage:",
|
|
277
|
+
" runpane version",
|
|
278
|
+
" runpane --version"
|
|
279
|
+
],
|
|
280
|
+
"doctor": [
|
|
281
|
+
"Usage:",
|
|
282
|
+
" runpane doctor [--pane-path <path>] [--format <format>] [--verbose]"
|
|
283
|
+
]
|
|
284
|
+
},
|
|
285
|
+
"pip": {
|
|
286
|
+
"default": [
|
|
287
|
+
"Usage:",
|
|
288
|
+
" runpane",
|
|
289
|
+
" runpane setup",
|
|
290
|
+
" runpane install [client|daemon] [options]",
|
|
291
|
+
" runpane update [options]",
|
|
292
|
+
" runpane version",
|
|
293
|
+
" runpane doctor",
|
|
294
|
+
" runpane help [command]",
|
|
295
|
+
"",
|
|
296
|
+
"Quick start:",
|
|
297
|
+
" pipx run runpane",
|
|
298
|
+
" python -m pip install runpane && python -m runpane setup",
|
|
299
|
+
"",
|
|
300
|
+
"Advanced examples:",
|
|
301
|
+
" pipx run runpane install client",
|
|
302
|
+
" pipx run runpane install daemon --label \"My Server\"",
|
|
303
|
+
" uvx runpane@latest",
|
|
304
|
+
"",
|
|
305
|
+
"Run \"runpane help install\" for install options."
|
|
306
|
+
],
|
|
307
|
+
"install": [
|
|
308
|
+
"Usage:",
|
|
309
|
+
" runpane install [client|daemon] [options]",
|
|
310
|
+
"",
|
|
311
|
+
"Examples:",
|
|
312
|
+
" npx --yes runpane@latest install daemon --label \"My Server\"",
|
|
313
|
+
" pnpm dlx runpane@latest install daemon --prefer-tunnel ssh --label \"VM\"",
|
|
314
|
+
" pipx run runpane install daemon --label \"My Server\"",
|
|
315
|
+
"",
|
|
316
|
+
"Wrapper options:",
|
|
317
|
+
" --version <latest|vX.Y.Z>",
|
|
318
|
+
" --format <auto|appimage|deb|dmg|zip|exe>",
|
|
319
|
+
" --download-dir <path>",
|
|
320
|
+
" --pane-path <path>",
|
|
321
|
+
" --dry-run",
|
|
322
|
+
" --yes",
|
|
323
|
+
" --verbose",
|
|
324
|
+
"",
|
|
325
|
+
"Daemon passthrough options:",
|
|
326
|
+
" --label <name>",
|
|
327
|
+
" --prefer-tunnel <tailscale|ssh|manual|auto>",
|
|
328
|
+
" --channel <stable|nightly>",
|
|
329
|
+
" --base-url <url>",
|
|
330
|
+
" --pane-dir <path>",
|
|
331
|
+
" --listen-port <port> / --port <port>",
|
|
332
|
+
" --auto-listen-port",
|
|
333
|
+
" --interactive-tailscale-setup",
|
|
334
|
+
" --no-install-service",
|
|
335
|
+
" --no-tailscale-serve",
|
|
336
|
+
" --print-only",
|
|
337
|
+
" --repo-ref <ref>"
|
|
338
|
+
],
|
|
339
|
+
"setup": [
|
|
340
|
+
"Usage:",
|
|
341
|
+
" runpane setup",
|
|
342
|
+
"",
|
|
343
|
+
"Opens the guided setup for desktop install, remote host setup, update, and diagnostics.",
|
|
344
|
+
"",
|
|
345
|
+
"Quick start:",
|
|
346
|
+
" pipx run runpane",
|
|
347
|
+
" python -m pip install runpane && python -m runpane setup"
|
|
348
|
+
],
|
|
349
|
+
"update": [
|
|
350
|
+
"Usage:",
|
|
351
|
+
" runpane update [--version <latest|vX.Y.Z>] [--dry-run] [--yes]"
|
|
352
|
+
],
|
|
353
|
+
"version": [
|
|
354
|
+
"Usage:",
|
|
355
|
+
" runpane version",
|
|
356
|
+
" runpane --version"
|
|
357
|
+
],
|
|
358
|
+
"doctor": [
|
|
359
|
+
"Usage:",
|
|
360
|
+
" runpane doctor [--pane-path <path>] [--format <format>] [--verbose]"
|
|
361
|
+
]
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
"docs": {
|
|
365
|
+
"maintainerRules": [
|
|
366
|
+
"Treat `contracts/runpane/contract.json` as the source of truth for both wrapper packages and generated docs.",
|
|
367
|
+
"Every command, flag, platform default, artifact-selection rule, and attribution rule change must be reflected in the contract.",
|
|
368
|
+
"The npm and PyPI wrappers must expose the same command behavior unless the contract explicitly documents a package-manager-specific difference.",
|
|
369
|
+
"Root `README.md` and package READMEs should lead with one guided quick-start command. Explicit commands, package-manager variants, and flags belong in an Advanced section.",
|
|
370
|
+
"Release version bumps must keep root `package.json`, `packages/runpane`, and `packages/runpane-py` versions in sync. Run `pnpm run check:runpane-package-versions` before release.",
|
|
371
|
+
"`pnpm run test:runpane-contract` must pass before changing wrapper command parsing, help output, platform defaults, release asset selection, or generated contract artifacts.",
|
|
372
|
+
"Token-based npm or PyPI publishing is a temporary fallback. Prefer trusted publishing once the package names are reserved and trusted publishers are configured."
|
|
373
|
+
],
|
|
374
|
+
"recommendedQuickStarts": [
|
|
375
|
+
"npx --yes runpane@latest",
|
|
376
|
+
"npm i -g runpane && runpane setup",
|
|
377
|
+
"pipx run runpane",
|
|
378
|
+
"python -m pip install runpane && python -m runpane setup"
|
|
379
|
+
],
|
|
380
|
+
"npmCommands": [
|
|
381
|
+
"npx --yes runpane@latest",
|
|
382
|
+
"npx --yes runpane@latest setup",
|
|
383
|
+
"npx --yes runpane@latest install client",
|
|
384
|
+
"npx --yes runpane@latest install daemon --label \"My Server\"",
|
|
385
|
+
"pnpm dlx runpane@latest",
|
|
386
|
+
"pnpm dlx runpane@latest install daemon --label \"My Server\"",
|
|
387
|
+
"npm i -g runpane && runpane",
|
|
388
|
+
"npm i -g runpane && runpane setup",
|
|
389
|
+
"npm i -g runpane && runpane install daemon --label \"My Server\"",
|
|
390
|
+
"pnpm add -g runpane && runpane",
|
|
391
|
+
"pnpm add -g runpane && runpane setup",
|
|
392
|
+
"pnpm add -g runpane && runpane install daemon --label \"My Server\"",
|
|
393
|
+
"yarn dlx runpane@latest install daemon --label \"My Server\"",
|
|
394
|
+
"bunx runpane@latest install daemon --label \"My Server\""
|
|
395
|
+
],
|
|
396
|
+
"pythonCommands": [
|
|
397
|
+
"pipx run runpane",
|
|
398
|
+
"pipx run runpane setup",
|
|
399
|
+
"python -m pip install runpane",
|
|
400
|
+
"runpane",
|
|
401
|
+
"runpane setup",
|
|
402
|
+
"python -m runpane setup",
|
|
403
|
+
"runpane install daemon --label \"My Server\"",
|
|
404
|
+
"pipx install runpane",
|
|
405
|
+
"runpane",
|
|
406
|
+
"runpane setup",
|
|
407
|
+
"pipx run runpane install daemon --label \"My Server\"",
|
|
408
|
+
"uvx runpane@latest",
|
|
409
|
+
"uvx runpane@latest setup",
|
|
410
|
+
"uvx runpane@latest install daemon --label \"My Server\"",
|
|
411
|
+
"python -m runpane install daemon --label \"My Server\""
|
|
412
|
+
],
|
|
413
|
+
"packageManagerNotes": [
|
|
414
|
+
"Use `pnpm dlx` for one-shot pnpm execution and `pnpm add -g` for persistent CLI installation.",
|
|
415
|
+
"Do not document `pnpm install runpane` as the public CLI install path."
|
|
416
|
+
],
|
|
417
|
+
"commandUsages": [
|
|
418
|
+
"runpane",
|
|
419
|
+
"runpane setup",
|
|
420
|
+
"runpane install",
|
|
421
|
+
"runpane install client",
|
|
422
|
+
"runpane install daemon",
|
|
423
|
+
"runpane update",
|
|
424
|
+
"runpane version",
|
|
425
|
+
"runpane doctor",
|
|
426
|
+
"runpane help",
|
|
427
|
+
"runpane <command> --help"
|
|
428
|
+
],
|
|
429
|
+
"commandDescriptions": [
|
|
430
|
+
"`runpane` with no arguments and `runpane setup` open an interactive wizard when stdin and stdout are TTYs. In non-interactive shells or CI, both forms must print help and exit successfully instead of waiting for input.",
|
|
431
|
+
"`runpane install` is an alias for `runpane install client`.",
|
|
432
|
+
"`runpane install client` downloads the selected Pane desktop artifact and installs, opens, or launches it for the current platform.",
|
|
433
|
+
"`runpane install daemon` downloads or installs Pane, resolves a stable Pane executable path, and spawns `<pane executable> --remote-setup <forwarded remote setup args>`.",
|
|
434
|
+
"The wrapper must stream Pane stdout/stderr without reformatting because `pane --remote-setup` prints the one-time `pane-remote://...` connection code.",
|
|
435
|
+
"`runpane update` uses the same release resolution and installer path as `install client`.",
|
|
436
|
+
"`runpane version` prints the wrapper package version, the installed Pane version when detectable, and the latest GitHub release version when reachable.",
|
|
437
|
+
"`runpane doctor` checks platform support, release metadata reachability, download URL selection, installed Pane detection, and remote-daemon hints."
|
|
438
|
+
],
|
|
439
|
+
"wrapperFlagNote": "The top-level `runpane --version` form prints the wrapper version. The install subcommand form `runpane install --version vX.Y.Z` selects a Pane release.",
|
|
440
|
+
"daemonFlagNote": "Unknown daemon flags should be forwarded rather than dropped so newer Pane versions can extend `--remote-setup` without requiring an immediate wrapper release. Unknown flags for non-daemon commands should fail clearly.",
|
|
441
|
+
"downloadAttribution": [
|
|
442
|
+
"The npm package uses `source=npm` for all npm-registry consumers, including `npx`, `pnpm dlx`, `yarn dlx`, `bunx`, and global npm/pnpm installs.",
|
|
443
|
+
"The PyPI package uses `source=pip` for all Python consumers, including pip, pipx, uvx, and `python -m runpane`.",
|
|
444
|
+
"Wrappers should prefer `https://runpane.com/api/download?platform=<platform>&arch=<arch>&format=<format>&version=<version>&channel=<channel>&source=<npm|pip>`.",
|
|
445
|
+
"If the website route cannot satisfy the download, wrappers may fall back to the matching GitHub release asset and print a warning that website attribution may be incomplete for that run."
|
|
446
|
+
],
|
|
447
|
+
"publishingCredentials": [
|
|
448
|
+
"Local implementation, build, and dry-run validation do not need npm or PyPI API tokens.",
|
|
449
|
+
"Release publishing should prefer npm Trusted Publishing and PyPI Trusted Publishing from GitHub Actions.",
|
|
450
|
+
"Fallback `NPM_TOKEN` or `PYPI_API_TOKEN` credentials may be used for first package reservation or manual publication only. They must be supplied through local environment variables or GitHub Actions secrets, never committed, and revoked or rotated after use."
|
|
451
|
+
]
|
|
452
|
+
},
|
|
453
|
+
"testFixtures": {
|
|
454
|
+
"parserSamples": [
|
|
455
|
+
[
|
|
456
|
+
"setup"
|
|
457
|
+
],
|
|
458
|
+
[
|
|
459
|
+
"install"
|
|
460
|
+
],
|
|
461
|
+
[
|
|
462
|
+
"install",
|
|
463
|
+
"client",
|
|
464
|
+
"--version",
|
|
465
|
+
"v2.2.8",
|
|
466
|
+
"--format",
|
|
467
|
+
"dmg",
|
|
468
|
+
"--download-dir",
|
|
469
|
+
"/tmp/pane-downloads",
|
|
470
|
+
"--dry-run",
|
|
471
|
+
"--yes"
|
|
472
|
+
],
|
|
473
|
+
[
|
|
474
|
+
"install",
|
|
475
|
+
"daemon",
|
|
476
|
+
"--label",
|
|
477
|
+
"VM",
|
|
478
|
+
"--prefer-tunnel",
|
|
479
|
+
"ssh",
|
|
480
|
+
"--channel",
|
|
481
|
+
"nightly",
|
|
482
|
+
"--base-url",
|
|
483
|
+
"https://example.test",
|
|
484
|
+
"--pane-dir",
|
|
485
|
+
"/tmp/pane",
|
|
486
|
+
"--listen-port",
|
|
487
|
+
"4555",
|
|
488
|
+
"--auto-listen-port",
|
|
489
|
+
"--print-only",
|
|
490
|
+
"--repo-ref",
|
|
491
|
+
"main",
|
|
492
|
+
"--unknown-future-flag",
|
|
493
|
+
"future-value",
|
|
494
|
+
"--dry-run",
|
|
495
|
+
"--verbose"
|
|
496
|
+
],
|
|
497
|
+
[
|
|
498
|
+
"update",
|
|
499
|
+
"--version",
|
|
500
|
+
"latest",
|
|
501
|
+
"--format",
|
|
502
|
+
"appimage",
|
|
503
|
+
"--pane-path",
|
|
504
|
+
"/usr/bin/pane",
|
|
505
|
+
"--dry-run"
|
|
506
|
+
],
|
|
507
|
+
[
|
|
508
|
+
"doctor",
|
|
509
|
+
"--pane-path",
|
|
510
|
+
"/usr/bin/pane",
|
|
511
|
+
"--format",
|
|
512
|
+
"zip",
|
|
513
|
+
"--verbose"
|
|
514
|
+
],
|
|
515
|
+
[
|
|
516
|
+
"--version"
|
|
517
|
+
]
|
|
518
|
+
],
|
|
519
|
+
"topLevelHelpIncludes": [
|
|
520
|
+
"runpane setup",
|
|
521
|
+
"runpane install",
|
|
522
|
+
"runpane update",
|
|
523
|
+
"runpane version",
|
|
524
|
+
"runpane doctor"
|
|
525
|
+
],
|
|
526
|
+
"npmHelpIncludes": [
|
|
527
|
+
"pnpm dlx runpane@latest",
|
|
528
|
+
"npx --yes runpane@latest"
|
|
529
|
+
],
|
|
530
|
+
"pipHelpIncludes": [
|
|
531
|
+
"pipx run runpane",
|
|
532
|
+
"python -m pip install runpane && python -m runpane setup"
|
|
533
|
+
],
|
|
534
|
+
"installHelpIncludes": [
|
|
535
|
+
"--version <latest|vX.Y.Z>",
|
|
536
|
+
"--format <auto|appimage|deb|dmg|zip|exe>",
|
|
537
|
+
"--download-dir <path>",
|
|
538
|
+
"--pane-path <path>",
|
|
539
|
+
"--label <name>",
|
|
540
|
+
"--prefer-tunnel <tailscale|ssh|manual|auto>",
|
|
541
|
+
"--repo-ref <ref>"
|
|
542
|
+
]
|
|
543
|
+
},
|
|
544
|
+
"jsonSchemas": {
|
|
545
|
+
"error": {
|
|
546
|
+
"type": "object",
|
|
547
|
+
"required": [
|
|
548
|
+
"ok",
|
|
549
|
+
"error"
|
|
550
|
+
],
|
|
551
|
+
"properties": {
|
|
552
|
+
"ok": {
|
|
553
|
+
"const": false
|
|
554
|
+
},
|
|
555
|
+
"error": {
|
|
556
|
+
"type": "object",
|
|
557
|
+
"required": [
|
|
558
|
+
"message"
|
|
559
|
+
],
|
|
560
|
+
"properties": {
|
|
561
|
+
"message": {
|
|
562
|
+
"type": "string"
|
|
563
|
+
},
|
|
564
|
+
"code": {
|
|
565
|
+
"type": "string"
|
|
566
|
+
}
|
|
567
|
+
},
|
|
568
|
+
"additionalProperties": false
|
|
569
|
+
}
|
|
570
|
+
},
|
|
571
|
+
"additionalProperties": false
|
|
572
|
+
},
|
|
573
|
+
"future.repoListResult": {
|
|
574
|
+
"type": "object",
|
|
575
|
+
"description": "Reserved for #252 repo listing output."
|
|
576
|
+
},
|
|
577
|
+
"future.paneCreateResult": {
|
|
578
|
+
"type": "object",
|
|
579
|
+
"description": "Reserved for #252 pane creation output."
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
};
|
|
583
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/generated/contract.ts"],"names":[],"mappings":"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"}
|