@junctionpanel/cli 0.1.16
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 +671 -0
- package/bin/junction +2 -0
- package/bin/junction-daemon +5 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +211 -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 +92 -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 +153 -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 +125 -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 +198 -0
- package/dist/commands/agent/inspect.js.map +1 -0
- package/dist/commands/agent/logs.d.ts +15 -0
- package/dist/commands/agent/logs.d.ts.map +1 -0
- package/dist/commands/agent/logs.js +163 -0
- package/dist/commands/agent/logs.js.map +1 -0
- package/dist/commands/agent/ls.d.ts +37 -0
- package/dist/commands/agent/ls.d.ts.map +1 -0
- package/dist/commands/agent/ls.js +185 -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 +100 -0
- package/dist/commands/agent/mode.js.map +1 -0
- package/dist/commands/agent/run.d.ts +40 -0
- package/dist/commands/agent/run.d.ts.map +1 -0
- package/dist/commands/agent/run.js +354 -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 +105 -0
- package/dist/commands/agent/stop.js.map +1 -0
- package/dist/commands/agent/update.d.ts +18 -0
- package/dist/commands/agent/update.d.ts.map +1 -0
- package/dist/commands/agent/update.js +139 -0
- package/dist/commands/agent/update.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 +194 -0
- package/dist/commands/agent/wait.js.map +1 -0
- package/dist/commands/daemon/index.d.ts +4 -0
- package/dist/commands/daemon/index.d.ts.map +1 -0
- package/dist/commands/daemon/index.js +50 -0
- package/dist/commands/daemon/index.js.map +1 -0
- package/dist/commands/daemon/local-daemon.d.ts +60 -0
- package/dist/commands/daemon/local-daemon.d.ts.map +1 -0
- package/dist/commands/daemon/local-daemon.js +501 -0
- package/dist/commands/daemon/local-daemon.js.map +1 -0
- package/dist/commands/daemon/package-context.d.ts +7 -0
- package/dist/commands/daemon/package-context.d.ts.map +1 -0
- package/dist/commands/daemon/package-context.js +41 -0
- package/dist/commands/daemon/package-context.js.map +1 -0
- package/dist/commands/daemon/pair.d.ts +3 -0
- package/dist/commands/daemon/pair.d.ts.map +1 -0
- package/dist/commands/daemon/pair.js +11 -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 +102 -0
- package/dist/commands/daemon/restart.js.map +1 -0
- package/dist/commands/daemon/runtime-toolchain.d.ts +24 -0
- package/dist/commands/daemon/runtime-toolchain.d.ts.map +1 -0
- package/dist/commands/daemon/runtime-toolchain.js +93 -0
- package/dist/commands/daemon/runtime-toolchain.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 +48 -0
- package/dist/commands/daemon/start.js.map +1 -0
- package/dist/commands/daemon/status.d.ts +11 -0
- package/dist/commands/daemon/status.d.ts.map +1 -0
- package/dist/commands/daemon/status.js +389 -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 +69 -0
- package/dist/commands/daemon/stop.js.map +1 -0
- package/dist/commands/daemon/update.d.ts +11 -0
- package/dist/commands/daemon/update.d.ts.map +1 -0
- package/dist/commands/daemon/update.js +88 -0
- package/dist/commands/daemon/update.js.map +1 -0
- package/dist/commands/onboard.d.ts +9 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +299 -0
- package/dist/commands/onboard.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 +134 -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 +106 -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 +66 -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 +23 -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 +20 -0
- package/dist/commands/provider/models.d.ts.map +1 -0
- package/dist/commands/provider/models.js +53 -0
- package/dist/commands/provider/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 +19 -0
- package/dist/commands/worktree/ls.d.ts.map +1 -0
- package/dist/commands/worktree/ls.js +97 -0
- package/dist/commands/worktree/ls.js.map +1 -0
- package/dist/daemon-only-cli.d.ts +4 -0
- package/dist/daemon-only-cli.d.ts.map +1 -0
- package/dist/daemon-only-cli.js +5 -0
- package/dist/daemon-only-cli.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 +87 -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-id.d.ts +2 -0
- package/dist/utils/client-id.d.ts.map +1 -0
- package/dist/utils/client-id.js +37 -0
- package/dist/utils/client-id.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 +113 -0
- package/dist/utils/client.js.map +1 -0
- package/dist/utils/errors.d.ts +5 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +10 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/timeline.d.ts +8 -0
- package/dist/utils/timeline.d.ts.map +1 -0
- package/dist/utils/timeline.js +9 -0
- package/dist/utils/timeline.js.map +1 -0
- package/package.json +66 -0
|
@@ -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,CA6CvG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
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: junction daemon start',
|
|
34
|
+
};
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const agentsPayload = await client.fetchAgents({ filter: { includeArchived: true } });
|
|
39
|
+
const agents = agentsPayload.entries.map((entry) => entry.agent);
|
|
40
|
+
await client.close();
|
|
41
|
+
// Collect all pending permissions from all agents
|
|
42
|
+
const items = [];
|
|
43
|
+
for (const agent of agents) {
|
|
44
|
+
if (agent.pendingPermissions && agent.pendingPermissions.length > 0) {
|
|
45
|
+
for (const permission of agent.pendingPermissions) {
|
|
46
|
+
items.push(toListItem(agent, permission));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
type: 'list',
|
|
52
|
+
data: items,
|
|
53
|
+
schema: permitLsSchema,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
await client.close().catch(() => { });
|
|
58
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
59
|
+
const error = {
|
|
60
|
+
code: 'LIST_PERMISSIONS_FAILED',
|
|
61
|
+
message: `Failed to list permissions: ${message}`,
|
|
62
|
+
};
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# 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,CAoB/C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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('--thinking', 'Include thinking option IDs for each model')
|
|
18
|
+
.option('--json', 'Output in JSON format')
|
|
19
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
20
|
+
.action(withOutput(runModelsCommand));
|
|
21
|
+
return provider;
|
|
22
|
+
}
|
|
23
|
+
//# 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,YAAY,EAAE,4CAA4C,CAAC;SAClE,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,20 @@
|
|
|
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
|
+
thinkingOptionIds: string[];
|
|
9
|
+
defaultThinkingOptionId: string | null;
|
|
10
|
+
thinkingOptions: string;
|
|
11
|
+
}
|
|
12
|
+
/** Schema for provider models output */
|
|
13
|
+
export declare const providerModelsSchema: OutputSchema<ModelListItem>;
|
|
14
|
+
export type ProviderModelsResult = ListResult<ModelListItem>;
|
|
15
|
+
export interface ProviderModelsOptions extends CommandOptions {
|
|
16
|
+
host?: string;
|
|
17
|
+
thinking?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare function runModelsCommand(provider: string, options: ProviderModelsOptions, _command: Command): Promise<ProviderModelsResult>;
|
|
20
|
+
//# 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;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,wCAAwC;AACxC,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,aAAa,CAO5D,CAAA;AAgBD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAE5D,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAgC/B"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { connectToDaemon } from '../../utils/client.js';
|
|
2
|
+
/** Schema for provider models output */
|
|
3
|
+
export const providerModelsSchema = {
|
|
4
|
+
idField: 'id',
|
|
5
|
+
columns: [
|
|
6
|
+
{ header: 'ID', field: 'id', width: 30 },
|
|
7
|
+
{ header: 'MODEL', field: 'model', width: 30 },
|
|
8
|
+
{ header: 'DESCRIPTION', field: 'description', width: 40 },
|
|
9
|
+
],
|
|
10
|
+
};
|
|
11
|
+
const providerModelsWithThinkingSchema = {
|
|
12
|
+
idField: 'id',
|
|
13
|
+
columns: [
|
|
14
|
+
{ header: 'ID', field: 'id', width: 30 },
|
|
15
|
+
{ header: 'MODEL', field: 'model', width: 30 },
|
|
16
|
+
{ header: 'THINKING IDS', field: 'thinkingOptions', width: 40 },
|
|
17
|
+
{
|
|
18
|
+
header: 'DEFAULT THINKING',
|
|
19
|
+
field: (item) => item.defaultThinkingOptionId ?? 'auto',
|
|
20
|
+
width: 18,
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
export async function runModelsCommand(provider, options, _command) {
|
|
25
|
+
const normalizedProvider = provider.toLowerCase();
|
|
26
|
+
const client = await connectToDaemon({ host: options.host });
|
|
27
|
+
try {
|
|
28
|
+
const result = await client.listProviderModels(normalizedProvider);
|
|
29
|
+
if (result.error) {
|
|
30
|
+
throw {
|
|
31
|
+
code: 'PROVIDER_ERROR',
|
|
32
|
+
message: `Failed to fetch models for ${provider}: ${result.error}`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const models = (result.models ?? []).map((m) => ({
|
|
36
|
+
model: m.label,
|
|
37
|
+
id: m.id,
|
|
38
|
+
description: m.description ?? '',
|
|
39
|
+
thinkingOptionIds: (m.thinkingOptions ?? []).map((option) => option.id),
|
|
40
|
+
defaultThinkingOptionId: m.defaultThinkingOptionId ?? null,
|
|
41
|
+
thinkingOptions: (m.thinkingOptions ?? []).map((option) => option.id).join(', ') || 'none',
|
|
42
|
+
}));
|
|
43
|
+
return {
|
|
44
|
+
type: 'list',
|
|
45
|
+
data: models,
|
|
46
|
+
schema: options.thinking ? providerModelsWithThinkingSchema : providerModelsSchema,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
await client.close();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# 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;AAavD,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;AAED,MAAM,gCAAgC,GAAgC;IACpE,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,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,EAAE;QAC/D;YACE,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,IAAI,MAAM;YACvD,KAAK,EAAE,EAAE;SACV;KACF;CACF,CAAA;AASD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,OAA8B,EAC9B,QAAiB;IAEjB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEjD,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;YAChC,iBAAiB,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,uBAAuB,EAAE,CAAC,CAAC,uBAAuB,IAAI,IAAI;YAC1D,eAAe,EACb,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM;SAC5E,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,oBAAoB;SACnF,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, SingleResult, OutputSchema } from '../../output/index.js';
|
|
3
|
+
/** Result type for worktree archive command */
|
|
4
|
+
export interface WorktreeArchiveResult {
|
|
5
|
+
name: string;
|
|
6
|
+
status: 'archived';
|
|
7
|
+
removedAgents: string[];
|
|
8
|
+
}
|
|
9
|
+
/** Schema for archive command output */
|
|
10
|
+
export declare const archiveSchema: OutputSchema<WorktreeArchiveResult>;
|
|
11
|
+
export interface WorktreeArchiveOptions extends CommandOptions {
|
|
12
|
+
host?: string;
|
|
13
|
+
}
|
|
14
|
+
export type WorktreeArchiveCommandResult = SingleResult<WorktreeArchiveResult>;
|
|
15
|
+
export declare function runArchiveCommand(nameArg: string, options: WorktreeArchiveOptions, _command: Command): Promise<WorktreeArchiveCommandResult>;
|
|
16
|
+
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/commands/worktree/archive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAA;AAErG,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,UAAU,CAAA;IAClB,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,wCAAwC;AACxC,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,qBAAqB,CAU7D,CAAA;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,4BAA4B,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAE9E,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,4BAA4B,CAAC,CA8FvC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { connectToDaemon, getDaemonHost } from '../../utils/client.js';
|
|
2
|
+
/** Schema for archive command output */
|
|
3
|
+
export const archiveSchema = {
|
|
4
|
+
idField: 'name',
|
|
5
|
+
columns: [
|
|
6
|
+
{ header: 'NAME', field: 'name' },
|
|
7
|
+
{ header: 'STATUS', field: 'status' },
|
|
8
|
+
{
|
|
9
|
+
header: 'REMOVED AGENTS',
|
|
10
|
+
field: (item) => item.removedAgents.length > 0 ? item.removedAgents.join(', ') : '-',
|
|
11
|
+
},
|
|
12
|
+
],
|
|
13
|
+
};
|
|
14
|
+
export async function runArchiveCommand(nameArg, options, _command) {
|
|
15
|
+
const host = getDaemonHost({ host: options.host });
|
|
16
|
+
// Validate arguments
|
|
17
|
+
if (!nameArg || nameArg.trim().length === 0) {
|
|
18
|
+
const error = {
|
|
19
|
+
code: 'MISSING_WORKTREE_NAME',
|
|
20
|
+
message: 'Worktree name is required',
|
|
21
|
+
details: 'Usage: junction worktree archive <name>',
|
|
22
|
+
};
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
let client;
|
|
26
|
+
try {
|
|
27
|
+
client = await connectToDaemon({ host: options.host });
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
31
|
+
const error = {
|
|
32
|
+
code: 'DAEMON_NOT_RUNNING',
|
|
33
|
+
message: `Cannot connect to daemon at ${host}: ${message}`,
|
|
34
|
+
details: 'Start the daemon with: junction daemon start',
|
|
35
|
+
};
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
// Get the list of worktrees first to resolve the name
|
|
40
|
+
const listResponse = await client.getJunctionWorktreeList({});
|
|
41
|
+
if (listResponse.error) {
|
|
42
|
+
const error = {
|
|
43
|
+
code: 'WORKTREE_LIST_FAILED',
|
|
44
|
+
message: `Failed to list worktrees: ${listResponse.error.message}`,
|
|
45
|
+
};
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
// Find the worktree by name or branch
|
|
49
|
+
const worktree = listResponse.worktrees.find((wt) => {
|
|
50
|
+
const name = wt.worktreePath.split('/').pop();
|
|
51
|
+
return name === nameArg || wt.branchName === nameArg;
|
|
52
|
+
});
|
|
53
|
+
if (!worktree) {
|
|
54
|
+
const error = {
|
|
55
|
+
code: 'WORKTREE_NOT_FOUND',
|
|
56
|
+
message: `Worktree not found: ${nameArg}`,
|
|
57
|
+
details: 'Use "junction worktree ls" to list available worktrees',
|
|
58
|
+
};
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
// Archive the worktree
|
|
62
|
+
const response = await client.archiveJunctionWorktree({
|
|
63
|
+
worktreePath: worktree.worktreePath,
|
|
64
|
+
});
|
|
65
|
+
await client.close();
|
|
66
|
+
if (response.error) {
|
|
67
|
+
const error = {
|
|
68
|
+
code: 'WORKTREE_ARCHIVE_FAILED',
|
|
69
|
+
message: `Failed to archive worktree: ${response.error.message}`,
|
|
70
|
+
};
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
const worktreeName = worktree.worktreePath.split('/').pop() ?? nameArg;
|
|
74
|
+
return {
|
|
75
|
+
type: 'single',
|
|
76
|
+
data: {
|
|
77
|
+
name: worktreeName,
|
|
78
|
+
status: 'archived',
|
|
79
|
+
removedAgents: response.removedAgents ?? [],
|
|
80
|
+
},
|
|
81
|
+
schema: archiveSchema,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
await client.close().catch(() => { });
|
|
86
|
+
// Re-throw CommandError as-is
|
|
87
|
+
if (err && typeof err === 'object' && 'code' in err) {
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
91
|
+
const error = {
|
|
92
|
+
code: 'WORKTREE_ARCHIVE_FAILED',
|
|
93
|
+
message: `Failed to archive worktree: ${message}`,
|
|
94
|
+
};
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/commands/worktree/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/worktree/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 { runArchiveCommand } from './archive.js';
|
|
4
|
+
import { withOutput } from '../../output/index.js';
|
|
5
|
+
export function createWorktreeCommand() {
|
|
6
|
+
const worktree = new Command('worktree').description('Manage Junction-managed git worktrees');
|
|
7
|
+
worktree
|
|
8
|
+
.command('ls')
|
|
9
|
+
.description('List Junction-managed git worktrees')
|
|
10
|
+
.option('--json', 'Output in JSON format')
|
|
11
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
12
|
+
.action(withOutput(runLsCommand));
|
|
13
|
+
worktree
|
|
14
|
+
.command('archive')
|
|
15
|
+
.description('Archive a worktree (removes worktree and associated branch)')
|
|
16
|
+
.argument('<name>', 'Worktree name or branch name')
|
|
17
|
+
.option('--json', 'Output in JSON format')
|
|
18
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
19
|
+
.action(withOutput(runArchiveCommand));
|
|
20
|
+
return worktree;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/worktree/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAA;IAE7F,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,SAAS,CAAC;SAClB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,QAAQ,CAAC,QAAQ,EAAE,8BAA8B,CAAC;SAClD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAExC,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, ListResult, OutputSchema } from '../../output/index.js';
|
|
3
|
+
/** Worktree list item for display */
|
|
4
|
+
export interface WorktreeListItem {
|
|
5
|
+
name: string;
|
|
6
|
+
branch: string;
|
|
7
|
+
cwd: string;
|
|
8
|
+
agent: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveJunctionHomePath(): string;
|
|
11
|
+
export declare function resolveJunctionWorktreesDir(): string;
|
|
12
|
+
/** Schema for worktree ls output */
|
|
13
|
+
export declare const worktreeLsSchema: OutputSchema<WorktreeListItem>;
|
|
14
|
+
export type WorktreeLsResult = ListResult<WorktreeListItem>;
|
|
15
|
+
export interface WorktreeLsOptions extends CommandOptions {
|
|
16
|
+
host?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function runLsCommand(options: WorktreeLsOptions, _command: Command): Promise<WorktreeLsResult>;
|
|
19
|
+
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/worktree/ls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAA;AAEnG,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAgBD,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAOD,oCAAoC;AACpC,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,CAQ3D,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,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAoE3B"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { basename, join, sep } from 'node:path';
|
|
3
|
+
import { connectToDaemon, getDaemonHost } from '../../utils/client.js';
|
|
4
|
+
/** Shorten home directory in path */
|
|
5
|
+
function shortenPath(path) {
|
|
6
|
+
const home = process.env.HOME;
|
|
7
|
+
if (home && path.startsWith(home)) {
|
|
8
|
+
return '~' + path.slice(home.length);
|
|
9
|
+
}
|
|
10
|
+
return path;
|
|
11
|
+
}
|
|
12
|
+
/** Extract worktree name from path */
|
|
13
|
+
function extractWorktreeName(path) {
|
|
14
|
+
return basename(path);
|
|
15
|
+
}
|
|
16
|
+
export function resolveJunctionHomePath() {
|
|
17
|
+
return process.env.JUNCTION_HOME ?? join(homedir(), '.junction');
|
|
18
|
+
}
|
|
19
|
+
export function resolveJunctionWorktreesDir() {
|
|
20
|
+
return join(resolveJunctionHomePath(), 'worktrees');
|
|
21
|
+
}
|
|
22
|
+
function isAgentInManagedWorktree(agentCwd) {
|
|
23
|
+
const worktreesDir = resolveJunctionWorktreesDir();
|
|
24
|
+
return agentCwd === worktreesDir || agentCwd.startsWith(worktreesDir + sep);
|
|
25
|
+
}
|
|
26
|
+
/** Schema for worktree ls output */
|
|
27
|
+
export const worktreeLsSchema = {
|
|
28
|
+
idField: 'name',
|
|
29
|
+
columns: [
|
|
30
|
+
{ header: 'NAME', field: 'name', width: 20 },
|
|
31
|
+
{ header: 'BRANCH', field: 'branch', width: 25 },
|
|
32
|
+
{ header: 'CWD', field: 'cwd', width: 45 },
|
|
33
|
+
{ header: 'AGENT', field: 'agent', width: 10 },
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
export async function runLsCommand(options, _command) {
|
|
37
|
+
const host = getDaemonHost({ host: options.host });
|
|
38
|
+
let client;
|
|
39
|
+
try {
|
|
40
|
+
client = await connectToDaemon({ host: options.host });
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
44
|
+
const error = {
|
|
45
|
+
code: 'DAEMON_NOT_RUNNING',
|
|
46
|
+
message: `Cannot connect to daemon at ${host}: ${message}`,
|
|
47
|
+
details: 'Start the daemon with: junction daemon start',
|
|
48
|
+
};
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const agentsPayload = await client.fetchAgents({ filter: { includeArchived: true } });
|
|
53
|
+
const agents = agentsPayload.entries.map((entry) => entry.agent);
|
|
54
|
+
// Get worktree list from daemon
|
|
55
|
+
const response = await client.getJunctionWorktreeList({});
|
|
56
|
+
await client.close();
|
|
57
|
+
if (response.error) {
|
|
58
|
+
const error = {
|
|
59
|
+
code: 'WORKTREE_LIST_FAILED',
|
|
60
|
+
message: `Failed to list worktrees: ${response.error.message}`,
|
|
61
|
+
};
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
// Build a map of worktree paths to agent IDs
|
|
65
|
+
const worktreeAgentMap = new Map();
|
|
66
|
+
for (const agent of agents) {
|
|
67
|
+
if (isAgentInManagedWorktree(agent.cwd)) {
|
|
68
|
+
worktreeAgentMap.set(agent.cwd, agent.id.slice(0, 7));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const items = response.worktrees.map((wt) => ({
|
|
72
|
+
name: extractWorktreeName(wt.worktreePath),
|
|
73
|
+
branch: wt.branchName ?? '-',
|
|
74
|
+
cwd: shortenPath(wt.worktreePath),
|
|
75
|
+
agent: worktreeAgentMap.get(wt.worktreePath) ?? '-',
|
|
76
|
+
}));
|
|
77
|
+
return {
|
|
78
|
+
type: 'list',
|
|
79
|
+
data: items,
|
|
80
|
+
schema: worktreeLsSchema,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
await client.close().catch(() => { });
|
|
85
|
+
// Re-throw CommandError as-is
|
|
86
|
+
if (err && typeof err === 'object' && 'code' in err) {
|
|
87
|
+
throw err;
|
|
88
|
+
}
|
|
89
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
90
|
+
const error = {
|
|
91
|
+
code: 'WORKTREE_LIST_FAILED',
|
|
92
|
+
message: `Failed to list worktrees: ${message}`,
|
|
93
|
+
};
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=ls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/commands/worktree/ls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-only-cli.d.ts","sourceRoot":"","sources":["../src/daemon-only-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAA2B,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE3E,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAE7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-only-cli.js","sourceRoot":"","sources":["../src/daemon-only-cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,UAAU,CAAA;AAE3E,MAAM,UAAU,mBAAmB,CAAC,UAA8B,EAAE;IAClE,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|