zilmate 1.0.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.
Files changed (166) hide show
  1. package/.env.example +14 -0
  2. package/README.md +326 -0
  3. package/agent-docs.md +264 -0
  4. package/dist/agents/chat.agent.d.ts +30 -0
  5. package/dist/agents/chat.agent.d.ts.map +1 -0
  6. package/dist/agents/chat.agent.js +16 -0
  7. package/dist/agents/chat.agent.js.map +1 -0
  8. package/dist/agents/docs-research.agent.d.ts +127 -0
  9. package/dist/agents/docs-research.agent.d.ts.map +1 -0
  10. package/dist/agents/docs-research.agent.js +29 -0
  11. package/dist/agents/docs-research.agent.js.map +1 -0
  12. package/dist/agents/image.agent.d.ts +9 -0
  13. package/dist/agents/image.agent.d.ts.map +1 -0
  14. package/dist/agents/image.agent.js +12 -0
  15. package/dist/agents/image.agent.js.map +1 -0
  16. package/dist/agents/manager.d.ts +140 -0
  17. package/dist/agents/manager.d.ts.map +1 -0
  18. package/dist/agents/manager.js +150 -0
  19. package/dist/agents/manager.js.map +1 -0
  20. package/dist/agents/post.agent.d.ts +7 -0
  21. package/dist/agents/post.agent.d.ts.map +1 -0
  22. package/dist/agents/post.agent.js +12 -0
  23. package/dist/agents/post.agent.js.map +1 -0
  24. package/dist/agents/quick-help.agent.d.ts +30 -0
  25. package/dist/agents/quick-help.agent.d.ts.map +1 -0
  26. package/dist/agents/quick-help.agent.js +16 -0
  27. package/dist/agents/quick-help.agent.js.map +1 -0
  28. package/dist/cli/confirm.d.ts +5 -0
  29. package/dist/cli/confirm.d.ts.map +1 -0
  30. package/dist/cli/confirm.js +35 -0
  31. package/dist/cli/confirm.js.map +1 -0
  32. package/dist/cli/doctor.d.ts +53 -0
  33. package/dist/cli/doctor.d.ts.map +1 -0
  34. package/dist/cli/doctor.js +141 -0
  35. package/dist/cli/doctor.js.map +1 -0
  36. package/dist/cli/format.d.ts +12 -0
  37. package/dist/cli/format.d.ts.map +1 -0
  38. package/dist/cli/format.js +167 -0
  39. package/dist/cli/format.js.map +1 -0
  40. package/dist/cli/interactive.d.ts +2 -0
  41. package/dist/cli/interactive.d.ts.map +1 -0
  42. package/dist/cli/interactive.js +80 -0
  43. package/dist/cli/interactive.js.map +1 -0
  44. package/dist/cli/setup.d.ts +14 -0
  45. package/dist/cli/setup.d.ts.map +1 -0
  46. package/dist/cli/setup.js +145 -0
  47. package/dist/cli/setup.js.map +1 -0
  48. package/dist/cli/triggers.d.ts +43 -0
  49. package/dist/cli/triggers.d.ts.map +1 -0
  50. package/dist/cli/triggers.js +221 -0
  51. package/dist/cli/triggers.js.map +1 -0
  52. package/dist/config/env.d.ts +26 -0
  53. package/dist/config/env.d.ts.map +1 -0
  54. package/dist/config/env.js +59 -0
  55. package/dist/config/env.js.map +1 -0
  56. package/dist/config/models.d.ts +22 -0
  57. package/dist/config/models.d.ts.map +1 -0
  58. package/dist/config/models.js +38 -0
  59. package/dist/config/models.js.map +1 -0
  60. package/dist/index.d.ts +3 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +452 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/memory/composio-session.d.ts +9 -0
  65. package/dist/memory/composio-session.d.ts.map +1 -0
  66. package/dist/memory/composio-session.js +33 -0
  67. package/dist/memory/composio-session.js.map +1 -0
  68. package/dist/memory/history.d.ts +11 -0
  69. package/dist/memory/history.d.ts.map +1 -0
  70. package/dist/memory/history.js +33 -0
  71. package/dist/memory/history.js.map +1 -0
  72. package/dist/memory/local-store.d.ts +4 -0
  73. package/dist/memory/local-store.d.ts.map +1 -0
  74. package/dist/memory/local-store.js +24 -0
  75. package/dist/memory/local-store.js.map +1 -0
  76. package/dist/memory/long-term.d.ts +13 -0
  77. package/dist/memory/long-term.d.ts.map +1 -0
  78. package/dist/memory/long-term.js +67 -0
  79. package/dist/memory/long-term.js.map +1 -0
  80. package/dist/memory/redis.d.ts +4 -0
  81. package/dist/memory/redis.d.ts.map +1 -0
  82. package/dist/memory/redis.js +18 -0
  83. package/dist/memory/redis.js.map +1 -0
  84. package/dist/memory/scratchpad.d.ts +3 -0
  85. package/dist/memory/scratchpad.d.ts.map +1 -0
  86. package/dist/memory/scratchpad.js +22 -0
  87. package/dist/memory/scratchpad.js.map +1 -0
  88. package/dist/runtime/confirm.d.ts +13 -0
  89. package/dist/runtime/confirm.d.ts.map +1 -0
  90. package/dist/runtime/confirm.js +17 -0
  91. package/dist/runtime/confirm.js.map +1 -0
  92. package/dist/runtime/progress.d.ts +8 -0
  93. package/dist/runtime/progress.d.ts.map +1 -0
  94. package/dist/runtime/progress.js +15 -0
  95. package/dist/runtime/progress.js.map +1 -0
  96. package/dist/safety/approvals.d.ts +6 -0
  97. package/dist/safety/approvals.d.ts.map +1 -0
  98. package/dist/safety/approvals.js +8 -0
  99. package/dist/safety/approvals.js.map +1 -0
  100. package/dist/safety/limits.d.ts +8 -0
  101. package/dist/safety/limits.d.ts.map +1 -0
  102. package/dist/safety/limits.js +10 -0
  103. package/dist/safety/limits.js.map +1 -0
  104. package/dist/safety/redaction.d.ts +2 -0
  105. package/dist/safety/redaction.d.ts.map +1 -0
  106. package/dist/safety/redaction.js +9 -0
  107. package/dist/safety/redaction.js.map +1 -0
  108. package/dist/server.d.ts +54 -0
  109. package/dist/server.d.ts.map +1 -0
  110. package/dist/server.js +69 -0
  111. package/dist/server.js.map +1 -0
  112. package/dist/tools/app-knowledge.tool.d.ts +4 -0
  113. package/dist/tools/app-knowledge.tool.d.ts.map +1 -0
  114. package/dist/tools/app-knowledge.tool.js +30 -0
  115. package/dist/tools/app-knowledge.tool.js.map +1 -0
  116. package/dist/tools/composio.tool.d.ts +15 -0
  117. package/dist/tools/composio.tool.d.ts.map +1 -0
  118. package/dist/tools/composio.tool.js +272 -0
  119. package/dist/tools/composio.tool.js.map +1 -0
  120. package/dist/tools/docs-fetch.tool.d.ts +6 -0
  121. package/dist/tools/docs-fetch.tool.d.ts.map +1 -0
  122. package/dist/tools/docs-fetch.tool.js +62 -0
  123. package/dist/tools/docs-fetch.tool.js.map +1 -0
  124. package/dist/tools/docs-search.tool.d.ts +4 -0
  125. package/dist/tools/docs-search.tool.d.ts.map +1 -0
  126. package/dist/tools/docs-search.tool.js +14 -0
  127. package/dist/tools/docs-search.tool.js.map +1 -0
  128. package/dist/tools/image-generate.tool.d.ts +22 -0
  129. package/dist/tools/image-generate.tool.d.ts.map +1 -0
  130. package/dist/tools/image-generate.tool.js +113 -0
  131. package/dist/tools/image-generate.tool.js.map +1 -0
  132. package/dist/tools/memory.tool.d.ts +18 -0
  133. package/dist/tools/memory.tool.d.ts.map +1 -0
  134. package/dist/tools/memory.tool.js +53 -0
  135. package/dist/tools/memory.tool.js.map +1 -0
  136. package/dist/tools/post-generate.tool.d.ts +5 -0
  137. package/dist/tools/post-generate.tool.d.ts.map +1 -0
  138. package/dist/tools/post-generate.tool.js +19 -0
  139. package/dist/tools/post-generate.tool.js.map +1 -0
  140. package/dist/tools/scratchpad.tool.d.ts +7 -0
  141. package/dist/tools/scratchpad.tool.d.ts.map +1 -0
  142. package/dist/tools/scratchpad.tool.js +29 -0
  143. package/dist/tools/scratchpad.tool.js.map +1 -0
  144. package/dist/tools/triggers.tool.d.ts +72 -0
  145. package/dist/tools/triggers.tool.d.ts.map +1 -0
  146. package/dist/tools/triggers.tool.js +108 -0
  147. package/dist/tools/triggers.tool.js.map +1 -0
  148. package/dist/tools/web-search.tool.d.ts +94 -0
  149. package/dist/tools/web-search.tool.d.ts.map +1 -0
  150. package/dist/tools/web-search.tool.js +214 -0
  151. package/dist/tools/web-search.tool.js.map +1 -0
  152. package/dist/tools/zilo-docs.tool.d.ts +26 -0
  153. package/dist/tools/zilo-docs.tool.d.ts.map +1 -0
  154. package/dist/tools/zilo-docs.tool.js +150 -0
  155. package/dist/tools/zilo-docs.tool.js.map +1 -0
  156. package/install.ps1 +62 -0
  157. package/package.json +88 -0
  158. package/src/doc/README.md +49 -0
  159. package/src/doc/admin-tools-and-sms-campaigns.md +99 -0
  160. package/src/doc/escalation-checklist.md +97 -0
  161. package/src/doc/payments-and-payouts.md +82 -0
  162. package/src/doc/shift-lifecycle-and-disputes.md +95 -0
  163. package/src/doc/support-macros.md +40 -0
  164. package/src/doc/venue-support-playbook.md +145 -0
  165. package/src/doc/verification-and-trust.md +88 -0
  166. package/src/doc/worker-support-playbook.md +160 -0
