@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 @@
|
|
|
1
|
+
{"version":3,"file":"allow.js","sourceRoot":"","sources":["../../../src/commands/permit/allow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, ListResult } from '../../output/index.js';
|
|
3
|
+
import { type PermissionResponseItem } from './allow.js';
|
|
4
|
+
export type PermitDenyResult = ListResult<PermissionResponseItem>;
|
|
5
|
+
export interface PermitDenyOptions extends CommandOptions {
|
|
6
|
+
all?: boolean;
|
|
7
|
+
message?: string;
|
|
8
|
+
interrupt?: boolean;
|
|
9
|
+
host?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function runDenyCommand(agentIdOrPrefix: string, reqId: string | undefined, options: PermitDenyOptions, _command: Command): Promise<PermitDenyResult>;
|
|
12
|
+
//# sourceMappingURL=deny.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deny.d.ts","sourceRoot":"","sources":["../../../src/commands/permit/deny.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAgB,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAE9E,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAA;AAEjE,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,gBAAgB,CAAC,CA4G3B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { connectToDaemon, getDaemonHost } from '../../utils/client.js';
|
|
2
|
+
import { permitResponseSchema } from './allow.js';
|
|
3
|
+
export async function runDenyCommand(agentIdOrPrefix, reqId, options, _command) {
|
|
4
|
+
const host = getDaemonHost({ host: options.host });
|
|
5
|
+
// Validate arguments
|
|
6
|
+
if (!options.all && !reqId) {
|
|
7
|
+
const error = {
|
|
8
|
+
code: 'MISSING_ARGUMENT',
|
|
9
|
+
message: 'Request ID is required unless --all is specified',
|
|
10
|
+
details: 'Usage: paseo permit deny <agent> <req_id> or paseo permit deny <agent> --all',
|
|
11
|
+
};
|
|
12
|
+
throw error;
|
|
13
|
+
}
|
|
14
|
+
let client;
|
|
15
|
+
try {
|
|
16
|
+
client = await connectToDaemon({ host: options.host });
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
20
|
+
const error = {
|
|
21
|
+
code: 'DAEMON_NOT_RUNNING',
|
|
22
|
+
message: `Cannot connect to daemon at ${host}: ${message}`,
|
|
23
|
+
details: 'Start the daemon with: paseo daemon start',
|
|
24
|
+
};
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const agent = await client.fetchAgent(agentIdOrPrefix);
|
|
29
|
+
if (!agent) {
|
|
30
|
+
await client.close();
|
|
31
|
+
const error = {
|
|
32
|
+
code: 'AGENT_NOT_FOUND',
|
|
33
|
+
message: `Agent not found: ${agentIdOrPrefix}`,
|
|
34
|
+
details: 'Use "paseo ls" to list available agents',
|
|
35
|
+
};
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
const resolvedAgentId = agent.id;
|
|
39
|
+
// Get pending permissions for this agent
|
|
40
|
+
const pendingPermissions = agent.pendingPermissions || [];
|
|
41
|
+
if (pendingPermissions.length === 0) {
|
|
42
|
+
await client.close();
|
|
43
|
+
const error = {
|
|
44
|
+
code: 'NO_PENDING_PERMISSIONS',
|
|
45
|
+
message: `No pending permissions for agent ${agent.id.slice(0, 7)}`,
|
|
46
|
+
};
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
// Determine which permissions to deny
|
|
50
|
+
let permissionsToDeny;
|
|
51
|
+
if (options.all) {
|
|
52
|
+
permissionsToDeny = pendingPermissions;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Find permission by ID prefix
|
|
56
|
+
const permission = pendingPermissions.find((p) => p.id === reqId || p.id.startsWith(reqId));
|
|
57
|
+
if (!permission) {
|
|
58
|
+
await client.close();
|
|
59
|
+
const error = {
|
|
60
|
+
code: 'PERMISSION_NOT_FOUND',
|
|
61
|
+
message: `Permission request not found: ${reqId}`,
|
|
62
|
+
details: `Available requests: ${pendingPermissions.map((p) => p.id.slice(0, 8)).join(', ')}`,
|
|
63
|
+
};
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
permissionsToDeny = [permission];
|
|
67
|
+
}
|
|
68
|
+
// Deny permissions
|
|
69
|
+
const results = [];
|
|
70
|
+
for (const permission of permissionsToDeny) {
|
|
71
|
+
await client.respondToPermission(resolvedAgentId, permission.id, {
|
|
72
|
+
behavior: 'deny',
|
|
73
|
+
...(options.message ? { message: options.message } : {}),
|
|
74
|
+
...(options.interrupt ? { interrupt: true } : {}),
|
|
75
|
+
});
|
|
76
|
+
results.push({
|
|
77
|
+
requestId: permission.id.slice(0, 8),
|
|
78
|
+
agentId: resolvedAgentId,
|
|
79
|
+
agentShortId: resolvedAgentId.slice(0, 7),
|
|
80
|
+
name: permission.name,
|
|
81
|
+
result: 'denied',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
await client.close();
|
|
85
|
+
return {
|
|
86
|
+
type: 'list',
|
|
87
|
+
data: results,
|
|
88
|
+
schema: permitResponseSchema,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
await client.close().catch(() => { });
|
|
93
|
+
// Re-throw CommandErrors
|
|
94
|
+
if (err && typeof err === 'object' && 'code' in err) {
|
|
95
|
+
throw err;
|
|
96
|
+
}
|
|
97
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
98
|
+
const error = {
|
|
99
|
+
code: 'DENY_PERMISSION_FAILED',
|
|
100
|
+
message: `Failed to deny permission: ${message}`,
|
|
101
|
+
};
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=deny.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deny.js","sourceRoot":"","sources":["../../../src/commands/permit/deny.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/permit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,mBAAmB,IAAI,OAAO,CAkC7C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { runLsCommand } from './ls.js';
|
|
3
|
+
import { runAllowCommand } from './allow.js';
|
|
4
|
+
import { runDenyCommand } from './deny.js';
|
|
5
|
+
import { withOutput } from '../../output/index.js';
|
|
6
|
+
export function createPermitCommand() {
|
|
7
|
+
const permit = new Command('permit').description('Manage permission requests');
|
|
8
|
+
permit
|
|
9
|
+
.command('ls')
|
|
10
|
+
.description('List all pending permissions')
|
|
11
|
+
.option('--json', 'Output in JSON format')
|
|
12
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
13
|
+
.action(withOutput(runLsCommand));
|
|
14
|
+
permit
|
|
15
|
+
.command('allow')
|
|
16
|
+
.description('Allow a permission request')
|
|
17
|
+
.argument('<agent>', 'Agent ID (or prefix)')
|
|
18
|
+
.argument('[req_id]', 'Permission request ID (optional if --all)')
|
|
19
|
+
.option('--all', 'Allow all pending permissions for this agent')
|
|
20
|
+
.option('--input <json>', 'Modified input parameters (JSON)')
|
|
21
|
+
.option('--json', 'Output in JSON format')
|
|
22
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
23
|
+
.action(withOutput(runAllowCommand));
|
|
24
|
+
permit
|
|
25
|
+
.command('deny')
|
|
26
|
+
.description('Deny a permission request')
|
|
27
|
+
.argument('<agent>', 'Agent ID (or prefix)')
|
|
28
|
+
.argument('[req_id]', 'Permission request ID (optional if --all)')
|
|
29
|
+
.option('--all', 'Deny all pending permissions for this agent')
|
|
30
|
+
.option('--message <msg>', 'Denial reason message')
|
|
31
|
+
.option('--interrupt', 'Stop agent after denial')
|
|
32
|
+
.option('--json', 'Output in JSON format')
|
|
33
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
34
|
+
.action(withOutput(runDenyCommand));
|
|
35
|
+
return permit;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/permit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAA;IAE9E,MAAM;SACH,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;IAEnC,MAAM;SACH,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4BAA4B,CAAC;SACzC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;SAC3C,QAAQ,CAAC,UAAU,EAAE,2CAA2C,CAAC;SACjE,MAAM,CAAC,OAAO,EAAE,8CAA8C,CAAC;SAC/D,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC;SAC5D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAA;IAEtC,MAAM;SACH,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;SAC3C,QAAQ,CAAC,UAAU,EAAE,2CAA2C,CAAC;SACjE,MAAM,CAAC,OAAO,EAAE,6CAA6C,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAClD,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;SAChD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAA;IAErC,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, ListResult, OutputSchema } from '../../output/index.js';
|
|
3
|
+
/** Permission list item for display */
|
|
4
|
+
export interface PermissionListItem {
|
|
5
|
+
id: string;
|
|
6
|
+
agentId: string;
|
|
7
|
+
agentShortId: string;
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
}
|
|
11
|
+
/** Schema for permit ls output */
|
|
12
|
+
export declare const permitLsSchema: OutputSchema<PermissionListItem>;
|
|
13
|
+
export type PermitLsResult = ListResult<PermissionListItem>;
|
|
14
|
+
export interface PermitLsOptions extends CommandOptions {
|
|
15
|
+
host?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function runLsCommand(options: PermitLsOptions, _command: Command): Promise<PermitLsResult>;
|
|
18
|
+
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/permit/ls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAA;AAEnG,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,kCAAkC;AAClC,eAAO,MAAM,cAAc,EAAE,YAAY,CAAC,kBAAkB,CAQ3D,CAAA;AAaD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAE3D,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CA4CvG"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { connectToDaemon, getDaemonHost } from '../../utils/client.js';
|
|
2
|
+
/** Schema for permit ls output */
|
|
3
|
+
export const permitLsSchema = {
|
|
4
|
+
idField: 'id',
|
|
5
|
+
columns: [
|
|
6
|
+
{ header: 'AGENT', field: 'agentShortId', width: 12 },
|
|
7
|
+
{ header: 'REQ_ID', field: 'id', width: 12 },
|
|
8
|
+
{ header: 'TOOL', field: 'name', width: 20 },
|
|
9
|
+
{ header: 'DESCRIPTION', field: 'description', width: 50 },
|
|
10
|
+
],
|
|
11
|
+
};
|
|
12
|
+
/** Transform agent snapshot + permission to list item */
|
|
13
|
+
function toListItem(agent, permission) {
|
|
14
|
+
return {
|
|
15
|
+
id: permission.id.slice(0, 8),
|
|
16
|
+
agentId: agent.id,
|
|
17
|
+
agentShortId: agent.id.slice(0, 7),
|
|
18
|
+
name: permission.name,
|
|
19
|
+
description: permission.description ?? '-',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export async function runLsCommand(options, _command) {
|
|
23
|
+
const host = getDaemonHost({ host: options.host });
|
|
24
|
+
let client;
|
|
25
|
+
try {
|
|
26
|
+
client = await connectToDaemon({ host: options.host });
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
30
|
+
const error = {
|
|
31
|
+
code: 'DAEMON_NOT_RUNNING',
|
|
32
|
+
message: `Cannot connect to daemon at ${host}: ${message}`,
|
|
33
|
+
details: 'Start the daemon with: paseo daemon start',
|
|
34
|
+
};
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const agents = await client.fetchAgents();
|
|
39
|
+
await client.close();
|
|
40
|
+
// Collect all pending permissions from all agents
|
|
41
|
+
const items = [];
|
|
42
|
+
for (const agent of agents) {
|
|
43
|
+
if (agent.pendingPermissions && agent.pendingPermissions.length > 0) {
|
|
44
|
+
for (const permission of agent.pendingPermissions) {
|
|
45
|
+
items.push(toListItem(agent, permission));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
type: 'list',
|
|
51
|
+
data: items,
|
|
52
|
+
schema: permitLsSchema,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
await client.close().catch(() => { });
|
|
57
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
58
|
+
const error = {
|
|
59
|
+
code: 'LIST_PERMISSIONS_FAILED',
|
|
60
|
+
message: `Failed to list permissions: ${message}`,
|
|
61
|
+
};
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/commands/permit/ls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,wBAAgB,qBAAqB,IAAI,OAAO,CAmB/C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { runLsCommand } from './ls.js';
|
|
3
|
+
import { runModelsCommand } from './models.js';
|
|
4
|
+
import { withOutput } from '../../output/index.js';
|
|
5
|
+
export function createProviderCommand() {
|
|
6
|
+
const provider = new Command('provider').description('Manage agent providers');
|
|
7
|
+
provider
|
|
8
|
+
.command('ls')
|
|
9
|
+
.description('List available providers and status')
|
|
10
|
+
.option('--json', 'Output in JSON format')
|
|
11
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
12
|
+
.action(withOutput(runLsCommand));
|
|
13
|
+
provider
|
|
14
|
+
.command('models')
|
|
15
|
+
.description('List models for a provider')
|
|
16
|
+
.argument('<provider>', 'Provider name (claude, codex, opencode)')
|
|
17
|
+
.option('--json', 'Output in JSON format')
|
|
18
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
19
|
+
.action(withOutput(runModelsCommand));
|
|
20
|
+
return provider;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAA;IAE9E,QAAQ;SACL,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;IAEnC,QAAQ;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4BAA4B,CAAC;SACzC,QAAQ,CAAC,YAAY,EAAE,yCAAyC,CAAC;SACjE,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEvC,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, ListResult, OutputSchema } from '../../output/index.js';
|
|
3
|
+
/** Provider list item for display */
|
|
4
|
+
export interface ProviderListItem {
|
|
5
|
+
provider: string;
|
|
6
|
+
status: string;
|
|
7
|
+
defaultMode: string;
|
|
8
|
+
modes: string;
|
|
9
|
+
}
|
|
10
|
+
/** Schema for provider ls output */
|
|
11
|
+
export declare const providerLsSchema: OutputSchema<ProviderListItem>;
|
|
12
|
+
export type ProviderLsResult = ListResult<ProviderListItem>;
|
|
13
|
+
export interface ProviderLsOptions extends CommandOptions {
|
|
14
|
+
host?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function runLsCommand(_options: ProviderLsOptions, _command: Command): Promise<ProviderLsResult>;
|
|
17
|
+
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/provider/ls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAErF,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAwBD,oCAAoC;AACpC,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,CAiB3D,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAE3D,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAO3B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** Static provider data - providers are built-in and don't require daemon */
|
|
2
|
+
const PROVIDERS = [
|
|
3
|
+
{
|
|
4
|
+
provider: 'claude',
|
|
5
|
+
status: 'available',
|
|
6
|
+
defaultMode: 'default',
|
|
7
|
+
modes: 'plan, default, bypass',
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
provider: 'codex',
|
|
11
|
+
status: 'available',
|
|
12
|
+
defaultMode: 'auto',
|
|
13
|
+
modes: 'read-only, auto, full-access',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
provider: 'opencode',
|
|
17
|
+
status: 'available',
|
|
18
|
+
defaultMode: 'default',
|
|
19
|
+
modes: 'plan, default, bypass',
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
/** Schema for provider ls output */
|
|
23
|
+
export const providerLsSchema = {
|
|
24
|
+
idField: 'provider',
|
|
25
|
+
columns: [
|
|
26
|
+
{ header: 'PROVIDER', field: 'provider', width: 12 },
|
|
27
|
+
{
|
|
28
|
+
header: 'STATUS',
|
|
29
|
+
field: 'status',
|
|
30
|
+
width: 12,
|
|
31
|
+
color: (value) => {
|
|
32
|
+
if (value === 'available')
|
|
33
|
+
return 'green';
|
|
34
|
+
if (value === 'unavailable')
|
|
35
|
+
return 'red';
|
|
36
|
+
return undefined;
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{ header: 'DEFAULT MODE', field: 'defaultMode', width: 14 },
|
|
40
|
+
{ header: 'MODES', field: 'modes', width: 30 },
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
export async function runLsCommand(_options, _command) {
|
|
44
|
+
// Provider data is static - no daemon connection needed
|
|
45
|
+
return {
|
|
46
|
+
type: 'list',
|
|
47
|
+
data: PROVIDERS,
|
|
48
|
+
schema: providerLsSchema,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=ls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/commands/provider/ls.ts"],"names":[],"mappings":"AAWA,6EAA6E;AAC7E,MAAM,SAAS,GAAuB;IACpC;QACE,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,uBAAuB;KAC/B;IACD;QACE,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,8BAA8B;KACtC;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,SAAS;QACtB,KAAK,EAAE,uBAAuB;KAC/B;CACF,CAAA;AAED,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAmC;IAC9D,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE;QACP,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;QACpD;YACE,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,IAAI,KAAK,KAAK,WAAW;oBAAE,OAAO,OAAO,CAAA;gBACzC,IAAI,KAAK,KAAK,aAAa;oBAAE,OAAO,KAAK,CAAA;gBACzC,OAAO,SAAS,CAAA;YAClB,CAAC;SACF;QACD,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3D,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;KAC/C;CACF,CAAA;AAQD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAA2B,EAC3B,QAAiB;IAEjB,wDAAwD;IACxD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,gBAAgB;KACzB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, ListResult, OutputSchema } from '../../output/index.js';
|
|
3
|
+
/** Model list item for display */
|
|
4
|
+
export interface ModelListItem {
|
|
5
|
+
model: string;
|
|
6
|
+
id: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
/** Schema for provider models output */
|
|
10
|
+
export declare const providerModelsSchema: OutputSchema<ModelListItem>;
|
|
11
|
+
export type ProviderModelsResult = ListResult<ModelListItem>;
|
|
12
|
+
export interface ProviderModelsOptions extends CommandOptions {
|
|
13
|
+
host?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function runModelsCommand(provider: string, options: ProviderModelsOptions, _command: Command): Promise<ProviderModelsResult>;
|
|
16
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/commands/provider/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAErF,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;CACpB;AAID,wCAAwC;AACxC,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,aAAa,CAO5D,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAE5D,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAoC/B"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { connectToDaemon } from '../../utils/client.js';
|
|
2
|
+
const VALID_PROVIDERS = ['claude', 'codex', 'opencode'];
|
|
3
|
+
/** Schema for provider models output */
|
|
4
|
+
export const providerModelsSchema = {
|
|
5
|
+
idField: 'id',
|
|
6
|
+
columns: [
|
|
7
|
+
{ header: 'ID', field: 'id', width: 30 },
|
|
8
|
+
{ header: 'MODEL', field: 'model', width: 30 },
|
|
9
|
+
{ header: 'DESCRIPTION', field: 'description', width: 40 },
|
|
10
|
+
],
|
|
11
|
+
};
|
|
12
|
+
export async function runModelsCommand(provider, options, _command) {
|
|
13
|
+
const normalizedProvider = provider.toLowerCase();
|
|
14
|
+
if (!VALID_PROVIDERS.includes(normalizedProvider)) {
|
|
15
|
+
throw {
|
|
16
|
+
code: 'UNKNOWN_PROVIDER',
|
|
17
|
+
message: `Unknown provider: ${provider}`,
|
|
18
|
+
details: `Valid providers: ${VALID_PROVIDERS.join(', ')}`,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const client = await connectToDaemon({ host: options.host });
|
|
22
|
+
try {
|
|
23
|
+
const result = await client.listProviderModels(normalizedProvider);
|
|
24
|
+
if (result.error) {
|
|
25
|
+
throw {
|
|
26
|
+
code: 'PROVIDER_ERROR',
|
|
27
|
+
message: `Failed to fetch models for ${provider}: ${result.error}`,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
const models = (result.models ?? []).map((m) => ({
|
|
31
|
+
model: m.label,
|
|
32
|
+
id: m.id,
|
|
33
|
+
description: m.description ?? '',
|
|
34
|
+
}));
|
|
35
|
+
return {
|
|
36
|
+
type: 'list',
|
|
37
|
+
data: models,
|
|
38
|
+
schema: providerModelsSchema,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
await client.close();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/commands/provider/models.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAUvD,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAEvD,wCAAwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAgC;IAC/D,OAAO,EAAE,IAAI;IACb,OAAO,EAAE;QACP,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACxC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QAC9C,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE;KAC3D;CACF,CAAA;AAQD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,OAA8B,EAC9B,QAAiB;IAEjB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEjD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAClD,MAAM;YACJ,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,qBAAqB,QAAQ,EAAE;YACxC,OAAO,EAAE,oBAAoB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC1D,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;QAElE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM;gBACJ,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,8BAA8B,QAAQ,KAAK,MAAM,CAAC,KAAK,EAAE;aACnE,CAAA;QACH,CAAC;QAED,MAAM,MAAM,GAAoB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChE,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;SACjC,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,oBAAoB;SAC7B,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CommandOptions, ListResult } from "../../output/index.js";
|
|
3
|
+
interface SpeechDownloadRow {
|
|
4
|
+
modelId: string;
|
|
5
|
+
status: "downloaded";
|
|
6
|
+
}
|
|
7
|
+
export type SpeechDownloadResult = ListResult<SpeechDownloadRow>;
|
|
8
|
+
export interface SpeechDownloadOptions extends CommandOptions {
|
|
9
|
+
host?: string;
|
|
10
|
+
model?: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare function runSpeechDownloadCommand(options: SpeechDownloadOptions, _command: Command): Promise<SpeechDownloadResult>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../src/commands/speech/download.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAG/B,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;CACtB;AAUD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAEjE,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAmC/B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { connectToDaemon } from "../../utils/client.js";
|
|
2
|
+
const speechDownloadSchema = {
|
|
3
|
+
idField: "modelId",
|
|
4
|
+
columns: [
|
|
5
|
+
{ header: "MODEL", field: "modelId", width: 36 },
|
|
6
|
+
{ header: "STATUS", field: "status", width: 12, color: () => "green" },
|
|
7
|
+
],
|
|
8
|
+
};
|
|
9
|
+
export async function runSpeechDownloadCommand(options, _command) {
|
|
10
|
+
const client = await connectToDaemon({ host: options.host });
|
|
11
|
+
try {
|
|
12
|
+
const response = await client.downloadSpeechModels({
|
|
13
|
+
modelIds: options.model && options.model.length > 0 ? options.model : undefined,
|
|
14
|
+
});
|
|
15
|
+
if (response.error) {
|
|
16
|
+
const commandError = {
|
|
17
|
+
code: "SPEECH_MODELS_DOWNLOAD_FAILED",
|
|
18
|
+
message: response.error,
|
|
19
|
+
};
|
|
20
|
+
throw commandError;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
type: "list",
|
|
24
|
+
data: response.downloadedModelIds.map((modelId) => ({
|
|
25
|
+
modelId,
|
|
26
|
+
status: "downloaded",
|
|
27
|
+
})),
|
|
28
|
+
schema: speechDownloadSchema,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (typeof error === "object" && error && "code" in error && "message" in error) {
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
36
|
+
const commandError = {
|
|
37
|
+
code: "SPEECH_MODELS_DOWNLOAD_FAILED",
|
|
38
|
+
message: `Failed to download speech models: ${message}`,
|
|
39
|
+
};
|
|
40
|
+
throw commandError;
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
await client.close().catch(() => { });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=download.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/commands/speech/download.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOxD,MAAM,oBAAoB,GAAoC;IAC5D,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE;QACP,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;QAChD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;KACvE;CACF,CAAC;AASF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA8B,EAC9B,QAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC;YACjD,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,YAAY,GAAiB;gBACjC,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,QAAQ,CAAC,KAAK;aACxB,CAAC;YACF,MAAM,YAAY,CAAC;QACrB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAClD,OAAO;gBACP,MAAM,EAAE,YAAqB;aAC9B,CAAC,CAAC;YACH,MAAM,EAAE,oBAAoB;SAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;YAChF,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,YAAY,GAAiB;YACjC,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,qCAAqC,OAAO,EAAE;SACxD,CAAC;QACF,MAAM,YAAY,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/speech/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CAmB7C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { withOutput } from "../../output/index.js";
|
|
3
|
+
import { runSpeechModelsCommand } from "./models.js";
|
|
4
|
+
import { runSpeechDownloadCommand } from "./download.js";
|
|
5
|
+
function collectMultiple(value, previous) {
|
|
6
|
+
return previous.concat([value]);
|
|
7
|
+
}
|
|
8
|
+
export function createSpeechCommand() {
|
|
9
|
+
const speech = new Command("speech").description("Manage local speech models");
|
|
10
|
+
speech
|
|
11
|
+
.command("models")
|
|
12
|
+
.description("List local speech model download status")
|
|
13
|
+
.option("--json", "Output in JSON format")
|
|
14
|
+
.option("--host <host>", "Daemon host:port (default: localhost:6767)")
|
|
15
|
+
.action(withOutput(runSpeechModelsCommand));
|
|
16
|
+
speech
|
|
17
|
+
.command("download")
|
|
18
|
+
.description("Download local speech models")
|
|
19
|
+
.option("--model <id>", "Model ID to download (repeatable)", collectMultiple, [])
|
|
20
|
+
.option("--json", "Output in JSON format")
|
|
21
|
+
.option("--host <host>", "Daemon host:port (default: localhost:6767)")
|
|
22
|
+
.action(withOutput(runSpeechDownloadCommand));
|
|
23
|
+
return speech;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/speech/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,SAAS,eAAe,CAAC,KAAa,EAAE,QAAkB;IACxD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAE/E,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE9C,MAAM;SACH,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,cAAc,EAAE,mCAAmC,EAAE,eAAe,EAAE,EAAE,CAAC;SAChF,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CommandOptions, ListResult } from "../../output/index.js";
|
|
3
|
+
interface SpeechModelListItem {
|
|
4
|
+
id: string;
|
|
5
|
+
kind: string;
|
|
6
|
+
status: "downloaded" | "missing";
|
|
7
|
+
modelDir: string;
|
|
8
|
+
missingFiles: string;
|
|
9
|
+
}
|
|
10
|
+
export type SpeechModelsResult = ListResult<SpeechModelListItem>;
|
|
11
|
+
export interface SpeechModelsOptions extends CommandOptions {
|
|
12
|
+
host?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function runSpeechModelsCommand(options: SpeechModelsOptions, _command: Command): Promise<SpeechModelsResult>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/commands/speech/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EAEX,MAAM,uBAAuB,CAAC;AAG/B,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAkBD,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAEjE,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC,CA6B7B"}
|