explorbot 0.5.9 → 0.6.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 +1 -1
- package/bin/explorbot-cli.ts +495 -482
- package/boat/api-tester/src/ai/curler.ts +1 -1
- package/boat/api-tester/src/cli.ts +4 -4
- package/boat/api-tester/src/commands/init-command.ts +2 -0
- package/boat/doc-collector/bin/doc-collector-cli.ts +2 -1
- package/boat/doc-collector/src/screenshots.ts +1 -1
- package/boat/prima/bin/prima-cli.ts +2 -1
- package/dist/bin/explorbot-cli.js +456 -444
- package/dist/boat/api-tester/bin/apibot-cli.js +2 -1
- package/dist/boat/api-tester/src/ai/curler.js +1 -1
- package/dist/boat/api-tester/src/cli.js +4 -4
- package/dist/boat/api-tester/src/commands/init-command.js +2 -0
- package/dist/boat/doc-collector/bin/doc-collector-cli.js +2 -1
- package/dist/boat/prima/bin/prima-cli.js +2 -1
- package/dist/models.json +1 -1
- package/dist/package.json +2 -1
- package/dist/rules/navigator/output.md +2 -8
- package/dist/rules/navigator/verification-actions.md +6 -2
- package/dist/rules/planner/ignored-pages.md +1 -0
- package/dist/src/action-result.js +1 -1
- package/dist/src/action.d.ts +0 -1
- package/dist/src/action.js +0 -4
- package/dist/src/ai/captain/idle-mode.js +42 -26
- package/dist/src/ai/captain/mixin.d.ts +2 -0
- package/dist/src/ai/captain/web-mode.js +11 -0
- package/dist/src/ai/captain.d.ts +6 -4
- package/dist/src/ai/captain.js +25 -1
- package/dist/src/ai/driller.js +1 -1
- package/dist/src/ai/experience-compactor.js +2 -2
- package/dist/src/ai/judge.d.ts +7 -0
- package/dist/src/ai/judge.js +8 -1
- package/dist/src/ai/navigator.d.ts +1 -0
- package/dist/src/ai/navigator.js +11 -7
- package/dist/src/ai/planner/subpages.js +1 -1
- package/dist/src/ai/planner.d.ts +12 -5
- package/dist/src/ai/planner.js +138 -86
- package/dist/src/ai/provider.d.ts +1 -1
- package/dist/src/ai/provider.js +16 -5
- package/dist/src/ai/rerunner.js +1 -1
- package/dist/src/ai/researcher/cache.js +14 -6
- package/dist/src/ai/researcher/deep-analysis.d.ts +2 -1
- package/dist/src/ai/researcher/deep-analysis.js +7 -2
- package/dist/src/ai/researcher/fingerprint-worker.js +4 -4
- package/dist/src/ai/researcher.js +44 -24
- package/dist/src/ai/rules.js +6 -7
- package/dist/src/ai/scout.d.ts +12 -2
- package/dist/src/ai/scout.js +103 -8
- package/dist/src/ai/tester.d.ts +9 -5
- package/dist/src/ai/tester.js +22 -42
- package/dist/src/ai/tools.js +10 -8
- package/dist/src/application-spec.d.ts +2 -0
- package/dist/src/application-spec.js +17 -12
- package/dist/src/commands/context-experience-command.js +0 -1
- package/dist/src/commands/context-knowledge-command.js +0 -1
- package/dist/src/commands/explore-command.d.ts +3 -2
- package/dist/src/commands/explore-command.js +35 -23
- package/dist/src/commands/help-json-command.js +3 -1
- package/dist/src/commands/init-command.js +8 -4
- package/dist/src/commands/learn-command.js +0 -2
- package/dist/src/commands/options/auth-option.d.ts +6 -0
- package/dist/src/commands/options/auth-option.js +14 -0
- package/dist/src/commands/options/index.d.ts +2 -0
- package/dist/src/commands/options/index.js +2 -0
- package/dist/src/commands/plan-command.d.ts +3 -0
- package/dist/src/commands/plan-command.js +43 -17
- package/dist/src/commands/plan-save-command.js +6 -17
- package/dist/src/commands/plans-command.js +1 -1
- package/dist/src/commands/test-command.js +12 -2
- package/dist/src/components/App.d.ts +1 -2
- package/dist/src/components/App.js +1 -3
- package/dist/src/components/InputPane.js +0 -5
- package/dist/src/config.d.ts +3 -2
- package/dist/src/config.js +3 -12
- package/dist/src/explorbot.d.ts +3 -2
- package/dist/src/explorbot.js +32 -10
- package/dist/src/explorer.js +6 -7
- package/dist/src/knowledge-tracker.d.ts +2 -2
- package/dist/src/knowledge-tracker.js +18 -6
- package/dist/src/playwright-recorder.d.ts +0 -1
- package/dist/src/playwright-recorder.js +0 -2
- package/dist/src/reporter.d.ts +1 -1
- package/dist/src/reporter.js +3 -3
- package/dist/src/test-plan.js +1 -1
- package/dist/src/utils/error-page.d.ts +17 -0
- package/dist/src/utils/error-page.js +53 -2
- package/dist/src/utils/html-diff.d.ts +1 -2
- package/dist/src/utils/html-diff.js +4 -44
- package/dist/src/utils/logger.js +27 -10
- package/dist/src/utils/markdown-terminal.js +1 -2
- package/dist/src/utils/next-steps.js +20 -16
- package/dist/src/utils/page-readiness.d.ts +2 -1
- package/dist/src/utils/page-readiness.js +24 -5
- package/dist/src/utils/test-plan-markdown.d.ts +3 -0
- package/dist/src/utils/test-plan-markdown.js +35 -4
- package/dist/src/utils/url-matcher.d.ts +1 -0
- package/dist/src/utils/url-matcher.js +5 -0
- package/docs/basics/providers.md +1 -1
- package/docs/contributing/regression-tests.md +19 -4
- package/docs/reference/commands.md +18 -2
- package/docs/reference/configuration.md +1 -1
- package/docs/web-testing/agents.md +8 -0
- package/docs/web-testing/customization.md +2 -0
- package/docs/web-testing/researcher.md +1 -1
- package/docs/workflow/agentic-usage.md +7 -0
- package/docs/workflow/knowledge.md +6 -0
- package/models.json +1 -1
- package/package.json +2 -1
- package/rules/navigator/output.md +2 -8
- package/rules/navigator/verification-actions.md +6 -2
- package/rules/planner/ignored-pages.md +1 -0
- package/src/action-result.ts +1 -2
- package/src/action.ts +0 -5
- package/src/ai/captain/idle-mode.ts +38 -26
- package/src/ai/captain/mixin.ts +2 -1
- package/src/ai/captain/web-mode.ts +12 -0
- package/src/ai/captain.ts +25 -7
- package/src/ai/driller.ts +1 -2
- package/src/ai/experience-compactor.ts +2 -2
- package/src/ai/judge.ts +10 -1
- package/src/ai/navigator.ts +12 -7
- package/src/ai/planner/subpages.ts +1 -2
- package/src/ai/planner.ts +140 -92
- package/src/ai/provider.ts +15 -6
- package/src/ai/rerunner.ts +1 -2
- package/src/ai/researcher/cache.ts +16 -7
- package/src/ai/researcher/deep-analysis.ts +7 -2
- package/src/ai/researcher/fingerprint-worker.ts +5 -5
- package/src/ai/researcher.ts +44 -28
- package/src/ai/rules.ts +6 -7
- package/src/ai/scout.ts +98 -10
- package/src/ai/tester.ts +29 -47
- package/src/ai/tools.ts +11 -9
- package/src/application-spec.ts +19 -13
- package/src/commands/clean-command.ts +1 -1
- package/src/commands/context-command.ts +0 -1
- package/src/commands/context-experience-command.ts +0 -1
- package/src/commands/context-knowledge-command.ts +0 -1
- package/src/commands/explore-command.ts +36 -23
- package/src/commands/help-json-command.ts +8 -6
- package/src/commands/init-command.ts +10 -3
- package/src/commands/learn-command.ts +0 -2
- package/src/commands/options/auth-option.ts +15 -0
- package/src/commands/options/index.ts +2 -0
- package/src/commands/plan-command.ts +44 -17
- package/src/commands/plan-save-command.ts +6 -17
- package/src/commands/plans-command.ts +1 -1
- package/src/commands/test-command.ts +11 -2
- package/src/components/App.tsx +2 -6
- package/src/components/InputPane.tsx +0 -5
- package/src/config.ts +5 -16
- package/src/experience-tracker.ts +1 -1
- package/src/explorbot.ts +31 -11
- package/src/explorer.ts +6 -7
- package/src/knowledge-tracker.ts +18 -7
- package/src/playwright-recorder.ts +0 -2
- package/src/reporter.ts +3 -4
- package/src/test-plan.ts +1 -2
- package/src/utils/error-page.ts +64 -2
- package/src/utils/html-diff.ts +4 -56
- package/src/utils/html.ts +0 -1
- package/src/utils/logger.ts +30 -12
- package/src/utils/markdown-terminal.ts +1 -2
- package/src/utils/next-steps.ts +19 -17
- package/src/utils/page-readiness.ts +33 -7
- package/src/utils/test-plan-markdown.ts +36 -4
- package/src/utils/url-matcher.ts +6 -0
|
@@ -36,7 +36,7 @@ export class Curler {
|
|
|
36
36
|
|
|
37
37
|
this.requestState.clear();
|
|
38
38
|
test.start();
|
|
39
|
-
await this.reporter.reportTestStart(
|
|
39
|
+
await this.reporter.reportTestStart();
|
|
40
40
|
|
|
41
41
|
const conversation = this.provider.startConversation(this.buildSystemPrompt(), 'curler', this.provider.getAgenticModel('curler'));
|
|
42
42
|
const tools = createCurlerTools(this.apiClient, this.requestState, test, opts?.searchSpec);
|
|
@@ -20,7 +20,7 @@ export function createApiCommands(name = 'api'): Command {
|
|
|
20
20
|
.option('--style <style>', 'Planning style: basename of a file in rules/chief/styles/')
|
|
21
21
|
.option('--fresh', 'Start planning from scratch')
|
|
22
22
|
.action(async (endpoint, options) => {
|
|
23
|
-
await run(
|
|
23
|
+
await run(options, endpoint, async (bot) => {
|
|
24
24
|
const command = new PlanCommand(bot);
|
|
25
25
|
command.prefix = name;
|
|
26
26
|
command.style = options.style;
|
|
@@ -50,7 +50,7 @@ export function createApiCommands(name = 'api'): Command {
|
|
|
50
50
|
RecommendedModelsCommand.register(cmd);
|
|
51
51
|
|
|
52
52
|
addCommonOptions(cmd.command('test <planfile> [index]').description('Execute tests from a plan file. Index: 1, 1-3, *')).action(async (planfile, index, options) => {
|
|
53
|
-
await run(
|
|
53
|
+
await run(options, undefined, async (bot) => {
|
|
54
54
|
const command = new TestCommand(bot);
|
|
55
55
|
command.index = index;
|
|
56
56
|
await command.execute(planfile);
|
|
@@ -60,7 +60,7 @@ export function createApiCommands(name = 'api'): Command {
|
|
|
60
60
|
});
|
|
61
61
|
|
|
62
62
|
addCommonOptions(cmd.command('explore <endpoint>').description('Full cycle: plan, execute tests, re-plan. Use * to cover many endpoints, or the base endpoint for all of them')).action(async (endpoint, options) => {
|
|
63
|
-
await run(
|
|
63
|
+
await run(options, endpoint, async (bot) => {
|
|
64
64
|
const command = new ExploreCommand(bot);
|
|
65
65
|
await command.execute(endpoint);
|
|
66
66
|
if (command.result.failed) return 1;
|
|
@@ -101,7 +101,7 @@ export function createApiCommands(name = 'api'): Command {
|
|
|
101
101
|
return cmd;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
async function run(
|
|
104
|
+
async function run(options: any, endpoint: string | undefined, body: (bot: ApiBot) => Promise<number>): Promise<void> {
|
|
105
105
|
setPreserveConsoleLogs(true);
|
|
106
106
|
try {
|
|
107
107
|
if (endpoint && URL.canParse(endpoint)) options.endpoint ||= endpoint;
|
|
@@ -64,6 +64,8 @@ export async function runInit(options: InitOptions): Promise<void> {
|
|
|
64
64
|
tag('substep').log(chalk.yellow(`${options.prefix} know /users "CRUD endpoint for user management"`));
|
|
65
65
|
log('3. Plan and run tests for one endpoint');
|
|
66
66
|
tag('substep').log(chalk.yellow(`${options.prefix} explore /users`));
|
|
67
|
+
log('4. Pass auth for one run, kept in memory and never saved');
|
|
68
|
+
tag('substep').log(chalk.yellow(`${options.prefix} explore /users --auth 'Bearer: <token>'`));
|
|
67
69
|
|
|
68
70
|
if (process.cwd() !== originalCwd) process.chdir(originalCwd);
|
|
69
71
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import { knowledgeOption, wsOption } from '../../../src/commands/options/index.ts';
|
|
2
|
+
import { authOption, knowledgeOption, wsOption } from '../../../src/commands/options/index.ts';
|
|
3
3
|
import { createDocsCommands } from '../src/cli.ts';
|
|
4
4
|
|
|
5
5
|
const program = createDocsCommands('doc-collector');
|
|
6
6
|
wsOption.register(program);
|
|
7
7
|
knowledgeOption.register(program);
|
|
8
|
+
authOption.register(program);
|
|
8
9
|
program.parse();
|
|
@@ -10,7 +10,7 @@ import { safeFilename, sanitizeFilename } from '../../../src/utils/strings.ts';
|
|
|
10
10
|
import type { PageDocumentation } from './ai/documentarian.ts';
|
|
11
11
|
import type { DocStateTransition } from './ai/tools.ts';
|
|
12
12
|
import type { DocbotConfig } from './config.ts';
|
|
13
|
-
import {
|
|
13
|
+
import { captureInteractionAfter, captureInteractionBefore, regionAround, saveRegion } from './interaction-screenshots.ts';
|
|
14
14
|
|
|
15
15
|
const DEFAULT_MAX_SECTION_SCREENSHOTS = 8;
|
|
16
16
|
const EVIDENCE_PADDING = 250;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import { decisionModelOption, knowledgeOption } from '../../../src/commands/options/index.ts';
|
|
2
|
+
import { authOption, decisionModelOption, knowledgeOption } from '../../../src/commands/options/index.ts';
|
|
3
3
|
import { createPrimaCommands } from '../src/cli.ts';
|
|
4
4
|
|
|
5
5
|
const program = createPrimaCommands('prima');
|
|
6
6
|
knowledgeOption.register(program);
|
|
7
|
+
authOption.register(program);
|
|
7
8
|
decisionModelOption.register(program);
|
|
8
9
|
program.parse();
|