agents-bridge 0.1.0
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 +259 -0
- package/bin/agent-bridge.mjs +12 -0
- package/config.example.json +117 -0
- package/dist/agents/cli-backends.d.ts +32 -0
- package/dist/agents/cli-backends.d.ts.map +1 -0
- package/dist/agents/cli-backends.js +217 -0
- package/dist/agents/cli-backends.js.map +1 -0
- package/dist/agents/cli-runner.d.ts.map +1 -0
- package/dist/agents/cli-runner.js +524 -0
- package/dist/agents/cli-runner.js.map +1 -0
- package/dist/agents/cli-session-store.d.ts.map +1 -0
- package/dist/agents/cli-session-store.js +127 -0
- package/dist/agents/cli-session-store.js.map +1 -0
- package/dist/agents/model-selection.d.ts +27 -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/botlink.d.ts.map +1 -0
- package/dist/channels/botlink.js +320 -0
- package/dist/channels/botlink.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 +13 -0
- package/dist/channels/session-envelope.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-config.d.ts +3 -0
- package/dist/cli/cmd-config.d.ts.map +1 -0
- package/dist/cli/cmd-config.js +15 -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 +80 -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 +3 -0
- package/dist/cli/cmd-onboard.d.ts.map +1 -0
- package/dist/cli/cmd-onboard.js +103 -0
- package/dist/cli/cmd-onboard.js.map +1 -0
- package/dist/cli/cmd-start.d.ts +3 -0
- package/dist/cli/cmd-start.d.ts.map +1 -0
- package/dist/cli/cmd-start.js +155 -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 +3 -0
- package/dist/cli/cmd-stop.d.ts.map +1 -0
- package/dist/cli/cmd-stop.js +30 -0
- package/dist/cli/cmd-stop.js.map +1 -0
- package/dist/cli/pid-file.d.ts +7 -0
- package/dist/cli/pid-file.d.ts.map +1 -0
- package/dist/cli/pid-file.js +51 -0
- package/dist/cli/pid-file.js.map +1 -0
- package/dist/cli/run-main.d.ts +11 -0
- package/dist/cli/run-main.d.ts.map +1 -0
- package/dist/cli/run-main.js +64 -0
- package/dist/cli/run-main.js.map +1 -0
- package/dist/config/agent-dirs.d.ts +12 -0
- package/dist/config/agent-dirs.d.ts.map +1 -0
- package/dist/config/agent-dirs.js +30 -0
- package/dist/config/agent-dirs.js.map +1 -0
- package/dist/config/config.d.ts +3 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +40 -0
- package/dist/config/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 +32 -0
- package/dist/config/merge-config.js.map +1 -0
- package/dist/config/paths.d.ts +19 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +22 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/zod-schema.d.ts +1192 -0
- package/dist/config/zod-schema.d.ts.map +1 -0
- package/dist/config/zod-schema.js +107 -0
- package/dist/config/zod-schema.js.map +1 -0
- package/dist/console-encoding.d.ts +6 -0
- package/dist/console-encoding.d.ts.map +1 -0
- package/dist/console-encoding.js +35 -0
- package/dist/console-encoding.js.map +1 -0
- package/dist/entry.d.ts +3 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +47 -0
- package/dist/entry.js.map +1 -0
- package/dist/logger.d.ts +4 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +19 -0
- package/dist/logger.js.map +1 -0
- package/dist/types/index.d.ts +67 -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 +55 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { parseArgs } from 'node:util';
|
|
2
|
+
export function parseCliArgs(argv = process.argv.slice(2)) {
|
|
3
|
+
const validCommands = new Set([
|
|
4
|
+
'start', 'stop', 'status', 'onboard', 'doctor', 'logs', 'config', 'help',
|
|
5
|
+
]);
|
|
6
|
+
const { values, positionals } = parseArgs({
|
|
7
|
+
args: argv,
|
|
8
|
+
options: {
|
|
9
|
+
config: { type: 'string', short: 'c' },
|
|
10
|
+
daemon: { type: 'boolean', short: 'd', default: false },
|
|
11
|
+
help: { type: 'boolean', short: 'h', default: false },
|
|
12
|
+
},
|
|
13
|
+
allowPositionals: true,
|
|
14
|
+
strict: false,
|
|
15
|
+
});
|
|
16
|
+
const first = positionals[0];
|
|
17
|
+
let command = 'start';
|
|
18
|
+
let rest = positionals;
|
|
19
|
+
if (first && validCommands.has(first)) {
|
|
20
|
+
command = first;
|
|
21
|
+
rest = positionals.slice(1);
|
|
22
|
+
}
|
|
23
|
+
if (values.help) {
|
|
24
|
+
command = 'help';
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
command,
|
|
28
|
+
config: values.config ?? (rest[0] && !validCommands.has(rest[0]) ? rest[0] : undefined),
|
|
29
|
+
daemon: Boolean(values.daemon),
|
|
30
|
+
help: Boolean(values.help),
|
|
31
|
+
rest,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function printHelp() {
|
|
35
|
+
console.log(`
|
|
36
|
+
agents-bridge - Local Agent Gateway for botlink
|
|
37
|
+
|
|
38
|
+
Usage:
|
|
39
|
+
agents-bridge <command> [options]
|
|
40
|
+
|
|
41
|
+
Commands:
|
|
42
|
+
start Start the gateway (foreground by default)
|
|
43
|
+
stop Stop a running daemon
|
|
44
|
+
status Show connection and runtime status
|
|
45
|
+
onboard Interactive setup wizard
|
|
46
|
+
doctor Diagnose environment (network, CLI tools, API keys)
|
|
47
|
+
logs View recent logs
|
|
48
|
+
config Show current configuration
|
|
49
|
+
help Show this help
|
|
50
|
+
|
|
51
|
+
Options:
|
|
52
|
+
-c, --config <path> Path to config.json
|
|
53
|
+
-d, --daemon Run as background daemon (with 'start')
|
|
54
|
+
-h, --help Show this help
|
|
55
|
+
|
|
56
|
+
Examples:
|
|
57
|
+
agents-bridge start # Start in foreground
|
|
58
|
+
agents-bridge start --daemon # Start as daemon
|
|
59
|
+
agents-bridge start -c ./my-config.json # Start with custom config
|
|
60
|
+
agents-bridge onboard # Interactive setup
|
|
61
|
+
agents-bridge doctor # Check environment
|
|
62
|
+
`.trim());
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=run-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-main.js","sourceRoot":"","sources":["../../src/cli/run-main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAoBrC,MAAM,UAAU,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAU;QACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;KACzE,CAAC,CAAA;IAEF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACtC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;YACvD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;SACtD;QACD,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,KAAK;KACd,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAC5B,IAAI,OAAO,GAAY,OAAO,CAAA;IAC9B,IAAI,IAAI,GAAG,WAAW,CAAA;IAEtB,IAAI,KAAK,IAAI,aAAa,CAAC,GAAG,CAAC,KAAgB,CAAC,EAAE,CAAC;QACjD,OAAO,GAAG,KAAgB,CAAA;QAC1B,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,OAAO;QACL,OAAO;QACP,MAAM,EAAG,MAAM,CAAC,MAA6B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1H,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1B,IAAI;KACL,CAAA;AACH,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Bb,CAAC,IAAI,EAAE,CAAC,CAAA;AACT,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure data directories exist.
|
|
3
|
+
*
|
|
4
|
+
* ~/.agent-bridge/
|
|
5
|
+
* ├── data/
|
|
6
|
+
* │ ├── sessions/
|
|
7
|
+
* │ ├── files/
|
|
8
|
+
* │ └── logs/
|
|
9
|
+
* └── skills/
|
|
10
|
+
*/
|
|
11
|
+
export declare function ensureDataDirs(tempDir?: string): void;
|
|
12
|
+
//# sourceMappingURL=agent-dirs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-dirs.d.ts","sourceRoot":"","sources":["../../src/config/agent-dirs.ts"],"names":[],"mappings":"AAUA;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBrD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { mkdirSync, existsSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { DATA_DIR, DATA_SESSIONS_DIR, DATA_FILES_DIR, DATA_LOGS_DIR, DATA_SKILLS_DIR, } from './paths.js';
|
|
4
|
+
/**
|
|
5
|
+
* Ensure data directories exist.
|
|
6
|
+
*
|
|
7
|
+
* ~/.agent-bridge/
|
|
8
|
+
* ├── data/
|
|
9
|
+
* │ ├── sessions/
|
|
10
|
+
* │ ├── files/
|
|
11
|
+
* │ └── logs/
|
|
12
|
+
* └── skills/
|
|
13
|
+
*/
|
|
14
|
+
export function ensureDataDirs(tempDir) {
|
|
15
|
+
const dirs = [
|
|
16
|
+
DATA_DIR,
|
|
17
|
+
DATA_SESSIONS_DIR,
|
|
18
|
+
DATA_FILES_DIR,
|
|
19
|
+
DATA_LOGS_DIR,
|
|
20
|
+
DATA_SKILLS_DIR,
|
|
21
|
+
tempDir,
|
|
22
|
+
].filter(Boolean);
|
|
23
|
+
for (const dir of dirs) {
|
|
24
|
+
const resolved = resolve(dir);
|
|
25
|
+
if (!existsSync(resolved)) {
|
|
26
|
+
mkdirSync(resolved, { recursive: true });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=agent-dirs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-dirs.js","sourceRoot":"","sources":["../../src/config/agent-dirs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,IAAI,GAAG;QACX,QAAQ;QACR,iBAAiB;QACjB,cAAc;QACd,aAAa;QACb,eAAe;QACf,OAAO;KACR,CAAC,MAAM,CAAC,OAAO,CAAa,CAAA;IAE7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAKjE,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAsCzD"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { AppConfigSchema } from './zod-schema.js';
|
|
4
|
+
import { readEnvOverrides } from './env-vars.js';
|
|
5
|
+
import { mergeWithEnv } from './merge-config.js';
|
|
6
|
+
import { DATA_CONFIG_PATH } from './paths.js';
|
|
7
|
+
export function loadConfig(configPath) {
|
|
8
|
+
const env = readEnvOverrides();
|
|
9
|
+
// 配置文件搜索顺序:
|
|
10
|
+
// 1. 显式传入的 configPath(CLI -c 参数)
|
|
11
|
+
// 2. 环境变量 AGENT_BRIDGE_CONFIG
|
|
12
|
+
// 3. ~/.agent-bridge/config.json(用户全局配置)
|
|
13
|
+
// 4. ./config.json(项目本地配置)
|
|
14
|
+
const paths = [
|
|
15
|
+
configPath,
|
|
16
|
+
env.configPath,
|
|
17
|
+
DATA_CONFIG_PATH,
|
|
18
|
+
'./config.json',
|
|
19
|
+
].filter(Boolean);
|
|
20
|
+
let rawConfig = {};
|
|
21
|
+
for (const p of paths) {
|
|
22
|
+
const resolved = resolve(p);
|
|
23
|
+
if (existsSync(resolved)) {
|
|
24
|
+
const content = readFileSync(resolved, 'utf-8');
|
|
25
|
+
rawConfig = JSON.parse(content);
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Merge environment variable overrides
|
|
30
|
+
const merged = mergeWithEnv(rawConfig, env);
|
|
31
|
+
const result = AppConfigSchema.safeParse(merged);
|
|
32
|
+
if (!result.success) {
|
|
33
|
+
const issues = result.error.issues
|
|
34
|
+
.map(i => ` ${i.path.join('.')}: ${i.message}`)
|
|
35
|
+
.join('\n');
|
|
36
|
+
throw new Error(`Configuration error:\n${issues}`);
|
|
37
|
+
}
|
|
38
|
+
return result.data;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAA;IAE9B,YAAY;IACZ,mCAAmC;IACnC,gCAAgC;IAChC,2CAA2C;IAC3C,6BAA6B;IAC7B,MAAM,KAAK,GAAG;QACZ,UAAU;QACV,GAAG,CAAC,UAAU;QACd,gBAAgB;QAChB,eAAe;KAChB,CAAC,MAAM,CAAC,OAAO,CAAa,CAAA;IAE7B,IAAI,SAAS,GAA4B,EAAE,CAAA;IAE3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAA;YAC1D,MAAK;QACP,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment variable overrides for configuration.
|
|
3
|
+
* Environment variables take precedence over config file values.
|
|
4
|
+
*
|
|
5
|
+
* Mapping follows the convention: AGENT_BRIDGE_<SECTION>_<KEY>
|
|
6
|
+
*/
|
|
7
|
+
export interface EnvOverrides {
|
|
8
|
+
configPath?: string;
|
|
9
|
+
gatewayUrl?: string;
|
|
10
|
+
botToken?: string;
|
|
11
|
+
logLevel?: string;
|
|
12
|
+
tempDir?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function readEnvOverrides(): EnvOverrides;
|
|
15
|
+
//# sourceMappingURL=env-vars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-vars.d.ts","sourceRoot":"","sources":["../../src/config/env-vars.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,gBAAgB,IAAI,YAAY,CAQ/C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment variable overrides for configuration.
|
|
3
|
+
* Environment variables take precedence over config file values.
|
|
4
|
+
*
|
|
5
|
+
* Mapping follows the convention: AGENT_BRIDGE_<SECTION>_<KEY>
|
|
6
|
+
*/
|
|
7
|
+
export function readEnvOverrides() {
|
|
8
|
+
return {
|
|
9
|
+
configPath: process.env.AGENT_BRIDGE_CONFIG,
|
|
10
|
+
gatewayUrl: process.env.AGENT_BRIDGE_GATEWAY_URL,
|
|
11
|
+
botToken: process.env.AGENT_BRIDGE_BOT_TOKEN,
|
|
12
|
+
logLevel: process.env.AGENT_BRIDGE_LOG_LEVEL,
|
|
13
|
+
tempDir: process.env.AGENT_BRIDGE_TEMP_DIR,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=env-vars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-vars.js","sourceRoot":"","sources":["../../src/config/env-vars.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC3C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC5C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAC5C,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;KAC3C,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { EnvOverrides } from './env-vars.js';
|
|
2
|
+
/**
|
|
3
|
+
* Deep-merge a raw config object with environment variable overrides.
|
|
4
|
+
* Env vars take precedence over file values. Only non-undefined env values are applied.
|
|
5
|
+
*/
|
|
6
|
+
export declare function mergeWithEnv(raw: Record<string, unknown>, env: EnvOverrides): Record<string, unknown>;
|
|
7
|
+
//# sourceMappingURL=merge-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-config.d.ts","sourceRoot":"","sources":["../../src/config/merge-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BrG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep-merge a raw config object with environment variable overrides.
|
|
3
|
+
* Env vars take precedence over file values. Only non-undefined env values are applied.
|
|
4
|
+
*/
|
|
5
|
+
export function mergeWithEnv(raw, env) {
|
|
6
|
+
const merged = structuredClone(raw);
|
|
7
|
+
// channels.botlink overrides
|
|
8
|
+
if (env.gatewayUrl || env.botToken) {
|
|
9
|
+
const channels = (merged.channels ?? {});
|
|
10
|
+
const botlink = (channels.botlink ?? {});
|
|
11
|
+
if (env.gatewayUrl)
|
|
12
|
+
botlink.gateway_url = env.gatewayUrl;
|
|
13
|
+
if (env.botToken)
|
|
14
|
+
botlink.bot_token = env.botToken;
|
|
15
|
+
channels.botlink = botlink;
|
|
16
|
+
merged.channels = channels;
|
|
17
|
+
}
|
|
18
|
+
// logging.level override
|
|
19
|
+
if (env.logLevel) {
|
|
20
|
+
const logging = (merged.logging ?? {});
|
|
21
|
+
logging.level = env.logLevel;
|
|
22
|
+
merged.logging = logging;
|
|
23
|
+
}
|
|
24
|
+
// files.temp_dir override
|
|
25
|
+
if (env.tempDir) {
|
|
26
|
+
const files = (merged.files ?? {});
|
|
27
|
+
files.temp_dir = env.tempDir;
|
|
28
|
+
merged.files = files;
|
|
29
|
+
}
|
|
30
|
+
return merged;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=merge-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-config.js","sourceRoot":"","sources":["../../src/config/merge-config.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAA4B,EAAE,GAAiB;IAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAEnC,6BAA6B;IAC7B,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAA4B,CAAA;QACnE,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;QACnE,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,UAAU,CAAA;QACxD,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAA;QAClD,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC5B,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAA;QACjE,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC5B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,CAAC;IAED,0BAA0B;IAC1B,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QAC7D,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAA;QAC5B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data directory
|
|
3
|
+
* ~/.agent-bridge/
|
|
4
|
+
* ├── config.json
|
|
5
|
+
* ├── data/
|
|
6
|
+
* │ ├── sessions/
|
|
7
|
+
* │ ├── files/
|
|
8
|
+
* │ └── logs/
|
|
9
|
+
* ├── skills/
|
|
10
|
+
* └── .pi/
|
|
11
|
+
*/
|
|
12
|
+
export declare const DATA_DIR: string;
|
|
13
|
+
export declare const DATA_CONFIG_PATH: string;
|
|
14
|
+
export declare const DATA_SESSIONS_DIR: string;
|
|
15
|
+
export declare const DATA_FILES_DIR: string;
|
|
16
|
+
export declare const DATA_LOGS_DIR: string;
|
|
17
|
+
export declare const DATA_SKILLS_DIR: string;
|
|
18
|
+
export declare const PID_FILE: string;
|
|
19
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,QAAmC,CAAA;AACxD,eAAO,MAAM,gBAAgB,QAAgC,CAAA;AAC7D,eAAO,MAAM,iBAAiB,QAAqC,CAAA;AACnE,eAAO,MAAM,2BAA2B,QAA+C,CAAA;AACvF,eAAO,MAAM,cAAc,QAAkC,CAAA;AAC7D,eAAO,MAAM,aAAa,QAAiC,CAAA;AAC3D,eAAO,MAAM,eAAe,QAA2B,CAAA;AACvD,eAAO,MAAM,QAAQ,QAAqC,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
/**
|
|
4
|
+
* Data directory
|
|
5
|
+
* ~/.agent-bridge/
|
|
6
|
+
* ├── config.json
|
|
7
|
+
* ├── data/
|
|
8
|
+
* │ ├── sessions/
|
|
9
|
+
* │ ├── files/
|
|
10
|
+
* │ └── logs/
|
|
11
|
+
* ├── skills/
|
|
12
|
+
* └── .pi/
|
|
13
|
+
*/
|
|
14
|
+
export const DATA_DIR = join(homedir(), '.agent-bridge');
|
|
15
|
+
export const DATA_CONFIG_PATH = join(DATA_DIR, 'config.json');
|
|
16
|
+
export const DATA_SESSIONS_DIR = join(DATA_DIR, 'data', 'sessions');
|
|
17
|
+
export const DATA_CLI_SESSION_STORE_PATH = join(DATA_SESSIONS_DIR, 'cli-sessions.json');
|
|
18
|
+
export const DATA_FILES_DIR = join(DATA_DIR, 'data', 'files');
|
|
19
|
+
export const DATA_LOGS_DIR = join(DATA_DIR, 'data', 'logs');
|
|
20
|
+
export const DATA_SKILLS_DIR = join(DATA_DIR, 'skills');
|
|
21
|
+
export const PID_FILE = join(DATA_DIR, 'agent-bridge.pid');
|
|
22
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;AAC7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAA;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA"}
|