@crosshands/cli 0.1.4
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/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +51 -0
- package/dist/bin.js.map +1 -0
- package/dist/broker-host.d.ts +23 -0
- package/dist/broker-host.d.ts.map +1 -0
- package/dist/broker-host.js +87 -0
- package/dist/broker-host.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +511 -0
- package/dist/index.js.map +1 -0
- package/dist/local-client.d.ts +17 -0
- package/dist/local-client.d.ts.map +1 -0
- package/dist/local-client.js +131 -0
- package/dist/local-client.js.map +1 -0
- package/package.json +47 -0
- package/src/bin.ts +56 -0
- package/src/broker-host.ts +132 -0
- package/src/index.ts +558 -0
- package/src/local-client.ts +171 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CrossHands contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# CrossHands CLI
|
|
2
|
+
|
|
3
|
+
The `@crosshands/cli` package provides the local JSON CLI and broker entrypoint for
|
|
4
|
+
the CrossHands computer-use runtime.
|
|
5
|
+
|
|
6
|
+
```sh
|
|
7
|
+
crosshands computer doctor --json
|
|
8
|
+
crosshands computer list-apps --json
|
|
9
|
+
crosshands computer get-app-state --app <app> --json
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Install the matching platform payload for macOS, Windows, or Linux before
|
|
13
|
+
running real desktop operations. CrossHands controls only the active graphical
|
|
14
|
+
session on the local machine and does not authenticate one same-user agent
|
|
15
|
+
process from another.
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { stdin, stderr, stdout } from 'node:process';
|
|
3
|
+
import { StringDecoder } from 'node:string_decoder';
|
|
4
|
+
import { runBrokerHost } from './broker-host.js';
|
|
5
|
+
import { runCli } from './index.js';
|
|
6
|
+
import { createProductionBrokerClient } from './local-client.js';
|
|
7
|
+
async function readStdin() {
|
|
8
|
+
const decoder = new StringDecoder('utf8');
|
|
9
|
+
const maximumLength = 1_000_001;
|
|
10
|
+
let value = '';
|
|
11
|
+
for await (const chunk of stdin) {
|
|
12
|
+
const decoded = decoder.write(Buffer.from(chunk));
|
|
13
|
+
if (value.length < maximumLength) {
|
|
14
|
+
value += decoded.slice(0, maximumLength - value.length);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const final = decoder.end();
|
|
18
|
+
if (value.length < maximumLength)
|
|
19
|
+
value += final.slice(0, maximumLength - value.length);
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
async function main() {
|
|
23
|
+
const argv = process.argv.slice(2);
|
|
24
|
+
if (argv[0] === 'broker') {
|
|
25
|
+
await runBrokerHost();
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
const io = {
|
|
29
|
+
stdin: readStdin,
|
|
30
|
+
stdout: (value) => stdout.write(value),
|
|
31
|
+
stderr: (value) => stderr.write(value)
|
|
32
|
+
};
|
|
33
|
+
const client = await createProductionBrokerClient();
|
|
34
|
+
return runCli(argv, io, client);
|
|
35
|
+
}
|
|
36
|
+
main()
|
|
37
|
+
.then((code) => {
|
|
38
|
+
process.exitCode = code;
|
|
39
|
+
})
|
|
40
|
+
.catch((cause) => {
|
|
41
|
+
stdout.write(`${JSON.stringify({
|
|
42
|
+
error: {
|
|
43
|
+
code: 'provider_unavailable',
|
|
44
|
+
message: cause instanceof Error ? cause.message : 'CrossHands failed to start',
|
|
45
|
+
retry: false,
|
|
46
|
+
remediation: 'run_doctor'
|
|
47
|
+
}
|
|
48
|
+
})}\n`);
|
|
49
|
+
process.exitCode = 3;
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAc,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAEhE,KAAK,UAAU,SAAS;IACtB,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,aAAa,GAAG,SAAS,CAAA;IAC/B,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACjD,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;YACjC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAC3B,IAAI,KAAK,CAAC,MAAM,GAAG,aAAa;QAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;IACvF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,aAAa,EAAE,CAAA;QACrB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,MAAM,EAAE,GAAU;QAChB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACtC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;KACvC,CAAA;IACD,MAAM,MAAM,GAAG,MAAM,4BAA4B,EAAE,CAAA;IACnD,OAAO,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;AACjC,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACb,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAA;AACzB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxB,MAAM,CAAC,KAAK,CACV,GAAG,IAAI,CAAC,SAAS,CAAC;QAChB,KAAK,EAAE;YACL,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B;YAC9E,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,YAAY;SAC1B;KACF,CAAC,IAAI,CACP,CAAA;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AACtB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ComputerOperationName, type ComputerProvider, type ReferenceBindings } from '@crosshands/contract';
|
|
2
|
+
import { type BrokerEndpoint, type LocalControlIdentity, type LocalControlRequest, type StableAppIdentity } from '@crosshands/runtime';
|
|
3
|
+
type ProviderModule = {
|
|
4
|
+
packageVersion: string;
|
|
5
|
+
createProvider(): ComputerProvider;
|
|
6
|
+
createControlServer?: (options: {
|
|
7
|
+
endpoint: BrokerEndpoint;
|
|
8
|
+
identity: LocalControlIdentity;
|
|
9
|
+
handler: (request: LocalControlRequest) => Promise<unknown>;
|
|
10
|
+
}) => Promise<{
|
|
11
|
+
start(): Promise<void>;
|
|
12
|
+
close(): Promise<void>;
|
|
13
|
+
}>;
|
|
14
|
+
inspectTarget?: (operation: ComputerOperationName, input: unknown) => Promise<{
|
|
15
|
+
bindings: ReferenceBindings;
|
|
16
|
+
appIdentity: StableAppIdentity;
|
|
17
|
+
} | null>;
|
|
18
|
+
};
|
|
19
|
+
export declare function platformProviderPackage(platform?: NodeJS.Platform): string;
|
|
20
|
+
export declare function loadProviderModule(platform?: NodeJS.Platform, importer?: (specifier: string) => Promise<unknown>): Promise<ProviderModule>;
|
|
21
|
+
export declare function runBrokerHost(): Promise<void>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=broker-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-host.d.ts","sourceRoot":"","sources":["../src/broker-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEvB,MAAM,qBAAqB,CAAA;AAI5B,KAAK,cAAc,GAAG;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,IAAI,gBAAgB,CAAA;IAClC,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC9B,QAAQ,EAAE,cAAc,CAAA;QACxB,QAAQ,EAAE,oBAAoB,CAAA;QAC9B,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC5D,KAAK,OAAO,CAAC;QAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAAA;IACjE,aAAa,CAAC,EAAE,CACd,SAAS,EAAE,qBAAqB,EAChC,KAAK,EAAE,OAAO,KACX,OAAO,CAAC;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,WAAW,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;CACrF,CAAA;AAQD,wBAAgB,uBAAuB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAQ5F;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAoC,GACnF,OAAO,CAAC,cAAc,CAAC,CAmBzB;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDnD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { CONTRACT_VERSIONS, createComputerError, parseOperationInput } from '@crosshands/contract';
|
|
2
|
+
import { LocalBroker, LocalControlServer } from '@crosshands/runtime';
|
|
3
|
+
import { localClientPaths } from './local-client.js';
|
|
4
|
+
const PLATFORM_PROVIDER_PACKAGES = {
|
|
5
|
+
darwin: '@crosshands/platform-darwin',
|
|
6
|
+
linux: '@crosshands/platform-linux',
|
|
7
|
+
win32: '@crosshands/platform-windows'
|
|
8
|
+
};
|
|
9
|
+
export function platformProviderPackage(platform = process.platform) {
|
|
10
|
+
const packageName = PLATFORM_PROVIDER_PACKAGES[platform];
|
|
11
|
+
if (packageName === undefined) {
|
|
12
|
+
throw new Error(`CrossHands has no provider package for ${platform}; run doctor for the supported platform matrix`);
|
|
13
|
+
}
|
|
14
|
+
return packageName;
|
|
15
|
+
}
|
|
16
|
+
export async function loadProviderModule(platform = process.platform, importer = (specifier) => import(specifier)) {
|
|
17
|
+
const packageName = platformProviderPackage(platform);
|
|
18
|
+
let loaded;
|
|
19
|
+
try {
|
|
20
|
+
loaded = (await importer(packageName));
|
|
21
|
+
}
|
|
22
|
+
catch (cause) {
|
|
23
|
+
throw new Error(`The matching CrossHands payload ${packageName}@${CONTRACT_VERSIONS.product} is not installed`, { cause });
|
|
24
|
+
}
|
|
25
|
+
if (typeof loaded.createProvider !== 'function')
|
|
26
|
+
throw new Error('CrossHands provider module does not export createProvider()');
|
|
27
|
+
if (loaded.packageVersion !== CONTRACT_VERSIONS.product) {
|
|
28
|
+
throw new Error(`CrossHands payload version mismatch: main package is ${CONTRACT_VERSIONS.product}, ${packageName} is ${loaded.packageVersion ?? 'unknown'}`);
|
|
29
|
+
}
|
|
30
|
+
return loaded;
|
|
31
|
+
}
|
|
32
|
+
export async function runBrokerHost() {
|
|
33
|
+
const providerModule = await loadProviderModule();
|
|
34
|
+
const paths = localClientPaths();
|
|
35
|
+
const peer = { ...paths.identity, verified: true, local: true };
|
|
36
|
+
const broker = new LocalBroker({
|
|
37
|
+
identity: peer,
|
|
38
|
+
providerFactory: () => providerModule.createProvider(),
|
|
39
|
+
...(providerModule.inspectTarget === undefined
|
|
40
|
+
? {}
|
|
41
|
+
: {
|
|
42
|
+
inspectTarget: (operation, input) => providerModule.inspectTarget(operation, input)
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
await broker.connect({ peer, versions: CONTRACT_VERSIONS });
|
|
46
|
+
const handler = async ({ payload, deadlineAt }) => {
|
|
47
|
+
if (payload === null || typeof payload !== 'object')
|
|
48
|
+
throw new Error('Invalid broker request');
|
|
49
|
+
const record = payload;
|
|
50
|
+
if (typeof record.operation !== 'string')
|
|
51
|
+
throw new Error('Missing operation');
|
|
52
|
+
const operation = record.operation;
|
|
53
|
+
let input;
|
|
54
|
+
try {
|
|
55
|
+
input = parseOperationInput(operation, record.input);
|
|
56
|
+
}
|
|
57
|
+
catch (cause) {
|
|
58
|
+
if (cause instanceof Error && cause.name === 'ZodError') {
|
|
59
|
+
throw createComputerError('invalid_argument', 'Invalid input for the selected operation');
|
|
60
|
+
}
|
|
61
|
+
throw cause;
|
|
62
|
+
}
|
|
63
|
+
return broker.request({ operation, input, deadlineMs: Math.max(1, deadlineAt - Date.now()) });
|
|
64
|
+
};
|
|
65
|
+
const server = paths.endpoint.transport === 'named-pipe'
|
|
66
|
+
? await (providerModule.createControlServer?.({
|
|
67
|
+
endpoint: paths.endpoint,
|
|
68
|
+
identity: paths.identity,
|
|
69
|
+
handler
|
|
70
|
+
}) ??
|
|
71
|
+
Promise.reject(new Error('The Windows payload has no native DACL and peer-token control relay')))
|
|
72
|
+
: new LocalControlServer({
|
|
73
|
+
endpoint: paths.endpoint,
|
|
74
|
+
runtimeDirectory: paths.runtimeDirectory,
|
|
75
|
+
tokenFile: paths.tokenFile,
|
|
76
|
+
identity: paths.identity,
|
|
77
|
+
handler
|
|
78
|
+
});
|
|
79
|
+
await server.start();
|
|
80
|
+
await new Promise((resolve) => {
|
|
81
|
+
const stop = () => resolve();
|
|
82
|
+
process.once('SIGINT', stop);
|
|
83
|
+
process.once('SIGTERM', stop);
|
|
84
|
+
});
|
|
85
|
+
await server.close();
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=broker-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-host.js","sourceRoot":"","sources":["../src/broker-host.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ComputerOperationName } from '@crosshands/contract';
|
|
2
|
+
export type CliBrokerClient = {
|
|
3
|
+
request(operation: ComputerOperationName, input: unknown): Promise<unknown>;
|
|
4
|
+
close(): Promise<void>;
|
|
5
|
+
};
|
|
6
|
+
export type CliIo = {
|
|
7
|
+
stdin(): Promise<string>;
|
|
8
|
+
stdout(value: string): void;
|
|
9
|
+
stderr(value: string): void;
|
|
10
|
+
};
|
|
11
|
+
export declare function runCli(argv: string[], io: CliIo, client: CliBrokerClient): Promise<number>;
|
|
12
|
+
export { createProductionBrokerClient, localClientPaths } from './local-client.js';
|
|
13
|
+
export type { LocalClientPaths, ProductionClientOptions } from './local-client.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEjE,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,SAAS,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACxB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B,CAAA;AA4fD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BhG;AAED,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAClF,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA"}
|