@ai-support-agent/cli 0.0.5-beta.5 → 0.0.6
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/dist/agent-config-sync.d.ts +49 -0
- package/dist/agent-config-sync.d.ts.map +1 -0
- package/dist/agent-config-sync.js +168 -0
- package/dist/agent-config-sync.js.map +1 -0
- package/dist/agent-runner.d.ts +11 -3
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +48 -24
- package/dist/agent-runner.js.map +1 -1
- package/dist/agent-transport.d.ts +59 -0
- package/dist/agent-transport.d.ts.map +1 -0
- package/dist/agent-transport.js +225 -0
- package/dist/agent-transport.js.map +1 -0
- package/dist/api-client.d.ts +2 -1
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +4 -0
- package/dist/api-client.js.map +1 -1
- package/dist/appsync-subscriber.d.ts +15 -9
- package/dist/appsync-subscriber.d.ts.map +1 -1
- package/dist/appsync-subscriber.js +50 -111
- package/dist/appsync-subscriber.js.map +1 -1
- package/dist/aws-profile.d.ts.map +1 -1
- package/dist/aws-profile.js +3 -6
- package/dist/aws-profile.js.map +1 -1
- package/dist/base-websocket.d.ts +40 -0
- package/dist/base-websocket.d.ts.map +1 -0
- package/dist/base-websocket.js +95 -0
- package/dist/base-websocket.js.map +1 -0
- package/dist/child-process-manager.d.ts +20 -0
- package/dist/child-process-manager.d.ts.map +1 -0
- package/dist/child-process-manager.js +125 -0
- package/dist/child-process-manager.js.map +1 -0
- package/dist/commands/api-chat-executor.d.ts +10 -1
- package/dist/commands/api-chat-executor.d.ts.map +1 -1
- package/dist/commands/api-chat-executor.js +83 -58
- package/dist/commands/api-chat-executor.js.map +1 -1
- package/dist/commands/chat-executor.d.ts +13 -2
- package/dist/commands/chat-executor.d.ts.map +1 -1
- package/dist/commands/chat-executor.js +66 -16
- package/dist/commands/chat-executor.js.map +1 -1
- package/dist/commands/claude-code-args.d.ts +12 -0
- package/dist/commands/claude-code-args.d.ts.map +1 -0
- package/dist/commands/claude-code-args.js +78 -0
- package/dist/commands/claude-code-args.js.map +1 -0
- package/dist/commands/claude-code-runner.d.ts +17 -36
- package/dist/commands/claude-code-runner.d.ts.map +1 -1
- package/dist/commands/claude-code-runner.js +49 -221
- package/dist/commands/claude-code-runner.js.map +1 -1
- package/dist/commands/claude-code-stream.d.ts +63 -0
- package/dist/commands/claude-code-stream.d.ts.map +1 -0
- package/dist/commands/claude-code-stream.js +179 -0
- package/dist/commands/claude-code-stream.js.map +1 -0
- package/dist/commands/file-executor.d.ts +1 -1
- package/dist/commands/file-executor.d.ts.map +1 -1
- package/dist/commands/file-executor.js +59 -70
- package/dist/commands/file-executor.js.map +1 -1
- package/dist/commands/file-path-guard.d.ts +9 -0
- package/dist/commands/file-path-guard.d.ts.map +1 -0
- package/dist/commands/file-path-guard.js +15 -0
- package/dist/commands/file-path-guard.js.map +1 -0
- package/dist/commands/file-transfer.d.ts +5 -0
- package/dist/commands/file-transfer.d.ts.map +1 -1
- package/dist/commands/file-transfer.js +16 -39
- package/dist/commands/file-transfer.js.map +1 -1
- package/dist/commands/index.d.ts +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +18 -7
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/process-executor.d.ts +1 -1
- package/dist/commands/process-executor.d.ts.map +1 -1
- package/dist/commands/process-executor.js +24 -6
- package/dist/commands/process-executor.js.map +1 -1
- package/dist/commands/process-manager.d.ts +22 -0
- package/dist/commands/process-manager.d.ts.map +1 -0
- package/dist/commands/process-manager.js +36 -0
- package/dist/commands/process-manager.js.map +1 -0
- package/dist/commands/shared-chat-utils.d.ts +10 -1
- package/dist/commands/shared-chat-utils.d.ts.map +1 -1
- package/dist/commands/shared-chat-utils.js +18 -0
- package/dist/commands/shared-chat-utils.js.map +1 -1
- package/dist/commands/shell-executor.d.ts +1 -1
- package/dist/commands/shell-executor.d.ts.map +1 -1
- package/dist/commands/shell-executor.js +9 -12
- package/dist/commands/shell-executor.js.map +1 -1
- package/dist/config-manager.d.ts.map +1 -1
- package/dist/config-manager.js +2 -3
- package/dist/config-manager.js.map +1 -1
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +26 -1
- package/dist/constants.js.map +1 -1
- package/dist/docker/docker-runner.d.ts.map +1 -1
- package/dist/docker/docker-runner.js +5 -3
- package/dist/docker/docker-runner.js.map +1 -1
- package/dist/ipc-types.d.ts +36 -0
- package/dist/ipc-types.d.ts.map +1 -0
- package/dist/ipc-types.js +34 -0
- package/dist/ipc-types.js.map +1 -0
- package/dist/mcp/config-writer.d.ts +5 -1
- package/dist/mcp/config-writer.d.ts.map +1 -1
- package/dist/mcp/config-writer.js +14 -1
- package/dist/mcp/config-writer.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/credentials.d.ts.map +1 -1
- package/dist/mcp/tools/credentials.js +36 -9
- package/dist/mcp/tools/credentials.js.map +1 -1
- package/dist/mcp/tools/db-query.d.ts.map +1 -1
- package/dist/mcp/tools/db-query.js +13 -18
- package/dist/mcp/tools/db-query.js.map +1 -1
- package/dist/mcp/tools/db-schemas.d.ts.map +1 -1
- package/dist/mcp/tools/db-schemas.js +8 -13
- package/dist/mcp/tools/db-schemas.js.map +1 -1
- package/dist/mcp/tools/file-upload.d.ts.map +1 -1
- package/dist/mcp/tools/file-upload.js +12 -17
- package/dist/mcp/tools/file-upload.js.map +1 -1
- package/dist/mcp/tools/mcp-response.d.ts +29 -1
- package/dist/mcp/tools/mcp-response.d.ts.map +1 -1
- package/dist/mcp/tools/mcp-response.js +51 -3
- package/dist/mcp/tools/mcp-response.js.map +1 -1
- package/dist/mcp/tools/project-info.d.ts.map +1 -1
- package/dist/mcp/tools/project-info.js +28 -33
- package/dist/mcp/tools/project-info.js.map +1 -1
- package/dist/mcp/tools/read-conversation-file.d.ts +4 -0
- package/dist/mcp/tools/read-conversation-file.d.ts.map +1 -0
- package/dist/mcp/tools/read-conversation-file.js +92 -0
- package/dist/mcp/tools/read-conversation-file.js.map +1 -0
- package/dist/process-manager.d.ts +2 -0
- package/dist/process-manager.d.ts.map +1 -0
- package/dist/process-manager.js +7 -0
- package/dist/process-manager.js.map +1 -0
- package/dist/project-agent.d.ts +5 -25
- package/dist/project-agent.d.ts.map +1 -1
- package/dist/project-agent.js +67 -313
- package/dist/project-agent.js.map +1 -1
- package/dist/project-config-sync.d.ts.map +1 -1
- package/dist/project-config-sync.js +9 -3
- package/dist/project-config-sync.js.map +1 -1
- package/dist/project-worker.d.ts +2 -0
- package/dist/project-worker.d.ts.map +1 -0
- package/dist/project-worker.js +85 -0
- package/dist/project-worker.js.map +1 -0
- package/dist/repo-sync.d.ts +23 -0
- package/dist/repo-sync.d.ts.map +1 -0
- package/dist/repo-sync.js +191 -0
- package/dist/repo-sync.js.map +1 -0
- package/dist/terminal/terminal-websocket.d.ts +8 -9
- package/dist/terminal/terminal-websocket.d.ts.map +1 -1
- package/dist/terminal/terminal-websocket.js +30 -87
- package/dist/terminal/terminal-websocket.js.map +1 -1
- package/dist/types/chat.d.ts +28 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +3 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/command.d.ts +100 -0
- package/dist/types/command.d.ts.map +1 -0
- package/dist/types/command.js +11 -0
- package/dist/types/command.js.map +1 -0
- package/dist/types/config.d.ts +44 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +22 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/project.d.ts +112 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +3 -0
- package/dist/types/project.js.map +1 -0
- package/dist/types/server.d.ts +58 -0
- package/dist/types/server.d.ts.map +1 -0
- package/dist/types/server.js +3 -0
- package/dist/types/server.js.map +1 -0
- package/dist/types.d.ts +1 -295
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/activity-timeout.d.ts +19 -0
- package/dist/utils/activity-timeout.d.ts.map +1 -0
- package/dist/utils/activity-timeout.js +28 -0
- package/dist/utils/activity-timeout.js.map +1 -0
- package/dist/utils/claude-config-validator.d.ts +16 -0
- package/dist/utils/claude-config-validator.d.ts.map +1 -0
- package/dist/utils/claude-config-validator.js +94 -0
- package/dist/utils/claude-config-validator.js.map +1 -0
- package/dist/utils/content-type.d.ts +10 -0
- package/dist/utils/content-type.d.ts.map +1 -0
- package/dist/utils/content-type.js +120 -0
- package/dist/utils/content-type.js.map +1 -0
- package/dist/utils/json-parse.d.ts +5 -0
- package/dist/utils/json-parse.d.ts.map +1 -0
- package/dist/utils/json-parse.js +15 -0
- package/dist/utils/json-parse.js.map +1 -0
- package/dist/utils/stream-parser.d.ts +14 -0
- package/dist/utils/stream-parser.d.ts.map +1 -0
- package/dist/utils/stream-parser.js +31 -0
- package/dist/utils/stream-parser.js.map +1 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +40 -0
- package/dist/utils.js.map +1 -1
- package/dist/ws-reconnect.d.ts +12 -0
- package/dist/ws-reconnect.d.ts.map +1 -0
- package/dist/ws-reconnect.js +32 -0
- package/dist/ws-reconnect.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ApiClient } from './api-client';
|
|
2
|
+
import type { AgentChatMode, AgentServerConfig, ProjectConfigResponse } from './types';
|
|
3
|
+
export interface ConfigSyncState {
|
|
4
|
+
currentConfigHash: string | undefined;
|
|
5
|
+
projectConfig: ProjectConfigResponse | undefined;
|
|
6
|
+
serverConfig: AgentServerConfig | null;
|
|
7
|
+
availableChatModes: AgentChatMode[];
|
|
8
|
+
activeChatMode: AgentChatMode | undefined;
|
|
9
|
+
mcpConfigPath: string | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface ConfigSyncDeps {
|
|
12
|
+
client: ApiClient;
|
|
13
|
+
prefix: string;
|
|
14
|
+
projectDir: string | undefined;
|
|
15
|
+
apiUrl: string;
|
|
16
|
+
token: string;
|
|
17
|
+
projectCode: string;
|
|
18
|
+
localAgentChatMode: AgentChatMode | undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Perform config sync from server and update state.
|
|
22
|
+
* Returns true if config was updated.
|
|
23
|
+
*/
|
|
24
|
+
export declare function performConfigSync(deps: ConfigSyncDeps, state: ConfigSyncState): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Perform full setup: config sync + repository sync + documentation check.
|
|
27
|
+
*/
|
|
28
|
+
export declare function performSetup(deps: ConfigSyncDeps, state: ConfigSyncState): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Apply project config to state (update serverConfig, write AWS/MCP config files).
|
|
31
|
+
*/
|
|
32
|
+
export declare function applyProjectConfig(deps: ConfigSyncDeps, state: ConfigSyncState, config: ProjectConfigResponse): void;
|
|
33
|
+
/**
|
|
34
|
+
* Schedule a debounced config sync.
|
|
35
|
+
* Returns the new timer handle (caller should store it and clear on stop).
|
|
36
|
+
*/
|
|
37
|
+
export declare function scheduleConfigSync(deps: ConfigSyncDeps, state: ConfigSyncState, existingTimer: ReturnType<typeof setTimeout> | null): ReturnType<typeof setTimeout>;
|
|
38
|
+
/**
|
|
39
|
+
* Refresh available chat modes and server config.
|
|
40
|
+
*/
|
|
41
|
+
export declare function refreshChatMode(deps: ConfigSyncDeps, state: ConfigSyncState, verbose: boolean): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* MCP server script path resolution.
|
|
44
|
+
*
|
|
45
|
+
* When running with ts-node/tsx, __dirname points to src/ where server.js does not exist.
|
|
46
|
+
* In that case, fall back to dist/mcp/server.js.
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveMcpServerPath(): string;
|
|
49
|
+
//# sourceMappingURL=agent-config-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config-sync.d.ts","sourceRoot":"","sources":["../src/agent-config-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAQ7C,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAGtF,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,aAAa,EAAE,qBAAqB,GAAG,SAAS,CAAA;IAChD,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACtC,kBAAkB,EAAE,aAAa,EAAE,CAAA;IACnC,cAAc,EAAE,aAAa,GAAG,SAAS,CAAA;IACzC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,aAAa,GAAG,SAAS,CAAA;CAC9C;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,qBAAqB,GAC5B,IAAI,CA4DN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,GAClD,UAAU,CAAC,OAAO,UAAU,CAAC,CAO/B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAU7C"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.performConfigSync = performConfigSync;
|
|
4
|
+
exports.performSetup = performSetup;
|
|
5
|
+
exports.applyProjectConfig = applyProjectConfig;
|
|
6
|
+
exports.scheduleConfigSync = scheduleConfigSync;
|
|
7
|
+
exports.refreshChatMode = refreshChatMode;
|
|
8
|
+
exports.resolveMcpServerPath = resolveMcpServerPath;
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const chat_mode_detector_1 = require("./chat-mode-detector");
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
const logger_1 = require("./logger");
|
|
14
|
+
const aws_profile_1 = require("./aws-profile");
|
|
15
|
+
const config_writer_1 = require("./mcp/config-writer");
|
|
16
|
+
const project_config_sync_1 = require("./project-config-sync");
|
|
17
|
+
const repo_sync_1 = require("./repo-sync");
|
|
18
|
+
const utils_1 = require("./utils");
|
|
19
|
+
/**
|
|
20
|
+
* Perform config sync from server and update state.
|
|
21
|
+
* Returns true if config was updated.
|
|
22
|
+
*/
|
|
23
|
+
async function performConfigSync(deps, state) {
|
|
24
|
+
const config = await (0, project_config_sync_1.syncProjectConfig)(deps.client, state.currentConfigHash, deps.projectDir, deps.prefix);
|
|
25
|
+
if (config) {
|
|
26
|
+
applyProjectConfig(deps, state, config);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Perform full setup: config sync + repository sync + documentation check.
|
|
33
|
+
*/
|
|
34
|
+
async function performSetup(deps, state) {
|
|
35
|
+
logger_1.logger.info(`${deps.prefix} Starting setup...`);
|
|
36
|
+
// 1. Config sync
|
|
37
|
+
await performConfigSync(deps, state);
|
|
38
|
+
// 2. Clone/update repositories
|
|
39
|
+
if (deps.projectDir && state.projectConfig?.repositories?.length) {
|
|
40
|
+
try {
|
|
41
|
+
const reposDir = (0, path_1.join)(deps.projectDir, 'repos');
|
|
42
|
+
const results = await (0, repo_sync_1.syncRepositories)(deps.client, state.projectConfig.repositories, reposDir, deps.prefix);
|
|
43
|
+
const cloned = results.filter(r => r.status === 'cloned').length;
|
|
44
|
+
const updated = results.filter(r => r.status === 'updated').length;
|
|
45
|
+
const skipped = results.filter(r => r.status === 'skipped').length;
|
|
46
|
+
logger_1.logger.info(`${deps.prefix} Repository sync: ${cloned} cloned, ${updated} updated, ${skipped} skipped`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger_1.logger.warn(`${deps.prefix} Repository sync failed: ${(0, utils_1.getErrorMessage)(error)}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// 3. Download documentation
|
|
53
|
+
if (state.projectConfig?.documentation?.sources) {
|
|
54
|
+
logger_1.logger.info(`${deps.prefix} Documentation sources found: ${state.projectConfig.documentation.sources.length}`);
|
|
55
|
+
// Documentation download will be implemented in a future phase
|
|
56
|
+
}
|
|
57
|
+
logger_1.logger.info(`${deps.prefix} Setup completed`);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Apply project config to state (update serverConfig, write AWS/MCP config files).
|
|
61
|
+
*/
|
|
62
|
+
function applyProjectConfig(deps, state, config) {
|
|
63
|
+
state.currentConfigHash = config.configHash;
|
|
64
|
+
state.projectConfig = config;
|
|
65
|
+
// Update serverConfig from project config
|
|
66
|
+
state.serverConfig = {
|
|
67
|
+
agentEnabled: config.agent.agentEnabled,
|
|
68
|
+
builtinAgentEnabled: config.agent.builtinAgentEnabled,
|
|
69
|
+
builtinFallbackEnabled: config.agent.builtinFallbackEnabled,
|
|
70
|
+
externalAgentEnabled: config.agent.externalAgentEnabled,
|
|
71
|
+
chatMode: 'agent',
|
|
72
|
+
claudeCodeConfig: {
|
|
73
|
+
allowedTools: config.agent.allowedTools,
|
|
74
|
+
addDirs: config.agent.claudeCodeConfig?.additionalDirs,
|
|
75
|
+
systemPrompt: config.agent.claudeCodeConfig?.appendSystemPrompt,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
// Write AWS config file if project directory and AWS accounts are configured
|
|
79
|
+
if (deps.projectDir && config.aws?.accounts?.length) {
|
|
80
|
+
try {
|
|
81
|
+
(0, aws_profile_1.writeAwsConfig)(deps.projectDir, config.project.projectCode, config.aws.accounts);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
logger_1.logger.warn(`${deps.prefix} Failed to write AWS config: ${(0, utils_1.getErrorMessage)(error)}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Log database configuration
|
|
88
|
+
if (config.databases?.length) {
|
|
89
|
+
logger_1.logger.info(`${deps.prefix} Databases configured: ${config.databases.map(db => `${db.name}(${db.engine})`).join(', ')}`);
|
|
90
|
+
}
|
|
91
|
+
// Log repository configuration
|
|
92
|
+
if (config.repositories?.length) {
|
|
93
|
+
logger_1.logger.info(`${deps.prefix} Repositories configured: ${config.repositories.map(r => `${r.repositoryName}(${r.provider})`).join(', ')}`);
|
|
94
|
+
}
|
|
95
|
+
// Write MCP config file if project directory is available
|
|
96
|
+
if (deps.projectDir) {
|
|
97
|
+
try {
|
|
98
|
+
const mcpServerPath = resolveMcpServerPath();
|
|
99
|
+
const backlogConfigs = config.backlog?.items?.map((item) => ({
|
|
100
|
+
domain: item.domain,
|
|
101
|
+
apiKey: item.apiKey,
|
|
102
|
+
}));
|
|
103
|
+
state.mcpConfigPath = (0, config_writer_1.writeMcpConfig)(deps.projectDir, deps.apiUrl, deps.token, deps.projectCode, mcpServerPath, backlogConfigs);
|
|
104
|
+
logger_1.logger.info(`${deps.prefix} MCP config written: ${state.mcpConfigPath}`);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
logger_1.logger.warn(`${deps.prefix} Failed to write MCP config: ${(0, utils_1.getErrorMessage)(error)}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
logger_1.logger.info(`${deps.prefix} Config applied (hash: ${config.configHash})`);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Schedule a debounced config sync.
|
|
114
|
+
* Returns the new timer handle (caller should store it and clear on stop).
|
|
115
|
+
*/
|
|
116
|
+
function scheduleConfigSync(deps, state, existingTimer) {
|
|
117
|
+
if (existingTimer) {
|
|
118
|
+
clearTimeout(existingTimer);
|
|
119
|
+
}
|
|
120
|
+
return setTimeout(() => {
|
|
121
|
+
void performConfigSync(deps, state);
|
|
122
|
+
}, constants_1.CONFIG_SYNC_DEBOUNCE_MS);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Refresh available chat modes and server config.
|
|
126
|
+
*/
|
|
127
|
+
async function refreshChatMode(deps, state, verbose) {
|
|
128
|
+
state.availableChatModes = await (0, chat_mode_detector_1.detectAvailableChatModes)();
|
|
129
|
+
if (verbose) {
|
|
130
|
+
logger_1.logger.info(`${deps.prefix} Available chat modes: ${JSON.stringify(state.availableChatModes)}`);
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
state.serverConfig = await deps.client.getConfig();
|
|
134
|
+
if (verbose) {
|
|
135
|
+
logger_1.logger.info(`${deps.prefix} Server config loaded: chatMode=${state.serverConfig.chatMode}`);
|
|
136
|
+
if (state.serverConfig.claudeCodeConfig) {
|
|
137
|
+
logger_1.logger.debug(`${deps.prefix} claudeCodeConfig: allowedTools=[${state.serverConfig.claudeCodeConfig.allowedTools?.join(', ') ?? ''}], addDirs=[${state.serverConfig.claudeCodeConfig.addDirs?.join(', ') ?? ''}]`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (verbose) {
|
|
143
|
+
logger_1.logger.warn(`${deps.prefix} Failed to load server config, using defaults: ${(0, utils_1.getErrorMessage)(error)}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
state.activeChatMode = (0, chat_mode_detector_1.resolveActiveChatMode)(state.availableChatModes, deps.localAgentChatMode, state.serverConfig?.defaultAgentChatMode);
|
|
147
|
+
if (verbose) {
|
|
148
|
+
logger_1.logger.info(`${deps.prefix} Active chat mode: ${state.activeChatMode ?? 'none'}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* MCP server script path resolution.
|
|
153
|
+
*
|
|
154
|
+
* When running with ts-node/tsx, __dirname points to src/ where server.js does not exist.
|
|
155
|
+
* In that case, fall back to dist/mcp/server.js.
|
|
156
|
+
*/
|
|
157
|
+
function resolveMcpServerPath() {
|
|
158
|
+
const candidate = (0, path_1.join)(__dirname, 'mcp', 'server.js');
|
|
159
|
+
if ((0, fs_1.existsSync)(candidate))
|
|
160
|
+
return candidate;
|
|
161
|
+
// ts-node: src/ -> dist/
|
|
162
|
+
const distCandidate = (0, path_1.resolve)(__dirname, '..', 'dist', 'mcp', 'server.js');
|
|
163
|
+
if ((0, fs_1.existsSync)(distCandidate))
|
|
164
|
+
return distCandidate;
|
|
165
|
+
logger_1.logger.warn(`[mcp] MCP server script not found at ${candidate} or ${distCandidate}`);
|
|
166
|
+
return candidate;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=agent-config-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config-sync.js","sourceRoot":"","sources":["../src/agent-config-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-runner.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AutoUpdaterHandle } from './auto-updater';
|
|
2
|
+
import { ChildProcessManager } from './child-process-manager';
|
|
2
3
|
import type { AgentChatMode, AutoUpdateConfig, ProjectRegistration, ReleaseChannel } from './types';
|
|
3
4
|
export interface RunnerOptions {
|
|
4
5
|
token?: string;
|
|
@@ -18,9 +19,16 @@ export declare function startProjectAgent(project: ProjectRegistration, agentId:
|
|
|
18
19
|
stop: () => void;
|
|
19
20
|
client: import('./api-client').ApiClient;
|
|
20
21
|
};
|
|
21
|
-
export
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
export type ShutdownTarget = {
|
|
23
|
+
kind: 'agents';
|
|
24
|
+
agents: {
|
|
25
|
+
stop: () => void;
|
|
26
|
+
}[];
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'processManager';
|
|
29
|
+
processManager: ChildProcessManager;
|
|
30
|
+
};
|
|
31
|
+
export declare function setupShutdownHandlers(target: ShutdownTarget, updater?: AutoUpdaterHandle): void;
|
|
24
32
|
export declare function resolveAutoUpdateConfig(options: RunnerOptions, config?: {
|
|
25
33
|
autoUpdate?: AutoUpdateConfig;
|
|
26
34
|
} | null): AutoUpdateConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-runner.d.ts","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAoB,MAAM,gBAAgB,CAAA;AAKzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAI7D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAKnG,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,cAAc,CAAA;CAC/B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,GACA;IAAE,IAAI,EAAE,MAAM,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,cAAc,EAAE,SAAS,CAAA;CAAE,CAOhE;AAYD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,EAAE,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,cAAc,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAEnE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,cAAc,EACtB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAkBN;AAiCD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,IAAI,GAAG,gBAAgB,CAWnI;AAqBD,wBAAsB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GtE"}
|
package/dist/agent-runner.js
CHANGED
|
@@ -43,11 +43,13 @@ const constants_1 = require("./constants");
|
|
|
43
43
|
const config_manager_1 = require("./config-manager");
|
|
44
44
|
const i18n_1 = require("./i18n");
|
|
45
45
|
const logger_1 = require("./logger");
|
|
46
|
+
const child_process_manager_1 = require("./child-process-manager");
|
|
46
47
|
const project_agent_1 = require("./project-agent");
|
|
47
48
|
const sentry_1 = require("./sentry");
|
|
48
49
|
const system_info_1 = require("./system-info");
|
|
49
50
|
const update_checker_1 = require("./update-checker");
|
|
50
51
|
const utils_1 = require("./utils");
|
|
52
|
+
const api_client_1 = require("./api-client");
|
|
51
53
|
function startProjectAgent(project, agentId, options) {
|
|
52
54
|
const agent = new project_agent_1.ProjectAgent(project, agentId, options, undefined, options.agentChatMode, options.defaultProjectDir);
|
|
53
55
|
agent.start();
|
|
@@ -62,7 +64,7 @@ function resolveIntervals(options) {
|
|
|
62
64
|
heartbeatInterval: options.heartbeatInterval ?? constants_1.DEFAULT_HEARTBEAT_INTERVAL,
|
|
63
65
|
};
|
|
64
66
|
}
|
|
65
|
-
function setupShutdownHandlers(
|
|
67
|
+
function setupShutdownHandlers(target, updater) {
|
|
66
68
|
let shuttingDown = false;
|
|
67
69
|
const shutdown = async () => {
|
|
68
70
|
if (shuttingDown)
|
|
@@ -70,7 +72,12 @@ function setupShutdownHandlers(agents, updater) {
|
|
|
70
72
|
shuttingDown = true;
|
|
71
73
|
logger_1.logger.info((0, i18n_1.t)('runner.shuttingDown'));
|
|
72
74
|
updater?.stop();
|
|
73
|
-
|
|
75
|
+
if (target.kind === 'processManager') {
|
|
76
|
+
await target.processManager.stopAll();
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
target.agents.forEach((a) => a.stop());
|
|
80
|
+
}
|
|
74
81
|
await (0, sentry_1.flushSentry)();
|
|
75
82
|
logger_1.logger.success((0, i18n_1.t)('runner.stopped'));
|
|
76
83
|
process.exit(0);
|
|
@@ -78,6 +85,21 @@ function setupShutdownHandlers(agents, updater) {
|
|
|
78
85
|
process.on('SIGINT', () => void shutdown());
|
|
79
86
|
process.on('SIGTERM', () => void shutdown());
|
|
80
87
|
}
|
|
88
|
+
function logMultiProjectStartup(projects, pollInterval, heartbeatInterval) {
|
|
89
|
+
logger_1.logger.info((0, i18n_1.t)('runner.startedMulti', { count: projects.length, pollInterval, heartbeatInterval }));
|
|
90
|
+
for (const p of projects) {
|
|
91
|
+
logger_1.logger.info(` - ${p.projectCode} (${p.apiUrl})`);
|
|
92
|
+
}
|
|
93
|
+
logger_1.logger.info((0, i18n_1.t)('runner.stopHint'));
|
|
94
|
+
}
|
|
95
|
+
function initAutoUpdater(options, config, client, agentId, stopAllAgents) {
|
|
96
|
+
const autoUpdateConfig = resolveAutoUpdateConfig(options, config);
|
|
97
|
+
if (!autoUpdateConfig.enabled)
|
|
98
|
+
return undefined;
|
|
99
|
+
return (0, auto_updater_1.startAutoUpdater)([client], autoUpdateConfig, stopAllAgents, (error) => {
|
|
100
|
+
void client.heartbeat(agentId, (0, system_info_1.getSystemInfo)(), error).catch(() => { });
|
|
101
|
+
});
|
|
102
|
+
}
|
|
81
103
|
function resolveAutoUpdateConfig(options, config) {
|
|
82
104
|
const detectedChannel = (0, update_checker_1.detectChannelFromVersion)(constants_1.AGENT_VERSION);
|
|
83
105
|
return {
|
|
@@ -94,16 +116,10 @@ function runSingleProject(project, agentId, options, agentChatMode, defaultProje
|
|
|
94
116
|
const { pollInterval, heartbeatInterval } = resolveIntervals(options);
|
|
95
117
|
logger_1.logger.info((0, i18n_1.t)('runner.starting'));
|
|
96
118
|
const agent = startProjectAgent(project, agentId, { pollInterval, heartbeatInterval, agentChatMode, defaultProjectDir });
|
|
97
|
-
const
|
|
98
|
-
let updater;
|
|
99
|
-
if (autoUpdateConfig.enabled) {
|
|
100
|
-
updater = (0, auto_updater_1.startAutoUpdater)([agent.client], autoUpdateConfig, () => agent.stop(), (error) => {
|
|
101
|
-
void agent.client.heartbeat(agentId, (0, system_info_1.getSystemInfo)(), error).catch(() => { });
|
|
102
|
-
});
|
|
103
|
-
}
|
|
119
|
+
const updater = initAutoUpdater(options, undefined, agent.client, agentId, () => agent.stop());
|
|
104
120
|
logger_1.logger.info((0, i18n_1.t)('runner.startedSingle', { pollInterval, heartbeatInterval }));
|
|
105
121
|
logger_1.logger.info((0, i18n_1.t)('runner.stopHint'));
|
|
106
|
-
setupShutdownHandlers([agent], updater);
|
|
122
|
+
setupShutdownHandlers({ kind: 'agents', agents: [agent] }, updater);
|
|
107
123
|
}
|
|
108
124
|
async function startAgent(options) {
|
|
109
125
|
await (0, sentry_1.initSentry)();
|
|
@@ -171,21 +187,29 @@ async function startAgent(options) {
|
|
|
171
187
|
const agentId = config.agentId ?? os.hostname();
|
|
172
188
|
const { pollInterval, heartbeatInterval } = resolveIntervals(options);
|
|
173
189
|
logger_1.logger.info((0, i18n_1.t)('runner.startingMulti', { count: projects.length }));
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
});
|
|
190
|
+
if (projects.length === 1) {
|
|
191
|
+
// Single project: run in-process (no fork overhead)
|
|
192
|
+
const agent = startProjectAgent(projects[0], agentId, { pollInterval, heartbeatInterval, agentChatMode: config.agentChatMode, defaultProjectDir: config.defaultProjectDir });
|
|
193
|
+
(0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
|
|
194
|
+
const updater = initAutoUpdater(options, config, agent.client, agentId, () => agent.stop());
|
|
195
|
+
logMultiProjectStartup(projects, pollInterval, heartbeatInterval);
|
|
196
|
+
setupShutdownHandlers({ kind: 'agents', agents: [agent] }, updater);
|
|
197
|
+
return;
|
|
183
198
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
199
|
+
// Multiple projects: fork child processes for isolation
|
|
200
|
+
const processManager = new child_process_manager_1.ChildProcessManager();
|
|
201
|
+
for (const project of projects) {
|
|
202
|
+
processManager.forkProject(project, agentId, {
|
|
203
|
+
pollInterval,
|
|
204
|
+
heartbeatInterval,
|
|
205
|
+
agentChatMode: config.agentChatMode,
|
|
206
|
+
defaultProjectDir: config.defaultProjectDir,
|
|
207
|
+
});
|
|
187
208
|
}
|
|
188
|
-
|
|
189
|
-
|
|
209
|
+
(0, config_manager_1.saveConfig)({ lastConnected: new Date().toISOString() });
|
|
210
|
+
const client = new api_client_1.ApiClient(projects[0].apiUrl, projects[0].token);
|
|
211
|
+
const updater = initAutoUpdater(options, config, client, agentId, () => processManager.sendUpdateToAll());
|
|
212
|
+
logMultiProjectStartup(projects, pollInterval, heartbeatInterval);
|
|
213
|
+
setupShutdownHandlers({ kind: 'processManager', processManager }, updater);
|
|
190
214
|
}
|
|
191
215
|
//# sourceMappingURL=agent-runner.js.map
|
package/dist/agent-runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../src/agent-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { ApiClient } from './api-client';
|
|
2
|
+
import { type AppSyncSubscriber, type AppSyncNotification } from './appsync-subscriber';
|
|
3
|
+
import { TerminalWebSocket } from './terminal';
|
|
4
|
+
import type { ConfigSyncState, ConfigSyncDeps } from './agent-config-sync';
|
|
5
|
+
export interface TransportState {
|
|
6
|
+
heartbeatTimer: ReturnType<typeof setInterval> | null;
|
|
7
|
+
pollTimer: ReturnType<typeof setInterval> | null;
|
|
8
|
+
subscriber: AppSyncSubscriber | null;
|
|
9
|
+
terminalWs: TerminalWebSocket | null;
|
|
10
|
+
processing: boolean;
|
|
11
|
+
configSyncDebounceTimer: ReturnType<typeof setTimeout> | null;
|
|
12
|
+
}
|
|
13
|
+
export interface TransportDeps {
|
|
14
|
+
client: ApiClient;
|
|
15
|
+
agentId: string;
|
|
16
|
+
prefix: string;
|
|
17
|
+
apiUrl: string;
|
|
18
|
+
token: string;
|
|
19
|
+
projectDir: string | undefined;
|
|
20
|
+
tenantCode: string;
|
|
21
|
+
pollInterval: number;
|
|
22
|
+
heartbeatInterval: number;
|
|
23
|
+
}
|
|
24
|
+
export interface CommandContext {
|
|
25
|
+
configSyncState: ConfigSyncState;
|
|
26
|
+
configSyncDeps: ConfigSyncDeps;
|
|
27
|
+
transportState: TransportState;
|
|
28
|
+
onSetup: () => Promise<void>;
|
|
29
|
+
onConfigSync: () => Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Start polling mode for pending commands.
|
|
33
|
+
*/
|
|
34
|
+
export declare function startPollingMode(deps: TransportDeps, state: TransportState, ctx: CommandContext): void;
|
|
35
|
+
/**
|
|
36
|
+
* Start subscription mode via AppSync WebSocket.
|
|
37
|
+
*/
|
|
38
|
+
export declare function startSubscriptionMode(deps: TransportDeps, state: TransportState, ctx: CommandContext, AppSyncSubscriberClass: new (url: string, apiKey: string) => AppSyncSubscriber, appsyncUrl: string, appsyncApiKey: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Start heartbeat interval.
|
|
41
|
+
*/
|
|
42
|
+
export declare function startHeartbeat(deps: TransportDeps, state: TransportState, configSyncState: ConfigSyncState, configSyncDeps: ConfigSyncDeps): void;
|
|
43
|
+
/**
|
|
44
|
+
* Start terminal WebSocket connection.
|
|
45
|
+
*/
|
|
46
|
+
export declare function startTerminalWebSocket(deps: TransportDeps, state: TransportState): void;
|
|
47
|
+
/**
|
|
48
|
+
* Handle an incoming AppSync notification.
|
|
49
|
+
*/
|
|
50
|
+
export declare function handleNotification(deps: TransportDeps, state: TransportState, ctx: CommandContext, notification: AppSyncNotification): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Check for pending commands (used after reconnection).
|
|
53
|
+
*/
|
|
54
|
+
export declare function checkPendingCommands(deps: TransportDeps, state: TransportState, ctx: CommandContext): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Stop all transport resources.
|
|
57
|
+
*/
|
|
58
|
+
export declare function stopTransport(state: TransportState): void;
|
|
59
|
+
//# sourceMappingURL=agent-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-transport.d.ts","sourceRoot":"","sources":["../src/agent-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAKvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG9C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAG1E,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAA;IACrD,SAAS,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAA;IAChD,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,OAAO,CAAA;IACnB,uBAAuB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAA;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,eAAe,CAAA;IAChC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,GAClB,IAAI,CAsCN;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,sBAAsB,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,iBAAiB,EAC9E,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,cAAc,GAC7B,IAAI,CAkCN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,GACpB,IAAI,CAWN;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,EACnB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAiDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAMzD"}
|