@iqai/adk-cli 0.3.22 → 0.3.24

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.
Files changed (49) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/http/bootstrap.d.ts.map +1 -1
  3. package/dist/http/bootstrap.js +44 -18
  4. package/dist/http/bootstrap.js.map +1 -1
  5. package/dist/http/providers/agent-loader/build-utils.d.ts +7 -0
  6. package/dist/http/providers/agent-loader/build-utils.d.ts.map +1 -0
  7. package/dist/http/providers/agent-loader/build-utils.js +52 -0
  8. package/dist/http/providers/agent-loader/build-utils.js.map +1 -0
  9. package/dist/http/providers/agent-loader/env.d.ts +3 -0
  10. package/dist/http/providers/agent-loader/env.d.ts.map +1 -0
  11. package/dist/http/providers/agent-loader/env.js +44 -0
  12. package/dist/http/providers/agent-loader/env.js.map +1 -0
  13. package/dist/http/providers/agent-loader/path-plugin.d.ts +7 -0
  14. package/dist/http/providers/agent-loader/path-plugin.d.ts.map +1 -0
  15. package/dist/http/providers/agent-loader/path-plugin.js +72 -0
  16. package/dist/http/providers/agent-loader/path-plugin.js.map +1 -0
  17. package/dist/http/providers/agent-loader/resolver.d.ts +3 -0
  18. package/dist/http/providers/agent-loader/resolver.d.ts.map +1 -0
  19. package/dist/http/providers/agent-loader/resolver.js +148 -0
  20. package/dist/http/providers/agent-loader/resolver.js.map +1 -0
  21. package/dist/http/providers/agent-loader/tsconfig.d.ts +4 -0
  22. package/dist/http/providers/agent-loader/tsconfig.d.ts.map +1 -0
  23. package/dist/http/providers/agent-loader/tsconfig.js +32 -0
  24. package/dist/http/providers/agent-loader/tsconfig.js.map +1 -0
  25. package/dist/http/providers/agent-loader/utils.d.ts +2 -0
  26. package/dist/http/providers/agent-loader/utils.d.ts.map +1 -0
  27. package/dist/http/providers/agent-loader/utils.js +7 -0
  28. package/dist/http/providers/agent-loader/utils.js.map +1 -0
  29. package/dist/http/providers/agent-loader.service.d.ts +4 -53
  30. package/dist/http/providers/agent-loader.service.d.ts.map +1 -1
  31. package/dist/http/providers/agent-loader.service.js +23 -372
  32. package/dist/http/providers/agent-loader.service.js.map +1 -1
  33. package/dist/http/providers/agent-manager/sessions.d.ts +36 -0
  34. package/dist/http/providers/agent-manager/sessions.d.ts.map +1 -0
  35. package/dist/http/providers/agent-manager/sessions.js +114 -0
  36. package/dist/http/providers/agent-manager/sessions.js.map +1 -0
  37. package/dist/http/providers/agent-manager/state.d.ts +8 -0
  38. package/dist/http/providers/agent-manager/state.d.ts.map +1 -0
  39. package/dist/http/providers/agent-manager/state.js +72 -0
  40. package/dist/http/providers/agent-manager/state.js.map +1 -0
  41. package/dist/http/providers/agent-manager.service.d.ts +13 -52
  42. package/dist/http/providers/agent-manager.service.d.ts.map +1 -1
  43. package/dist/http/providers/agent-manager.service.js +63 -234
  44. package/dist/http/providers/agent-manager.service.js.map +1 -1
  45. package/dist/http/sessions/sessions.service.d.ts +2 -1
  46. package/dist/http/sessions/sessions.service.d.ts.map +1 -1
  47. package/dist/http/sessions/sessions.service.js +18 -6
  48. package/dist/http/sessions/sessions.service.js.map +1 -1
  49. package/package.json +1 -1
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashState = hashState;
4
+ exports.getExistingSession = getExistingSession;
5
+ exports.getOrCreateSession = getOrCreateSession;
6
+ exports.createRunnerWithSession = createRunnerWithSession;
7
+ exports.storeLoadedAgent = storeLoadedAgent;
8
+ exports.clearAgentSessions = clearAgentSessions;
9
+ const node_crypto_1 = require("node:crypto");
10
+ const adk_1 = require("@iqai/adk");
11
+ const constants_1 = require("../../../common/constants");
12
+ function hashState(state) {
13
+ if (!state || Object.keys(state).length === 0)
14
+ return "empty";
15
+ return (0, node_crypto_1.createHash)("sha256").update(JSON.stringify(state)).digest("hex");
16
+ }
17
+ async function getExistingSession(sessionService, agentPath, sessionId, logger) {
18
+ const userId = `${constants_1.USER_ID_PREFIX}${agentPath}`;
19
+ const appName = constants_1.DEFAULT_APP_NAME;
20
+ try {
21
+ const session = await sessionService.getSession(appName, userId, sessionId);
22
+ if (session) {
23
+ logger.log(`Restored existing session: ${sessionId}`);
24
+ return session;
25
+ }
26
+ }
27
+ catch (error) {
28
+ logger.warn(`Failed to restore session ${sessionId}, creating new one: ${error instanceof Error ? error.message : String(error)}`);
29
+ }
30
+ return sessionService.createSession(appName, userId);
31
+ }
32
+ async function getOrCreateSession(sessionService, agentPath, agentResult, extractInitialStateFn, logger) {
33
+ const userId = `${constants_1.USER_ID_PREFIX}${agentPath}`;
34
+ const appName = constants_1.DEFAULT_APP_NAME;
35
+ const existingSessions = await sessionService.listSessions(appName, userId);
36
+ if (existingSessions.sessions.length > 0) {
37
+ const mostRecentSession = existingSessions.sessions.reduce((latest, current) => current.lastUpdateTime > latest.lastUpdateTime ? current : latest);
38
+ const hasState = mostRecentSession.state &&
39
+ Object.keys(mostRecentSession.state).length > 0;
40
+ if (!hasState) {
41
+ const initialState = extractInitialStateFn(agentResult);
42
+ if (initialState) {
43
+ logger.log(`Existing session has no state, initializing with agent's initial state: ${Object.keys(initialState)}`);
44
+ await sessionService.createSession(appName, userId, initialState, mostRecentSession.id);
45
+ mostRecentSession.state = initialState;
46
+ }
47
+ }
48
+ logger.log(`Reusing existing session: ${JSON.stringify({ sessionId: mostRecentSession.id })}`);
49
+ return mostRecentSession;
50
+ }
51
+ const initialState = extractInitialStateFn(agentResult);
52
+ return sessionService.createSession(appName, userId, initialState);
53
+ }
54
+ async function createRunnerWithSession(sessionService, baseAgent, sessionToUse, agentPath) {
55
+ const userId = `${constants_1.USER_ID_PREFIX}${agentPath}`;
56
+ const appName = constants_1.DEFAULT_APP_NAME;
57
+ const agentBuilder = adk_1.AgentBuilder.create(baseAgent.name).withAgent(baseAgent);
58
+ agentBuilder.withSessionService(sessionService, {
59
+ userId,
60
+ appName,
61
+ sessionId: sessionToUse.id,
62
+ state: sessionToUse.state,
63
+ });
64
+ const { runner } = await agentBuilder.build();
65
+ return runner;
66
+ }
67
+ async function storeLoadedAgent(sessionService, agentPath, agentResult, runner, sessionToUse, agent, setLoaded, logger, setBuilt) {
68
+ const userId = `${constants_1.USER_ID_PREFIX}${agentPath}`;
69
+ const appName = constants_1.DEFAULT_APP_NAME;
70
+ setLoaded(agentPath, {
71
+ agent: agentResult.agent,
72
+ runner,
73
+ sessionId: sessionToUse.id,
74
+ userId,
75
+ appName,
76
+ });
77
+ agent.instance = agentResult.agent;
78
+ agent.name = agentResult.agent.name;
79
+ if (agentResult.builtAgent && setBuilt)
80
+ setBuilt(agentPath, agentResult.builtAgent);
81
+ try {
82
+ const existingSession = await sessionService.getSession(appName, userId, sessionToUse.id);
83
+ if (!existingSession) {
84
+ logger.log(`Creating session in sessionService: ${sessionToUse.id}`);
85
+ await sessionService.createSession(appName, userId, sessionToUse.state, sessionToUse.id);
86
+ }
87
+ else {
88
+ logger.log(`Session already exists in sessionService: ${sessionToUse.id}`);
89
+ }
90
+ }
91
+ catch (error) {
92
+ logger.error("Error ensuring session exists:", error);
93
+ }
94
+ }
95
+ async function clearAgentSessions(sessionService, agentPath, logger) {
96
+ try {
97
+ const userId = `${constants_1.USER_ID_PREFIX}${agentPath}`;
98
+ const appName = constants_1.DEFAULT_APP_NAME;
99
+ const sessions = await sessionService.listSessions(appName, userId);
100
+ for (const session of sessions.sessions) {
101
+ try {
102
+ await sessionService.deleteSession(appName, userId, session.id);
103
+ logger.log(`Cleared session ${session.id} for agent ${agentPath}`);
104
+ }
105
+ catch (error) {
106
+ logger.warn(`Failed to clear session ${session.id}: ${error instanceof Error ? error.message : String(error)}`);
107
+ }
108
+ }
109
+ }
110
+ catch (error) {
111
+ logger.warn(`Failed to list sessions for clearing: ${error instanceof Error ? error.message : String(error)}`);
112
+ }
113
+ }
114
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../../src/http/providers/agent-manager/sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { BaseAgent, BuiltAgent } from "@iqai/adk";
2
+ import type { Logger } from "@nestjs/common";
3
+ import type { SessionState } from "../agent-loader.types";
4
+ export declare function extractInitialState(agentResult: {
5
+ agent: BaseAgent;
6
+ builtAgent?: BuiltAgent;
7
+ }, logger?: Logger): SessionState | undefined;
8
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/http/providers/agent-manager/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAC;AAyE5E,wBAAgB,mBAAmB,CAClC,WAAW,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE,EAC1D,MAAM,CAAC,EAAE,MAAM,GACb,YAAY,GAAG,SAAS,CAa1B"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractInitialState = extractInitialState;
4
+ function hasSessionService(agent) {
5
+ return (typeof agent === "object" && agent !== null && "sessionService" in agent);
6
+ }
7
+ function extractNonEmptyState(state) {
8
+ if (state == null)
9
+ return undefined;
10
+ if (state instanceof Map) {
11
+ if (state.size > 0)
12
+ return Object.fromEntries(state);
13
+ return undefined;
14
+ }
15
+ if (typeof state === "object" && Object.keys(state).length > 0) {
16
+ return state;
17
+ }
18
+ return undefined;
19
+ }
20
+ function getInitialStateFromSessionService(agent) {
21
+ const sessions = agent?.sessionService?.sessions;
22
+ if (!sessions)
23
+ return undefined;
24
+ for (const [, userSessions] of sessions) {
25
+ for (const [, session] of userSessions) {
26
+ for (const [, innerSession] of session) {
27
+ const extractedState = extractNonEmptyState(innerSession?.state);
28
+ if (extractedState)
29
+ return extractedState;
30
+ }
31
+ }
32
+ }
33
+ return undefined;
34
+ }
35
+ function extractBuiltAgentState(builtAgent) {
36
+ if (!builtAgent?.session)
37
+ return undefined;
38
+ const state = builtAgent.session.state;
39
+ if (state && Object.keys(state).length > 0)
40
+ return state;
41
+ return undefined;
42
+ }
43
+ function extractSubAgentState(agent, logger) {
44
+ const subAgents = agent.subAgents;
45
+ if (!Array.isArray(subAgents))
46
+ return undefined;
47
+ for (const subAgent of subAgents) {
48
+ if (hasSessionService(subAgent)) {
49
+ const subState = getInitialStateFromSessionService(subAgent);
50
+ if (subState) {
51
+ logger?.log(`✅ Extracted state from sub-agent: ${Object.keys(subState)}`);
52
+ return subState;
53
+ }
54
+ }
55
+ }
56
+ return undefined;
57
+ }
58
+ function extractInitialState(agentResult, logger) {
59
+ const builtAgentState = extractBuiltAgentState(agentResult.builtAgent);
60
+ if (builtAgentState)
61
+ return builtAgentState;
62
+ if (hasSessionService(agentResult.agent)) {
63
+ const agentState = getInitialStateFromSessionService(agentResult.agent);
64
+ if (agentState)
65
+ return agentState;
66
+ }
67
+ const subAgentState = extractSubAgentState(agentResult.agent, logger);
68
+ if (subAgentState)
69
+ return subAgentState;
70
+ return undefined;
71
+ }
72
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/http/providers/agent-manager/state.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export declare class AgentManager {
6
6
  private agents;
7
7
  private loadedAgents;
8
8
  private builtAgents;
9
+ private initialStateHashes;
9
10
  private scanner;
10
11
  private loader;
11
12
  private logger;
@@ -17,17 +18,11 @@ export declare class AgentManager {
17
18
  * Start an agent, optionally restoring a previous session.
18
19
  * @param agentPath - The path to the agent
19
20
  * @param preservedSessionId - Optional session ID to restore (used during hot reload)
21
+ * @param forceFullReload - Force cache invalidation and session reset (used when initial state changes)
20
22
  */
21
- startAgent(agentPath: string, preservedSessionId?: string): Promise<void>;
23
+ startAgent(agentPath: string, preservedSessionId?: string, forceFullReload?: boolean): Promise<void>;
22
24
  private validateAndGetAgent;
23
25
  private loadAgentModule;
24
- /**
25
- * Get an existing session by ID, falling back to creating a new one if not found
26
- */
27
- private getExistingSession;
28
- private getOrCreateSession;
29
- private createRunnerWithSession;
30
- private storeLoadedAgent;
31
26
  stopAgent(agentPath: string): Promise<void>;
32
27
  sendMessageToAgent(agentPath: string, message: string, attachments?: Array<{
33
28
  name: string;
@@ -40,57 +35,23 @@ export declare class AgentManager {
40
35
  */
41
36
  getInitialStateForAgent(agentPath: string): SessionState | undefined;
42
37
  /**
43
- * Extract initial state from an agent result by checking built agent, sessionService, and sub-agents.
44
- * Tries extraction in this order:
45
- * 1. From builtAgent.session (if available)
46
- * 2. From agent.sessionService (if present)
47
- * 3. From subAgents' sessionServices (if any)
48
- *
49
- * @param agentResult - The agent result containing agent and optional builtAgent
50
- * @returns The initial session state if found, undefined otherwise
38
+ * Extract initial state from an agent result
51
39
  */
52
40
  private extractInitialState;
53
- /**
54
- * Extract state from a built agent's session if available.
55
- *
56
- * @param builtAgent - The built agent instance (optional)
57
- * @returns The state from builtAgent.session if found and non-empty, undefined otherwise
58
- */
59
- private extractBuiltAgentState;
60
- /**
61
- * Extract state from sub-agents' session services.
62
- * Checks each sub-agent for a session service and returns the first non-empty state found.
63
- *
64
- * @param agent - The agent that may have sub-agents
65
- * @returns The state from the first sub-agent with a non-empty state, undefined otherwise
66
- */
67
- private extractSubAgentState;
68
- /**
69
- * Extract the first non-empty state from a potentially-Map state value.
70
- * Handles both plain objects (SessionState) and Map instances.
71
- *
72
- * @param state - The state value, which could be SessionState, Map, or undefined
73
- * @returns The extracted SessionState if non-empty, undefined otherwise
74
- */
75
- private extractNonEmptyState;
76
- /**
77
- * Extract state from an agent's sessionService by traversing its nested maps.
78
- *
79
- * The sessionService maintains a nested structure:
80
- * - Map<appName, Map<userId, Map<sessionId, SessionWithState>>>
81
- *
82
- * This method iterates through all sessions and returns the first non-empty state found.
83
- * States can be either plain objects (SessionState) or Maps (which are converted to objects).
84
- *
85
- * @param agent - The agent with optional sessionService property
86
- * @returns The first non-empty session state found, or undefined if none exists
87
- */
88
- private getInitialStateFromSessionService;
89
41
  /**
90
42
  * Get session info for all loaded agents before stopping
91
43
  * Used for preserving sessions during hot reload
92
44
  */
93
45
  getLoadedAgentSessions(): Map<string, string>;
46
+ /**
47
+ * Check if initial state has changed for any loaded agent
48
+ * Returns true if any agent's initial state hash has changed
49
+ */
50
+ hasInitialStateChanged(): Promise<boolean>;
94
51
  stopAllAgents(): void;
52
+ /**
53
+ * Hash the initial state to detect changes
54
+ */
55
+ private hashState;
95
56
  }
96
57
  //# sourceMappingURL=agent-manager.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-manager.service.d.ts","sourceRoot":"","sources":["../../../src/http/providers/agent-manager.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAGN,sBAAsB,EAEtB,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,KAAK,EAAe,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAEX,YAAY,EAEZ,MAAM,sBAAsB,CAAC;AAiB9B,qBACa,YAAY;IASvB,OAAO,CAAC,cAAc;IARvB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAGd,cAAc,EAAE,sBAAsB,EAC9C,KAAK,UAAQ;IAOd,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAI/B,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAI3C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;OAIG;IACG,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC;IA2ChB,OAAO,CAAC,mBAAmB;YAab,eAAe;IA0C7B;;OAEG;YACW,kBAAkB;YA+BlB,kBAAkB;YAsFlB,uBAAuB;YAwBvB,gBAAgB;IAwDxB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,kBAAkB,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GACnE,OAAO,CAAC,MAAM,CAAC;IA2ClB;;;OAGG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAiBpE;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAwB5B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,iCAAiC;IAyBzC;;;OAGG;IACH,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ7C,aAAa,IAAI,IAAI;CAMrB"}
1
+ {"version":3,"file":"agent-manager.service.d.ts","sourceRoot":"","sources":["../../../src/http/providers/agent-manager.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,KAAK,EAAE,KAAK,EAAe,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAYvE,qBACa,YAAY;IAUvB,OAAO,CAAC,cAAc;IATvB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAGd,cAAc,EAAE,sBAAsB,EAC9C,KAAK,UAAQ;IAOd,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAI/B,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC;IAI3C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMnC;;;;;OAKG;IACG,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,IAAI,CAAC;IAyFhB,OAAO,CAAC,mBAAmB;YAab,eAAe;IA+CvB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,kBAAkB,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GACnE,OAAO,CAAC,MAAM,CAAC;IA2ClB;;;OAGG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAiBpE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;OAGG;IACH,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ7C;;;OAGG;IACG,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC;IAuChD,aAAa,IAAI,IAAI;IAOrB;;OAEG;IACH,OAAO,CAAC,SAAS;CAGjB"}