@getpaseo/cli 0.1.2
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/bin/paseo +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +150 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/agent/archive.d.ts +17 -0
- package/dist/commands/agent/archive.d.ts.map +1 -0
- package/dist/commands/agent/archive.js +91 -0
- package/dist/commands/agent/archive.js.map +1 -0
- package/dist/commands/agent/attach.d.ts +10 -0
- package/dist/commands/agent/attach.d.ts.map +1 -0
- package/dist/commands/agent/attach.js +166 -0
- package/dist/commands/agent/attach.js.map +1 -0
- package/dist/commands/agent/index.d.ts +3 -0
- package/dist/commands/agent/index.d.ts.map +1 -0
- package/dist/commands/agent/index.js +112 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/inspect.d.ts +14 -0
- package/dist/commands/agent/inspect.d.ts.map +1 -0
- package/dist/commands/agent/inspect.js +185 -0
- package/dist/commands/agent/inspect.js.map +1 -0
- package/dist/commands/agent/logs.d.ts +11 -0
- package/dist/commands/agent/logs.d.ts.map +1 -0
- package/dist/commands/agent/logs.js +207 -0
- package/dist/commands/agent/logs.js.map +1 -0
- package/dist/commands/agent/ls.d.ts +34 -0
- package/dist/commands/agent/ls.d.ts.map +1 -0
- package/dist/commands/agent/ls.js +153 -0
- package/dist/commands/agent/ls.js.map +1 -0
- package/dist/commands/agent/mode.d.ts +18 -0
- package/dist/commands/agent/mode.d.ts.map +1 -0
- package/dist/commands/agent/mode.js +97 -0
- package/dist/commands/agent/mode.js.map +1 -0
- package/dist/commands/agent/run.d.ts +27 -0
- package/dist/commands/agent/run.d.ts.map +1 -0
- package/dist/commands/agent/run.js +146 -0
- package/dist/commands/agent/run.js.map +1 -0
- package/dist/commands/agent/send.d.ts +16 -0
- package/dist/commands/agent/send.d.ts.map +1 -0
- package/dist/commands/agent/send.js +172 -0
- package/dist/commands/agent/send.js.map +1 -0
- package/dist/commands/agent/stop.d.ts +16 -0
- package/dist/commands/agent/stop.d.ts.map +1 -0
- package/dist/commands/agent/stop.js +104 -0
- package/dist/commands/agent/stop.js.map +1 -0
- package/dist/commands/agent/wait.d.ts +16 -0
- package/dist/commands/agent/wait.d.ts.map +1 -0
- package/dist/commands/agent/wait.js +171 -0
- package/dist/commands/agent/wait.js.map +1 -0
- package/dist/commands/daemon/index.d.ts +3 -0
- package/dist/commands/daemon/index.d.ts.map +1 -0
- package/dist/commands/daemon/index.js +41 -0
- package/dist/commands/daemon/index.js.map +1 -0
- package/dist/commands/daemon/local-daemon.d.ts +51 -0
- package/dist/commands/daemon/local-daemon.d.ts.map +1 -0
- package/dist/commands/daemon/local-daemon.js +298 -0
- package/dist/commands/daemon/local-daemon.js.map +1 -0
- package/dist/commands/daemon/pair.d.ts +8 -0
- package/dist/commands/daemon/pair.d.ts.map +1 -0
- package/dist/commands/daemon/pair.js +34 -0
- package/dist/commands/daemon/pair.js.map +1 -0
- package/dist/commands/daemon/restart.d.ts +12 -0
- package/dist/commands/daemon/restart.d.ts.map +1 -0
- package/dist/commands/daemon/restart.js +97 -0
- package/dist/commands/daemon/restart.js.map +1 -0
- package/dist/commands/daemon/start.d.ts +6 -0
- package/dist/commands/daemon/start.d.ts.map +1 -0
- package/dist/commands/daemon/start.js +121 -0
- package/dist/commands/daemon/start.js.map +1 -0
- package/dist/commands/daemon/status.d.ts +10 -0
- package/dist/commands/daemon/status.d.ts.map +1 -0
- package/dist/commands/daemon/status.js +119 -0
- package/dist/commands/daemon/status.js.map +1 -0
- package/dist/commands/daemon/stop.d.ts +12 -0
- package/dist/commands/daemon/stop.d.ts.map +1 -0
- package/dist/commands/daemon/stop.js +56 -0
- package/dist/commands/daemon/stop.js.map +1 -0
- package/dist/commands/permit/allow.d.ts +20 -0
- package/dist/commands/permit/allow.d.ts.map +1 -0
- package/dist/commands/permit/allow.js +133 -0
- package/dist/commands/permit/allow.js.map +1 -0
- package/dist/commands/permit/deny.d.ts +12 -0
- package/dist/commands/permit/deny.d.ts.map +1 -0
- package/dist/commands/permit/deny.js +105 -0
- package/dist/commands/permit/deny.js.map +1 -0
- package/dist/commands/permit/index.d.ts +3 -0
- package/dist/commands/permit/index.d.ts.map +1 -0
- package/dist/commands/permit/index.js +37 -0
- package/dist/commands/permit/index.js.map +1 -0
- package/dist/commands/permit/ls.d.ts +18 -0
- package/dist/commands/permit/ls.d.ts.map +1 -0
- package/dist/commands/permit/ls.js +65 -0
- package/dist/commands/permit/ls.js.map +1 -0
- package/dist/commands/provider/index.d.ts +3 -0
- package/dist/commands/provider/index.d.ts.map +1 -0
- package/dist/commands/provider/index.js +22 -0
- package/dist/commands/provider/index.js.map +1 -0
- package/dist/commands/provider/ls.d.ts +17 -0
- package/dist/commands/provider/ls.d.ts.map +1 -0
- package/dist/commands/provider/ls.js +51 -0
- package/dist/commands/provider/ls.js.map +1 -0
- package/dist/commands/provider/models.d.ts +16 -0
- package/dist/commands/provider/models.d.ts.map +1 -0
- package/dist/commands/provider/models.js +45 -0
- package/dist/commands/provider/models.js.map +1 -0
- package/dist/commands/speech/download.d.ts +14 -0
- package/dist/commands/speech/download.d.ts.map +1 -0
- package/dist/commands/speech/download.js +46 -0
- package/dist/commands/speech/download.js.map +1 -0
- package/dist/commands/speech/index.d.ts +3 -0
- package/dist/commands/speech/index.d.ts.map +1 -0
- package/dist/commands/speech/index.js +25 -0
- package/dist/commands/speech/index.js.map +1 -0
- package/dist/commands/speech/models.d.ts +16 -0
- package/dist/commands/speech/models.d.ts.map +1 -0
- package/dist/commands/speech/models.js +49 -0
- package/dist/commands/speech/models.js.map +1 -0
- package/dist/commands/worktree/archive.d.ts +16 -0
- package/dist/commands/worktree/archive.d.ts.map +1 -0
- package/dist/commands/worktree/archive.js +98 -0
- package/dist/commands/worktree/archive.js.map +1 -0
- package/dist/commands/worktree/index.d.ts +3 -0
- package/dist/commands/worktree/index.d.ts.map +1 -0
- package/dist/commands/worktree/index.js +22 -0
- package/dist/commands/worktree/index.js.map +1 -0
- package/dist/commands/worktree/ls.d.ts +17 -0
- package/dist/commands/worktree/ls.d.ts.map +1 -0
- package/dist/commands/worktree/ls.js +89 -0
- package/dist/commands/worktree/ls.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/output/index.d.ts +45 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +47 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/json.d.ts +11 -0
- package/dist/output/json.d.ts.map +1 -0
- package/dist/output/json.js +37 -0
- package/dist/output/json.js.map +1 -0
- package/dist/output/quiet.d.ts +9 -0
- package/dist/output/quiet.d.ts.map +1 -0
- package/dist/output/quiet.js +22 -0
- package/dist/output/quiet.js.map +1 -0
- package/dist/output/render.d.ts +15 -0
- package/dist/output/render.d.ts.map +1 -0
- package/dist/output/render.js +80 -0
- package/dist/output/render.js.map +1 -0
- package/dist/output/table.d.ts +13 -0
- package/dist/output/table.d.ts.map +1 -0
- package/dist/output/table.js +135 -0
- package/dist/output/table.js.map +1 -0
- package/dist/output/types.d.ts +71 -0
- package/dist/output/types.d.ts.map +1 -0
- package/dist/output/types.js +8 -0
- package/dist/output/types.js.map +1 -0
- package/dist/output/with-output.d.ts +37 -0
- package/dist/output/with-output.d.ts.map +1 -0
- package/dist/output/with-output.js +78 -0
- package/dist/output/with-output.js.map +1 -0
- package/dist/output/yaml.d.ts +11 -0
- package/dist/output/yaml.d.ts.map +1 -0
- package/dist/output/yaml.js +38 -0
- package/dist/output/yaml.js.map +1 -0
- package/dist/utils/client.d.ts +35 -0
- package/dist/utils/client.d.ts.map +1 -0
- package/dist/utils/client.js +110 -0
- package/dist/utils/client.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { DaemonClient } from '@getpaseo/server';
|
|
2
|
+
import WebSocket from 'ws';
|
|
3
|
+
const DEFAULT_HOST = 'localhost:6767';
|
|
4
|
+
const DEFAULT_TIMEOUT = 5000;
|
|
5
|
+
/**
|
|
6
|
+
* Get the daemon host from environment or options
|
|
7
|
+
*/
|
|
8
|
+
export function getDaemonHost(options) {
|
|
9
|
+
return options?.host ?? process.env.PASEO_HOST ?? DEFAULT_HOST;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a WebSocket factory that works in Node.js
|
|
13
|
+
*/
|
|
14
|
+
function createNodeWebSocketFactory() {
|
|
15
|
+
return (url, options) => {
|
|
16
|
+
return new WebSocket(url, { headers: options?.headers });
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create and connect a daemon client
|
|
21
|
+
* Returns the connected client or throws if connection fails
|
|
22
|
+
*/
|
|
23
|
+
export async function connectToDaemon(options) {
|
|
24
|
+
const host = getDaemonHost(options);
|
|
25
|
+
const timeout = options?.timeout ?? DEFAULT_TIMEOUT;
|
|
26
|
+
const url = `ws://${host}/ws`;
|
|
27
|
+
const client = new DaemonClient({
|
|
28
|
+
url,
|
|
29
|
+
webSocketFactory: createNodeWebSocketFactory(),
|
|
30
|
+
reconnect: { enabled: false },
|
|
31
|
+
});
|
|
32
|
+
// Connect with timeout
|
|
33
|
+
const connectPromise = client.connect();
|
|
34
|
+
let timeoutHandle = null;
|
|
35
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
36
|
+
timeoutHandle = setTimeout(() => {
|
|
37
|
+
reject(new Error(`Connection timeout after ${timeout}ms`));
|
|
38
|
+
}, timeout);
|
|
39
|
+
});
|
|
40
|
+
try {
|
|
41
|
+
await Promise.race([connectPromise, timeoutPromise]);
|
|
42
|
+
// Clear the timeout so it doesn't keep the event loop alive
|
|
43
|
+
if (timeoutHandle) {
|
|
44
|
+
clearTimeout(timeoutHandle);
|
|
45
|
+
}
|
|
46
|
+
client.subscribeAgentUpdates({ subscriptionId: `cli:${process.pid}` });
|
|
47
|
+
return client;
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
// Clear the timeout on error too
|
|
51
|
+
if (timeoutHandle) {
|
|
52
|
+
clearTimeout(timeoutHandle);
|
|
53
|
+
}
|
|
54
|
+
await client.close().catch(() => { });
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Try to connect to the daemon, returns null if connection fails
|
|
60
|
+
*/
|
|
61
|
+
export async function tryConnectToDaemon(options) {
|
|
62
|
+
try {
|
|
63
|
+
return await connectToDaemon(options);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Resolve an agent ID from a partial ID or name.
|
|
71
|
+
* Supports:
|
|
72
|
+
* - Full ID match
|
|
73
|
+
* - Prefix match (first N characters)
|
|
74
|
+
* - Title/name match (case-insensitive)
|
|
75
|
+
*
|
|
76
|
+
* Returns the full agent ID if found, null otherwise.
|
|
77
|
+
*/
|
|
78
|
+
export function resolveAgentId(idOrName, agents) {
|
|
79
|
+
if (!idOrName || agents.length === 0) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const query = idOrName.toLowerCase();
|
|
83
|
+
// Try exact ID match first
|
|
84
|
+
const exactMatch = agents.find((a) => a.id === idOrName);
|
|
85
|
+
if (exactMatch) {
|
|
86
|
+
return exactMatch.id;
|
|
87
|
+
}
|
|
88
|
+
// Try ID prefix match
|
|
89
|
+
const prefixMatches = agents.filter((a) => a.id.toLowerCase().startsWith(query));
|
|
90
|
+
if (prefixMatches.length === 1 && prefixMatches[0]) {
|
|
91
|
+
return prefixMatches[0].id;
|
|
92
|
+
}
|
|
93
|
+
// Try title/name match (case-insensitive)
|
|
94
|
+
const titleMatches = agents.filter((a) => a.title?.toLowerCase() === query);
|
|
95
|
+
if (titleMatches.length === 1 && titleMatches[0]) {
|
|
96
|
+
return titleMatches[0].id;
|
|
97
|
+
}
|
|
98
|
+
// Try partial title match
|
|
99
|
+
const partialTitleMatches = agents.filter((a) => a.title?.toLowerCase().includes(query));
|
|
100
|
+
if (partialTitleMatches.length === 1 && partialTitleMatches[0]) {
|
|
101
|
+
return partialTitleMatches[0].id;
|
|
102
|
+
}
|
|
103
|
+
// If we have multiple prefix matches and no unique title match, return first prefix match
|
|
104
|
+
const firstPrefixMatch = prefixMatches[0];
|
|
105
|
+
if (firstPrefixMatch) {
|
|
106
|
+
return firstPrefixMatch.id;
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/utils/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@getpaseo/cli",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Paseo CLI - control your AI coding agents from the command line",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"files": [
|
|
7
|
+
"bin",
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public"
|
|
12
|
+
},
|
|
13
|
+
"bin": {
|
|
14
|
+
"paseo": "bin/paseo"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true })\" && tsc -p tsconfig.json --incremental false",
|
|
18
|
+
"prepack": "npm run build",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"test:e2e": "npx zx tests/run-all.ts",
|
|
21
|
+
"test:e2e:lifecycle": "npx tsx tests/e2e/agent-lifecycle.test.ts"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@getpaseo/relay": "0.1.2",
|
|
25
|
+
"@getpaseo/server": "0.1.2",
|
|
26
|
+
"chalk": "^5.3.0",
|
|
27
|
+
"commander": "^12.0.0",
|
|
28
|
+
"mime-types": "^2.1.35",
|
|
29
|
+
"ws": "^8.14.2",
|
|
30
|
+
"yaml": "^2.8.2"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/mime-types": "^3.0.1",
|
|
34
|
+
"@types/ws": "^8.5.8",
|
|
35
|
+
"tsx": "^4.6.0",
|
|
36
|
+
"typescript": "^5.2.2",
|
|
37
|
+
"zx": "^8.8.5"
|
|
38
|
+
}
|
|
39
|
+
}
|