donobu 2.10.1 → 2.11.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.
- package/README.md +3 -1
- package/dist/assets/generated/version +1 -1
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/tools/AssertTool.d.ts.map +1 -1
- package/dist/esm/tools/AssertTool.js +29 -11
- package/dist/esm/tools/AssertTool.js.map +1 -1
- package/dist/tools/AssertTool.d.ts.map +1 -1
- package/dist/tools/AssertTool.js +29 -11
- package/dist/tools/AssertTool.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -115,5 +115,7 @@ and have an LLM API key set up (of which can also be done via an environment var
|
|
|
115
115
|
Here is an example terminal command:
|
|
116
116
|
|
|
117
117
|
```
|
|
118
|
-
SELF_HEAL_TESTS_ENABLED=true
|
|
118
|
+
SELF_HEAL_TESTS_ENABLED=true \
|
|
119
|
+
ANTHROPIC_API_KEY=your-api-key \
|
|
120
|
+
npx playwright test your-test.ts
|
|
119
121
|
```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1049
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1049
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssertTool.d.ts","sourceRoot":"","sources":["../../../src/tools/AssertTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,uBACR,SAAQ,qBAAqB,EAC3B,wBAAwB;CAAG;AAE/B,qBAAa,UAAW,SAAQ,IAAI,CAClC,wBAAwB,EACxB,uBAAuB,CACxB;IACC,gBAAuB,IAAI,YAAY;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAgB9C;;IAYoB,IAAI,CACxB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"AssertTool.d.ts","sourceRoot":"","sources":["../../../src/tools/AssertTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,uBACR,SAAQ,qBAAqB,EAC3B,wBAAwB;CAAG;AAE/B,qBAAa,UAAW,SAAQ,IAAI,CAClC,wBAAwB,EACxB,uBAAuB,CACxB;IACC,gBAAuB,IAAI,YAAY;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAgB9C;;IAYoB,IAAI,CACxB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,cAAc,CAAC;IAgDJ,WAAW,CAC/B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,uBAAuB,GAClC,OAAO,CAAC,cAAc,CAAC;CAG3B"}
|
|
@@ -10,17 +10,35 @@ class AssertTool extends Tool_1.Tool {
|
|
|
10
10
|
}
|
|
11
11
|
async call(context, parameters) {
|
|
12
12
|
const screenshot = await PlaywrightUtils_1.PlaywrightUtils.takePngScreenshot(context.page);
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
const webpageRawText = await context.page.evaluate(() => document.body.innerText);
|
|
14
|
+
const promptMessages = [
|
|
15
|
+
{
|
|
16
|
+
type: 'system',
|
|
17
|
+
text: `You are a tool that will evaluate whether a given assertion holds true or not about a given webpage.
|
|
18
|
+
You will have access to a screenshot of the webpage, its raw text, URL, title, etc.
|
|
19
|
+
You should only use the given information to make your assertion.
|
|
20
|
+
Do not use any other information or context.`,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'user',
|
|
24
|
+
items: [
|
|
25
|
+
{ type: 'png', bytes: screenshot },
|
|
26
|
+
{
|
|
27
|
+
type: 'text',
|
|
28
|
+
text: `The current webpage URL is: ${context.page.url()}
|
|
29
|
+
The current webpage title is: ${await context.page.title()}
|
|
30
|
+
The raw text of the current webpage is:
|
|
31
|
+
\`\`\`
|
|
32
|
+
${webpageRawText}
|
|
33
|
+
\`\`\`
|
|
34
|
+
|
|
35
|
+
Note that since this is the raw textual content, the text may be a bit jumbled, have its styling lost,
|
|
36
|
+
careful positioning lost, etc.`,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
const assertionOutcome = await context.gptClient.getStructuredOutput(promptMessages, AssertTool.ASSERTION_OUTCOME_SCHEMA);
|
|
24
42
|
MiscUtils_1.MiscUtils.updateTokenCounts(assertionOutcome, context.metadata);
|
|
25
43
|
const assertPassed = assertionOutcome.output.assertionPassed ? true : false;
|
|
26
44
|
const report = assertPassed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssertTool.js","sourceRoot":"","sources":["../../../src/tools/AssertTool.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAI9B,8DAA2D;AAC3D,kDAA+C;AAmB/C,MAAa,UAAW,SAAQ,WAG/B;IAqBC;QACE,KAAK,CACH,UAAU,CAAC,IAAI,EACf,gGAAgG,EAChG,0BAA0B,EAC1B,yBAAyB,EACzB,IAAI,CACL,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,IAAI,CACxB,OAAwB,EACxB,UAAoC;QAEpC,MAAM,UAAU,GAAG,MAAM,iCAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG;
|
|
1
|
+
{"version":3,"file":"AssertTool.js","sourceRoot":"","sources":["../../../src/tools/AssertTool.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAI9B,8DAA2D;AAC3D,kDAA+C;AAmB/C,MAAa,UAAW,SAAQ,WAG/B;IAqBC;QACE,KAAK,CACH,UAAU,CAAC,IAAI,EACf,gGAAgG,EAChG,0BAA0B,EAC1B,yBAAyB,EACzB,IAAI,CACL,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,IAAI,CACxB,OAAwB,EACxB,UAAoC;QAEpC,MAAM,UAAU,GAAG,MAAM,iCAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAChD,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAC9B,CAAC;QACF,MAAM,cAAc,GAAG;YACrB;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE;;;6CAG+B;aACd;YACzB;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;oBAClC;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,+BAA+B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;gCACnC,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;;;EAGxD,cAAc;;;;+BAIe;qBACpB;iBACF;aACoB;SACxB,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,SAAU,CAAC,mBAAmB,CACnE,cAAc,EACd,UAAU,CAAC,wBAAwB,CACpC,CAAC;QACF,qBAAS,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5E,MAAM,MAAM,GAAG,YAAY;YACzB,CAAC,CAAC,yBAAyB,UAAU,CAAC,kBAAkB,cAAc,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE;YACvG,CAAC,CAAC,yBAAyB,UAAU,CAAC,kBAAkB,cAAc,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1G,OAAO;YACL,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,gBAAgB,CAAC,MAAM;SAClC,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,WAAW,CAC/B,OAAwB,EACxB,UAAmC;QAEnC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;;AA1FH,gCA2FC;AAvFwB,eAAI,GAAG,QAAQ,CAAC;AAEf,mCAAwB,GAAgB;IAC9D,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACxC,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,iIAAiI;SACpI;QACD,eAAe,EAAE;YACf,IAAI,EAAE,SAAS;YACf,WAAW,EACT,8FAA8F;SACjG;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssertTool.d.ts","sourceRoot":"","sources":["../../src/tools/AssertTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,uBACR,SAAQ,qBAAqB,EAC3B,wBAAwB;CAAG;AAE/B,qBAAa,UAAW,SAAQ,IAAI,CAClC,wBAAwB,EACxB,uBAAuB,CACxB;IACC,gBAAuB,IAAI,YAAY;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAgB9C;;IAYoB,IAAI,CACxB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"AssertTool.d.ts","sourceRoot":"","sources":["../../src/tools/AssertTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAK1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,uBACR,SAAQ,qBAAqB,EAC3B,wBAAwB;CAAG;AAE/B,qBAAa,UAAW,SAAQ,IAAI,CAClC,wBAAwB,EACxB,uBAAuB,CACxB;IACC,gBAAuB,IAAI,YAAY;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAgB9C;;IAYoB,IAAI,CACxB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,wBAAwB,GACnC,OAAO,CAAC,cAAc,CAAC;IAgDJ,WAAW,CAC/B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,uBAAuB,GAClC,OAAO,CAAC,cAAc,CAAC;CAG3B"}
|
package/dist/tools/AssertTool.js
CHANGED
|
@@ -10,17 +10,35 @@ class AssertTool extends Tool_1.Tool {
|
|
|
10
10
|
}
|
|
11
11
|
async call(context, parameters) {
|
|
12
12
|
const screenshot = await PlaywrightUtils_1.PlaywrightUtils.takePngScreenshot(context.page);
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
const webpageRawText = await context.page.evaluate(() => document.body.innerText);
|
|
14
|
+
const promptMessages = [
|
|
15
|
+
{
|
|
16
|
+
type: 'system',
|
|
17
|
+
text: `You are a tool that will evaluate whether a given assertion holds true or not about a given webpage.
|
|
18
|
+
You will have access to a screenshot of the webpage, its raw text, URL, title, etc.
|
|
19
|
+
You should only use the given information to make your assertion.
|
|
20
|
+
Do not use any other information or context.`,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: 'user',
|
|
24
|
+
items: [
|
|
25
|
+
{ type: 'png', bytes: screenshot },
|
|
26
|
+
{
|
|
27
|
+
type: 'text',
|
|
28
|
+
text: `The current webpage URL is: ${context.page.url()}
|
|
29
|
+
The current webpage title is: ${await context.page.title()}
|
|
30
|
+
The raw text of the current webpage is:
|
|
31
|
+
\`\`\`
|
|
32
|
+
${webpageRawText}
|
|
33
|
+
\`\`\`
|
|
34
|
+
|
|
35
|
+
Note that since this is the raw textual content, the text may be a bit jumbled, have its styling lost,
|
|
36
|
+
careful positioning lost, etc.`,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
const assertionOutcome = await context.gptClient.getStructuredOutput(promptMessages, AssertTool.ASSERTION_OUTCOME_SCHEMA);
|
|
24
42
|
MiscUtils_1.MiscUtils.updateTokenCounts(assertionOutcome, context.metadata);
|
|
25
43
|
const assertPassed = assertionOutcome.output.assertionPassed ? true : false;
|
|
26
44
|
const report = assertPassed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssertTool.js","sourceRoot":"","sources":["../../src/tools/AssertTool.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAI9B,8DAA2D;AAC3D,kDAA+C;AAmB/C,MAAa,UAAW,SAAQ,WAG/B;IAqBC;QACE,KAAK,CACH,UAAU,CAAC,IAAI,EACf,gGAAgG,EAChG,0BAA0B,EAC1B,yBAAyB,EACzB,IAAI,CACL,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,IAAI,CACxB,OAAwB,EACxB,UAAoC;QAEpC,MAAM,UAAU,GAAG,MAAM,iCAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG;
|
|
1
|
+
{"version":3,"file":"AssertTool.js","sourceRoot":"","sources":["../../src/tools/AssertTool.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAI9B,8DAA2D;AAC3D,kDAA+C;AAmB/C,MAAa,UAAW,SAAQ,WAG/B;IAqBC;QACE,KAAK,CACH,UAAU,CAAC,IAAI,EACf,gGAAgG,EAChG,0BAA0B,EAC1B,yBAAyB,EACzB,IAAI,CACL,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,IAAI,CACxB,OAAwB,EACxB,UAAoC;QAEpC,MAAM,UAAU,GAAG,MAAM,iCAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAChD,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAC9B,CAAC;QACF,MAAM,cAAc,GAAG;YACrB;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE;;;6CAG+B;aACd;YACzB;gBACE,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE;oBAClC;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,+BAA+B,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;gCACnC,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;;;EAGxD,cAAc;;;;+BAIe;qBACpB;iBACF;aACoB;SACxB,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,SAAU,CAAC,mBAAmB,CACnE,cAAc,EACd,UAAU,CAAC,wBAAwB,CACpC,CAAC;QACF,qBAAS,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5E,MAAM,MAAM,GAAG,YAAY;YACzB,CAAC,CAAC,yBAAyB,UAAU,CAAC,kBAAkB,cAAc,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE;YACvG,CAAC,CAAC,yBAAyB,UAAU,CAAC,kBAAkB,cAAc,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1G,OAAO;YACL,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,gBAAgB,CAAC,MAAM;SAClC,CAAC;IACJ,CAAC;IAEe,KAAK,CAAC,WAAW,CAC/B,OAAwB,EACxB,UAAmC;QAEnC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;;AA1FH,gCA2FC;AAvFwB,eAAI,GAAG,QAAQ,CAAC;AAEf,mCAAwB,GAAgB;IAC9D,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACxC,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,iIAAiI;SACpI;QACD,eAAe,EAAE;YACf,IAAI,EAAE,SAAS;YACf,WAAW,EACT,8FAA8F;SACjG;KACF;IACD,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
|