@marktoflow/integrations 2.0.0-alpha.7 → 2.0.0-alpha.9

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 (130) hide show
  1. package/README.md +738 -9
  2. package/dist/adapters/claude-agent-hooks.d.ts +176 -0
  3. package/dist/adapters/claude-agent-hooks.d.ts.map +1 -0
  4. package/dist/adapters/claude-agent-hooks.js +339 -0
  5. package/dist/adapters/claude-agent-hooks.js.map +1 -0
  6. package/dist/adapters/claude-agent-types.d.ts +426 -0
  7. package/dist/adapters/claude-agent-types.d.ts.map +1 -0
  8. package/dist/adapters/claude-agent-types.js +62 -0
  9. package/dist/adapters/claude-agent-types.js.map +1 -0
  10. package/dist/adapters/claude-agent-workflow.d.ts +393 -0
  11. package/dist/adapters/claude-agent-workflow.d.ts.map +1 -0
  12. package/dist/adapters/claude-agent-workflow.js +445 -0
  13. package/dist/adapters/claude-agent-workflow.js.map +1 -0
  14. package/dist/adapters/claude-agent.d.ts +171 -0
  15. package/dist/adapters/claude-agent.d.ts.map +1 -0
  16. package/dist/adapters/claude-agent.js +468 -0
  17. package/dist/adapters/claude-agent.js.map +1 -0
  18. package/dist/adapters/codex-types.d.ts +463 -0
  19. package/dist/adapters/codex-types.d.ts.map +1 -0
  20. package/dist/adapters/codex-types.js +53 -0
  21. package/dist/adapters/codex-types.js.map +1 -0
  22. package/dist/adapters/codex-workflow.d.ts +414 -0
  23. package/dist/adapters/codex-workflow.d.ts.map +1 -0
  24. package/dist/adapters/codex-workflow.js +470 -0
  25. package/dist/adapters/codex-workflow.js.map +1 -0
  26. package/dist/adapters/codex.d.ts +136 -0
  27. package/dist/adapters/codex.d.ts.map +1 -0
  28. package/dist/adapters/codex.js +390 -0
  29. package/dist/adapters/codex.js.map +1 -0
  30. package/dist/adapters/github-copilot-types.d.ts +1012 -0
  31. package/dist/adapters/github-copilot-types.d.ts.map +1 -0
  32. package/dist/adapters/github-copilot-types.js +80 -0
  33. package/dist/adapters/github-copilot-types.js.map +1 -0
  34. package/dist/adapters/github-copilot-workflow.d.ts +462 -0
  35. package/dist/adapters/github-copilot-workflow.d.ts.map +1 -0
  36. package/dist/adapters/github-copilot-workflow.js +473 -0
  37. package/dist/adapters/github-copilot-workflow.js.map +1 -0
  38. package/dist/adapters/github-copilot.d.ts +221 -37
  39. package/dist/adapters/github-copilot.d.ts.map +1 -1
  40. package/dist/adapters/github-copilot.js +336 -58
  41. package/dist/adapters/github-copilot.js.map +1 -1
  42. package/dist/adapters/opencode.d.ts +2 -0
  43. package/dist/adapters/opencode.d.ts.map +1 -1
  44. package/dist/adapters/opencode.js +6 -0
  45. package/dist/adapters/opencode.js.map +1 -1
  46. package/dist/index.d.ts +21 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +59 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/services/ai-browser.d.ts +112 -0
  51. package/dist/services/ai-browser.d.ts.map +1 -0
  52. package/dist/services/ai-browser.js +363 -0
  53. package/dist/services/ai-browser.js.map +1 -0
  54. package/dist/services/asana.d.ts +159 -0
  55. package/dist/services/asana.d.ts.map +1 -0
  56. package/dist/services/asana.js +196 -0
  57. package/dist/services/asana.js.map +1 -0
  58. package/dist/services/aws-s3.d.ts +89 -0
  59. package/dist/services/aws-s3.d.ts.map +1 -0
  60. package/dist/services/aws-s3.js +154 -0
  61. package/dist/services/aws-s3.js.map +1 -0
  62. package/dist/services/dropbox.d.ts +134 -0
  63. package/dist/services/dropbox.d.ts.map +1 -0
  64. package/dist/services/dropbox.js +190 -0
  65. package/dist/services/dropbox.js.map +1 -0
  66. package/dist/services/mailchimp.d.ts +169 -0
  67. package/dist/services/mailchimp.d.ts.map +1 -0
  68. package/dist/services/mailchimp.js +180 -0
  69. package/dist/services/mailchimp.js.map +1 -0
  70. package/dist/services/playwright.d.ts +678 -0
  71. package/dist/services/playwright.d.ts.map +1 -0
  72. package/dist/services/playwright.js +1141 -0
  73. package/dist/services/playwright.js.map +1 -0
  74. package/dist/services/sendgrid.d.ts +43 -0
  75. package/dist/services/sendgrid.d.ts.map +1 -0
  76. package/dist/services/sendgrid.js +87 -0
  77. package/dist/services/sendgrid.js.map +1 -0
  78. package/dist/services/shopify.d.ts +160 -0
  79. package/dist/services/shopify.d.ts.map +1 -0
  80. package/dist/services/shopify.js +166 -0
  81. package/dist/services/shopify.js.map +1 -0
  82. package/dist/services/stripe.d.ts +275 -0
  83. package/dist/services/stripe.d.ts.map +1 -0
  84. package/dist/services/stripe.js +229 -0
  85. package/dist/services/stripe.js.map +1 -0
  86. package/dist/services/teams.d.ts +224 -0
  87. package/dist/services/teams.d.ts.map +1 -0
  88. package/dist/services/teams.js +229 -0
  89. package/dist/services/teams.js.map +1 -0
  90. package/dist/services/trello.d.ts +160 -0
  91. package/dist/services/trello.d.ts.map +1 -0
  92. package/dist/services/trello.js +194 -0
  93. package/dist/services/trello.js.map +1 -0
  94. package/dist/services/twilio.d.ts +126 -0
  95. package/dist/services/twilio.d.ts.map +1 -0
  96. package/dist/services/twilio.js +153 -0
  97. package/dist/services/twilio.js.map +1 -0
  98. package/dist/services/zendesk.d.ts +134 -0
  99. package/dist/services/zendesk.d.ts.map +1 -0
  100. package/dist/services/zendesk.js +148 -0
  101. package/dist/services/zendesk.js.map +1 -0
  102. package/package.json +26 -4
  103. package/dist/claude-code.d.ts +0 -16
  104. package/dist/claude-code.d.ts.map +0 -1
  105. package/dist/claude-code.js +0 -56
  106. package/dist/claude-code.js.map +0 -1
  107. package/dist/github.d.ts +0 -3
  108. package/dist/github.d.ts.map +0 -1
  109. package/dist/github.js +0 -13
  110. package/dist/github.js.map +0 -1
  111. package/dist/jira.d.ts +0 -3
  112. package/dist/jira.d.ts.map +0 -1
  113. package/dist/jira.js +0 -21
  114. package/dist/jira.js.map +0 -1
  115. package/dist/ollama.d.ts +0 -3
  116. package/dist/ollama.d.ts.map +0 -1
  117. package/dist/ollama.js +0 -9
  118. package/dist/ollama.js.map +0 -1
  119. package/dist/opencode.d.ts +0 -19
  120. package/dist/opencode.d.ts.map +0 -1
  121. package/dist/opencode.js +0 -104
  122. package/dist/opencode.js.map +0 -1
  123. package/dist/script.d.ts +0 -3
  124. package/dist/script.d.ts.map +0 -1
  125. package/dist/script.js +0 -21
  126. package/dist/script.js.map +0 -1
  127. package/dist/slack.d.ts +0 -3
  128. package/dist/slack.d.ts.map +0 -1
  129. package/dist/slack.js +0 -11
  130. package/dist/slack.js.map +0 -1
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ import { DiscordInitializer } from './services/discord.js';
10
10
  import { AirtableInitializer } from './services/airtable.js';