@@ -0,0 +1,145 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile, writeFile } from 'node:fs/promises';
3
+ import { randomUUID } from 'node:crypto';
4
+ import readline from 'node:readline/promises';
5
+ import { stdin as input, stdout as output } from 'node:process';
6
+ import chalk from 'chalk';
7
+ const defaults = {
8
+ ZILO_MANAGER_MODEL: 'minimax/minimax-m3',
9
+ ZILO_HELP_MODEL: 'alibaba/qwen3.7-plus',
10
+ ZILO_POST_MODEL: 'alibaba/qwen3.7-plus',
11
+ ZILO_IMAGE_DEFAULT_PROVIDER: 'openai',
12
+ ZILO_IMAGE_OPENAI_MODEL: 'openai/gpt-image-2',
13
+ ZILO_IMAGE_GEMINI_MODEL: 'google/gemini-3-pro-image',
14
+ ZILO_IMAGE_MODEL: '',
15
+ };
16
+ function parseEnvFile(content) {
17
+ const values = new Map();
18
+ for (const line of content.split(/\r?\n/)) {
19
+ const trimmed = line.trim();
20
+ if (!trimmed || trimmed.startsWith('#'))
21
+ continue;
22
+ const match = /^([A-Z0-9_]+)=(.*)$/.exec(trimmed);
23
+ if (!match)
24
+ continue;
25
+ const [, key, rawValue] = match;
26
+ if (!key || rawValue === undefined)
27
+ continue;
28
+ values.set(key, rawValue.replace(/^"(.*)"$/, '$1'));
29
+ }
30
+ return values;
31
+ }
32
+ function formatEnvValue(value) {
33
+ if (!value)
34
+ return '';
35
+ if (/^[A-Za-z0-9_./:@+=-]+$/.test(value))
36
+ return value;
37
+ return JSON.stringify(value);
38
+ }
39
+ async function askRequiredSecret(rl, prompt) {
40
+ while (true) {
41
+ const value = await rl.question(prompt);
42
+ if (value.trim())
43
+ return value.trim();
44
+ console.log(chalk.yellow('This value is required.'));
45
+ }
46
+ }
47
+ async function askOptionalSecret(rl, prompt) {
48
+ const value = await rl.question(prompt);
49
+ return value.trim();
50
+ }
51
+ async function askYesNo(rl, prompt, defaultValue = false) {
52
+ const suffix = defaultValue ? 'Y/n' : 'y/N';
53
+ const answer = (await rl.question(`${prompt} (${suffix}) `)).trim().toLowerCase();
54
+ if (!answer)
55
+ return defaultValue;
56
+ return answer === 'y' || answer === 'yes';
57
+ }
58
+ function buildEnv(values) {
59
+ const lines = [
60
+ ['AI_GATEWAY_API_KEY', values.get('AI_GATEWAY_API_KEY') || ''],
61
+ ['COMPOSIO_API_KEY', values.get('COMPOSIO_API_KEY') || ''],
62
+ ['ZILMATE_USER_ID', values.get('ZILMATE_USER_ID') || ''],
63
+ ['TAVILY_API_KEY', values.get('TAVILY_API_KEY') || ''],
64
+ ['UPSTASH_REDIS_REST_URL', values.get('UPSTASH_REDIS_REST_URL') || ''],
65
+ ['UPSTASH_REDIS_REST_TOKEN', values.get('UPSTASH_REDIS_REST_TOKEN') || ''],
66
+ ['ZILO_MANAGER_MODEL', values.get('ZILO_MANAGER_MODEL') || defaults.ZILO_MANAGER_MODEL],
67
+ ['ZILO_HELP_MODEL', values.get('ZILO_HELP_MODEL') || defaults.ZILO_HELP_MODEL],
68
+ ['ZILO_POST_MODEL', values.get('ZILO_POST_MODEL') || defaults.ZILO_POST_MODEL],
69
+ ['ZILO_IMAGE_DEFAULT_PROVIDER', values.get('ZILO_IMAGE_DEFAULT_PROVIDER') || defaults.ZILO_IMAGE_DEFAULT_PROVIDER],
70
+ ['ZILO_IMAGE_OPENAI_MODEL', values.get('ZILO_IMAGE_OPENAI_MODEL') || defaults.ZILO_IMAGE_OPENAI_MODEL],
71
+ ['ZILO_IMAGE_GEMINI_MODEL', values.get('ZILO_IMAGE_GEMINI_MODEL') || defaults.ZILO_IMAGE_GEMINI_MODEL],
72
+ ['ZILO_IMAGE_MODEL', values.get('ZILO_IMAGE_MODEL') || defaults.ZILO_IMAGE_MODEL],
73
+ ];
74
+ return `${lines.map(([key, value]) => `${key}=${formatEnvValue(value)}`).join('\n')}\n`;
75
+ }
76
+ export async function runSetup(options = {}) {
77
+ const envPath = options.path || '.env';
78
+ const existing = existsSync(envPath) ? parseEnvFile(await readFile(envPath, 'utf8')) : new Map();
79
+ const rl = readline.createInterface({ input, output });
80
+ try {
81
+ console.log(chalk.cyan('ZilMate setup'));
82
+ console.log(chalk.gray(`Writing local environment config to ${envPath}`));
83
+ if (existing.size > 0 && !options.force && !options.yes) {
84
+ const overwrite = await askYesNo(rl, `${envPath} already exists. Update it?`, false);
85
+ if (!overwrite) {
86
+ console.log(chalk.yellow('Setup cancelled. Existing .env was left unchanged.'));
87
+ return;
88
+ }
89
+ }
90
+ const values = new Map(existing);
91
+ if (options.aiGatewayKey)
92
+ values.set('AI_GATEWAY_API_KEY', options.aiGatewayKey);
93
+ if (options.composioKey !== undefined)
94
+ values.set('COMPOSIO_API_KEY', options.composioKey);
95
+ if (options.zilmateUserId !== undefined)
96
+ values.set('ZILMATE_USER_ID', options.zilmateUserId);
97
+ if (options.tavilyKey !== undefined)
98
+ values.set('TAVILY_API_KEY', options.tavilyKey);
99
+ if (options.redisUrl !== undefined)
100
+ values.set('UPSTASH_REDIS_REST_URL', options.redisUrl);
101
+ if (options.redisToken !== undefined)
102
+ values.set('UPSTASH_REDIS_REST_TOKEN', options.redisToken);
103
+ const currentGatewayKey = values.get('AI_GATEWAY_API_KEY');
104
+ if (options.aiGatewayKey) {
105
+ values.set('AI_GATEWAY_API_KEY', options.aiGatewayKey);
106
+ }
107
+ else if (!currentGatewayKey && options.yes) {
108
+ throw new Error('AI_GATEWAY_API_KEY is required. Pass --ai-gateway-key or run setup interactively.');
109
+ }
110
+ else if (currentGatewayKey && !options.yes) {
111
+ const replace = await askYesNo(rl, 'AI_GATEWAY_API_KEY already exists. Replace it?', false);
112
+ if (replace)
113
+ values.set('AI_GATEWAY_API_KEY', await askRequiredSecret(rl, 'AI_GATEWAY_API_KEY: '));
114
+ }
115
+ else if (!currentGatewayKey) {
116
+ values.set('AI_GATEWAY_API_KEY', await askRequiredSecret(rl, 'AI_GATEWAY_API_KEY: '));
117
+ }
118
+ if (!values.get('ZILMATE_USER_ID')) {
119
+ values.set('ZILMATE_USER_ID', `zilmate-${randomUUID()}`);
120
+ }
121
+ if (!options.yes && options.composioKey === undefined && await askYesNo(rl, 'Add Composio API key for external app tools?', Boolean(values.get('COMPOSIO_API_KEY')))) {
122
+ const composioKey = await askOptionalSecret(rl, 'COMPOSIO_API_KEY (blank to skip): ');
123
+ values.set('COMPOSIO_API_KEY', composioKey);
124
+ }
125
+ if (!options.yes && options.tavilyKey === undefined && await askYesNo(rl, 'Add Tavily web search key?', Boolean(values.get('TAVILY_API_KEY')))) {
126
+ const tavilyKey = await askOptionalSecret(rl, 'TAVILY_API_KEY (blank to skip): ');
127
+ values.set('TAVILY_API_KEY', tavilyKey);
128
+ }
129
+ if (!options.yes && options.redisUrl === undefined && options.redisToken === undefined && await askYesNo(rl, 'Configure Upstash Redis memory?', Boolean(values.get('UPSTASH_REDIS_REST_URL') && values.get('UPSTASH_REDIS_REST_TOKEN')))) {
130
+ values.set('UPSTASH_REDIS_REST_URL', (await rl.question('UPSTASH_REDIS_REST_URL: ')).trim());
131
+ values.set('UPSTASH_REDIS_REST_TOKEN', await askOptionalSecret(rl, 'UPSTASH_REDIS_REST_TOKEN: '));
132
+ }
133
+ for (const [key, value] of Object.entries(defaults)) {
134
+ if (!values.has(key))
135
+ values.set(key, value);
136
+ }
137
+ await writeFile(envPath, buildEnv(values), 'utf8');
138
+ console.log(chalk.green(`Saved ${envPath}.`));
139
+ console.log(chalk.gray('Try: zilmate ping'));
140
+ }
141
+ finally {
142
+ rl.close();
143
+ }
144
+ }
145
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { Composio } from '@composio/core';
2
+ type TriggerListOptions = {
3
+ limit?: string;
4
+ showDisabled?: boolean;
5
+ json?: boolean;
6
+ };
7
+ type TriggerTypeOptions = {
8
+ limit?: string;
9
+ json?: boolean;
10
+ };
11
+ type TriggerCreateOptions = {
12
+ connectedAccount?: string;
13
+ config?: string;
14
+ dryRun?: boolean;
15
+ };
16
+ type TriggerListenOptions = {
17
+ trigger?: string;
18
+ triggerSlug?: string[];
19
+ toolkit?: string[];
20
+ connectedAccount?: string;
21
+ triggerData?: string;
22
+ userId?: string;
23
+ json?: boolean;
24
+ once?: boolean;
25
+ };
26
+ export declare function getComposioTriggerClient(): Composio<import("@composio/core").OpenAIProvider>;
27
+ export declare function parseLimit(value: string | number | undefined, fallback: number): number;
28
+ export declare function printJson(value: unknown): void;
29
+ export declare function formatTriggerConfigKey(key: string): string;
30
+ export declare function parseTriggerConfigValue(value: string): string | number | boolean;
31
+ export declare function parseUnknownTriggerConfig(args: string[]): Record<string, unknown>;
32
+ export declare function parseTriggerConfigJson(value: string | undefined): Record<string, unknown>;
33
+ export declare function compact(value: unknown, max?: number): string | undefined;
34
+ export declare function pickTriggerEventSummary(payload: Record<string, unknown> | undefined): string;
35
+ export declare function listTriggerTypes(toolkit: string | undefined, options: TriggerTypeOptions): Promise<void>;
36
+ export declare function showTriggerType(triggerSlug: string, options: {
37
+ json?: boolean;
38
+ }): Promise<void>;
39
+ export declare function listTriggers(options: TriggerListOptions): Promise<void>;
40
+ export declare function createTrigger(triggerSlug: string, options: TriggerCreateOptions, unknownArgs: string[]): Promise<void>;
41
+ export declare function listenToTriggers(options: TriggerListenOptions): Promise<void>;
42
+ export {};
43
+ //# sourceMappingURL=triggers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../src/cli/triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA4D,MAAM,gBAAgB,CAAC;AAGpG,KAAK,kBAAkB,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,wBAAgB,wBAAwB,sDAGvC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,UAI9E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,QAEvC;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,UAEjD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,6BAKpD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,2BA0BvD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,2BAO/D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAM,sBAIhD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,UAyBnF;AAeD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,kBAAkB,iBAiB9F;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,iBAgBrF;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,kBAAkB,iBAsB7D;AAED,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,EAAE,iBAwB5G;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,iBAuCnE"}
@@ -0,0 +1,221 @@
1
+ import { Composio } from '@composio/core';
2
+ import { env, requireComposio } from '../config/env.js';
3
+ export function getComposioTriggerClient() {
4
+ requireComposio();
5
+ return new Composio({ apiKey: env.composioApiKey ?? null });
6
+ }
7
+ export function parseLimit(value, fallback) {
8
+ if (typeof value === 'number')
9
+ return Number.isFinite(value) && value > 0 ? value : fallback;
10
+ const parsed = Number.parseInt(value ?? '', 10);
11
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
12
+ }
13
+ export function printJson(value) {
14
+ console.log(JSON.stringify(value, null, 2));
15
+ }
16
+ export function formatTriggerConfigKey(key) {
17
+ return key.replace(/^--?/, '').replace(/-([a-z])/g, (_match, char) => char.toUpperCase());
18
+ }
19
+ export function parseTriggerConfigValue(value) {
20
+ if (value === 'true')
21
+ return true;
22
+ if (value === 'false')
23
+ return false;
24
+ if (/^-?\d+(\.\d+)?$/.test(value))
25
+ return Number(value);
26
+ return value;
27
+ }
28
+ export function parseUnknownTriggerConfig(args) {
29
+ const config = {};
30
+ for (let index = 0; index < args.length; index += 1) {
31
+ const raw = args[index];
32
+ if (!raw?.startsWith('--'))
33
+ continue;
34
+ const [rawKey, inlineValue] = raw.split('=', 2);
35
+ const key = formatTriggerConfigKey(rawKey);
36
+ const next = args[index + 1];
37
+ const value = inlineValue !== undefined
38
+ ? inlineValue
39
+ : next && !next.startsWith('--')
40
+ ? next
41
+ : 'true';
42
+ if (inlineValue === undefined && next && !next.startsWith('--'))
43
+ index += 1;
44
+ if (config[key] !== undefined) {
45
+ const existing = config[key];
46
+ config[key] = Array.isArray(existing) ? [...existing, parseTriggerConfigValue(value)] : [existing, parseTriggerConfigValue(value)];
47
+ }
48
+ else {
49
+ config[key] = parseTriggerConfigValue(value);
50
+ }
51
+ }
52
+ return config;
53
+ }
54
+ export function parseTriggerConfigJson(value) {
55
+ if (!value)
56
+ return {};
57
+ const parsed = JSON.parse(value);
58
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
59
+ throw new Error('--config must be a JSON object.');
60
+ }
61
+ return parsed;
62
+ }
63
+ export function compact(value, max = 180) {
64
+ if (value === undefined || value === null || value === '')
65
+ return undefined;
66
+ const text = typeof value === 'string' ? value : JSON.stringify(value);
67
+ return text.length > max ? `${text.slice(0, max - 3)}...` : text;
68
+ }
69
+ export function pickTriggerEventSummary(payload) {
70
+ if (!payload)
71
+ return '';
72
+ const keys = [
73
+ 'subject',
74
+ 'title',
75
+ 'message',
76
+ 'text',
77
+ 'body',
78
+ 'snippet',
79
+ 'from',
80
+ 'sender',
81
+ 'email',
82
+ 'repository',
83
+ 'repo',
84
+ 'branch',
85
+ 'commit',
86
+ 'commits',
87
+ ];
88
+ for (const key of keys) {
89
+ const value = compact(payload[key]);
90
+ if (value)
91
+ return value;
92
+ }
93
+ return compact(payload) ?? '';
94
+ }
95
+ function printTriggerEvent(event, asJson) {
96
+ if (asJson) {
97
+ printJson(event);
98
+ return;
99
+ }
100
+ const summary = pickTriggerEventSummary(event.payload);
101
+ const stamp = new Date().toLocaleTimeString();
102
+ const heading = `[${stamp}] [${event.triggerSlug}]`;
103
+ console.log(summary ? `${heading} ${summary}` : heading);
104
+ console.log(` toolkit=${event.toolkitSlug} trigger=${event.id} user=${event.userId || 'unknown'}`);
105
+ }
106
+ export async function listTriggerTypes(toolkit, options) {
107
+ const client = getComposioTriggerClient();
108
+ const response = await client.triggers.listTypes({
109
+ limit: parseLimit(options.limit, 25),
110
+ ...(toolkit ? { toolkits: [toolkit] } : {}),
111
+ });
112
+ if (options.json) {
113
+ printJson(response);
114
+ return;
115
+ }
116
+ for (const item of response.items) {
117
+ console.log(`${item.slug} (${item.toolkit.slug})`);
118
+ if (item.description)
119
+ console.log(` ${item.description}`);
120
+ }
121
+ if (response.nextCursor)
122
+ console.log(`Next cursor: ${response.nextCursor}`);
123
+ }
124
+ export async function showTriggerType(triggerSlug, options) {
125
+ const client = getComposioTriggerClient();
126
+ const triggerType = await client.triggers.getType(triggerSlug);
127
+ if (options.json) {
128
+ printJson(triggerType);
129
+ return;
130
+ }
131
+ console.log(`${triggerType.slug} (${triggerType.toolkit.slug})`);
132
+ console.log(triggerType.description);
133
+ if (triggerType.instructions)
134
+ console.log(`\n${triggerType.instructions}`);
135
+ console.log('\nConfig schema:');
136
+ printJson(triggerType.config);
137
+ console.log('\nPayload schema:');
138
+ printJson(triggerType.payload);
139
+ }
140
+ export async function listTriggers(options) {
141
+ const client = getComposioTriggerClient();
142
+ const response = await client.triggers.listActive({
143
+ limit: parseLimit(options.limit, 25),
144
+ ...(options.showDisabled ? { showDisabled: true } : {}),
145
+ });
146
+ if (options.json) {
147
+ printJson(response);
148
+ return;
149
+ }
150
+ if (response.items.length === 0) {
151
+ console.log('No active Composio triggers found.');
152
+ return;
153
+ }
154
+ for (const item of response.items) {
155
+ const status = item.disabledAt ? 'disabled' : 'enabled';
156
+ console.log(`${item.id} ${item.triggerName} (${status})`);
157
+ console.log(` connectedAccount=${item.connectedAccountId} updated=${item.updatedAt}`);
158
+ }
159
+ }
160
+ export async function createTrigger(triggerSlug, options, unknownArgs) {
161
+ const client = getComposioTriggerClient();
162
+ if (!env.zilmateUserId)
163
+ throw new Error('Missing ZILMATE_USER_ID. Run `zilmate setup` first.');
164
+ const triggerConfig = {
165
+ ...parseTriggerConfigJson(options.config),
166
+ ...parseUnknownTriggerConfig(unknownArgs),
167
+ };
168
+ if (options.dryRun) {
169
+ printJson({
170
+ userId: env.zilmateUserId,
171
+ triggerSlug,
172
+ ...(options.connectedAccount ? { connectedAccountId: options.connectedAccount } : {}),
173
+ triggerConfig,
174
+ });
175
+ return;
176
+ }
177
+ const result = await client.triggers.create(env.zilmateUserId, triggerSlug, {
178
+ ...(options.connectedAccount ? { connectedAccountId: options.connectedAccount } : {}),
179
+ ...(Object.keys(triggerConfig).length > 0 ? { triggerConfig } : {}),
180
+ });
181
+ printJson(result);
182
+ }
183
+ export async function listenToTriggers(options) {
184
+ const client = getComposioTriggerClient();
185
+ const filters = {
186
+ ...(options.toolkit?.length ? { toolkits: options.toolkit } : {}),
187
+ ...(options.trigger ? { triggerId: options.trigger } : {}),
188
+ ...(options.triggerSlug?.length ? { triggerSlug: options.triggerSlug } : {}),
189
+ ...(options.connectedAccount ? { connectedAccountId: options.connectedAccount } : {}),
190
+ ...(options.triggerData ? { triggerData: options.triggerData } : {}),
191
+ ...(options.userId ? { userId: options.userId } : {}),
192
+ };
193
+ console.log('Listening for Composio trigger events. Press Ctrl+C to stop.');
194
+ if (Object.keys(filters).length > 0)
195
+ console.log(`Filters: ${JSON.stringify(filters)}`);
196
+ let stopped = false;
197
+ let stopResolve;
198
+ const stop = async () => {
199
+ if (stopped)
200
+ return;
201
+ stopped = true;
202
+ await client.triggers.unsubscribe().catch(() => undefined);
203
+ stopResolve?.();
204
+ };
205
+ process.once('SIGINT', () => {
206
+ console.log('\nStopping trigger listener...');
207
+ void stop();
208
+ });
209
+ process.once('SIGTERM', () => {
210
+ void stop();
211
+ });
212
+ await client.triggers.subscribe((event) => {
213
+ printTriggerEvent(event, Boolean(options.json));
214
+ if (options.once)
215
+ void stop();
216
+ }, filters);
217
+ await new Promise((resolve) => {
218
+ stopResolve = resolve;
219
+ });
220
+ }
221
+ //# sourceMappingURL=triggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggers.js","sourceRoot":"","sources":["../../src/cli/triggers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import 'dotenv/config';
2
+ export type ImageProvider = 'openai' | 'gemini';
3
+ export type Env = {
4
+ aiGatewayApiKey: string | undefined;
5
+ vercelOidcToken: string | undefined;
6
+ tavilyApiKey: string | undefined;
7
+ composioApiKey: string | undefined;
8
+ zilmateUserId: string | undefined;
9
+ upstashRedisRestUrl: string | undefined;
10
+ upstashRedisRestToken: string | undefined;
11
+ managerModel: string;
12
+ helpModel: string | undefined;
13
+ postModel: string | undefined;
14
+ imageDefaultProvider: ImageProvider;
15
+ imageOpenaiModel: string;
16
+ imageGeminiModel: string;
17
+ imageModel: string;
18
+ };
19
+ export declare const env: Env;
20
+ export declare function hasGatewayAuth(): boolean;
21
+ export declare function requireGatewayAuth(): void;
22
+ export declare function requireTavily(): string;
23
+ export declare function hasComposio(): boolean;
24
+ export declare function requireComposio(): void;
25
+ export declare function hasRedis(): boolean;
26
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAQvB,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAShD,MAAM,MAAM,GAAG,GAAG;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,oBAAoB,EAAE,aAAa,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,GAejB,CAAC;AAEF,wBAAgB,cAAc,YAE7B;AAED,wBAAgB,kBAAkB,SAIjC;AAED,wBAAgB,aAAa,WAK5B;AAED,wBAAgB,WAAW,YAE1B;AAED,wBAAgB,eAAe,SAO9B;AAED,wBAAgB,QAAQ,YAEvB"}
@@ -0,0 +1,59 @@
1
+ import 'dotenv/config';
2
+ import { config as loadDotenv } from 'dotenv';
3
+ import { existsSync } from 'node:fs';
4
+ if (existsSync('.env.local')) {
5
+ loadDotenv({ path: '.env.local', override: false });
6
+ }
7
+ function normalizeImageProvider(value) {
8
+ const provider = (value || 'openai').toLowerCase().trim();
9
+ if (provider === 'chatgpt' || provider === 'gpt-image' || provider === 'gpt-image-2')
10
+ return 'openai';
11
+ if (provider === 'google' || provider === 'nano-banana' || provider === 'gemini')
12
+ return 'gemini';
13
+ return 'openai';
14
+ }
15
+ export const env = {
16
+ aiGatewayApiKey: process.env.AI_GATEWAY_API_KEY,
17
+ vercelOidcToken: process.env.VERCEL_OIDC_TOKEN,
18
+ tavilyApiKey: process.env.TAVILY_API_KEY,
19
+ composioApiKey: process.env.COMPOSIO_API_KEY,
20
+ zilmateUserId: process.env.ZILMATE_USER_ID,
21
+ upstashRedisRestUrl: process.env.UPSTASH_REDIS_REST_URL,
22
+ upstashRedisRestToken: process.env.UPSTASH_REDIS_REST_TOKEN,
23
+ managerModel: process.env.ZILO_MANAGER_MODEL || 'minimax/minimax-m3',
24
+ helpModel: process.env.ZILO_HELP_MODEL || undefined,
25
+ postModel: process.env.ZILO_POST_MODEL || undefined,
26
+ imageDefaultProvider: normalizeImageProvider(process.env.ZILO_IMAGE_DEFAULT_PROVIDER),
27
+ imageOpenaiModel: process.env.ZILO_IMAGE_OPENAI_MODEL || 'openai/gpt-image-2',
28
+ imageGeminiModel: process.env.ZILO_IMAGE_GEMINI_MODEL || process.env.ZILO_IMAGE_MODEL || 'google/gemini-3-pro-image',
29
+ imageModel: process.env.ZILO_IMAGE_MODEL || 'google/gemini-3-pro-image',
30
+ };
31
+ export function hasGatewayAuth() {
32
+ return Boolean(env.aiGatewayApiKey || env.vercelOidcToken);
33
+ }
34
+ export function requireGatewayAuth() {
35
+ if (!hasGatewayAuth()) {
36
+ throw new Error('Missing AI Gateway auth. Run `zilmate setup`, add AI_GATEWAY_API_KEY to .env, or run with VERCEL_OIDC_TOKEN.');
37
+ }
38
+ }
39
+ export function requireTavily() {
40
+ if (!env.tavilyApiKey) {
41
+ throw new Error('Missing TAVILY_API_KEY. Run `zilmate setup` or add it to .env to enable web research.');
42
+ }
43
+ return env.tavilyApiKey;
44
+ }
45
+ export function hasComposio() {
46
+ return Boolean(env.composioApiKey && env.zilmateUserId);
47
+ }
48
+ export function requireComposio() {
49
+ if (!env.composioApiKey) {
50
+ throw new Error('Missing COMPOSIO_API_KEY. Run `zilmate setup` to enable external app tools.');
51
+ }
52
+ if (!env.zilmateUserId) {
53
+ throw new Error('Missing ZILMATE_USER_ID. Run `zilmate setup` to generate a stable local user id.');
54
+ }
55
+ }
56
+ export function hasRedis() {
57
+ return Boolean(env.upstashRedisRestUrl && env.upstashRedisRestToken);
58
+ }
59
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type ImageProvider } from './env.js';
2
+ export type ModelRegistry = {
3
+ manager: string;
4
+ help: string;
5
+ post: string;
6
+ chat: string;
7
+ research: string;
8
+ imageDefaultProvider: ImageProvider;
9
+ imageOpenai: string;
10
+ imageGemini: string;
11
+ image: string;
12
+ };
13
+ export declare const models: ModelRegistry;
14
+ export type ModelAvailability = {
15
+ selected: ModelRegistry;
16
+ availableIds: string[];
17
+ missing: string[];
18
+ warnings: string[];
19
+ };
20
+ export declare function getModelAvailability(): Promise<ModelAvailability>;
21
+ export declare function pickAvailableTextModel(availableIds: string[], preferred?: string): string;
22
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,aAAa,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AASF,eAAO,MAAM,MAAM,EAAE,aAUpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAcvE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,UAGhF"}
@@ -0,0 +1,38 @@
1
+ import { gateway } from 'ai';
2
+ import { env } from './env.js';
3
+ const cheapModelCandidates = [
4
+ 'openai/gpt-5.4-mini',
5
+ 'google/gemini-3-flash',
6
+ 'xai/grok-4.1-fast',
7
+ 'mistral/mistral-small-latest',
8
+ ];
9
+ export const models = {
10
+ manager: env.managerModel,
11
+ help: env.helpModel || cheapModelCandidates[0],
12
+ post: env.postModel || cheapModelCandidates[0],
13
+ chat: env.helpModel || env.managerModel,
14
+ research: env.managerModel,
15
+ imageDefaultProvider: env.imageDefaultProvider,
16
+ imageOpenai: env.imageOpenaiModel,
17
+ imageGemini: env.imageGeminiModel,
18
+ image: env.imageDefaultProvider === 'gemini' ? env.imageGeminiModel : env.imageOpenaiModel,
19
+ };
20
+ export async function getModelAvailability() {
21
+ const result = await gateway.getAvailableModels();
22
+ const rawModels = Array.isArray(result) ? result : (result.models || []);
23
+ const availableIds = rawModels
24
+ .map((model) => typeof model === 'string' ? model : model.id)
25
+ .filter((id) => Boolean(id));
26
+ const selected = Object.entries(models)
27
+ .filter(([key]) => key !== 'imageDefaultProvider')
28
+ .map(([, value]) => value);
29
+ const missing = selected.filter((id, index) => selected.indexOf(id) === index && !availableIds.includes(id));
30
+ const warnings = missing.map((id) => `Configured model not reported by Gateway: ${id}`);
31
+ return { selected: models, availableIds, missing, warnings };
32
+ }
33
+ export function pickAvailableTextModel(availableIds, preferred) {
34
+ if (preferred && availableIds.includes(preferred))
35
+ return preferred;
36
+ return cheapModelCandidates.find((id) => availableIds.includes(id)) || preferred || models.help;
37
+ }
38
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/config/models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAsB,MAAM,UAAU,CAAC;AAcnD,MAAM,oBAAoB,GAAG;IAC3B,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,8BAA8B;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAkB;IACnC,OAAO,EAAE,GAAG,CAAC,YAAY;IACzB,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI,oBAAoB,CAAC,CAAC,CAAE;IAC/C,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI,oBAAoB,CAAC,CAAC,CAAE;IAC/C,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,YAAY;IACvC,QAAQ,EAAE,GAAG,CAAC,YAAY;IAC1B,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;IAC9C,WAAW,EAAE,GAAG,CAAC,gBAAgB;IACjC,WAAW,EAAE,GAAG,CAAC,gBAAgB;IACjC,KAAK,EAAE,GAAG,CAAC,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB;CAC3F,CAAC;AASF,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAiC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACrG,MAAM,YAAY,GAAG,SAAS;SAC3B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,KAAyB,CAAC,EAAE,CAAC;SACjF,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,sBAAsB,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,6CAA6C,EAAE,EAAE,CAAC,CAAC;IAExF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,YAAsB,EAAE,SAAkB;IAC/E,IAAI,SAAS,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC;AAClG,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}