@praveencs/agent 0.9.20 → 0.9.23

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.
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Credential Store — Encrypted vault with interactive capture support
3
+ *
4
+ * Priority chain: vault.json → .env → process.env
5
+ * Values are AES-256-GCM encrypted at rest using a machine-derived key.
6
+ */
7
+ export declare class CredentialStore {
8
+ private workDir;
9
+ private vaultPath;
10
+ private envPath;
11
+ private cache;
12
+ private loaded;
13
+ /** Callback for requesting credentials interactively */
14
+ onCredentialRequired?: (key: string, reason: string) => Promise<string | null>;
15
+ constructor(workDir: string);
16
+ /**
17
+ * Load credentials from all sources
18
+ */
19
+ load(): Promise<void>;
20
+ /**
21
+ * Get a credential value.
22
+ * Priority: cache (vault) → .env → process.env → interactive capture → null
23
+ */
24
+ get(key: string, reason?: string): Promise<string | null>;
25
+ /**
26
+ * Store a credential in the encrypted vault
27
+ */
28
+ set(key: string, value: string): Promise<void>;
29
+ /**
30
+ * List all known credential keys (from vault + env)
31
+ */
32
+ list(): Promise<string[]>;
33
+ /**
34
+ * Check if a credential exists
35
+ */
36
+ has(key: string): Promise<boolean>;
37
+ /**
38
+ * Delete a credential from the vault
39
+ */
40
+ delete(key: string): Promise<void>;
41
+ private isCredentialKey;
42
+ private saveVault;
43
+ private getEncryptionKey;
44
+ private encrypt;
45
+ private decrypt;
46
+ }
47
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/credentials/store.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,qBAAa,eAAe;IASZ,OAAO,CAAC,OAAO;IAR3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,MAAM,CAAS;IAEvB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;gBAE3D,OAAO,EAAE,MAAM;IAKnC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B3B;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyB/D;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAe/B;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxC;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,OAAO,CAAC,eAAe;YAQT,SAAS;IAYvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,OAAO;CASlB"}
@@ -0,0 +1,155 @@
1
+ import { readFile, writeFile, access, mkdir } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { createCipheriv, createDecipheriv, randomBytes, createHash } from 'node:crypto';
4
+ import { hostname } from 'node:os';
5
+ import { config as loadDotenv } from 'dotenv';
6
+ /**
7
+ * Credential Store — Encrypted vault with interactive capture support
8
+ *
9
+ * Priority chain: vault.json → .env → process.env
10
+ * Values are AES-256-GCM encrypted at rest using a machine-derived key.
11
+ */
12
+ export class CredentialStore {
13
+ workDir;
14
+ vaultPath;
15
+ envPath;
16
+ cache = new Map();
17
+ loaded = false;
18
+ /** Callback for requesting credentials interactively */
19
+ onCredentialRequired;
20
+ constructor(workDir) {
21
+ this.workDir = workDir;
22
+ this.vaultPath = path.join(workDir, '.agent', 'vault.json');
23
+ this.envPath = path.join(workDir, '.env');
24
+ }
25
+ /**
26
+ * Load credentials from all sources
27
+ */
28
+ async load() {
29
+ if (this.loaded)
30
+ return;
31
+ // 1. Load .env file
32
+ loadDotenv({ path: this.envPath });
33
+ // 2. Load vault
34
+ try {
35
+ await access(this.vaultPath);
36
+ const raw = await readFile(this.vaultPath, 'utf-8');
37
+ const vault = JSON.parse(raw);
38
+ for (const [key, entry] of Object.entries(vault.credentials)) {
39
+ try {
40
+ const decrypted = this.decrypt(entry.value, entry.iv, entry.tag);
41
+ this.cache.set(key, decrypted);
42
+ }
43
+ catch {
44
+ // Skip corrupt entries
45
+ }
46
+ }
47
+ }
48
+ catch {
49
+ // Vault doesn't exist yet
50
+ }
51
+ this.loaded = true;
52
+ }
53
+ /**
54
+ * Get a credential value.
55
+ * Priority: cache (vault) → .env → process.env → interactive capture → null
56
+ */
57
+ async get(key, reason) {
58
+ await this.load();
59
+ // 1. Check vault cache
60
+ if (this.cache.has(key)) {
61
+ return this.cache.get(key);
62
+ }
63
+ // 2. Check environment
64
+ if (process.env[key]) {
65
+ return process.env[key];
66
+ }
67
+ // 3. Interactive capture
68
+ if (this.onCredentialRequired) {
69
+ const value = await this.onCredentialRequired(key, reason || `Credential "${key}" is required`);
70
+ if (value) {
71
+ await this.set(key, value);
72
+ return value;
73
+ }
74
+ }
75
+ return null;
76
+ }
77
+ /**
78
+ * Store a credential in the encrypted vault
79
+ */
80
+ async set(key, value) {
81
+ await this.load();
82
+ this.cache.set(key, value);
83
+ await this.saveVault();
84
+ }
85
+ /**
86
+ * List all known credential keys (from vault + env)
87
+ */
88
+ async list() {
89
+ await this.load();
90
+ const keys = new Set(this.cache.keys());
91
+ // Add env vars that look like credentials
92
+ for (const key of Object.keys(process.env)) {
93
+ if (this.isCredentialKey(key)) {
94
+ keys.add(key);
95
+ }
96
+ }
97
+ return Array.from(keys).sort();
98
+ }
99
+ /**
100
+ * Check if a credential exists
101
+ */
102
+ async has(key) {
103
+ await this.load();
104
+ return this.cache.has(key) || !!process.env[key];
105
+ }
106
+ /**
107
+ * Delete a credential from the vault
108
+ */
109
+ async delete(key) {
110
+ await this.load();
111
+ this.cache.delete(key);
112
+ await this.saveVault();
113
+ }
114
+ // ── Private ──
115
+ isCredentialKey(key) {
116
+ const patterns = [
117
+ /TOKEN/i, /KEY/i, /SECRET/i, /PASSWORD/i, /PASS/i,
118
+ /API/i, /AUTH/i, /CREDENTIAL/i, /SMTP/i,
119
+ ];
120
+ return patterns.some(p => p.test(key));
121
+ }
122
+ async saveVault() {
123
+ const vault = { version: 1, credentials: {} };
124
+ for (const [key, value] of this.cache) {
125
+ const { encrypted, iv, tag } = this.encrypt(value);
126
+ vault.credentials[key] = { value: encrypted, iv, tag, updatedAt: new Date().toISOString() };
127
+ }
128
+ await mkdir(path.dirname(this.vaultPath), { recursive: true });
129
+ await writeFile(this.vaultPath, JSON.stringify(vault, null, 2), 'utf-8');
130
+ }
131
+ getEncryptionKey() {
132
+ // Derive key from machine hostname + project path — deterministic per machine+project
133
+ const seed = `agent-vault:${hostname()}:${this.workDir}`;
134
+ return createHash('sha256').update(seed).digest();
135
+ }
136
+ encrypt(plaintext) {
137
+ const key = this.getEncryptionKey();
138
+ const iv = randomBytes(16);
139
+ const cipher = createCipheriv('aes-256-gcm', key, iv);
140
+ let encrypted = cipher.update(plaintext, 'utf-8', 'hex');
141
+ encrypted += cipher.final('hex');
142
+ const tag = cipher.getAuthTag().toString('hex');
143
+ return { encrypted, iv: iv.toString('hex'), tag };
144
+ }
145
+ decrypt(encrypted, ivHex, tagHex) {
146
+ const key = this.getEncryptionKey();
147
+ const iv = Buffer.from(ivHex, 'hex');
148
+ const decipher = createDecipheriv('aes-256-gcm', key, iv);
149
+ decipher.setAuthTag(Buffer.from(tagHex, 'hex'));
150
+ let decrypted = decipher.update(encrypted, 'hex', 'utf-8');
151
+ decrypted += decipher.final('utf-8');
152
+ return decrypted;
153
+ }
154
+ }
155
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/credentials/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ToolRegistry } from '../tools/registry.js';
2
+ import type { CredentialStore } from './store.js';
3
+ /**
4
+ * Register credential tools (secrets.get, secrets.list, secrets.set)
5
+ */
6
+ export declare function registerCredentialTools(registry: ToolRegistry, store: CredentialStore): void;
7
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/credentials/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAwF5F"}
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Register credential tools (secrets.get, secrets.list, secrets.set)
4
+ */
5
+ export function registerCredentialTools(registry, store) {
6
+ if (!registry.has('secrets.get')) {
7
+ registry.register({
8
+ name: 'secrets.get',
9
+ category: 'secrets',
10
+ description: 'Get a credential/secret value by key. Checks vault, .env, and environment variables. If not found, may prompt the user interactively.',
11
+ inputSchema: z.object({
12
+ key: z.string().describe('The credential key (e.g., GITHUB_TOKEN, APIFY_TOKEN)'),
13
+ reason: z.string().optional().describe('Why this credential is needed — shown to user if interactive capture is triggered'),
14
+ }),
15
+ outputSchema: z.object({
16
+ value: z.string().nullable(),
17
+ source: z.string(),
18
+ }),
19
+ permissions: ['secrets'],
20
+ execute: async (input, _ctx) => {
21
+ const start = Date.now();
22
+ try {
23
+ const value = await store.get(input.key, input.reason);
24
+ return {
25
+ success: !!value,
26
+ data: {
27
+ value: value || null,
28
+ source: value ? 'vault' : 'not_found',
29
+ },
30
+ durationMs: Date.now() - start,
31
+ };
32
+ }
33
+ catch (err) {
34
+ return { success: false, error: err.message, durationMs: Date.now() - start };
35
+ }
36
+ },
37
+ });
38
+ }
39
+ if (!registry.has('secrets.list')) {
40
+ registry.register({
41
+ name: 'secrets.list',
42
+ category: 'secrets',
43
+ description: 'List all known credential keys. Does NOT return values — only key names.',
44
+ inputSchema: z.object({}),
45
+ outputSchema: z.object({
46
+ keys: z.array(z.string()),
47
+ }),
48
+ permissions: ['secrets'],
49
+ execute: async (_input, _ctx) => {
50
+ const start = Date.now();
51
+ try {
52
+ const keys = await store.list();
53
+ return {
54
+ success: true,
55
+ data: { keys },
56
+ durationMs: Date.now() - start,
57
+ };
58
+ }
59
+ catch (err) {
60
+ return { success: false, error: err.message, durationMs: Date.now() - start };
61
+ }
62
+ },
63
+ });
64
+ }
65
+ if (!registry.has('secrets.set')) {
66
+ registry.register({
67
+ name: 'secrets.set',
68
+ category: 'secrets',
69
+ description: 'Store a credential in the encrypted vault. Use this to save API keys or tokens for future use.',
70
+ inputSchema: z.object({
71
+ key: z.string().describe('The credential key (e.g., GITHUB_TOKEN)'),
72
+ value: z.string().describe('The credential value'),
73
+ }),
74
+ outputSchema: z.object({
75
+ stored: z.boolean(),
76
+ }),
77
+ permissions: ['secrets'],
78
+ execute: async (input, _ctx) => {
79
+ const start = Date.now();
80
+ try {
81
+ await store.set(input.key, input.value);
82
+ return {
83
+ success: true,
84
+ data: { stored: true },
85
+ durationMs: Date.now() - start,
86
+ };
87
+ }
88
+ catch (err) {
89
+ return { success: false, error: err.message, durationMs: Date.now() - start };
90
+ }
91
+ },
92
+ });
93
+ }
94
+ }
95
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/credentials/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ToolRegistry } from '../tools/registry.js';
2
+ import type { ScriptLoader } from '../scripts/loader.js';
3
+ import type { CommandLoader } from '../commands/loader.js';
4
+ /**
5
+ * Register script.run tool — lets the LLM execute project scripts
6
+ */
7
+ export declare function registerScriptTool(registry: ToolRegistry, scriptLoader: ScriptLoader, projectRoot: string): void;
8
+ /**
9
+ * Register command.execute tool — lets the LLM run project commands
10
+ * Commands are markdown files with instructions that get executed via the LLM skill runner.
11
+ */
12
+ export declare function registerCommandTool(registry: ToolRegistry, commandLoader: CommandLoader): void;
13
+ //# sourceMappingURL=capability-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-tools.d.ts","sourceRoot":"","sources":["../../../src/daemon/capability-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CA+ChH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAwC9F"}
@@ -0,0 +1,97 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Register script.run tool — lets the LLM execute project scripts
4
+ */
5
+ export function registerScriptTool(registry, scriptLoader, projectRoot) {
6
+ if (registry.has('script.run'))
7
+ return;
8
+ registry.register({
9
+ name: 'script.run',
10
+ category: 'exec',
11
+ description: 'Run a project script by name. Use secrets.list to see available scripts. Scripts are located in .agent/scripts/.',
12
+ inputSchema: z.object({
13
+ name: z.string().describe('Script name to run'),
14
+ args: z.record(z.string()).optional().describe('Arguments to pass to the script'),
15
+ }),
16
+ outputSchema: z.object({
17
+ stdout: z.string(),
18
+ stderr: z.string(),
19
+ exitCode: z.number(),
20
+ }),
21
+ permissions: ['exec'],
22
+ execute: async (input, _ctx) => {
23
+ const start = Date.now();
24
+ try {
25
+ const script = scriptLoader.get(input.name);
26
+ if (!script) {
27
+ return {
28
+ success: false,
29
+ error: `Script "${input.name}" not found. Available: ${scriptLoader.list().map(s => s.manifest.name).join(', ') || 'none'}`,
30
+ durationMs: Date.now() - start,
31
+ };
32
+ }
33
+ const { ScriptRunner } = await import('../scripts/runner.js');
34
+ const runner = new ScriptRunner();
35
+ const result = await runner.run(script, input.args || {}, { projectRoot });
36
+ return {
37
+ success: result.exitCode === 0,
38
+ data: {
39
+ stdout: result.stdout?.slice(0, 3000) || '',
40
+ stderr: result.stderr?.slice(0, 1000) || '',
41
+ exitCode: result.exitCode,
42
+ },
43
+ durationMs: Date.now() - start,
44
+ };
45
+ }
46
+ catch (err) {
47
+ return { success: false, error: err.message, durationMs: Date.now() - start };
48
+ }
49
+ },
50
+ });
51
+ }
52
+ /**
53
+ * Register command.execute tool — lets the LLM run project commands
54
+ * Commands are markdown files with instructions that get executed via the LLM skill runner.
55
+ */
56
+ export function registerCommandTool(registry, commandLoader) {
57
+ if (registry.has('command.execute'))
58
+ return;
59
+ registry.register({
60
+ name: 'command.execute',
61
+ category: 'exec',
62
+ description: 'Execute a project command by name. Commands are pre-defined automation workflows. Returns the command\'s prompt text to be followed.',
63
+ inputSchema: z.object({
64
+ name: z.string().describe('Command name to execute'),
65
+ }),
66
+ outputSchema: z.object({
67
+ prompt: z.string(),
68
+ description: z.string(),
69
+ }),
70
+ permissions: ['exec'],
71
+ execute: async (input, _ctx) => {
72
+ const start = Date.now();
73
+ try {
74
+ const cmd = commandLoader.get(input.name);
75
+ if (!cmd) {
76
+ return {
77
+ success: false,
78
+ error: `Command "${input.name}" not found. Available: ${commandLoader.list().map(c => c.name).join(', ') || 'none'}`,
79
+ durationMs: Date.now() - start,
80
+ };
81
+ }
82
+ return {
83
+ success: true,
84
+ data: {
85
+ prompt: cmd.prompt,
86
+ description: cmd.description,
87
+ },
88
+ durationMs: Date.now() - start,
89
+ };
90
+ }
91
+ catch (err) {
92
+ return { success: false, error: err.message, durationMs: Date.now() - start };
93
+ }
94
+ },
95
+ });
96
+ }
97
+ //# sourceMappingURL=capability-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-tools.js","sourceRoot":"","sources":["../../../src/daemon/capability-tools.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,14 @@ export declare class DaemonService {
14
14
  private heartbeatTimer;