11
11
  import { ConfluenceInitializer } from './services/confluence.js';
12
12
  import { HttpInitializer } from './services/http.js';
13
+ import { PlaywrightInitializer } from './services/playwright.js';
13
14
  import { GoogleSheetsInitializer } from './services/google-sheets.js';
14
15
  import { GoogleCalendarInitializer } from './services/google-calendar.js';
15
16
  import { GoogleDriveInitializer } from './services/google-drive.js';
@@ -19,11 +20,24 @@ import { WhatsAppInitializer } from './services/whatsapp.js';
19
20
  import { SupabaseInitializer } from './services/supabase.js';
20
21
  import { PostgresInitializer } from './services/postgres.js';
21
22
  import { MySQLInitializer } from './services/mysql.js';
23
+ import { StripeInitializer } from './services/stripe.js';
24
+ import { TeamsInitializer } from './services/teams.js';
25
+ import { TwilioInitializer } from './services/twilio.js';
26
+ import { SendGridInitializer } from './services/sendgrid.js';
27
+ import { ShopifyInitializer } from './services/shopify.js';
28
+ import { ZendeskInitializer } from './services/zendesk.js';
29
+ import { MailchimpInitializer } from './services/mailchimp.js';
30
+ import { AsanaInitializer } from './services/asana.js';
31
+ import { TrelloInitializer } from './services/trello.js';
32
+ import { DropboxInitializer } from './services/dropbox.js';
33
+ import { AWSS3Initializer } from './services/aws-s3.js';
22
34
  // AI Adapters
