@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,125 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { runModeCommand } from './mode.js';
|
|
3
|
+
import { runArchiveCommand } from './archive.js';
|
|
4
|
+
import { runLsCommand } from './ls.js';
|
|
5
|
+
import { runRunCommand } from './run.js';
|
|
6
|
+
import { runLogsCommand } from './logs.js';
|
|
7
|
+
import { runStopCommand } from './stop.js';
|
|
8
|
+
import { runSendCommand } from './send.js';
|
|
9
|
+
import { runInspectCommand } from './inspect.js';
|
|
10
|
+
import { runWaitCommand } from './wait.js';
|
|
11
|
+
import { runAttachCommand } from './attach.js';
|
|
12
|
+
import { runUpdateCommand } from './update.js';
|
|
13
|
+
import { withOutput } from '../../output/index.js';
|
|
14
|
+
export function createAgentCommand() {
|
|
15
|
+
const agent = new Command('agent').description('Manage agents (advanced operations)');
|
|
16
|
+
// Helper function to collect multiple option values into an array
|
|
17
|
+
const collectMultiple = (value, previous) => {
|
|
18
|
+
return previous.concat([value]);
|
|
19
|
+
};
|
|
20
|
+
// Primary agent commands (same as top-level)
|
|
21
|
+
agent
|
|
22
|
+
.command('ls')
|
|
23
|
+
.description('List agents. By default excludes archived agents.')
|
|
24
|
+
.option('-a, --all', 'Include archived agents')
|
|
25
|
+
.option('-g, --global', 'Legacy no-op (kept for compatibility)')
|
|
26
|
+
.option('--label <key=value>', 'Filter by label (can be used multiple times)', collectMultiple, [])
|
|
27
|
+
.option('--thinking <id>', 'Filter by thinking option ID')
|
|
28
|
+
.option('--json', 'Output in JSON format')
|
|
29
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
30
|
+
.action(withOutput(runLsCommand));
|
|
31
|
+
agent
|
|
32
|
+
.command('run')
|
|
33
|
+
.description('Create and start an agent with a task')
|
|
34
|
+
.argument('<prompt>', 'The task/prompt for the agent')
|
|
35
|
+
.option('-d, --detach', 'Run in background (detached)')
|
|
36
|
+
.option('--name <name>', 'Assign a name/title to the agent')
|
|
37
|
+
.option('--provider <provider>', 'Agent provider: claude | codex | opencode', 'claude')
|
|
38
|
+
.option('--model <model>', 'Model to use (e.g., claude-sonnet-4-20250514, claude-3-5-haiku-20241022)')
|
|
39
|
+
.option('--thinking <id>', 'Thinking option ID to use for this run')
|
|
40
|
+
.option('--mode <mode>', 'Provider-specific mode (e.g., plan, default, bypass)')
|
|
41
|
+
.option('--cwd <path>', 'Working directory (default: current)')
|
|
42
|
+
.option('--label <key=value>', 'Add label(s) to the agent (can be used multiple times)', collectMultiple, [])
|
|
43
|
+
.option('--ui', 'Mark as UI agent (equivalent to --label ui=true)')
|
|
44
|
+
.option('--output-schema <schema>', 'Output JSON matching the provided schema file path or inline JSON schema')
|
|
45
|
+
.option('--json', 'Output in JSON format')
|
|
46
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
47
|
+
.action(withOutput(runRunCommand));
|
|
48
|
+
agent
|
|
49
|
+
.command('attach')
|
|
50
|
+
.description("Attach to a running agent's output stream")
|
|
51
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
52
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
53
|
+
.action(runAttachCommand);
|
|
54
|
+
agent
|
|
55
|
+
.command('logs')
|
|
56
|
+
.description('View agent activity/timeline')
|
|
57
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
58
|
+
.option('-f, --follow', 'Follow log output (streaming)')
|
|
59
|
+
.option('--tail <n>', 'Show last n entries')
|
|
60
|
+
.option('--filter <type>', 'Filter by event type (tools, text, errors, permissions)')
|
|
61
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
62
|
+
.action(runLogsCommand);
|
|
63
|
+
agent
|
|
64
|
+
.command('stop')
|
|
65
|
+
.description('Stop an agent (cancel if running, then terminate)')
|
|
66
|
+
.argument('[id]', 'Agent ID (or prefix) - optional if --all or --cwd specified')
|
|
67
|
+
.option('--all', 'Stop all agents')
|
|
68
|
+
.option('--cwd <path>', 'Stop all agents in directory')
|
|
69
|
+
.option('--json', 'Output in JSON format')
|
|
70
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
71
|
+
.action(withOutput(runStopCommand));
|
|
72
|
+
agent
|
|
73
|
+
.command('send')
|
|
74
|
+
.description('Send a message/task to an existing agent')
|
|
75
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
76
|
+
.argument('<prompt>', 'The message to send')
|
|
77
|
+
.option('--no-wait', 'Return immediately without waiting for completion')
|
|
78
|
+
.option('--json', 'Output in JSON format')
|
|
79
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
80
|
+
.action(withOutput(runSendCommand));
|
|
81
|
+
agent
|
|
82
|
+
.command('inspect')
|
|
83
|
+
.description('Show detailed information about an agent')
|
|
84
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
85
|
+
.option('--json', 'Output in JSON format')
|
|
86
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
87
|
+
.action(withOutput(runInspectCommand));
|
|
88
|
+
agent
|
|
89
|
+
.command('wait')
|
|
90
|
+
.description('Wait for an agent to become idle')
|
|
91
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
92
|
+
.option('--timeout <seconds>', 'Maximum wait time (default: no limit)')
|
|
93
|
+
.option('--json', 'Output in JSON format')
|
|
94
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
95
|
+
.action(withOutput(runWaitCommand));
|
|
96
|
+
// Advanced agent commands (less common operations)
|
|
97
|
+
agent
|
|
98
|
+
.command('mode')
|
|
99
|
+
.description("Change an agent's operational mode")
|
|
100
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
101
|
+
.argument('[mode]', 'Mode to set (required unless --list)')
|
|
102
|
+
.option('--list', 'List available modes for this agent')
|
|
103
|
+
.option('--json', 'Output in JSON format')
|
|
104
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
105
|
+
.action(withOutput(runModeCommand));
|
|
106
|
+
agent
|
|
107
|
+
.command('archive')
|
|
108
|
+
.description('Archive an agent (soft-delete)')
|
|
109
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
110
|
+
.option('--force', 'Force archive running agent (interrupts active run first)')
|
|
111
|
+
.option('--json', 'Output in JSON format')
|
|
112
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
113
|
+
.action(withOutput(runArchiveCommand));
|
|
114
|
+
agent
|
|
115
|
+
.command('update')
|
|
116
|
+
.description("Update an agent's metadata")
|
|
117
|
+
.argument('<id>', 'Agent ID (or prefix)')
|
|
118
|
+
.option('--name <name>', "Update the agent's display name")
|
|
119
|
+
.option('--label <label>', 'Add/set label(s) on the agent (can be used multiple times or comma-separated)', collectMultiple, [])
|
|
120
|
+
.option('--json', 'Output in JSON format')
|
|
121
|
+
.option('--host <host>', 'Daemon host:port (default: localhost:6767)')
|
|
122
|
+
.action(withOutput(runUpdateCommand));
|
|
123
|
+
return agent;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, ListResult } from '../../output/index.js';
|
|
3
|
+
/** Key-value row for table display */
|
|
4
|
+
interface InspectRow {
|
|
5
|
+
key: string;
|
|
6
|
+
value: string;
|
|
7
|
+
}
|
|
8
|
+
export type AgentInspectResult = ListResult<InspectRow>;
|
|
9
|
+
export interface AgentInspectOptions extends CommandOptions {
|
|
10
|
+
host?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function runInspectCommand(agentIdArg: string, options: AgentInspectOptions, _command: Command): Promise<AgentInspectResult>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=inspect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAA8B,MAAM,uBAAuB,CAAA;AAsCnG,sCAAsC;AACtC,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAuJD,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;AAEvD,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC,CA6D7B"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { connectToDaemon, getDaemonHost } from '../../utils/client.js';
|
|
2
|
+
/** Schema for key-value display with custom serialization for JSON/YAML */
|
|
3
|
+
function createInspectSchema(agent) {
|
|
4
|
+
return {
|
|
5
|
+
idField: 'key',
|
|
6
|
+
columns: [
|
|
7
|
+
{ header: 'KEY', field: 'key' },
|
|
8
|
+
{
|
|
9
|
+
header: 'VALUE',
|
|
10
|
+
field: 'value',
|
|
11
|
+
color: (_, item) => {
|
|
12
|
+
if (item.key === 'Status') {
|
|
13
|
+
if (item.value === 'running')
|
|
14
|
+
return 'green';
|
|
15
|
+
if (item.value === 'idle')
|
|
16
|
+
return 'yellow';
|
|
17
|
+
if (item.value === 'error')
|
|
18
|
+
return 'red';
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
// For JSON/YAML, return the structured agent object
|
|
25
|
+
serialize: (_item) => agent,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Shorten home directory in path */
|
|
29
|
+
function shortenPath(path) {
|
|
30
|
+
const home = process.env.HOME;
|
|
31
|
+
if (home && path.startsWith(home)) {
|
|
32
|
+
return '~' + path.slice(home.length);
|
|
33
|
+
}
|
|
34
|
+
return path;
|
|
35
|
+
}
|
|
36
|
+
/** Format cost in USD */
|
|
37
|
+
function formatCost(costUsd) {
|
|
38
|
+
if (costUsd === 0)
|
|
39
|
+
return '$0.00';
|
|
40
|
+
if (costUsd < 0.01)
|
|
41
|
+
return `$${costUsd.toFixed(4)}`;
|
|
42
|
+
return `$${costUsd.toFixed(2)}`;
|
|
43
|
+
}
|
|
44
|
+
function normalizeModelId(value) {
|
|
45
|
+
if (typeof value !== 'string')
|
|
46
|
+
return null;
|
|
47
|
+
const normalized = value.trim();
|
|
48
|
+
if (!normalized || normalized.toLowerCase() === 'default')
|
|
49
|
+
return null;
|
|
50
|
+
return normalized;
|
|
51
|
+
}
|
|
52
|
+
function resolveModel(snapshot) {
|
|
53
|
+
return normalizeModelId(snapshot.runtimeInfo?.model) ?? normalizeModelId(snapshot.model);
|
|
54
|
+
}
|
|
55
|
+
/** Convert agent snapshot to inspection data */
|
|
56
|
+
function toInspectData(snapshot) {
|
|
57
|
+
const lastUsage = snapshot.lastUsage
|
|
58
|
+
? {
|
|
59
|
+
InputTokens: snapshot.lastUsage.inputTokens ?? 0,
|
|
60
|
+
OutputTokens: snapshot.lastUsage.outputTokens ?? 0,
|
|
61
|
+
CachedTokens: snapshot.lastUsage.cachedInputTokens ?? 0,
|
|
62
|
+
CostUsd: snapshot.lastUsage.totalCostUsd ?? 0,
|
|
63
|
+
}
|
|
64
|
+
: null;
|
|
65
|
+
const capabilities = snapshot.capabilities
|
|
66
|
+
? {
|
|
67
|
+
Streaming: snapshot.capabilities.supportsStreaming ?? false,
|
|
68
|
+
Persistence: snapshot.capabilities.supportsSessionPersistence ?? false,
|
|
69
|
+
DynamicModes: snapshot.capabilities.supportsDynamicModes ?? false,
|
|
70
|
+
McpServers: snapshot.capabilities.supportsMcpServers ?? false,
|
|
71
|
+
}
|
|
72
|
+
: null;
|
|
73
|
+
// Extract worktree and parentAgentId from labels if they exist
|
|
74
|
+
const worktree = snapshot.labels?.['junction.worktree'] ?? null;
|
|
75
|
+
const parentAgentId = snapshot.labels?.['junction.parent-agent-id'] ?? null;
|
|
76
|
+
return {
|
|
77
|
+
Id: snapshot.id,
|
|
78
|
+
Name: snapshot.title ?? '-',
|
|
79
|
+
Provider: snapshot.provider,
|
|
80
|
+
Model: resolveModel(snapshot) ?? '-',
|
|
81
|
+
Thinking: snapshot.effectiveThinkingOptionId ?? 'auto',
|
|
82
|
+
Status: snapshot.status,
|
|
83
|
+
Mode: snapshot.currentModeId ?? 'default',
|
|
84
|
+
Cwd: snapshot.cwd,
|
|
85
|
+
CreatedAt: snapshot.createdAt,
|
|
86
|
+
UpdatedAt: snapshot.updatedAt,
|
|
87
|
+
LastUsage: lastUsage,
|
|
88
|
+
Capabilities: capabilities,
|
|
89
|
+
AvailableModes: snapshot.availableModes
|
|
90
|
+
? snapshot.availableModes.map((m) => ({ id: m.id, label: m.label }))
|
|
91
|
+
: null,
|
|
92
|
+
PendingPermissions: (snapshot.pendingPermissions ?? []).map((p) => ({
|
|
93
|
+
id: p.id,
|
|
94
|
+
tool: p.name ?? 'unknown',
|
|
95
|
+
})),
|
|
96
|
+
Worktree: worktree,
|
|
97
|
+
ParentAgentId: parentAgentId,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** Convert agent to key-value rows for table display */
|
|
101
|
+
function toInspectRows(agent) {
|
|
102
|
+
const rows = [
|
|
103
|
+
{ key: 'Id', value: agent.Id },
|
|
104
|
+
{ key: 'Name', value: agent.Name },
|
|
105
|
+
{ key: 'Provider', value: agent.Provider },
|
|
106
|
+
{ key: 'Model', value: agent.Model },
|
|
107
|
+
{ key: 'Thinking', value: agent.Thinking },
|
|
108
|
+
{ key: 'Status', value: agent.Status },
|
|
109
|
+
{ key: 'Mode', value: agent.Mode },
|
|
110
|
+
{ key: 'Cwd', value: shortenPath(agent.Cwd) },
|
|
111
|
+
{ key: 'CreatedAt', value: agent.CreatedAt },
|
|
112
|
+
{ key: 'UpdatedAt', value: agent.UpdatedAt },
|
|
113
|
+
];
|
|
114
|
+
if (agent.LastUsage) {
|
|
115
|
+
rows.push({
|
|
116
|
+
key: 'LastUsage',
|
|
117
|
+
value: `InputTokens: ${agent.LastUsage.InputTokens}, OutputTokens: ${agent.LastUsage.OutputTokens}, CachedTokens: ${agent.LastUsage.CachedTokens}, CostUsd: ${formatCost(agent.LastUsage.CostUsd)}`,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (agent.Capabilities) {
|
|
121
|
+
rows.push({
|
|
122
|
+
key: 'Capabilities',
|
|
123
|
+
value: `Streaming: ${agent.Capabilities.Streaming}, Persistence: ${agent.Capabilities.Persistence}, DynamicModes: ${agent.Capabilities.DynamicModes}, McpServers: ${agent.Capabilities.McpServers}`,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
if (agent.AvailableModes && agent.AvailableModes.length > 0) {
|
|
127
|
+
rows.push({
|
|
128
|
+
key: 'AvailableModes',
|
|
129
|
+
value: agent.AvailableModes.map((m) => `${m.id} (${m.label})`).join(', '),
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
rows.push({
|
|
133
|
+
key: 'PendingPermissions',
|
|
134
|
+
value: agent.PendingPermissions.length > 0
|
|
135
|
+
? agent.PendingPermissions.map(p => `${p.id} (${p.tool})`).join(', ')
|
|
136
|
+
: '[]'
|
|
137
|
+
});
|
|
138
|
+
rows.push({ key: 'Worktree', value: agent.Worktree ?? 'null' });
|
|
139
|
+
rows.push({ key: 'ParentAgentId', value: agent.ParentAgentId ?? 'null' });
|
|
140
|
+
return rows;
|
|
141
|
+
}
|
|
142
|
+
export async function runInspectCommand(agentIdArg, options, _command) {
|
|
143
|
+
const host = getDaemonHost({ host: options.host });
|
|
144
|
+
// Validate arguments
|
|
145
|
+
if (!agentIdArg || agentIdArg.trim().length === 0) {
|
|
146
|
+
const error = {
|
|
147
|
+
code: 'MISSING_AGENT_ID',
|
|
148
|
+
message: 'Agent ID is required',
|
|
149
|
+
details: 'Usage: junction agent inspect <id>',
|
|
150
|
+
};
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
let client;
|
|
154
|
+
try {
|
|
155
|
+
client = await connectToDaemon({ host: options.host });
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
159
|
+
const error = {
|
|
160
|
+
code: 'DAEMON_NOT_RUNNING',
|
|
161
|
+
message: `Cannot connect to daemon at ${host}: ${message}`,
|
|
162
|
+
details: 'Start the daemon with: junction daemon start',
|
|
163
|
+
};
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
const fetchResult = await client.fetchAgent(agentIdArg);
|
|
168
|
+
if (!fetchResult) {
|
|
169
|
+
const error = {
|
|
170
|
+
code: 'AGENT_NOT_FOUND',
|
|
171
|
+
message: `Agent not found: ${agentIdArg}`,
|
|
172
|
+
details: 'Use "junction ls" to list available agents',
|
|
173
|
+
};
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
await client.close();
|
|
177
|
+
const inspectData = toInspectData(fetchResult.agent);
|
|
178
|
+
return {
|
|
179
|
+
type: 'list',
|
|
180
|
+
data: toInspectRows(inspectData),
|
|
181
|
+
schema: createInspectSchema(inspectData),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
await client.close().catch(() => { });
|
|
186
|
+
// Re-throw CommandError as-is
|
|
187
|
+
if (err && typeof err === 'object' && 'code' in err) {
|
|
188
|
+
throw err;
|
|
189
|
+
}
|
|
190
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
191
|
+
const error = {
|
|
192
|
+
code: 'INSPECT_FAILED',
|
|
193
|
+
message: `Failed to inspect agent: ${message}`,
|
|
194
|
+
};
|
|
195
|
+
throw error;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/agent/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions } from '../../output/index.js';
|
|
3
|
+
import type { DaemonClient, AgentTimelineItem } from '@junctionpanel/server';
|
|
4
|
+
export interface AgentLogsOptions extends CommandOptions {
|
|
5
|
+
follow?: boolean;
|
|
6
|
+
tail?: string;
|
|
7
|
+
filter?: string;
|
|
8
|
+
since?: string;
|
|
9
|
+
}
|
|
10
|
+
export type AgentLogsResult = void;
|
|
11
|
+
export declare const NO_ACTIVITY_MESSAGE = "No activity to display.";
|
|
12
|
+
export declare function fetchAgentTimelineItems(client: DaemonClient, agentId: string): Promise<AgentTimelineItem[]>;
|
|
13
|
+
export declare function formatAgentActivityTranscript(timelineItems: AgentTimelineItem[], tailCount?: number): string;
|
|
14
|
+
export declare function runLogsCommand(id: string, options: AgentLogsOptions, _command: Command): Promise<AgentLogsResult>;
|
|
15
|
+
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,KAAK,EACV,YAAY,EAEZ,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAG9B,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAGD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAA;AAElC,eAAO,MAAM,mBAAmB,4BAA4B,CAAA;AAE5D,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAE9B;AAED,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,iBAAiB,EAAE,EAClC,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAQR;AAoCD,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,eAAe,CAAC,CAwE1B"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { connectToDaemon, getDaemonHost } from '../../utils/client.js';
|
|
2
|
+
import { fetchProjectedTimelineItems } from '../../utils/timeline.js';
|
|
3
|
+
import { curateAgentActivity } from '@junctionpanel/server';
|
|
4
|
+
export const NO_ACTIVITY_MESSAGE = 'No activity to display.';
|
|
5
|
+
export async function fetchAgentTimelineItems(client, agentId) {
|
|
6
|
+
return fetchProjectedTimelineItems({ client, agentId });
|
|
7
|
+
}
|
|
8
|
+
export function formatAgentActivityTranscript(timelineItems, tailCount) {
|
|
9
|
+
if (tailCount === 0) {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
return curateAgentActivity(timelineItems, tailCount !== undefined ? { maxItems: tailCount } : undefined);
|
|
13
|
+
}
|
|
14
|
+
function parseTailCount(raw) {
|
|
15
|
+
if (raw === undefined)
|
|
16
|
+
return undefined;
|
|
17
|
+
const parsed = Number.parseInt(raw, 10);
|
|
18
|
+
if (Number.isNaN(parsed) || parsed < 0) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
return parsed;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a timeline item matches the filter type
|
|
25
|
+
*/
|
|
26
|
+
function matchesFilter(item, filter) {
|
|
27
|
+
if (!filter)
|
|
28
|
+
return true;
|
|
29
|
+
const filterLower = filter.toLowerCase();
|
|
30
|
+
const type = item.type.toLowerCase();
|
|
31
|
+
switch (filterLower) {
|
|
32
|
+
case 'tools':
|
|
33
|
+
return type === 'tool_call';
|
|
34
|
+
case 'text':
|
|
35
|
+
return type === 'user_message' || type === 'assistant_message' || type === 'reasoning';
|
|
36
|
+
case 'errors':
|
|
37
|
+
return type === 'error';
|
|
38
|
+
case 'permissions':
|
|
39
|
+
// Permissions might be in tool_call status or a separate event type
|
|
40
|
+
return type.includes('permission');
|
|
41
|
+
default:
|
|
42
|
+
// If filter doesn't match predefined types, match against the actual type
|
|
43
|
+
return type.includes(filterLower);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function runLogsCommand(id, options, _command) {
|
|
47
|
+
const host = getDaemonHost({ host: options.host });
|
|
48
|
+
if (!id) {
|
|
49
|
+
console.error('Error: Agent ID required');
|
|
50
|
+
console.error('Usage: junction agent logs <id>');
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
let client;
|
|
54
|
+
try {
|
|
55
|
+
client = await connectToDaemon({ host: options.host });
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
59
|
+
console.error(`Error: Cannot connect to daemon at ${host}: ${message}`);
|
|
60
|
+
console.error('Start the daemon with: junction daemon start');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const fetchResult = await client.fetchAgent(id);
|
|
65
|
+
if (!fetchResult) {
|
|
66
|
+
console.error(`Error: No agent found matching: ${id}`);
|
|
67
|
+
console.error('Use `junction ls` to list available agents');
|
|
68
|
+
await client.close();
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
const resolvedId = fetchResult.agent.id;
|
|
72
|
+
// For follow mode, we stream events continuously
|
|
73
|
+
if (options.follow) {
|
|
74
|
+
if (options.tail !== undefined && parseTailCount(options.tail) === undefined) {
|
|
75
|
+
console.error(`Error: Invalid --tail value: ${options.tail}`);
|
|
76
|
+
console.error('Usage: --tail <n> (where n is >= 0)');
|
|
77
|
+
await client.close().catch(() => { });
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
await runFollowMode(client, resolvedId, options);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
// Fetch timeline directly via cursor RPC.
|
|
84
|
+
let timelineItems = await fetchAgentTimelineItems(client, resolvedId);
|
|
85
|
+
// Apply filter
|
|
86
|
+
if (options.filter) {
|
|
87
|
+
timelineItems = timelineItems.filter((item) => matchesFilter(item, options.filter));
|
|
88
|
+
}
|
|
89
|
+
const tailCount = parseTailCount(options.tail);
|
|
90
|
+
if (options.tail !== undefined && tailCount === undefined) {
|
|
91
|
+
console.error(`Error: Invalid --tail value: ${options.tail}`);
|
|
92
|
+
console.error('Usage: --tail <n> (where n is >= 0)');
|
|
93
|
+
await client.close().catch(() => { });
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
await client.close();
|
|
97
|
+
// Use curateAgentActivity to format the transcript
|
|
98
|
+
if (tailCount === 0) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const transcript = formatAgentActivityTranscript(timelineItems, tailCount);
|
|
102
|
+
console.log(transcript);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
106
|
+
console.error(`Error: Failed to get logs: ${message}`);
|
|
107
|
+
await client.close().catch(() => { });
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Follow mode: stream logs in real-time until interrupted
|
|
113
|
+
*/
|
|
114
|
+
async function runFollowMode(client, agentId, options) {
|
|
115
|
+
const DEFAULT_FOLLOW_TAIL = 10;
|
|
116
|
+
const tailCount = parseTailCount(options.tail) ?? DEFAULT_FOLLOW_TAIL;
|
|
117
|
+
// First, get existing timeline.
|
|
118
|
+
let existingItems = await fetchAgentTimelineItems(client, agentId);
|
|
119
|
+
// Apply filter to existing items
|
|
120
|
+
if (options.filter) {
|
|
121
|
+
existingItems = existingItems.filter((item) => matchesFilter(item, options.filter));
|
|
122
|
+
}
|
|
123
|
+
// Print existing transcript (tail-like behavior)
|
|
124
|
+
if (tailCount > 0) {
|
|
125
|
+
const existingTranscript = formatAgentActivityTranscript(existingItems, tailCount);
|
|
126
|
+
if (existingTranscript !== NO_ACTIVITY_MESSAGE) {
|
|
127
|
+
console.log(existingTranscript);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Subscribe to new events
|
|
131
|
+
const tailLabel = tailCount === 0 ? 'no history' : `last ${tailCount} entr${tailCount === 1 ? 'y' : 'ies'}`;
|
|
132
|
+
console.log(`\n--- Following logs (${tailLabel}; Ctrl+C to stop) ---\n`);
|
|
133
|
+
const unsubscribe = client.on('agent_stream', (msg) => {
|
|
134
|
+
const message = msg;
|
|
135
|
+
if (message.type !== 'agent_stream')
|
|
136
|
+
return;
|
|
137
|
+
if (message.payload.agentId !== agentId)
|
|
138
|
+
return;
|
|
139
|
+
if (message.payload.event.type === 'timeline') {
|
|
140
|
+
const item = message.payload.event.item;
|
|
141
|
+
// Apply filter
|
|
142
|
+
if (options.filter && !matchesFilter(item, options.filter)) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Print each timeline item as it arrives using the curator format
|
|
146
|
+
const transcript = formatAgentActivityTranscript([item]);
|
|
147
|
+
if (transcript !== NO_ACTIVITY_MESSAGE) {
|
|
148
|
+
console.log(transcript);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
// Wait for interrupt
|
|
153
|
+
await new Promise((resolve) => {
|
|
154
|
+
const cleanup = () => {
|
|
155
|
+
unsubscribe();
|
|
156
|
+
resolve();
|
|
157
|
+
};
|
|
158
|
+
process.on('SIGINT', cleanup);
|
|
159
|
+
process.on('SIGTERM', cleanup);
|
|
160
|
+
});
|
|
161
|
+
await client.close();
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/commands/agent/logs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import type { CommandOptions, ListResult, OutputSchema } from '../../output/index.js';
|
|
3
|
+
/** Agent list item for display */
|
|
4
|
+
export interface AgentListItem {
|
|
5
|
+
id: string;
|
|
6
|
+
shortId: string;
|
|
7
|
+
name: string;
|
|
8
|
+
provider: string;
|
|
9
|
+
thinking: string;
|
|
10
|
+
status: string;
|
|
11
|
+
cwd: string;
|
|
12
|
+
created: string;
|
|
13
|
+
}
|
|
14
|
+
/** Schema for agent ls output */
|
|
15
|
+
export declare const agentLsSchema: OutputSchema<AgentListItem>;
|
|
16
|
+
export type AgentLsResult = ListResult<AgentListItem>;
|
|
17
|
+
export interface AgentLsOptions extends CommandOptions {
|
|
18
|
+
/** -a: Include archived agents */
|
|
19
|
+
all?: boolean;
|
|
20
|
+
/** Legacy flag retained for CLI compatibility */
|
|
21
|
+
global?: boolean;
|
|
22
|
+
/** Filter by specific status */
|
|
23
|
+
status?: string;
|
|
24
|
+
/** Filter by specific cwd */
|
|
25
|
+
cwd?: string;
|
|
26
|
+
/** Filter by labels (key=value format) */
|
|
27
|
+
label?: string[];
|
|
28
|
+
/** Filter by thinking option ID */
|
|
29
|
+
thinking?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Agent ls command semantics:
|
|
33
|
+
* - `junction agent ls` → all non-archived agents
|
|
34
|
+
* - `junction agent ls -a` → include archived agents
|
|
35
|
+
*/
|
|
36
|
+
export declare function runLsCommand(options: AgentLsOptions, _command: Command): Promise<AgentLsResult>;
|
|
37
|
+
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/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,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;CAChB;AA8BD,iCAAiC;AACjC,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,aAAa,CAqBrD,CAAA;AAiBD,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;AAErD,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,kCAAkC;IAClC,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC,CA2HxB"}
|