15
15
  private memoryStore;
16
16
  private goalStore;
17
+ private credentialStore;
17
18
  private logPath;
18
19
  private running;
19
20
  private startedAt;
20
21
  private instanceRegistry;
21
22
  private instanceId;
23
+ private activeTasks;
24
+ private maxConcurrent;
22
25
  private stats;
23
26
  constructor(workDir?: string);
24
27
  /**
@@ -34,9 +37,17 @@ export declare class DaemonService {
34
37
  */
35
38
  private onTriggerFired;
36
39
  /**
37
- * Process the goal/task queue
40
+ * Process the goal/task queue — supports parallel execution
38
41
  */
39
42
  private processGoalQueue;
43
+ /**
44
+ * Run a single task with output chaining, retry, and re-decomposition
45
+ */
46
+ private runTask;
47
+ /**
48
+ * Handle a permanently failed task — attempt re-decomposition
49
+ */
50
+ private handleFailedTask;
40
51
  /**
41
52
  * Auto-decompose a goal into tasks using LLM
42
53
  */
@@ -58,7 +69,7 @@ export declare class DaemonService {
58
69
  */
59
70
  private shutdown;
60
71
  /**
61
- * Build the ephemeral skill prompt for a task
72
+ * Build the ephemeral skill prompt for a task with output chaining + capability context
62
73
  */
63
74
  private buildTaskPrompt;
64
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/daemon/service.ts"],"names":[],"mappings":"AAqBA;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAmBV,OAAO,CAAC,OAAO;IAlB3B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAMX;gBAEkB,OAAO,GAAE,MAAsB;IAQnD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C5B;;OAEG;YACW,eAAe;IA8C7B;;OAEG;YACW,cAAc;IAiC5B;;OAEG;YACW,gBAAgB;IAuD9B;;OAEG;YACW,aAAa;IAwB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;YACW,WAAW;IA0DzB;;OAEG;YACW,SAAS;IAyBvB;;OAEG;YACW,QAAQ;IAiCtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAmCvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;IACH,SAAS;;;;;;;;;;;;;;IAWT;;OAEG;YACW,GAAG;CAWpB"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/daemon/service.ts"],"names":[],"mappings":"AA8BA;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAsBV,OAAO,CAAC,OAAO;IArB3B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAMX;gBAEkB,OAAO,GAAE,MAAsB;IASnD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C5B;;OAEG;YACW,eAAe;IA8C7B;;OAEG;YACW,cAAc;IAiC5B;;OAEG;YACW,gBAAgB;IAoC9B;;OAEG;YACW,OAAO;IA8CrB;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,aAAa;IAwB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;YACW,WAAW;IAoIzB;;OAEG;YACW,SAAS;IAyBvB;;OAEG;YACW,QAAQ;IAiCtB;;OAEG;YACW,eAAe;IA6G7B;;OAEG;IACH,OAAO,CAAC,SAAS;IAgBjB;;OAEG;IACH,SAAS;;;;;;;;;;;;;;IAWT;;OAEG;YACW,GAAG;CAWpB"}