23
35
  import { OllamaInitializer } from './adapters/ollama.js';
24
36
  import { ClaudeCodeInitializer } from './adapters/claude-code.js';
37
+ import { ClaudeAgentInitializer } from './adapters/claude-agent.js';
25
38
  import { OpenCodeInitializer } from './adapters/opencode.js';
26
39
  import { GitHubCopilotInitializer } from './adapters/github-copilot.js';
40
+ import { CodexInitializer } from './adapters/codex.js';
27
41
  // Tools
28
42
  import { ScriptInitializer } from './tools/script.js';
29
43
  export function registerIntegrations(registry) {
@@ -35,6 +49,8 @@ export function registerIntegrations(registry) {
35
49
  // Email
36
50
  registry.registerInitializer('googleapis', GmailInitializer);
37
51
  registry.registerInitializer('@microsoft/microsoft-graph-client', OutlookInitializer);
52
+ // Collaboration
53
+ registry.registerInitializer('teams', TeamsInitializer);
38
54
  // Project Management & Issue Tracking
39
55
  registry.registerInitializer('jira.js', JiraInitializer);
40
56
  registry.registerInitializer('linear', LinearInitializer);
@@ -48,6 +64,21 @@ export function registerIntegrations(registry) {
48
64
  registry.registerInitializer('supabase', SupabaseInitializer);
49
65
  registry.registerInitializer('pg', PostgresInitializer);
50
66
  registry.registerInitializer('mysql2', MySQLInitializer);
67
+ // Payments & E-commerce
68
+ registry.registerInitializer('stripe', StripeInitializer);
69
+ registry.registerInitializer('@shopify/shopify-api', ShopifyInitializer);
70
+ // Communications
71
+ registry.registerInitializer('twilio', TwilioInitializer);
72
+ registry.registerInitializer('@sendgrid/mail', SendGridInitializer);
73
+ registry.registerInitializer('@mailchimp/mailchimp_marketing', MailchimpInitializer);
74
+ // Customer Support
75
+ registry.registerInitializer('node-zendesk', ZendeskInitializer);
76
+ // Project Management
77
+ registry.registerInitializer('asana', AsanaInitializer);
78
+ registry.registerInitializer('trello', TrelloInitializer);
79
+ // File Storage
80
+ registry.registerInitializer('dropbox', DropboxInitializer);
81
+ registry.registerInitializer('@aws-sdk/client-s3', AWSS3Initializer);
51
82
  // Google Services
52
83
  registry.registerInitializer('google-sheets', GoogleSheetsInitializer);
53
84
  registry.registerInitializer('google-calendar', GoogleCalendarInitializer);
@@ -55,11 +86,18 @@ export function registerIntegrations(registry) {
55
86
  registry.registerInitializer('google-docs', GoogleDocsInitializer);
56
87
  // Generic HTTP
57
88
  registry.registerInitializer('http', HttpInitializer);
89
+ // Browser Automation
90
+ registry.registerInitializer('playwright', PlaywrightInitializer);
58
91
  // AI Adapters
59
92
  registry.registerInitializer('ollama', OllamaInitializer);
60
93
  registry.registerInitializer('claude-code', ClaudeCodeInitializer);
94
+ registry.registerInitializer('claude-agent', ClaudeAgentInitializer);
95
+ registry.registerInitializer('@anthropic-ai/claude-agent-sdk', ClaudeAgentInitializer);
61
96
  registry.registerInitializer('opencode', OpenCodeInitializer);
62
97
  registry.registerInitializer('github-copilot', GitHubCopilotInitializer);
98
+ registry.registerInitializer('@github/copilot-sdk', GitHubCopilotInitializer);
99
+ registry.registerInitializer('codex', CodexInitializer);
100
+ registry.registerInitializer('@openai/codex-sdk', CodexInitializer);
63
101
  // Tools
64
102
  registry.registerInitializer('script', ScriptInitializer);
65
103
  }
@@ -77,6 +115,8 @@ export { DiscordClient, DiscordInitializer, } from './services/discord.js';
77
115
  export * from './services/airtable.js';
78
116
  export * from './services/confluence.js';
79
117
  export * from './services/http.js';
118
+ export * from './services/playwright.js';
119
+ export { AIBrowserClient } from './services/ai-browser.js';
80
120
  export * from './services/google-sheets.js';
81
121
  export * from './services/google-calendar.js';
82
122
  export * from './services/google-drive.js';
@@ -86,13 +126,32 @@ export { WhatsAppClient, WhatsAppInitializer, } from './services/whatsapp.js';
86
126
  export * from './services/supabase.js';
87
127
  export { PostgresClient, PostgresInitializer, } from './services/postgres.js';
88
128
  export { MySQLClient, MySQLInitializer, } from './services/mysql.js';
129
+ export { StripeClient, StripeInitializer, } from './services/stripe.js';
130
+ export { TeamsClient, TeamsInitializer, } from './services/teams.js';
131
+ export { TwilioClientWrapper, TwilioInitializer, } from './services/twilio.js';
132
+ export { SendGridClient, SendGridInitializer, } from './services/sendgrid.js';
133
+ export { ShopifyClient, ShopifyInitializer, } from './services/shopify.js';
134
+ export { ZendeskClient, ZendeskInitializer, } from './services/zendesk.js';
135
+ export { MailchimpClient, MailchimpInitializer, } from './services/mailchimp.js';
136
+ export { AsanaClient, AsanaInitializer, } from './services/asana.js';
137
+ export { TrelloClient, TrelloInitializer, } from './services/trello.js';
138
+ export { DropboxClient, DropboxInitializer, } from './services/dropbox.js';
139
+ export { AWSS3Client, AWSS3Initializer, } from './services/aws-s3.js';
89
140
  // Export triggers
90
141
  export { SlackSocketTrigger } from './services/slack-socket.js';
91
142
  // Export AI adapters
92
143
  export * from './adapters/ollama.js';
93
144
  export * from './adapters/claude-code.js';
145
+ export * from './adapters/claude-agent.js';
146
+ export * from './adapters/claude-agent-types.js';
147
+ export * from './adapters/claude-agent-workflow.js';
148
+ export * from './adapters/claude-agent-hooks.js';
94
149
  export * from './adapters/opencode.js';
95
150
  export * from './adapters/github-copilot.js';
151
+ export * from './adapters/github-copilot-workflow.js';
152
+ export * from './adapters/codex.js';
153
+ export * from './adapters/codex-types.js';
154
+ export * from './adapters/codex-workflow.js';
96
155
  // Export tools
97
156
  export * from './tools/script.js';
98
157
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * AI Browser Automation Client
3
+ *
4
+ * Provides AI-powered browser automation using GitHub Copilot or Claude Code SDK
5
+ * as backends instead of relying on external API services.
6
+ *
7
+ * This integrates with marktoflow's existing AI adapters to provide natural language
8
+ * browser control without additional API costs.
9
+ */
10
+ import type { PlaywrightClient } from './playwright.js';
11
+ import type { GitHubCopilotClient } from '../adapters/github-copilot.js';
12
+ import type { ClaudeCodeClient } from '../adapters/claude-code.js';
13
+ export type AIBackend = 'copilot' | 'claude-code';
14
+ export interface AIBrowserConfig {
15
+ /** AI backend to use */
16
+ backend: AIBackend;
17
+ /** AI client instance */
18
+ aiClient: GitHubCopilotClient | ClaudeCodeClient;
19
+ /** Playwright client instance */
20
+ playwrightClient: PlaywrightClient;
21
+ /** Enable debug logging */
22
+ debug?: boolean;
23
+ }
24
+ export interface ActOptions {
25
+ /** Natural language action to perform */
26
+ action: string;
27
+ }
28
+ export interface ActResult {
29
+ success: boolean;
30
+ message: string;
31
+ action: string;
32
+ }
33
+ export interface ObserveOptions {
34
+ /** Optional instruction to filter observations */
35
+ instruction?: string;
36
+ }
37
+ export interface ObservedElement {
38
+ selector?: string;
39
+ description?: string;
40
+ tagName?: string;
41
+ text?: string;
42
+ actions?: string[];
43
+ }
44
+ export interface AIExtractOptions {
45
+ /** Natural language instruction for what to extract */
46
+ instruction: string;
47
+ /** JSON schema for structured extraction */
48
+ schema?: Record<string, unknown>;
49
+ }
50
+ /**
51
+ * AI-powered browser automation client
52
+ *
53
+ * Uses GitHub Copilot or Claude Code SDK for AI reasoning instead of
54
+ * external API services like OpenAI or Anthropic.
55
+ */
56
+ export declare class AIBrowserClient {
57
+ private backend;
58
+ private aiClient;
59
+ private playwrightClient;
60
+ private debug;
61
+ constructor(config: AIBrowserConfig);
62
+ /**
63
+ * Perform an action described in natural language
64
+ *
65
+ * @example
66
+ * await client.act({ action: 'Click the login button' });
67
+ * await client.act({ action: 'Type "john@example.com" into the email field' });
68
+ */
69
+ act(options: ActOptions): Promise<ActResult>;
70
+ /**
71
+ * Observe the current page and identify available actions
72
+ *
73
+ * @example
74
+ * const elements = await client.observe({ instruction: 'Find all form inputs' });
75
+ */
76
+ observe(options?: ObserveOptions): Promise<ObservedElement[]>;
77
+ /**
78
+ * Extract structured data using AI
79
+ *
80
+ * @example
81
+ * const data = await client.aiExtract({
82
+ * instruction: 'Extract all product names and prices',
83
+ * schema: {
84
+ * type: 'object',
85
+ * properties: {
86
+ * products: {
87
+ * type: 'array',
88
+ * items: {
89
+ * type: 'object',
90
+ * properties: {
91
+ * name: { type: 'string' },
92
+ * price: { type: 'number' }
93
+ * }
94
+ * }
95
+ * }
96
+ * }
97
+ * }
98
+ * });
99
+ */
100
+ aiExtract(options: AIExtractOptions): Promise<{
101
+ data: unknown;
102
+ }>;
103
+ private queryAI;
104
+ private buildActPrompt;
105
+ private buildObservePrompt;
106
+ private buildExtractPrompt;
107
+ private parseActionResponse;
108
+ private parseObserveResponse;
109
+ private parseExtractResponse;
110
+ private executeAction;
111
+ }
112
+ //# sourceMappingURL=ai-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-browser.d.ts","sourceRoot":"","sources":["../../src/services/ai-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,wBAAwB;IACxB,OAAO,EAAE,SAAS,CAAC;IACnB,yBAAyB;IACzB,QAAQ,EAAE,mBAAmB,GAAG,gBAAgB,CAAC;IACjD,iCAAiC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAMD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,KAAK,CAAU;gBAEX,MAAM,EAAE,eAAe;IAOnC;;;;;;OAMG;IACG,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA0ClD;;;;;OAKG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA6BnE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;YAmCxD,OAAO;IAcrB,OAAO,CAAC,cAAc;IAwCtB,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,oBAAoB;YAkBd,aAAa;CA+C5B"}
@@ -0,0 +1,363 @@
1
+ /**
2
+ * AI Browser Automation Client
3
+ *
4
+ * Provides AI-powered browser automation using GitHub Copilot or Claude Code SDK
5
+ * as backends instead of relying on external API services.
6
+ *
7
+ * This integrates with marktoflow's existing AI adapters to provide natural language
8
+ * browser control without additional API costs.
9
+ */
10
+ // ============================================================================
11
+ // AI Browser Client
12
+ // ============================================================================
13
+ /**
14
+ * AI-powered browser automation client
15
+ *
16
+ * Uses GitHub Copilot or Claude Code SDK for AI reasoning instead of
17
+ * external API services like OpenAI or Anthropic.
18
+ */
19
+ export class AIBrowserClient {
20
+ backend;
21
+ aiClient;
22
+ playwrightClient;
23
+ debug;
24
+ constructor(config) {
25
+ this.backend = config.backend;
26
+ this.aiClient = config.aiClient;
27
+ this.playwrightClient = config.playwrightClient;
28
+ this.debug = config.debug ?? false;
29
+ }
30
+ /**
31
+ * Perform an action described in natural language
32
+ *
33
+ * @example
34
+ * await client.act({ action: 'Click the login button' });
35
+ * await client.act({ action: 'Type "john@example.com" into the email field' });
36
+ */
37
+ async act(options) {
38
+ try {
39
+ // Get current page context
40
+ const pageInfo = await this.playwrightClient.pageInfo(false);
41
+ const prompt = this.buildActPrompt(options.action, pageInfo.url, pageInfo.title);
42
+ if (this.debug) {
43
+ console.log('[AI Browser] Act prompt:', prompt);
44
+ }
45
+ // Query AI backend
46
+ const response = await this.queryAI(prompt);
47
+ if (this.debug) {
48
+ console.log('[AI Browser] AI response:', response);
49
+ }
50
+ // Parse AI response
51
+ const parsedAction = this.parseActionResponse(response);
52
+ if (!parsedAction) {
53
+ throw new Error('Failed to parse AI response');
54
+ }
55
+ // Execute the action via Playwright
56
+ await this.executeAction(parsedAction);
57
+ return {
58
+ success: true,
59
+ message: `Executed: ${options.action}`,
60
+ action: options.action,
61
+ };
62
+ }
63
+ catch (error) {
64
+ return {
65
+ success: false,
66
+ message: error instanceof Error ? error.message : String(error),
67
+ action: options.action,
68
+ };
69
+ }
70
+ }
71
+ /**
72
+ * Observe the current page and identify available actions
73
+ *
74
+ * @example
75
+ * const elements = await client.observe({ instruction: 'Find all form inputs' });
76
+ */
77
+ async observe(options) {
78
+ try {
79
+ // Get page content
80
+ const pageInfo = await this.playwrightClient.pageInfo(true);
81
+ const prompt = this.buildObservePrompt(pageInfo.content || '', pageInfo.url, options?.instruction);
82
+ if (this.debug) {
83
+ console.log('[AI Browser] Observe prompt:', prompt.slice(0, 500) + '...');
84
+ }
85
+ const response = await this.queryAI(prompt);
86
+ if (this.debug) {
87
+ console.log('[AI Browser] AI response:', response);
88
+ }
89
+ // Parse elements from AI response
90
+ return this.parseObserveResponse(response);
91
+ }
92
+ catch (error) {
93
+ console.error('[AI Browser] Observe error:', error);
94
+ return [];
95
+ }
96
+ }
97
+ /**
98
+ * Extract structured data using AI
99
+ *
100
+ * @example
101
+ * const data = await client.aiExtract({
102
+ * instruction: 'Extract all product names and prices',
103
+ * schema: {
104
+ * type: 'object',
105
+ * properties: {
106
+ * products: {
107
+ * type: 'array',
108
+ * items: {
109
+ * type: 'object',
110
+ * properties: {
111
+ * name: { type: 'string' },
112
+ * price: { type: 'number' }
113
+ * }
114
+ * }
115
+ * }
116
+ * }
117
+ * }
118
+ * });
119
+ */
120
+ async aiExtract(options) {
121
+ try {
122
+ // Get page content
123
+ const pageInfo = await this.playwrightClient.pageInfo(true);
124
+ const prompt = this.buildExtractPrompt(pageInfo.content || '', pageInfo.url, options.instruction, options.schema);
125
+ if (this.debug) {
126
+ console.log('[AI Browser] Extract prompt:', prompt.slice(0, 500) + '...');
127
+ }
128
+ const response = await this.queryAI(prompt);
129
+ if (this.debug) {
130
+ console.log('[AI Browser] AI response:', response);
131
+ }
132
+ // Parse extracted data
133
+ const data = this.parseExtractResponse(response);
134
+ return { data };
135
+ }
136
+ catch (error) {
137
+ throw new Error(`AI extraction failed: ${error instanceof Error ? error.message : String(error)}`);
138
+ }
139
+ }
140
+ // ============================================================================
141
+ // Private Methods - AI Communication
142
+ // ============================================================================
143
+ async queryAI(prompt) {
144
+ if (this.backend === 'copilot') {
145
+ const client = this.aiClient;
146
+ return await client.send({ prompt });
147
+ }
148
+ else {
149
+ const client = this.aiClient;
150
+ return await client.generate({ prompt });
151
+ }
152
+ }
153
+ // ============================================================================
154
+ // Private Methods - Prompt Building
155
+ // ============================================================================
156
+ buildActPrompt(action, url, title) {
157
+ return `You are an AI browser automation assistant. Convert natural language actions to Playwright commands.
158
+
159
+ Current Page:
160
+ - URL: ${url}
161
+ - Title: ${title}
162
+
163
+ User Action: "${action}"
164
+
165
+ Available Playwright Actions:
166
+ - navigate: { url, waitUntil? }
167
+ - click: { selector, button?, force? }
168
+ - type: { selector, text, delay?, clear? }
169
+ - fill: { selector, value }
170
+ - select: { selector, values }
171
+ - check: { selector }
172
+ - uncheck: { selector }
173
+ - hover: { selector }
174
+ - press: { selector, key }
175
+ - wait: { selector?, url?, loadState?, timeout? }
176
+
177
+ IMPORTANT:
178
+ 1. Return ONLY valid JSON in this exact format:
179
+ { "action": "click", "inputs": { "selector": "#button" } }
180
+ 2. Choose the most appropriate selector (id, class, text, or CSS selector)
181
+ 3. For typing text, use "fill" for instant input or "type" for keyboard simulation
182
+ 4. For navigation, use "navigate"
183
+ 5. NO explanatory text, ONLY the JSON object
184
+
185
+ Example Responses:
186
+ - "Click the login button" -> { "action": "click", "inputs": { "selector": "button:has-text('Login')" } }
187
+ - "Type email@example.com in the email field" -> { "action": "fill", "inputs": { "selector": "input[type='email']", "value": "email@example.com" } }
188
+ - "Select 'United States' from country dropdown" -> { "action": "select", "inputs": { "selector": "#country", "values": "United States" } }
189
+
190
+ Now convert this action to JSON:
191
+ "${action}"
192
+
193
+ JSON:`;
194
+ }
195
+ buildObservePrompt(htmlContent, url, instruction) {
196
+ // Limit HTML content to avoid token limits
197
+ const maxLength = 15000;
198
+ const truncatedHtml = htmlContent.length > maxLength
199
+ ? htmlContent.slice(0, maxLength) + '\n... (truncated)'
200
+ : htmlContent;
201
+ return `You are analyzing a web page to identify interactive elements.
202
+
203
+ Current Page URL: ${url}
204
+
205
+ ${instruction ? `Focus: ${instruction}\n` : ''}
206
+ HTML Content:
207
+ ${truncatedHtml}
208
+
209
+ Analyze the page and identify interactive elements (buttons, links, inputs, forms, etc.).
210
+
211
+ Return a JSON array of elements in this exact format:
212
+ [
213
+ {
214
+ "selector": "CSS selector for the element",
215
+ "description": "What this element does",
216
+ "tagName": "HTML tag name",
217
+ "text": "visible text if any",
218
+ "actions": ["click", "fill", "select", etc.]
219
+ }
220
+ ]
221
+
222
+ IMPORTANT:
223
+ 1. Return ONLY valid JSON array, no explanatory text
224
+ 2. Provide actionable CSS selectors (id, class, or text-based)
225
+ 3. Include only interactive elements that can be automated
226
+ 4. Limit to the 10 most important elements
227
+ 5. For forms, identify input fields, buttons, and selects
228
+
229
+ JSON Array:`;
230
+ }
231
+ buildExtractPrompt(htmlContent, url, instruction, schema) {
232
+ const maxLength = 15000;
233
+ const truncatedHtml = htmlContent.length > maxLength
234
+ ? htmlContent.slice(0, maxLength) + '\n... (truncated)'
235
+ : htmlContent;
236
+ return `You are extracting structured data from a web page.
237
+
238
+ Current Page URL: ${url}
239
+
240
+ Extraction Task: ${instruction}
241
+
242
+ ${schema ? `Expected JSON Schema:\n${JSON.stringify(schema, null, 2)}\n` : ''}
243
+ HTML Content:
244
+ ${truncatedHtml}
245
+
246
+ Extract the requested data and return it as valid JSON.
247
+
248
+ IMPORTANT:
249
+ 1. Return ONLY valid JSON, no explanatory text
250
+ 2. Follow the provided schema if given
251
+ 3. Extract accurate data from the HTML
252
+ 4. Use null for missing values
253
+ 5. Ensure all property names match the schema
254
+
255
+ JSON:`;
256
+ }
257
+ // ============================================================================
258
+ // Private Methods - Response Parsing
259
+ // ============================================================================
260
+ parseActionResponse(response) {
261
+ try {
262
+ // Extract JSON from response (handle markdown code blocks)
263
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
264
+ if (!jsonMatch) {
265
+ console.error('[AI Browser] No JSON found in response:', response);
266
+ return null;
267
+ }
268
+ const parsed = JSON.parse(jsonMatch[0]);
269
+ if (!parsed.action || !parsed.inputs) {
270
+ console.error('[AI Browser] Invalid action format:', parsed);
271
+ return null;
272
+ }
273
+ return parsed;
274
+ }
275
+ catch (error) {
276
+ console.error('[AI Browser] Failed to parse action:', error, response);
277
+ return null;
278
+ }
279
+ }
280
+ parseObserveResponse(response) {
281
+ try {
282
+ // Extract JSON array from response
283
+ const jsonMatch = response.match(/\[[\s\S]*\]/);
284
+ if (!jsonMatch) {
285
+ console.error('[AI Browser] No JSON array found in response');
286
+ return [];
287
+ }
288
+ const parsed = JSON.parse(jsonMatch[0]);
289
+ if (!Array.isArray(parsed)) {
290
+ console.error('[AI Browser] Response is not an array');
291
+ return [];
292
+ }
293
+ return parsed;
294
+ }
295
+ catch (error) {
296
+ console.error('[AI Browser] Failed to parse observe response:', error);
297
+ return [];
298
+ }
299
+ }
300
+ parseExtractResponse(response) {
301
+ try {
302
+ // Extract JSON from response
303
+ const jsonMatch = response.match(/\{[\s\S]*\}|\[[\s\S]*\]/);
304
+ if (!jsonMatch) {
305
+ throw new Error('No JSON found in AI response');
306
+ }
307
+ return JSON.parse(jsonMatch[0]);
308
+ }
309
+ catch (error) {
310
+ throw new Error(`Failed to parse extraction response: ${error instanceof Error ? error.message : String(error)}`);
311
+ }
312
+ }
313
+ // ============================================================================
314
+ // Private Methods - Action Execution
315
+ // ============================================================================
316
+ async executeAction(action) {
317
+ const { action: actionName, inputs } = action;
318
+ // Map action names to Playwright client methods
319
+ switch (actionName) {
320
+ case 'navigate':
321
+ await this.playwrightClient.navigate(inputs);
322
+ break;
323
+ case 'click':
324
+ await this.playwrightClient.click(inputs);
325
+ break;
326
+ case 'type':
327
+ await this.playwrightClient.type(inputs);
328
+ break;
329
+ case 'fill':
330
+ await this.playwrightClient.fill(inputs);
331
+ break;
332
+ case 'select':
333
+ await this.playwrightClient.select(inputs);
334
+ break;
335
+ case 'check': {
336
+ const checkInputs = inputs;
337
+ await this.playwrightClient.check(checkInputs.selector);
338
+ break;
339
+ }
340
+ case 'uncheck': {
341
+ const uncheckInputs = inputs;
342
+ await this.playwrightClient.uncheck(uncheckInputs.selector);
343
+ break;
344
+ }
345
+ case 'hover': {
346
+ const hoverInputs = inputs;
347
+ await this.playwrightClient.hover(hoverInputs.selector);
348
+ break;
349
+ }
350
+ case 'press': {
351
+ const pressInputs = inputs;
352
+ await this.playwrightClient.press(pressInputs.selector, pressInputs.key);
353
+ break;
354
+ }
355
+ case 'wait':
356
+ await this.playwrightClient.wait(inputs);
357
+ break;
358
+ default:
359
+ throw new Error(`Unsupported action: ${actionName}`);
360
+ }
361
+ }
362
+ }
363
+ //# sourceMappingURL=ai-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-browser.js","sourceRoot":"","sources":["../../src/services/ai-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsDH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAClB,OAAO,CAAY;IACnB,QAAQ,CAAyC;IACjD,gBAAgB,CAAmB;IACnC,KAAK,CAAU;IAEvB,YAAY,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAC,OAAmB;QAC3B,IAAI,CAAC;YACH,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEjF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;YAClD,CAAC;YAED,mBAAmB;YACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;YAED,oBAAoB;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAExD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,oCAAoC;YACpC,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAEvC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,aAAa,OAAO,CAAC,MAAM,EAAE;gBACtC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC/D,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,IAAI,CAAC;YACH,mBAAmB;YACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CACpC,QAAQ,CAAC,OAAO,IAAI,EAAE,EACtB,QAAQ,CAAC,GAAG,EACZ,OAAO,EAAE,WAAW,CACrB,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;YAED,kCAAkC;YAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,IAAI,CAAC;YACH,mBAAmB;YACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CACpC,QAAQ,CAAC,OAAO,IAAI,EAAE,EACtB,QAAQ,CAAC,GAAG,EACZ,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,MAAM,CACf,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC5E,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;YACrD,CAAC;YAED,uBAAuB;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAEjD,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,qCAAqC;IACrC,+EAA+E;IAEvE,KAAK,CAAC,OAAO,CAAC,MAAc;QAClC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,QAA+B,CAAC;YACpD,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,QAA4B,CAAC;YACjD,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,oCAAoC;IACpC,+EAA+E;IAEvE,cAAc,CAAC,MAAc,EAAE,GAAW,EAAE,KAAa;QAC/D,OAAO;;;SAGF,GAAG;WACD,KAAK;;gBAEA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BnB,MAAM;;MAEH,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,WAAmB,EAAE,GAAW,EAAE,WAAoB;QAC/E,2CAA2C;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC;QACxB,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS;YAClD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,mBAAmB;YACvD,CAAC,CAAC,WAAW,CAAC;QAEhB,OAAO;;oBAES,GAAG;;EAErB,WAAW,CAAC,CAAC,CAAC,UAAU,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE;;EAE5C,aAAa;;;;;;;;;;;;;;;;;;;;;;YAsBH,CAAC;IACX,CAAC;IAEO,kBAAkB,CACxB,WAAmB,EACnB,GAAW,EACX,WAAmB,EACnB,MAAgC;QAEhC,MAAM,SAAS,GAAG,KAAK,CAAC;QACxB,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS;YAClD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,mBAAmB;YACvD,CAAC,CAAC,WAAW,CAAC;QAEhB,OAAO;;oBAES,GAAG;;mBAEJ,WAAW;;EAE5B,MAAM,CAAC,CAAC,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;EAE3E,aAAa;;;;;;;;;;;MAWT,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,qCAAqC;IACrC,+EAA+E;IAEvE,mBAAmB,CAAC,QAAgB;QAC1C,IAAI,CAAC;YACH,2DAA2D;YAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,QAAQ,CAAC,CAAC;gBACnE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,QAAgB;QAC3C,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAExC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,QAAgB;QAC3C,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,qCAAqC;IACrC,+EAA+E;IAEvE,KAAK,CAAC,aAAa,CAAC,MAA2D;QACrF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QAE9C,gDAAgD;QAChD,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,UAAU;gBACb,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAyB,CAAC,CAAC;gBAChE,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAA8B,CAAC,CAAC;gBAClE,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAA4C,CAAC,CAAC;gBAC/E,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAA6C,CAAC,CAAC;gBAChF,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAyD,CAAC,CAAC;gBAC9F,MAAM;YACR,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,WAAW,GAAG,MAA8B,CAAC;gBACnD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,aAAa,GAAG,MAA8B,CAAC;gBACrD,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,WAAW,GAAG,MAA8B,CAAC;gBACnD,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,WAAW,GAAG,MAA2C,CAAC;gBAChE,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;gBACzE,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAiC,CAAC,CAAC;gBACpE,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}