agent-life-bridge 0.1.1
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/.env.example +20 -0
- package/LICENSE +21 -0
- package/README.md +350 -0
- package/bin/agent-life-bridge.mjs +13 -0
- package/config.example.json +130 -0
- package/config.multi-agent.example.json +88 -0
- package/dist/agents/agent-life-session-map-store.d.ts +21 -0
- package/dist/agents/agent-life-session-map-store.d.ts.map +1 -0
- package/dist/agents/agent-life-session-map-store.js +78 -0
- package/dist/agents/agent-life-session-map-store.js.map +1 -0
- package/dist/agents/agent-resolver.d.ts +12 -0
- package/dist/agents/agent-resolver.d.ts.map +1 -0
- package/dist/agents/agent-resolver.js +114 -0
- package/dist/agents/agent-resolver.js.map +1 -0
- package/dist/agents/agent-router.d.ts +8 -0
- package/dist/agents/agent-router.d.ts.map +1 -0
- package/dist/agents/agent-router.js +72 -0
- package/dist/agents/agent-router.js.map +1 -0
- package/dist/agents/cli-backends.d.ts +25 -0
- package/dist/agents/cli-backends.d.ts.map +1 -0
- package/dist/agents/cli-backends.js +252 -0
- package/dist/agents/cli-backends.js.map +1 -0
- package/dist/agents/cli-output.d.ts +43 -0
- package/dist/agents/cli-output.d.ts.map +1 -0
- package/dist/agents/cli-output.js +352 -0
- package/dist/agents/cli-output.js.map +1 -0
- package/dist/agents/cli-runner.d.ts +32 -0
- package/dist/agents/cli-runner.d.ts.map +1 -0
- package/dist/agents/cli-runner.js +861 -0
- package/dist/agents/cli-runner.js.map +1 -0
- package/dist/agents/cli-session-store.d.ts +53 -0
- package/dist/agents/cli-session-store.d.ts.map +1 -0
- package/dist/agents/cli-session-store.js +263 -0
- package/dist/agents/cli-session-store.js.map +1 -0
- package/dist/agents/codex-app-server-runtime.d.ts +80 -0
- package/dist/agents/codex-app-server-runtime.d.ts.map +1 -0
- package/dist/agents/codex-app-server-runtime.js +1049 -0
- package/dist/agents/codex-app-server-runtime.js.map +1 -0
- package/dist/agents/fch-runtime-context.d.ts +28 -0
- package/dist/agents/fch-runtime-context.d.ts.map +1 -0
- package/dist/agents/fch-runtime-context.js +65 -0
- package/dist/agents/fch-runtime-context.js.map +1 -0
- package/dist/agents/model-selection.d.ts +28 -0
- package/dist/agents/model-selection.d.ts.map +1 -0
- package/dist/agents/model-selection.js +40 -0
- package/dist/agents/model-selection.js.map +1 -0
- package/dist/agents/models-config.d.ts +28 -0
- package/dist/agents/models-config.d.ts.map +1 -0
- package/dist/agents/models-config.js +43 -0
- package/dist/agents/models-config.js.map +1 -0
- package/dist/channels/agent-life.d.ts +9 -0
- package/dist/channels/agent-life.d.ts.map +1 -0
- package/dist/channels/agent-life.js +407 -0
- package/dist/channels/agent-life.js.map +1 -0
- package/dist/channels/command-gating.d.ts +20 -0
- package/dist/channels/command-gating.d.ts.map +1 -0
- package/dist/channels/command-gating.js +43 -0
- package/dist/channels/command-gating.js.map +1 -0
- package/dist/channels/draft-stream-controls.d.ts +21 -0
- package/dist/channels/draft-stream-controls.d.ts.map +1 -0
- package/dist/channels/draft-stream-controls.js +43 -0
- package/dist/channels/draft-stream-controls.js.map +1 -0
- package/dist/channels/draft-stream-loop.d.ts +31 -0
- package/dist/channels/draft-stream-loop.d.ts.map +1 -0
- package/dist/channels/draft-stream-loop.js +60 -0
- package/dist/channels/draft-stream-loop.js.map +1 -0
- package/dist/channels/mention-gating.d.ts +18 -0
- package/dist/channels/mention-gating.d.ts.map +1 -0
- package/dist/channels/mention-gating.js +20 -0
- package/dist/channels/mention-gating.js.map +1 -0
- package/dist/channels/registry.d.ts +5 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +14 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/run-state-machine.d.ts +21 -0
- package/dist/channels/run-state-machine.d.ts.map +1 -0
- package/dist/channels/run-state-machine.js +41 -0
- package/dist/channels/run-state-machine.js.map +1 -0
- package/dist/channels/session-envelope.d.ts +5 -0
- package/dist/channels/session-envelope.d.ts.map +1 -0
- package/dist/channels/session-envelope.js +16 -0
- package/dist/channels/session-envelope.js.map +1 -0
- package/dist/channels/session-id.d.ts +3 -0
- package/dist/channels/session-id.d.ts.map +1 -0
- package/dist/channels/session-id.js +11 -0
- package/dist/channels/session-id.js.map +1 -0
- package/dist/channels/session.d.ts +18 -0
- package/dist/channels/session.d.ts.map +1 -0
- package/dist/channels/session.js +35 -0
- package/dist/channels/session.js.map +1 -0
- package/dist/channels/typing-lifecycle.d.ts +16 -0
- package/dist/channels/typing-lifecycle.d.ts.map +1 -0
- package/dist/channels/typing-lifecycle.js +31 -0
- package/dist/channels/typing-lifecycle.js.map +1 -0
- package/dist/cli/cmd-add-agent.d.ts +19 -0
- package/dist/cli/cmd-add-agent.d.ts.map +1 -0
- package/dist/cli/cmd-add-agent.js +362 -0
- package/dist/cli/cmd-add-agent.js.map +1 -0
- package/dist/cli/cmd-config.d.ts +3 -0
- package/dist/cli/cmd-config.d.ts.map +1 -0
- package/dist/cli/cmd-config.js +16 -0
- package/dist/cli/cmd-config.js.map +1 -0
- package/dist/cli/cmd-doctor.d.ts +3 -0
- package/dist/cli/cmd-doctor.d.ts.map +1 -0
- package/dist/cli/cmd-doctor.js +127 -0
- package/dist/cli/cmd-doctor.js.map +1 -0
- package/dist/cli/cmd-logs.d.ts +3 -0
- package/dist/cli/cmd-logs.d.ts.map +1 -0
- package/dist/cli/cmd-logs.js +26 -0
- package/dist/cli/cmd-logs.js.map +1 -0
- package/dist/cli/cmd-onboard.d.ts +5 -0
- package/dist/cli/cmd-onboard.d.ts.map +1 -0
- package/dist/cli/cmd-onboard.js +53 -0
- package/dist/cli/cmd-onboard.js.map +1 -0
- package/dist/cli/cmd-restart.d.ts +3 -0
- package/dist/cli/cmd-restart.d.ts.map +1 -0
- package/dist/cli/cmd-restart.js +22 -0
- package/dist/cli/cmd-restart.js.map +1 -0
- package/dist/cli/cmd-start.d.ts +19 -0
- package/dist/cli/cmd-start.d.ts.map +1 -0
- package/dist/cli/cmd-start.js +783 -0
- package/dist/cli/cmd-start.js.map +1 -0
- package/dist/cli/cmd-status.d.ts +3 -0
- package/dist/cli/cmd-status.d.ts.map +1 -0
- package/dist/cli/cmd-status.js +16 -0
- package/dist/cli/cmd-status.js.map +1 -0
- package/dist/cli/cmd-stop.d.ts +9 -0
- package/dist/cli/cmd-stop.d.ts.map +1 -0
- package/dist/cli/cmd-stop.js +59 -0
- package/dist/cli/cmd-stop.js.map +1 -0
- package/dist/cli/cmd-update.d.ts +3 -0
- package/dist/cli/cmd-update.d.ts.map +1 -0
- package/dist/cli/cmd-update.js +127 -0
- package/dist/cli/cmd-update.js.map +1 -0
- package/dist/cli/cmd-version.d.ts +4 -0
- package/dist/cli/cmd-version.d.ts.map +1 -0
- package/dist/cli/cmd-version.js +12 -0
- package/dist/cli/cmd-version.js.map +1 -0
- package/dist/cli/pid-file.d.ts +23 -0
- package/dist/cli/pid-file.d.ts.map +1 -0
- package/dist/cli/pid-file.js +136 -0
- package/dist/cli/pid-file.js.map +1 -0
- package/dist/cli/run-main.d.ts +16 -0
- package/dist/cli/run-main.d.ts.map +1 -0
- package/dist/cli/run-main.js +114 -0
- package/dist/cli/run-main.js.map +1 -0
- package/dist/cli/update-check.d.ts +15 -0
- package/dist/cli/update-check.d.ts.map +1 -0
- package/dist/cli/update-check.js +187 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/commands/prefix-router.d.ts +17 -0
- package/dist/commands/prefix-router.d.ts.map +1 -0
- package/dist/commands/prefix-router.js +79 -0
- package/dist/commands/prefix-router.js.map +1 -0
- package/dist/config/agent-dirs.d.ts +24 -0
- package/dist/config/agent-dirs.d.ts.map +1 -0
- package/dist/config/agent-dirs.js +71 -0
- package/dist/config/agent-dirs.js.map +1 -0
- package/dist/config/config.d.ts +4 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +42 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/default-config.d.ts +9 -0
- package/dist/config/default-config.d.ts.map +1 -0
- package/dist/config/default-config.js +94 -0
- package/dist/config/default-config.js.map +1 -0
- package/dist/config/env-vars.d.ts +15 -0
- package/dist/config/env-vars.d.ts.map +1 -0
- package/dist/config/env-vars.js +16 -0
- package/dist/config/env-vars.js.map +1 -0
- package/dist/config/merge-config.d.ts +7 -0
- package/dist/config/merge-config.d.ts.map +1 -0
- package/dist/config/merge-config.js +45 -0
- package/dist/config/merge-config.js.map +1 -0
- package/dist/config/paths.d.ts +25 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +31 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/zod-schema.d.ts +3114 -0
- package/dist/config/zod-schema.d.ts.map +1 -0
- package/dist/config/zod-schema.js +217 -0
- package/dist/config/zod-schema.js.map +1 -0
- package/dist/entry.d.ts +3 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +70 -0
- package/dist/entry.js.map +1 -0
- package/dist/logger.d.ts +5 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +42 -0
- package/dist/logger.js.map +1 -0
- package/dist/types/index.d.ts +215 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { createInterface } from 'node:readline/promises';
|
|
4
|
+
import { stdin, stdout } from 'node:process';
|
|
5
|
+
import { ensureDataDirs } from '../config/agent-dirs.js';
|
|
6
|
+
import { ONBOARD_MODEL_CHOICES } from '../config/default-config.js';
|
|
7
|
+
import { resolveConfigPath } from '../config/config.js';
|
|
8
|
+
import { DATA_DIR } from '../config/paths.js';
|
|
9
|
+
import { AppConfigSchema, AGENT_LIFE_CHANNEL_ID, normalizeAgentLifeChannelConfigs, toPersistedAgentLifeChannelConfig, } from '../config/zod-schema.js';
|
|
10
|
+
const AGENT_ID_REGEX = /^[a-z0-9][a-z0-9_-]{0,63}$/;
|
|
11
|
+
function createConfigBackupPath(configPath) {
|
|
12
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
13
|
+
return `${configPath}.bak.${timestamp}`;
|
|
14
|
+
}
|
|
15
|
+
function resolveExistingConfigPath(explicitConfigPath) {
|
|
16
|
+
const configPath = resolveConfigPath(explicitConfigPath);
|
|
17
|
+
return configPath ? resolve(configPath) : null;
|
|
18
|
+
}
|
|
19
|
+
function readConfigForMutation(explicitConfigPath) {
|
|
20
|
+
const configPath = resolveExistingConfigPath(explicitConfigPath);
|
|
21
|
+
if (!configPath) {
|
|
22
|
+
throw new Error('No config file found. Run `alb onboard` first or pass `-c <path>`.');
|
|
23
|
+
}
|
|
24
|
+
const raw = JSON.parse(readFileSync(configPath, 'utf-8').replace(/^\uFEFF/, ''));
|
|
25
|
+
return {
|
|
26
|
+
path: configPath,
|
|
27
|
+
config: AppConfigSchema.parse(raw),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function buildAgentList(config) {
|
|
31
|
+
const existing = config.agents.list;
|
|
32
|
+
if (existing && existing.length > 0) {
|
|
33
|
+
return [...existing];
|
|
34
|
+
}
|
|
35
|
+
return [{ id: 'default', default: true }];
|
|
36
|
+
}
|
|
37
|
+
function isCatchAllBinding(binding) {
|
|
38
|
+
return binding.match.channel === '*'
|
|
39
|
+
&& binding.match.accountId === undefined
|
|
40
|
+
&& binding.match.peer === undefined
|
|
41
|
+
&& binding.match.userId === undefined;
|
|
42
|
+
}
|
|
43
|
+
function getAgentLifeBindingOwners(bindings) {
|
|
44
|
+
const owners = new Map();
|
|
45
|
+
for (const binding of bindings ?? []) {
|
|
46
|
+
if (binding.match.channel !== 'agent-life' || !binding.match.accountId) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
owners.set(binding.match.accountId, binding.agentId);
|
|
50
|
+
}
|
|
51
|
+
return owners;
|
|
52
|
+
}
|
|
53
|
+
export function addAgentToConfig(config, input) {
|
|
54
|
+
const list = buildAgentList(config);
|
|
55
|
+
if (list.some(agent => agent.id === input.id)) {
|
|
56
|
+
throw new Error(`Agent "${input.id}" already exists.`);
|
|
57
|
+
}
|
|
58
|
+
const nextList = list.map(agent => (input.default ? { ...agent, default: false } : { ...agent }));
|
|
59
|
+
const agent = {
|
|
60
|
+
id: input.id,
|
|
61
|
+
...(input.default ? { default: true } : {}),
|
|
62
|
+
...(input.name ? { name: input.name } : {}),
|
|
63
|
+
...(input.model ? { model: input.model } : {}),
|
|
64
|
+
...(input.workspace ? { workspace: input.workspace } : {}),
|
|
65
|
+
...(input.cliSessionId ? { cliSessionId: input.cliSessionId } : {}),
|
|
66
|
+
};
|
|
67
|
+
nextList.push(agent);
|
|
68
|
+
const existingAccountIds = new Set(normalizeAgentLifeChannelConfigs(config.channels['agent-life']).map(account => account.accountId));
|
|
69
|
+
let agentLife = toPersistedAgentLifeChannelConfig(config.channels['agent-life']);
|
|
70
|
+
let bindingAccountId = input.accountId;
|
|
71
|
+
if (input.account) {
|
|
72
|
+
if (existingAccountIds.has(input.account.id)) {
|
|
73
|
+
throw new Error(`agent-life account "${input.account.id}" already exists.`);
|
|
74
|
+
}
|
|
75
|
+
agentLife = {
|
|
76
|
+
...agentLife,
|
|
77
|
+
accounts: {
|
|
78
|
+
...(agentLife.accounts ?? {}),
|
|
79
|
+
[input.account.id]: {
|
|
80
|
+
gateway_url: input.account.gatewayUrl,
|
|
81
|
+
bot_token: input.account.botToken,
|
|
82
|
+
poll_timeout: agentLife.poll_timeout,
|
|
83
|
+
retry_interval: agentLife.retry_interval,
|
|
84
|
+
max_retry_interval: agentLife.max_retry_interval,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
bindingAccountId = input.account.id;
|
|
89
|
+
existingAccountIds.add(input.account.id);
|
|
90
|
+
}
|
|
91
|
+
let bindings = [...(config.bindings ?? [])];
|
|
92
|
+
if (bindingAccountId) {
|
|
93
|
+
if (!existingAccountIds.has(bindingAccountId)) {
|
|
94
|
+
throw new Error(`Unknown agent-life account "${bindingAccountId}".`);
|
|
95
|
+
}
|
|
96
|
+
const conflict = bindings.find(binding => binding.match.channel === 'agent-life' && binding.match.accountId === bindingAccountId);
|
|
97
|
+
if (conflict) {
|
|
98
|
+
throw new Error(`agent-life account "${bindingAccountId}" is already bound to agent "${conflict.agentId}".`);
|
|
99
|
+
}
|
|
100
|
+
bindings.push({
|
|
101
|
+
agentId: input.id,
|
|
102
|
+
match: {
|
|
103
|
+
channel: 'agent-life',
|
|
104
|
+
accountId: bindingAccountId,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (input.default) {
|
|
109
|
+
bindings = bindings.map(binding => (isCatchAllBinding(binding)
|
|
110
|
+
? { ...binding, agentId: input.id }
|
|
111
|
+
: binding));
|
|
112
|
+
}
|
|
113
|
+
return AppConfigSchema.parse({
|
|
114
|
+
...config,
|
|
115
|
+
channels: {
|
|
116
|
+
...config.channels,
|
|
117
|
+
[AGENT_LIFE_CHANNEL_ID]: agentLife,
|
|
118
|
+
},
|
|
119
|
+
agents: {
|
|
120
|
+
...config.agents,
|
|
121
|
+
list: nextList,
|
|
122
|
+
},
|
|
123
|
+
...(bindings.length > 0 ? { bindings } : {}),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function uniqueModelChoices(config) {
|
|
127
|
+
const models = new Set([
|
|
128
|
+
config.agents.defaults.model.primary,
|
|
129
|
+
...(config.agents.defaults.model.fallbacks ?? []),
|
|
130
|
+
...ONBOARD_MODEL_CHOICES,
|
|
131
|
+
]);
|
|
132
|
+
for (const agent of config.agents.list ?? []) {
|
|
133
|
+
if (typeof agent.model === 'string') {
|
|
134
|
+
models.add(agent.model);
|
|
135
|
+
}
|
|
136
|
+
else if (agent.model?.primary) {
|
|
137
|
+
models.add(agent.model.primary);
|
|
138
|
+
for (const fallback of agent.model.fallbacks ?? []) {
|
|
139
|
+
models.add(fallback);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return [...models];
|
|
144
|
+
}
|
|
145
|
+
async function askRequired(rl, prompt, defaultValue) {
|
|
146
|
+
while (true) {
|
|
147
|
+
const suffix = defaultValue ? ` (default: ${defaultValue})` : '';
|
|
148
|
+
const answer = (await rl.question(`${prompt}${suffix}: `)).trim();
|
|
149
|
+
const value = answer || defaultValue || '';
|
|
150
|
+
if (value) {
|
|
151
|
+
return value;
|
|
152
|
+
}
|
|
153
|
+
console.log('This field is required.');
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async function askAgentId(rl, existingIds, defaultValue) {
|
|
157
|
+
while (true) {
|
|
158
|
+
const id = await askRequired(rl, 'Agent ID', defaultValue);
|
|
159
|
+
if (!AGENT_ID_REGEX.test(id)) {
|
|
160
|
+
console.log('Agent ID must match ^[a-z0-9][a-z0-9_-]{0,63}$.');
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (existingIds.has(id)) {
|
|
164
|
+
console.log(`Agent "${id}" already exists.`);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
return id;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async function askOptional(rl, prompt, defaultValue) {
|
|
171
|
+
const suffix = defaultValue ? ` (default: ${defaultValue})` : ' (optional)';
|
|
172
|
+
const answer = (await rl.question(`${prompt}${suffix}: `)).trim();
|
|
173
|
+
const value = answer || defaultValue || '';
|
|
174
|
+
return value ? value : undefined;
|
|
175
|
+
}
|
|
176
|
+
async function askOptionalWhenEnabled(rl, enablePrompt, fieldPrompt, options) {
|
|
177
|
+
const enabled = await askYesNo(rl, enablePrompt, options?.defaultEnabled ?? false);
|
|
178
|
+
if (!enabled) {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
if (options?.requiredWhenEnabled) {
|
|
182
|
+
return askRequired(rl, fieldPrompt, options.defaultValue);
|
|
183
|
+
}
|
|
184
|
+
return askOptional(rl, fieldPrompt, options?.defaultValue);
|
|
185
|
+
}
|
|
186
|
+
async function askYesNo(rl, prompt, defaultValue = false) {
|
|
187
|
+
const hint = defaultValue ? '[Y/n]' : '[y/N]';
|
|
188
|
+
while (true) {
|
|
189
|
+
const answer = (await rl.question(`${prompt} ${hint} `)).trim().toLowerCase();
|
|
190
|
+
if (!answer)
|
|
191
|
+
return defaultValue;
|
|
192
|
+
if (answer === 'y' || answer === 'yes')
|
|
193
|
+
return true;
|
|
194
|
+
if (answer === 'n' || answer === 'no')
|
|
195
|
+
return false;
|
|
196
|
+
console.log('Please answer y or n.');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function askModel(rl, config, defaultValue) {
|
|
200
|
+
const choices = uniqueModelChoices(config);
|
|
201
|
+
console.log('\nAvailable models:');
|
|
202
|
+
choices.forEach((model, index) => console.log(` ${index + 1}. ${model}`));
|
|
203
|
+
while (true) {
|
|
204
|
+
const raw = await askRequired(rl, 'Model number or model ref', defaultValue ?? config.agents.defaults.model.primary);
|
|
205
|
+
const idx = Number.parseInt(raw, 10);
|
|
206
|
+
if (Number.isInteger(idx) && idx >= 1 && idx <= choices.length) {
|
|
207
|
+
return choices[idx - 1];
|
|
208
|
+
}
|
|
209
|
+
if (raw.includes('/')) {
|
|
210
|
+
return raw;
|
|
211
|
+
}
|
|
212
|
+
console.log('Enter a list number or a model ref like qwen-cli/qwen3-coder-plus.');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
async function askAccountId(rl, accounts, defaultValue) {
|
|
216
|
+
if (accounts.length === 0) {
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
console.log('\nAvailable agent-life accounts:');
|
|
220
|
+
accounts.forEach((accountId, index) => console.log(` ${index + 1}. ${accountId}`));
|
|
221
|
+
console.log('Leave blank to skip binding for now.');
|
|
222
|
+
while (true) {
|
|
223
|
+
const answer = (await rl.question(`Bind to agent-life account (number or id${defaultValue ? `, default: ${defaultValue}` : ''}): `)).trim();
|
|
224
|
+
const value = answer || defaultValue || '';
|
|
225
|
+
if (!value) {
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
228
|
+
const idx = Number.parseInt(value, 10);
|
|
229
|
+
if (Number.isInteger(idx) && idx >= 1 && idx <= accounts.length) {
|
|
230
|
+
return accounts[idx - 1];
|
|
231
|
+
}
|
|
232
|
+
if (accounts.includes(value)) {
|
|
233
|
+
return value;
|
|
234
|
+
}
|
|
235
|
+
console.log(`Unknown account "${value}". Available accounts: ${accounts.join(', ')}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
async function askNewAccountId(rl, existingAccountIds, defaultValue) {
|
|
239
|
+
while (true) {
|
|
240
|
+
const accountId = await askRequired(rl, 'New agent-life account ID', defaultValue);
|
|
241
|
+
if (existingAccountIds.has(accountId)) {
|
|
242
|
+
console.log(`agent-life account "${accountId}" already exists.`);
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
return accountId;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
async function askAccountSelection(rl, config, defaults = {}) {
|
|
249
|
+
const normalizedAccounts = normalizeAgentLifeChannelConfigs(config.channels['agent-life']);
|
|
250
|
+
const bindingOwners = getAgentLifeBindingOwners(config.bindings);
|
|
251
|
+
const availableAccounts = normalizedAccounts.filter(account => !bindingOwners.has(account.accountId));
|
|
252
|
+
const unavailableAccounts = normalizedAccounts.filter(account => bindingOwners.has(account.accountId));
|
|
253
|
+
const existingAccountIds = new Set(normalizedAccounts.map(account => account.accountId));
|
|
254
|
+
if (availableAccounts.length > 0) {
|
|
255
|
+
console.log('\nAvailable agent-life accounts:');
|
|
256
|
+
availableAccounts.forEach((account, index) => console.log(` ${index + 1}. ${account.accountId}`));
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
console.log('\nNo available existing agent-life accounts for binding.');
|
|
260
|
+
}
|
|
261
|
+
if (unavailableAccounts.length > 0) {
|
|
262
|
+
console.log('\nAlready bound agent-life accounts:');
|
|
263
|
+
unavailableAccounts.forEach(account => {
|
|
264
|
+
console.log(` - ${account.accountId} (bound to ${bindingOwners.get(account.accountId)})`);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
if (defaults.existingAccountId && bindingOwners.has(defaults.existingAccountId)) {
|
|
268
|
+
console.log(`agent-life account "${defaults.existingAccountId}" is already bound to agent "${bindingOwners.get(defaults.existingAccountId)}". You can create a new account instead.`);
|
|
269
|
+
}
|
|
270
|
+
if (!await askYesNo(rl, 'Bind this agent to a agent-life account?', availableAccounts.length > 0 || Boolean(defaults.newAccountId))) {
|
|
271
|
+
return { type: 'none' };
|
|
272
|
+
}
|
|
273
|
+
if (availableAccounts.length > 0 && !defaults.newAccountId) {
|
|
274
|
+
const useExisting = await askYesNo(rl, 'Use an existing agent-life account?', true);
|
|
275
|
+
if (useExisting) {
|
|
276
|
+
const defaultExistingAccountId = (defaults.existingAccountId && availableAccounts.some(account => account.accountId === defaults.existingAccountId)
|
|
277
|
+
? defaults.existingAccountId
|
|
278
|
+
: undefined);
|
|
279
|
+
const accountId = await askAccountId(rl, availableAccounts.map(account => account.accountId), defaultExistingAccountId);
|
|
280
|
+
if (!accountId) {
|
|
281
|
+
return { type: 'none' };
|
|
282
|
+
}
|
|
283
|
+
return { type: 'existing', accountId };
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
const accountId = await askNewAccountId(rl, existingAccountIds, defaults.newAccountId);
|
|
287
|
+
const gatewayUrl = await askRequired(rl, 'Agent Life gateway URL', defaults.gatewayUrl ?? availableAccounts[0]?.config.gateway_url ?? normalizedAccounts[0]?.config.gateway_url ?? config.channels['agent-life'].gateway_url);
|
|
288
|
+
const botToken = await askRequired(rl, 'Bot token', defaults.botToken);
|
|
289
|
+
return {
|
|
290
|
+
type: 'new',
|
|
291
|
+
account: {
|
|
292
|
+
id: accountId,
|
|
293
|
+
gatewayUrl,
|
|
294
|
+
botToken,
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
export async function cmdAddAgent(args) {
|
|
299
|
+
console.log('alb - Add Agent\n');
|
|
300
|
+
if (!existsSync(DATA_DIR)) {
|
|
301
|
+
mkdirSync(DATA_DIR, { recursive: true });
|
|
302
|
+
}
|
|
303
|
+
ensureDataDirs();
|
|
304
|
+
const { path: configPath, config } = readConfigForMutation(args.config);
|
|
305
|
+
const existingIds = new Set(buildAgentList(config).map(agent => agent.id));
|
|
306
|
+
if (args.accountId && args.createAccount) {
|
|
307
|
+
throw new Error('Use either --account-id or --create-account, not both.');
|
|
308
|
+
}
|
|
309
|
+
if (!args.createAccount && (args.accountGatewayUrl || args.accountBotToken)) {
|
|
310
|
+
throw new Error('--account-gateway-url and --account-bot-token require --create-account.');
|
|
311
|
+
}
|
|
312
|
+
const [restId, restModel, restAccountId, restWorkspace] = args.rest;
|
|
313
|
+
const rl = createInterface({ input: stdin, output: stdout });
|
|
314
|
+
try {
|
|
315
|
+
const id = await askAgentId(rl, existingIds, restId);
|
|
316
|
+
const name = await askOptional(rl, 'Display name');
|
|
317
|
+
const model = await askModel(rl, config, restModel ?? config.agents.defaults.model.primary);
|
|
318
|
+
const workspace = await askOptionalWhenEnabled(rl, 'Configure workspace path?', 'Workspace path', {
|
|
319
|
+
defaultEnabled: Boolean(restWorkspace),
|
|
320
|
+
defaultValue: restWorkspace ?? process.cwd(),
|
|
321
|
+
requiredWhenEnabled: true,
|
|
322
|
+
});
|
|
323
|
+
const cliSessionId = await askOptionalWhenEnabled(rl, 'Configure CLI session ID?', 'CLI session ID', {
|
|
324
|
+
defaultEnabled: false,
|
|
325
|
+
});
|
|
326
|
+
const accountSelection = await askAccountSelection(rl, config, {
|
|
327
|
+
existingAccountId: args.accountId ?? restAccountId,
|
|
328
|
+
newAccountId: args.createAccount,
|
|
329
|
+
gatewayUrl: args.accountGatewayUrl,
|
|
330
|
+
botToken: args.accountBotToken,
|
|
331
|
+
});
|
|
332
|
+
const nextConfig = addAgentToConfig(config, {
|
|
333
|
+
id,
|
|
334
|
+
...(name ? { name } : {}),
|
|
335
|
+
...(model ? { model } : {}),
|
|
336
|
+
...(workspace ? { workspace } : {}),
|
|
337
|
+
...(cliSessionId ? { cliSessionId } : {}),
|
|
338
|
+
...(accountSelection.type === 'existing' ? { accountId: accountSelection.accountId } : {}),
|
|
339
|
+
...(accountSelection.type === 'new' ? { account: accountSelection.account } : {}),
|
|
340
|
+
});
|
|
341
|
+
const backupPath = createConfigBackupPath(configPath);
|
|
342
|
+
copyFileSync(configPath, backupPath);
|
|
343
|
+
writeFileSync(configPath, JSON.stringify(nextConfig, null, 2) + '\n', 'utf-8');
|
|
344
|
+
console.log(`\nAdded agent "${id}" to ${configPath}`);
|
|
345
|
+
console.log(`Backup saved to ${backupPath}`);
|
|
346
|
+
if (accountSelection.type === 'existing') {
|
|
347
|
+
console.log(`Bound agent-life account "${accountSelection.accountId}" -> "${id}"`);
|
|
348
|
+
}
|
|
349
|
+
else if (accountSelection.type === 'new') {
|
|
350
|
+
console.log(`Created agent-life account "${accountSelection.account.id}"`);
|
|
351
|
+
console.log(`Bound agent-life account "${accountSelection.account.id}" -> "${id}"`);
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
console.log('No binding added. Configure `bindings` manually if this agent should receive traffic.');
|
|
355
|
+
}
|
|
356
|
+
console.log('\nRun `alb start` to reload the updated config.');
|
|
357
|
+
}
|
|
358
|
+
finally {
|
|
359
|
+
rl.close();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=cmd-add-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-add-agent.js","sourceRoot":"","sources":["../../src/cli/cmd-add-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-config.d.ts","sourceRoot":"","sources":["../../src/cli/cmd-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,wBAAsB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB5D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { DATA_CONFIG_PATH } from '../config/paths.js';
|
|
3
|
+
import { resolveConfigPath } from '../config/config.js';
|
|
4
|
+
export async function cmdConfig(args) {
|
|
5
|
+
const configPath = resolveConfigPath(args.config) ?? (args.config ?? DATA_CONFIG_PATH);
|
|
6
|
+
if (!existsSync(configPath)) {
|
|
7
|
+
console.log(`No config file found at ${configPath}`);
|
|
8
|
+
console.log('Run `alb onboard` to create one.');
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
console.log(`--- ${configPath} ---`);
|
|
12
|
+
const content = readFileSync(configPath, 'utf-8');
|
|
13
|
+
const redacted = content.replace(/("bot_token"\s*:\s*)"[^"]*"/g, '$1"***REDACTED***"');
|
|
14
|
+
console.log(redacted);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=cmd-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-config.js","sourceRoot":"","sources":["../../src/cli/cmd-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAa;IAC3C,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAA;IAEtF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAA;QACpD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAC/C,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,MAAM,CAAC,CAAA;IACpC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAC9B,8BAA8B,EAC9B,oBAAoB,CACrB,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-doctor.d.ts","sourceRoot":"","sources":["../../src/cli/cmd-doctor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAoC5C,wBAAsB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF7D"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { execFileSync } from 'node:child_process';
|
|
3
|
+
import { basename } from 'node:path';
|
|
4
|
+
import { CliSessionStore } from '../agents/cli-session-store.js';
|
|
5
|
+
import { resolveLogFilePath } from '../logger.js';
|
|
6
|
+
import { loadConfig, resolveConfigPath } from '../config/config.js';
|
|
7
|
+
import { DATA_DIR } from '../config/paths.js';
|
|
8
|
+
import { normalizeAgentLifeChannelConfigs } from '../config/zod-schema.js';
|
|
9
|
+
function check(label, fn) {
|
|
10
|
+
try {
|
|
11
|
+
const result = fn();
|
|
12
|
+
if (typeof result === 'string') {
|
|
13
|
+
console.log(` OK ${label}: ${result}`);
|
|
14
|
+
}
|
|
15
|
+
else if (result) {
|
|
16
|
+
console.log(` OK ${label}`);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.log(` FAIL ${label}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
console.log(` FAIL ${label}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function whichCommand(cmd) {
|
|
27
|
+
try {
|
|
28
|
+
const locator = process.platform === 'win32' ? 'where.exe' : 'which';
|
|
29
|
+
return execFileSync(locator, [cmd], { encoding: 'utf-8' })
|
|
30
|
+
.trim()
|
|
31
|
+
.split(/\r?\n/g)[0];
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function getVersion(cmd, versionFlag = '--version') {
|
|
38
|
+
try {
|
|
39
|
+
return execFileSync(cmd, [versionFlag], { encoding: 'utf-8', timeout: 5000 }).trim().split('\n')[0];
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function cmdDoctor(_args) {
|
|
46
|
+
console.log('alb doctor - Environment Diagnostics\n');
|
|
47
|
+
console.log('[Data Directory]');
|
|
48
|
+
check('Data dir exists', () => existsSync(DATA_DIR));
|
|
49
|
+
check('Config file exists', () => {
|
|
50
|
+
const configPath = resolveConfigPath();
|
|
51
|
+
return configPath ? configPath : false;
|
|
52
|
+
});
|
|
53
|
+
console.log('\n[Runtime]');
|
|
54
|
+
check('Node.js', () => `${process.version}`);
|
|
55
|
+
check('Node.js >= 22', () => {
|
|
56
|
+
const major = parseInt(process.version.slice(1), 10);
|
|
57
|
+
return major >= 22 ? `v${major} OK` : `v${major} - requires >= 22`;
|
|
58
|
+
});
|
|
59
|
+
console.log('\n[Agent CLI Tools]');
|
|
60
|
+
check('claude', () => {
|
|
61
|
+
const path = whichCommand('claude');
|
|
62
|
+
if (!path)
|
|
63
|
+
return false;
|
|
64
|
+
const ver = getVersion('claude');
|
|
65
|
+
return ver ?? path;
|
|
66
|
+
});
|
|
67
|
+
check('codex', () => {
|
|
68
|
+
const path = whichCommand('codex');
|
|
69
|
+
if (!path)
|
|
70
|
+
return false;
|
|
71
|
+
const ver = getVersion('codex');
|
|
72
|
+
return ver ?? path;
|
|
73
|
+
});
|
|
74
|
+
check('qwen', () => {
|
|
75
|
+
const path = whichCommand('qwen');
|
|
76
|
+
if (!path)
|
|
77
|
+
return false;
|
|
78
|
+
const ver = getVersion('qwen');
|
|
79
|
+
return ver ?? path;
|
|
80
|
+
});
|
|
81
|
+
console.log('\n[API Keys]');
|
|
82
|
+
check('ANTHROPIC_API_KEY', () => !!process.env.ANTHROPIC_API_KEY);
|
|
83
|
+
check('OPENAI_API_KEY', () => !!process.env.OPENAI_API_KEY);
|
|
84
|
+
console.log('\n[Network]');
|
|
85
|
+
try {
|
|
86
|
+
const config = loadConfig();
|
|
87
|
+
const agentLifeAccounts = normalizeAgentLifeChannelConfigs(config.channels['agent-life']);
|
|
88
|
+
for (const account of agentLifeAccounts) {
|
|
89
|
+
check(`Gateway reachable (${account.accountId}: ${account.config.gateway_url})`, () => {
|
|
90
|
+
return `configured - run 'alb start' to verify connectivity`;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
check('Gateway config', () => 'no config found - run `alb onboard` first');
|
|
96
|
+
}
|
|
97
|
+
// 6. Session store
|
|
98
|
+
console.log('\n[Session Store]');
|
|
99
|
+
const sessionStore = new CliSessionStore();
|
|
100
|
+
const sessions = await sessionStore.list();
|
|
101
|
+
const incompleteCodexSessions = await sessionStore.findIncompleteSessions('codex-cli');
|
|
102
|
+
check('Persisted agent-life sessions', () => `${Object.keys(sessions).length}`);
|
|
103
|
+
check('Codex sessions missing thread_id', () => {
|
|
104
|
+
if (incompleteCodexSessions.length === 0) {
|
|
105
|
+
return '0';
|
|
106
|
+
}
|
|
107
|
+
return `${incompleteCodexSessions.length} session(s)`;
|
|
108
|
+
});
|
|
109
|
+
if (incompleteCodexSessions.length > 0) {
|
|
110
|
+
console.log(' ! Incomplete session keys:');
|
|
111
|
+
for (const entry of incompleteCodexSessions.slice(0, 10)) {
|
|
112
|
+
console.log(` - ${entry.sessionKey}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// 7. Logs
|
|
116
|
+
console.log('\n[Logs]');
|
|
117
|
+
const logPath = resolveLogFilePath();
|
|
118
|
+
check('Daily log file', () => existsSync(logPath) ? basename(logPath) : `${basename(logPath)} (will be created on start)`);
|
|
119
|
+
console.log(' i Use `alb logs` to inspect the latest log file.');
|
|
120
|
+
console.log(' i Compare direct CLI and bridge latency with:');
|
|
121
|
+
console.log(' codex exec --json "reply with exactly OK"');
|
|
122
|
+
console.log(' codex exec resume <thread_id> --json "reply with exactly AGAIN"');
|
|
123
|
+
console.log(' codex app-server --listen stdio://');
|
|
124
|
+
console.log(' qwen -p "reply with exactly OK" --output-format json');
|
|
125
|
+
console.log();
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=cmd-doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-doctor.js","sourceRoot":"","sources":["../../src/cli/cmd-doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-logs.d.ts","sourceRoot":"","sources":["../../src/cli/cmd-logs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,wBAAsB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { DATA_LOGS_DIR } from '../config/paths.js';
|
|
4
|
+
export async function cmdLogs(_args) {
|
|
5
|
+
if (!existsSync(DATA_LOGS_DIR)) {
|
|
6
|
+
console.log(`No logs directory found at ${DATA_LOGS_DIR}`);
|
|
7
|
+
console.log('Start alb once to create the daily log file.');
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const files = readdirSync(DATA_LOGS_DIR)
|
|
11
|
+
.filter(f => f.endsWith('.log'))
|
|
12
|
+
.sort();
|
|
13
|
+
if (files.length === 0) {
|
|
14
|
+
console.log('No log files found.');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Show the most recent log file (tail)
|
|
18
|
+
const latest = files[files.length - 1];
|
|
19
|
+
const logPath = join(DATA_LOGS_DIR, latest);
|
|
20
|
+
console.log(`--- ${logPath} ---`);
|
|
21
|
+
const content = readFileSync(logPath, 'utf-8');
|
|
22
|
+
const lines = content.split('\n');
|
|
23
|
+
const tail = lines.slice(-100); // last 100 lines
|
|
24
|
+
console.log(tail.join('\n'));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=cmd-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-logs.js","sourceRoot":"","sources":["../../src/cli/cmd-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAc;IAC1C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,8BAA8B,aAAa,EAAE,CAAC,CAAA;QAC1D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;QAC3D,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC/B,IAAI,EAAE,CAAA;IAET,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;QAClC,OAAM;IACR,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,MAAM,CAAC,CAAA;IAEjC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,iBAAiB;IAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CliArgs } from './run-main.js';
|
|
2
|
+
export declare const DEFAULT_GATEWAY_URL = "https://www.m2a.chat/gateway/api";
|
|
3
|
+
export declare function resolveGatewayUrlInput(input: string): string;
|
|
4
|
+
export declare function cmdOnboard(_args: CliArgs): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=cmd-onboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmd-onboard.d.ts","sourceRoot":"","sources":["../../src/cli/cmd-onboard.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,eAAO,MAAM,mBAAmB,qCAAqC,CAAA;AAErE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAOD,wBAAsB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C9D"}
|