@zhiweiliu/playwright-generator 1.0.23 → 1.0.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +0 -107
- package/dist/commands/init.js.map +1 -1
- package/dist/llm/claude.js +1 -1
- package/dist/llm/claude.js.map +1 -1
- package/dist/llm/copilot.js +1 -1
- package/dist/llm/copilot.js.map +1 -1
- package/dist/llm/provider.d.ts +1 -1
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +5 -3
- package/dist/llm/provider.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -12,7 +12,7 @@ const program = new commander_1.Command();
|
|
|
12
12
|
program
|
|
13
13
|
.name("playwright-generator")
|
|
14
14
|
.description("Generate Playwright test cases from natural language using LLM")
|
|
15
|
-
.version("1.0.
|
|
15
|
+
.version("1.0.24");
|
|
16
16
|
// Init command
|
|
17
17
|
program
|
|
18
18
|
.command("init [projectPath]")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqU1E"}
|
package/dist/commands/init.js
CHANGED
|
@@ -126,113 +126,6 @@ export default defineConfig({
|
|
|
126
126
|
};
|
|
127
127
|
await fs_extra_1.default.writeFile(path_1.default.join(projectRoot, "tsconfig.json"), JSON.stringify(tsconfig, null, 2));
|
|
128
128
|
console.log(chalk_1.default.green("✓ Created tsconfig.json"));
|
|
129
|
-
// Create example test case
|
|
130
|
-
const exampleTestCase = `# SauceDemo Sample Test Cases
|
|
131
|
-
|
|
132
|
-
This file contains sample natural language test cases for the SauceDemo e-commerce website (https://saucedemo.com). These test cases demonstrate comprehensive testing scenarios with detailed step-by-step descriptions.
|
|
133
|
-
|
|
134
|
-
## Test Case: Complete Purchase Flow
|
|
135
|
-
|
|
136
|
-
[TC-0001] [SMOKE] [PURCHASE] [END-TO-END]
|
|
137
|
-
Complete e-commerce purchase flow from login to order confirmation
|
|
138
|
-
|
|
139
|
-
Given the user navigates to the SauceDemo login page at https://saucedemo.com
|
|
140
|
-
When the user enters "standard_user" as the username
|
|
141
|
-
And the user enters "secret_sauce" as the password
|
|
142
|
-
And the user clicks the "Login" button
|
|
143
|
-
Then the user should be redirected to the products page
|
|
144
|
-
And the page title should contain "Products"
|
|
145
|
-
|
|
146
|
-
When the user clicks on the "Sauce Labs Backpack" product
|
|
147
|
-
Then the product details page should open
|
|
148
|
-
And the product name should be "Sauce Labs Backpack"
|
|
149
|
-
And the product price should be displayed
|
|
150
|
-
|
|
151
|
-
When the user clicks the "Add to Cart" button
|
|
152
|
-
Then the cart icon should show "1" item
|
|
153
|
-
And the "Add to Cart" button should change to "Remove"
|
|
154
|
-
|
|
155
|
-
When the user clicks the cart icon in the top right
|
|
156
|
-
Then the cart page should open
|
|
157
|
-
And the "Sauce Labs Backpack" should be listed in the cart
|
|
158
|
-
And the quantity should be 1
|
|
159
|
-
And the price should match the product page
|
|
160
|
-
|
|
161
|
-
When the user clicks the "Checkout" button
|
|
162
|
-
Then the checkout information page should open
|
|
163
|
-
|
|
164
|
-
When the user enters "John" as the first name
|
|
165
|
-
And the user enters "Doe" as the last name
|
|
166
|
-
And the user enters "12345" as the zip code
|
|
167
|
-
And the user clicks the "Continue" button
|
|
168
|
-
Then the checkout overview page should open
|
|
169
|
-
And the item total should be calculated correctly
|
|
170
|
-
And the tax should be applied
|
|
171
|
-
And the total amount should be displayed
|
|
172
|
-
|
|
173
|
-
When the user clicks the "Finish" button
|
|
174
|
-
Then the order confirmation page should open
|
|
175
|
-
And a success message "Thank you for your order!" should be displayed
|
|
176
|
-
And the order number should be shown
|
|
177
|
-
|
|
178
|
-
## Test Case: Product Browsing and Cart Management
|
|
179
|
-
|
|
180
|
-
[TC-0002] [REGRESSION] [BROWSING] [CART]
|
|
181
|
-
Browse products, sort items, and manage cart contents
|
|
182
|
-
|
|
183
|
-
Given the user is logged in to SauceDemo with valid credentials
|
|
184
|
-
When the user is on the products page
|
|
185
|
-
Then all products should be displayed in a grid layout
|
|
186
|
-
And each product should show name, price, and "Add to Cart" button
|
|
187
|
-
|
|
188
|
-
When the user clicks the sort dropdown
|
|
189
|
-
Then sorting options should be displayed: Name (A to Z), Name (Z to A), Price (low to high), Price (high to low)
|
|
190
|
-
|
|
191
|
-
When the user selects "Name (A to Z)" from the sort dropdown
|
|
192
|
-
Then products should be sorted alphabetically by name in ascending order
|
|
193
|
-
And the first product should be "Sauce Labs Backpack"
|
|
194
|
-
|
|
195
|
-
When the user selects "Name (Z to A)" from the sort dropdown
|
|
196
|
-
Then products should be sorted alphabetically by name in descending order
|
|
197
|
-
And the first product should be "Test.allTheThings() T-Shirt (Red)"
|
|
198
|
-
|
|
199
|
-
When the user selects "Price (low to high)" from the sort dropdown
|
|
200
|
-
Then products should be sorted by price in ascending order
|
|
201
|
-
And the first product should be the cheapest item
|
|
202
|
-
|
|
203
|
-
When the user selects "Price (high to low)" from the sort dropdown
|
|
204
|
-
Then products should be sorted by price in descending order
|
|
205
|
-
And the first product should be the most expensive item
|
|
206
|
-
|
|
207
|
-
When the user clicks "Add to Cart" on the first product in the sorted list
|
|
208
|
-
Then the cart icon should update to show "1"
|
|
209
|
-
And that product's button should show "Remove"
|
|
210
|
-
|
|
211
|
-
When the user clicks "Add to Cart" on the second product in the sorted list
|
|
212
|
-
Then the cart icon should update to show "2"
|
|
213
|
-
And both products' buttons should show "Remove"
|
|
214
|
-
|
|
215
|
-
When the user clicks the cart icon
|
|
216
|
-
Then the cart page should open
|
|
217
|
-
And both selected products should be listed
|
|
218
|
-
And the quantities should be 1 for each
|
|
219
|
-
And the total price should be the sum of both items
|
|
220
|
-
|
|
221
|
-
When the user clicks "Remove" next to the first product
|
|
222
|
-
Then that product should be removed from the cart
|
|
223
|
-
And the cart should show only the second product
|
|
224
|
-
And the cart icon should show "1"
|
|
225
|
-
|
|
226
|
-
When the user clicks "Continue Shopping"
|
|
227
|
-
Then the user should return to the products page
|
|
228
|
-
And the cart icon should still show "1"
|
|
229
|
-
|
|
230
|
-
When the user clicks the cart icon again
|
|
231
|
-
Then the cart should still contain the remaining product
|
|
232
|
-
And the user can proceed with checkout if desired
|
|
233
|
-
`;
|
|
234
|
-
await fs_extra_1.default.writeFile(path_1.default.join(projectRoot, "tests", "example.test.md"), exampleTestCase);
|
|
235
|
-
console.log(chalk_1.default.green("✓ Created example test case"));
|
|
236
129
|
// Create sample test cases
|
|
237
130
|
const saucedemoSampleContent = `# SauceDemo Sample Test Cases
|
|
238
131
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/claude.js
CHANGED
|
@@ -57,7 +57,7 @@ class ClaudeProvider extends provider_1.LLMProvider {
|
|
|
57
57
|
}
|
|
58
58
|
async generateTestCode(prompt) {
|
|
59
59
|
try {
|
|
60
|
-
const systemPrompt = this.buildPrompt(prompt
|
|
60
|
+
const systemPrompt = this.buildPrompt(prompt);
|
|
61
61
|
const response = await axios_1.default.post(this.baseUrl, {
|
|
62
62
|
model: "claude-haiku-4-5-20251001",
|
|
63
63
|
max_tokens: 2000,
|
package/dist/llm/claude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/llm/claude.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yCAAmE;AAEnE,MAAa,cAAe,SAAQ,sBAAW;IAI7C,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QAHF,YAAO,GAAG,uCAAuC,CAAC;QAIxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ;gBACE,KAAK,EAAE,2BAA2B;gBAClC,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,MAAM;qBAChB;iBACF;aACF,EACD;gBACE,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,MAAM;oBACxB,mBAAmB,EAAE,YAAY;oBACjC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,IAAI;aACd,CACF,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,IACE,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG;oBAC7B,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,KAAK,iBAAiB,EACtD,CAAC;oBACD,OAAO,CAAC,KAAK,CACX,oKAAoK,CACrK,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,mDAAmD,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,EAC3E,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACvE,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/llm/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/copilot.js
CHANGED
|
@@ -33,7 +33,7 @@ class CopilotProvider extends provider_1.LLMProvider {
|
|
|
33
33
|
}
|
|
34
34
|
async generateTestCode(prompt) {
|
|
35
35
|
try {
|
|
36
|
-
const systemPrompt = this.buildPrompt(prompt
|
|
36
|
+
const systemPrompt = this.buildPrompt(prompt);
|
|
37
37
|
const response = await axios_1.default.post(this.baseUrl, {
|
|
38
38
|
prompt: systemPrompt,
|
|
39
39
|
max_tokens: 2000,
|
package/dist/llm/copilot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/llm/copilot.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yCAAmE;AAEnE,MAAa,eAAgB,SAAQ,sBAAW;IAI9C,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QAHF,YAAO,GAAG,wDAAwD,CAAC;QAIzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,IAAI;aACd,CACF,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../src/llm/copilot.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yCAAmE;AAEnE,MAAa,eAAgB,SAAQ,sBAAW;IAI9C,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QAHF,YAAO,GAAG,wDAAwD,CAAC;QAIzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,IAAI;aACd,CACF,CAAC;YACF,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAiB;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAE9C,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,OAAO,EACZ;gBACE,MAAM,EAAE,YAAY;gBACpB,UAAU,EAAE,IAAI;gBAChB,WAAW,EAAE,GAAG;aACjB,EACD;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,OAAO,EAAE,KAAK;aACf,CACF,CAAC;YAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YAE7D,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAtED,0CAsEC"}
|
package/dist/llm/provider.d.ts
CHANGED
|
@@ -12,6 +12,6 @@ export interface GeneratedCode {
|
|
|
12
12
|
export declare abstract class LLMProvider {
|
|
13
13
|
abstract generateTestCode(prompt: LLMPrompt): Promise<GeneratedCode>;
|
|
14
14
|
abstract validateConnection(): Promise<boolean>;
|
|
15
|
-
protected buildPrompt(
|
|
15
|
+
protected buildPrompt(prompt: LLMPrompt): string;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IACpE,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAE/C,SAAS,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IACpE,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAE/C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;CAoBjD"}
|
package/dist/llm/provider.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LLMProvider = void 0;
|
|
4
4
|
class LLMProvider {
|
|
5
|
-
buildPrompt(
|
|
5
|
+
buildPrompt(prompt) {
|
|
6
|
+
const tagString = prompt.tags.map(t => `[${t}]`).join(' ');
|
|
6
7
|
return `You are an expert Playwright test automation engineer.
|
|
7
8
|
Generate Playwright TypeScript test code based on the following natural language test case.
|
|
8
9
|
The generated code should:
|
|
@@ -11,12 +12,13 @@ The generated code should:
|
|
|
11
12
|
- Handle element waits automatically (Playwright auto-waits)
|
|
12
13
|
- Be readable and maintainable
|
|
13
14
|
- Include comments explaining complex steps
|
|
15
|
+
- The test title MUST start with the tags in this exact format: '${tagString} <description>'
|
|
14
16
|
|
|
15
17
|
Natural language test case:
|
|
16
|
-
${
|
|
18
|
+
${prompt.testCase}
|
|
17
19
|
|
|
18
20
|
Generate ONLY the test function code, without explanations. Use this format:
|
|
19
|
-
test('Test Description', async ({ page }) => {
|
|
21
|
+
test('${tagString} Test Description', async ({ page }) => {
|
|
20
22
|
// Your test code here
|
|
21
23
|
});`;
|
|
22
24
|
}
|
package/dist/llm/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":";;;AAaA,MAAsB,WAAW;IAIrB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":";;;AAaA,MAAsB,WAAW;IAIrB,WAAW,CAAC,MAAiB;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO;;;;;;;;mEAQwD,SAAS;;;EAG1E,MAAM,CAAC,QAAQ;;;QAGT,SAAS;;IAEb,CAAC;IACH,CAAC;CACF;AAxBD,kCAwBC"}
|