maestro-flow 0.5.34 → 0.5.36
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/.agents/agents/cli-explore-agent.md +71 -68
- package/.agents/agents/workflow-analyzer.md +1 -0
- package/.agents/agents/workflow-collab-planner.md +1 -0
- package/.agents/agents/workflow-debugger.md +1 -0
- package/.agents/agents/workflow-executor.md +1 -0
- package/.agents/agents/workflow-planner.md +2 -0
- package/.agents/skills/domain-add/SKILL.md +71 -0
- package/.agents/skills/maestro/SKILL.md +7 -6
- package/.agents/skills/maestro-amend/SKILL.md +0 -2
- package/.agents/skills/maestro-analyze/SKILL.md +9 -0
- package/.agents/skills/maestro-brainstorm/SKILL.md +10 -1
- package/.agents/skills/maestro-collab/SKILL.md +14 -1
- package/.agents/skills/maestro-help/SKILL.md +1 -1
- package/.agents/skills/maestro-help/index/catalog.json +0 -1
- package/.agents/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.agents/skills/maestro-next/SKILL.md +15 -4
- package/.agents/skills/maestro-overlay/SKILL.md +4 -3
- package/.agents/skills/maestro-plan/SKILL.md +15 -4
- package/.agents/skills/maestro-ralph/SKILL.md +135 -31
- package/.agents/skills/maestro-ralph-execute/SKILL.md +51 -10
- package/.agents/skills/maestro-tools-register/SKILL.md +0 -6
- package/.agents/skills/maestro-ui-codify/SKILL.md +0 -2
- package/.agents/skills/manage-kg-extractors/SKILL.md +0 -2
- package/.agents/skills/quality-test/SKILL.md +25 -1
- package/.agents/skills/spec-load/SKILL.md +0 -1
- package/.agents/skills/spec-setup/SKILL.md +0 -1
- package/.agents/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
- package/.agents/skills/team-quality-assurance/roles/scout/role.md +15 -11
- package/.agents/skills/team-tech-debt/roles/scanner/role.md +1 -1
- package/.agents/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
- package/.agy/agents/cli-explore-agent.md +71 -68
- package/.agy/agents/workflow-analyzer.md +1 -0
- package/.agy/agents/workflow-collab-planner.md +1 -0
- package/.agy/agents/workflow-debugger.md +1 -0
- package/.agy/agents/workflow-executor.md +1 -0
- package/.agy/agents/workflow-planner.md +2 -0
- package/.agy/skills/domain-add/SKILL.md +68 -0
- package/.agy/skills/maestro/SKILL.md +7 -6
- package/.agy/skills/maestro-amend/SKILL.md +0 -2
- package/.agy/skills/maestro-analyze/SKILL.md +9 -0
- package/.agy/skills/maestro-brainstorm/SKILL.md +10 -1
- package/.agy/skills/maestro-collab/SKILL.md +14 -1
- package/.agy/skills/maestro-help/SKILL.md +1 -1
- package/.agy/skills/maestro-help/index/catalog.json +0 -1
- package/.agy/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.agy/skills/maestro-next/SKILL.md +15 -4
- package/.agy/skills/maestro-overlay/SKILL.md +4 -3
- package/.agy/skills/maestro-plan/SKILL.md +15 -4
- package/.agy/skills/maestro-ralph/SKILL.md +135 -31
- package/.agy/skills/maestro-ralph-execute/SKILL.md +51 -10
- package/.agy/skills/maestro-tools-register/SKILL.md +0 -6
- package/.agy/skills/maestro-ui-codify/SKILL.md +0 -2
- package/.agy/skills/manage-kg-extractors/SKILL.md +0 -2
- package/.agy/skills/quality-test/SKILL.md +25 -1
- package/.agy/skills/spec-load/SKILL.md +0 -1
- package/.agy/skills/spec-setup/SKILL.md +0 -1
- package/.agy/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
- package/.agy/skills/team-quality-assurance/roles/scout/role.md +15 -11
- package/.agy/skills/team-tech-debt/roles/scanner/role.md +1 -1
- package/.agy/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
- package/.claude/agents/cli-explore-agent.md +71 -68
- package/.claude/agents/workflow-analyzer.md +1 -0
- package/.claude/agents/workflow-collab-planner.md +1 -0
- package/.claude/agents/workflow-debugger.md +1 -0
- package/.claude/agents/workflow-executor.md +1 -0
- package/.claude/agents/workflow-planner.md +2 -0
- package/.claude/commands/domain-add.md +69 -0
- package/.claude/commands/maestro-amend.md +0 -2
- package/.claude/commands/maestro-analyze.md +9 -0
- package/.claude/commands/maestro-brainstorm.md +10 -1
- package/.claude/commands/maestro-collab.md +14 -1
- package/.claude/commands/maestro-next.md +15 -4
- package/.claude/commands/maestro-overlay.md +4 -3
- package/.claude/commands/maestro-plan.md +15 -4
- package/.claude/commands/maestro-ralph-execute.md +51 -10
- package/.claude/commands/maestro-ralph.md +135 -31
- package/.claude/commands/maestro-tools-register.md +0 -6
- package/.claude/commands/maestro-ui-codify.md +0 -2
- package/.claude/commands/maestro.md +7 -6
- package/.claude/commands/manage-kg-extractors.md +0 -2
- package/.claude/commands/quality-test.md +25 -1
- package/.claude/commands/spec-load.md +0 -1
- package/.claude/commands/spec-setup.md +0 -1
- package/.claude/skills/maestro-help/SKILL.md +1 -1
- package/.claude/skills/maestro-help/index/catalog.json +0 -1
- package/.claude/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.claude/skills/team-lifecycle-v4/roles/analyst/role.md +13 -7
- package/.claude/skills/team-quality-assurance/roles/scout/role.md +15 -11
- package/.claude/skills/team-tech-debt/roles/scanner/role.md +1 -1
- package/.claude/skills/team-ultra-analyze/roles/explorer/role.md +23 -16
- package/.codex/skills/domain-add/SKILL.md +79 -0
- package/.codex/skills/domain-discover/SKILL.md +43 -0
- package/.codex/skills/domain-list/SKILL.md +38 -0
- package/.codex/skills/learn-follow/SKILL.md +0 -3
- package/.codex/skills/learn-investigate/SKILL.md +0 -3
- package/.codex/skills/learn-retro/SKILL.md +0 -2
- package/.codex/skills/maestro/SKILL.md +34 -13
- package/.codex/skills/maestro-amend/SKILL.md +0 -2
- package/.codex/skills/maestro-analyze/SKILL.md +36 -6
- package/.codex/skills/maestro-blueprint/SKILL.md +0 -4
- package/.codex/skills/maestro-brainstorm/SKILL.md +46 -6
- package/.codex/skills/maestro-collab/SKILL.md +14 -1
- package/.codex/skills/maestro-companion/SKILL.md +0 -2
- package/.codex/skills/maestro-execute/SKILL.md +25 -3
- package/.codex/skills/maestro-fork/SKILL.md +0 -2
- package/.codex/skills/maestro-grill/SKILL.md +9 -1
- package/.codex/skills/maestro-next/SKILL.md +12 -5
- package/.codex/skills/maestro-plan/SKILL.md +43 -5
- package/.codex/skills/maestro-ralph/SKILL.md +10 -3
- package/.codex/skills/maestro-ralph-execute/SKILL.md +51 -10
- package/.codex/skills/maestro-roadmap/SKILL.md +30 -3
- package/.codex/skills/manage-wiki/SKILL.md +0 -2
- package/.codex/skills/odyssey-debug/SKILL.md +0 -2
- package/.codex/skills/odyssey-improve/SKILL.md +0 -6
- package/.codex/skills/odyssey-review-test-fix/SKILL.md +0 -3
- package/.codex/skills/odyssey-ui/SKILL.md +0 -3
- package/.codex/skills/quality-review/SKILL.md +9 -0
- package/.codex/skills/spec-setup/SKILL.md +0 -2
- package/.codex/skills/team-coordinate/SKILL.md +0 -3
- package/.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md +0 -2
- package/README.md +28 -5
- package/README.zh-CN.md +28 -5
- package/chains/_intent-map.json +36 -0
- package/chains/blueprint-driven.json +49 -0
- package/chains/grill-driven.json +51 -0
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js +4 -0
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.d.ts +6 -0
- package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.js +36 -0
- package/dashboard/dist-server/dashboard/src/server/agents/api-explore-adapter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.d.ts +82 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js +444 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/embedding.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +47 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js +426 -19
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +16 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.d.ts +11 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +492 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +18 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +192 -9
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +42 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +1 -1
- package/dashboard/dist-server/src/commands/hooks.d.ts +3 -0
- package/dashboard/dist-server/src/commands/hooks.js +60 -9
- package/dashboard/dist-server/src/commands/hooks.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/code/code-extractor.js +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge/domain-extractor.js +4 -2
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js +6 -1
- package/dashboard/dist-server/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -1
- package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js +2 -6
- package/dashboard/dist-server/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dashboard/dist-server/src/hooks/session-context.js +37 -1
- package/dashboard/dist-server/src/hooks/session-context.js.map +1 -1
- package/dashboard/dist-server/src/search/daemon.d.ts +42 -0
- package/dashboard/dist-server/src/search/daemon.js +180 -0
- package/dashboard/dist-server/src/search/daemon.js.map +1 -0
- package/dashboard/dist-server/src/tools/domain-loader.d.ts +4 -1
- package/dashboard/dist-server/src/tools/domain-loader.js +56 -25
- package/dashboard/dist-server/src/tools/domain-loader.js.map +1 -1
- package/dashboard/dist-server/src/tools/domain-schema.d.ts +1 -1
- package/dashboard/dist-server/src/tools/domain-schema.js +1 -1
- package/dist/shared/agent-types.d.ts +1 -1
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/agents/api-explore/agent-loop.d.ts +14 -0
- package/dist/src/agents/api-explore/agent-loop.d.ts.map +1 -0
- package/dist/src/agents/api-explore/agent-loop.js +86 -0
- package/dist/src/agents/api-explore/agent-loop.js.map +1 -0
- package/dist/src/agents/api-explore/config.d.ts +42 -0
- package/dist/src/agents/api-explore/config.d.ts.map +1 -0
- package/dist/src/agents/api-explore/config.js +99 -0
- package/dist/src/agents/api-explore/config.js.map +1 -0
- package/dist/src/agents/api-explore/index.d.ts +2 -0
- package/dist/src/agents/api-explore/index.d.ts.map +1 -0
- package/dist/src/agents/api-explore/index.js +102 -0
- package/dist/src/agents/api-explore/index.js.map +1 -0
- package/dist/src/agents/api-explore/llm.d.ts +28 -0
- package/dist/src/agents/api-explore/llm.d.ts.map +1 -0
- package/dist/src/agents/api-explore/llm.js +48 -0
- package/dist/src/agents/api-explore/llm.js.map +1 -0
- package/dist/src/agents/api-explore/prompt-parser.d.ts +23 -0
- package/dist/src/agents/api-explore/prompt-parser.d.ts.map +1 -0
- package/dist/src/agents/api-explore/prompt-parser.js +73 -0
- package/dist/src/agents/api-explore/prompt-parser.js.map +1 -0
- package/dist/src/agents/api-explore/runner.d.ts +65 -0
- package/dist/src/agents/api-explore/runner.d.ts.map +1 -0
- package/dist/src/agents/api-explore/runner.js +196 -0
- package/dist/src/agents/api-explore/runner.js.map +1 -0
- package/dist/src/agents/api-explore/session.d.ts +23 -0
- package/dist/src/agents/api-explore/session.d.ts.map +1 -0
- package/dist/src/agents/api-explore/session.js +57 -0
- package/dist/src/agents/api-explore/session.js.map +1 -0
- package/dist/src/agents/api-explore/stream-json-emitter.d.ts +10 -0
- package/dist/src/agents/api-explore/stream-json-emitter.d.ts.map +1 -0
- package/dist/src/agents/api-explore/stream-json-emitter.js +19 -0
- package/dist/src/agents/api-explore/stream-json-emitter.js.map +1 -0
- package/dist/src/agents/api-explore/system-prompt.d.ts +2 -0
- package/dist/src/agents/api-explore/system-prompt.d.ts.map +1 -0
- package/dist/src/agents/api-explore/system-prompt.js +31 -0
- package/dist/src/agents/api-explore/system-prompt.js.map +1 -0
- package/dist/src/agents/api-explore/tools.d.ts +11 -0
- package/dist/src/agents/api-explore/tools.d.ts.map +1 -0
- package/dist/src/agents/api-explore/tools.js +168 -0
- package/dist/src/agents/api-explore/tools.js.map +1 -0
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +3 -0
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/cli.js +4 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/domain.d.ts.map +1 -1
- package/dist/src/commands/domain.js +5 -4
- package/dist/src/commands/domain.js.map +1 -1
- package/dist/src/commands/explore.d.ts +7 -0
- package/dist/src/commands/explore.d.ts.map +1 -0
- package/dist/src/commands/explore.js +201 -0
- package/dist/src/commands/explore.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +3 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +60 -9
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +42 -9
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/search.d.ts +26 -4
- package/dist/src/commands/search.d.ts.map +1 -1
- package/dist/src/commands/search.js +359 -93
- package/dist/src/commands/search.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +37 -21
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/workspace.d.ts.map +1 -1
- package/dist/src/commands/workspace.js +9 -3
- package/dist/src/commands/workspace.js.map +1 -1
- package/dist/src/config/cli-tools-defaults.json +2 -1
- package/dist/src/core/install-executor.d.ts.map +1 -1
- package/dist/src/core/install-executor.js +6 -3
- package/dist/src/core/install-executor.js.map +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.js +1 -1
- package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js +4 -2
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js +6 -1
- package/dist/src/graph/kg/extraction/knowledge-extractor-registry.js.map +1 -1
- package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -1
- package/dist/src/graph/kg/extraction/orchestrator.js +2 -6
- package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -1
- package/dist/src/graph/kg/surface/cli.d.ts.map +1 -1
- package/dist/src/graph/kg/surface/cli.js +5 -2
- package/dist/src/graph/kg/surface/cli.js.map +1 -1
- package/dist/src/hooks/session-context.d.ts.map +1 -1
- package/dist/src/hooks/session-context.js +37 -1
- package/dist/src/hooks/session-context.js.map +1 -1
- package/dist/src/ralph/cmd-next.d.ts.map +1 -1
- package/dist/src/ralph/cmd-next.js +66 -4
- package/dist/src/ralph/cmd-next.js.map +1 -1
- package/dist/src/ralph/status-schema.d.ts +1 -0
- package/dist/src/ralph/status-schema.d.ts.map +1 -1
- package/dist/src/search/daemon.d.ts +43 -0
- package/dist/src/search/daemon.d.ts.map +1 -0
- package/dist/src/search/daemon.js +180 -0
- package/dist/src/search/daemon.js.map +1 -0
- package/dist/src/tools/__tests__/domain-search-debug.js +3 -1
- package/dist/src/tools/__tests__/domain-search-debug.js.map +1 -1
- package/dist/src/tools/domain-loader.d.ts +4 -1
- package/dist/src/tools/domain-loader.d.ts.map +1 -1
- package/dist/src/tools/domain-loader.js +56 -25
- package/dist/src/tools/domain-loader.js.map +1 -1
- package/dist/src/tools/domain-schema.d.ts +1 -1
- package/dist/src/tools/domain-schema.js +1 -1
- package/dist/src/utils/update-notices.js +12 -0
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +5 -1
- package/shared/agent-types.ts +1 -1
- package/templates/search-tools.md +22 -6
- package/workflows/agy-instructions.md +0 -4
- package/workflows/analyze.md +2 -2
- package/workflows/boundary-grill.md +50 -0
- package/workflows/brainstorm.md +6 -5
- package/workflows/claude-instructions.md +29 -2
- package/workflows/codebase-rebuild.md +0 -1
- package/workflows/codex-instructions.md +97 -14
- package/workflows/command-authoring.md +1 -1
- package/workflows/debug.md +0 -4
- package/workflows/domain-add.md +115 -0
- package/workflows/execute.md +7 -0
- package/workflows/explore-usage.md +128 -0
- package/workflows/finish-work.md +2 -6
- package/workflows/fork.md +0 -4
- package/workflows/grill.md +14 -1
- package/workflows/harvest.md +0 -3
- package/workflows/impeccable/audit.md +0 -2
- package/workflows/impeccable/codex.md +0 -4
- package/workflows/init.md +9 -0
- package/workflows/interview-mechanics.md +3 -2
- package/workflows/issue-analyze.md +0 -5
- package/workflows/issue-gaps-analyze.codex.md +0 -6
- package/workflows/knowledge-audit.md +0 -4
- package/workflows/learn.md +0 -6
- package/workflows/maestro.codex.md +0 -4
- package/workflows/maestro.md +31 -18
- package/workflows/merge.md +0 -4
- package/workflows/milestone-complete.md +0 -4
- package/workflows/overlays.md +0 -10
- package/workflows/plan.md +2 -3
- package/workflows/roadmap-common.md +0 -4
- package/workflows/tdd.md +0 -2
- package/workflows/tools-spec.md +1 -7
- package/workflows/ui-codify-extract.md +0 -2
- package/workflows/ui-codify-package.md +0 -2
- package/.agents/skills/maestro-ralph-beta/SKILL.md +0 -882
- package/.agy/skills/maestro-ralph-beta/SKILL.md +0 -878
- package/.claude/commands/maestro-ralph-beta.md +0 -880
- package/.codex/skills/maestro-ralph-beta/SKILL.md +0 -883
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
const CLI_TOOLS_PATH = join(homedir(), '.maestro', 'cli-tools.json');
|
|
5
|
+
const CONFIG_PATH = join(homedir(), '.maestro', 'api-explore.json');
|
|
6
|
+
export function loadExploreConfig() {
|
|
7
|
+
if (!existsSync(CONFIG_PATH))
|
|
8
|
+
return {};
|
|
9
|
+
try {
|
|
10
|
+
return JSON.parse(readFileSync(CONFIG_PATH, 'utf-8'));
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function getDefaultEndpoint(config) {
|
|
17
|
+
const model = config.model || process.env.API_EXPLORE_MODEL || '';
|
|
18
|
+
const baseUrl = config.baseUrl || process.env.API_EXPLORE_BASE_URL || '';
|
|
19
|
+
const apiKey = config.apiKey || process.env.API_EXPLORE_API_KEY || process.env.OPENAI_API_KEY || '';
|
|
20
|
+
if (!model || !baseUrl || !apiKey)
|
|
21
|
+
return null;
|
|
22
|
+
return { model, baseUrl, apiKey, extraBody: config.extraBody };
|
|
23
|
+
}
|
|
24
|
+
export function getNamedEndpoint(name, config) {
|
|
25
|
+
const ep = config.endpoints?.[name];
|
|
26
|
+
if (!ep || !ep.model || !ep.baseUrl || !ep.apiKey)
|
|
27
|
+
return null;
|
|
28
|
+
return { model: ep.model, baseUrl: ep.baseUrl, apiKey: ep.apiKey, extraBody: ep.extraBody };
|
|
29
|
+
}
|
|
30
|
+
export function getAllEndpoints(config) {
|
|
31
|
+
const results = [];
|
|
32
|
+
const def = getDefaultEndpoint(config);
|
|
33
|
+
if (def) {
|
|
34
|
+
results.push({ name: 'default', llmConfig: def });
|
|
35
|
+
}
|
|
36
|
+
if (config.endpoints) {
|
|
37
|
+
for (const [name, ep] of Object.entries(config.endpoints)) {
|
|
38
|
+
if (!ep.model || !ep.baseUrl || !ep.apiKey)
|
|
39
|
+
continue;
|
|
40
|
+
results.push({
|
|
41
|
+
name,
|
|
42
|
+
llmConfig: { model: ep.model, baseUrl: ep.baseUrl, apiKey: ep.apiKey, extraBody: ep.extraBody },
|
|
43
|
+
maxTurns: ep.maxTurns,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return results;
|
|
48
|
+
}
|
|
49
|
+
export function resolveEndpoints(config, endpointFilter, all) {
|
|
50
|
+
if (endpointFilter) {
|
|
51
|
+
const names = endpointFilter.split(',').map(s => s.trim()).filter(Boolean);
|
|
52
|
+
const results = [];
|
|
53
|
+
for (const name of names) {
|
|
54
|
+
const ep = name === 'default' ? getDefaultEndpoint(config) : getNamedEndpoint(name, config);
|
|
55
|
+
const epConfig = config.endpoints?.[name];
|
|
56
|
+
if (ep)
|
|
57
|
+
results.push({ name, llmConfig: ep, maxTurns: epConfig?.maxTurns });
|
|
58
|
+
}
|
|
59
|
+
return results;
|
|
60
|
+
}
|
|
61
|
+
if (all)
|
|
62
|
+
return getAllEndpoints(config);
|
|
63
|
+
// Single: first named endpoint, or default
|
|
64
|
+
const allEps = getAllEndpoints(config);
|
|
65
|
+
return allEps.length > 0 ? [allEps[0]] : [];
|
|
66
|
+
}
|
|
67
|
+
function loadCliToolsProxy() {
|
|
68
|
+
if (!existsSync(CLI_TOOLS_PATH))
|
|
69
|
+
return undefined;
|
|
70
|
+
try {
|
|
71
|
+
const raw = JSON.parse(readFileSync(CLI_TOOLS_PATH, 'utf-8'));
|
|
72
|
+
return raw.proxy;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export function applyProxyEnv(config) {
|
|
79
|
+
if (process.env.HTTP_PROXY || process.env.HTTPS_PROXY)
|
|
80
|
+
return;
|
|
81
|
+
const proxy = config.proxy ?? loadCliToolsProxy();
|
|
82
|
+
if (!proxy?.enabled)
|
|
83
|
+
return;
|
|
84
|
+
const httpUrl = proxy.httpProxy;
|
|
85
|
+
const httpsUrl = proxy.httpsProxy ?? httpUrl;
|
|
86
|
+
if (httpUrl) {
|
|
87
|
+
process.env.HTTP_PROXY = httpUrl;
|
|
88
|
+
process.env.http_proxy = httpUrl;
|
|
89
|
+
}
|
|
90
|
+
if (httpsUrl) {
|
|
91
|
+
process.env.HTTPS_PROXY = httpsUrl;
|
|
92
|
+
process.env.https_proxy = httpsUrl;
|
|
93
|
+
}
|
|
94
|
+
if (proxy.noProxy) {
|
|
95
|
+
process.env.NO_PROXY = proxy.noProxy;
|
|
96
|
+
process.env.no_proxy = proxy.noProxy;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/agents/api-explore/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/api-explore/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { readdirSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { createClient } from './llm.js';
|
|
4
|
+
import { TOOL_SCHEMAS } from './tools.js';
|
|
5
|
+
import { buildSystemPrompt } from './system-prompt.js';
|
|
6
|
+
import { agentLoop } from './agent-loop.js';
|
|
7
|
+
import { loadExploreConfig, getDefaultEndpoint, applyProxyEnv } from './config.js';
|
|
8
|
+
function parseArgs(argv) {
|
|
9
|
+
let model = '';
|
|
10
|
+
let baseUrl = '';
|
|
11
|
+
let apiKey = '';
|
|
12
|
+
let cwd = process.cwd();
|
|
13
|
+
let maxTurns = 0;
|
|
14
|
+
for (let i = 2; i < argv.length; i++) {
|
|
15
|
+
switch (argv[i]) {
|
|
16
|
+
case '--model':
|
|
17
|
+
case '-m':
|
|
18
|
+
model = argv[++i] ?? '';
|
|
19
|
+
break;
|
|
20
|
+
case '--base-url':
|
|
21
|
+
baseUrl = argv[++i] ?? '';
|
|
22
|
+
break;
|
|
23
|
+
case '--api-key':
|
|
24
|
+
apiKey = argv[++i] ?? '';
|
|
25
|
+
break;
|
|
26
|
+
case '--cwd':
|
|
27
|
+
cwd = argv[++i] ?? process.cwd();
|
|
28
|
+
break;
|
|
29
|
+
case '--max-turns':
|
|
30
|
+
maxTurns = parseInt(argv[++i] ?? '0', 10);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const fileConfig = loadExploreConfig();
|
|
35
|
+
applyProxyEnv(fileConfig);
|
|
36
|
+
model = model || fileConfig.model || process.env.API_EXPLORE_MODEL || '';
|
|
37
|
+
baseUrl = baseUrl || fileConfig.baseUrl || process.env.API_EXPLORE_BASE_URL || '';
|
|
38
|
+
apiKey = apiKey || fileConfig.apiKey || process.env.API_EXPLORE_API_KEY || process.env.OPENAI_API_KEY || '';
|
|
39
|
+
maxTurns = maxTurns || fileConfig.maxTurns || 6;
|
|
40
|
+
const extraBody = fileConfig.extraBody;
|
|
41
|
+
if (!model || !baseUrl || !apiKey) {
|
|
42
|
+
// Try named endpoints as fallback
|
|
43
|
+
const defaultEp = getDefaultEndpoint(fileConfig);
|
|
44
|
+
if (defaultEp) {
|
|
45
|
+
return { llmConfig: defaultEp, cwd: resolve(cwd), maxTurns };
|
|
46
|
+
}
|
|
47
|
+
process.stderr.write('Error: model, baseUrl, and apiKey are required.\n' +
|
|
48
|
+
'Configure via ~/.maestro/api-explore.json:\n' +
|
|
49
|
+
' { "baseUrl": "https://...", "apiKey": "sk-...", "model": "..." }\n' +
|
|
50
|
+
'Or via CLI args: --model --base-url --api-key\n' +
|
|
51
|
+
'Or via env: API_EXPLORE_MODEL, API_EXPLORE_BASE_URL, API_EXPLORE_API_KEY\n');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
return { llmConfig: { model, baseUrl, apiKey, extraBody }, cwd: resolve(cwd), maxTurns };
|
|
55
|
+
}
|
|
56
|
+
function readStdin() {
|
|
57
|
+
return new Promise((resolve, reject) => {
|
|
58
|
+
const chunks = [];
|
|
59
|
+
process.stdin.on('data', (chunk) => chunks.push(chunk));
|
|
60
|
+
process.stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
|
|
61
|
+
process.stdin.on('error', reject);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function getDirListing(cwd) {
|
|
65
|
+
try {
|
|
66
|
+
return readdirSync(cwd)
|
|
67
|
+
.filter(name => !name.startsWith('.'))
|
|
68
|
+
.slice(0, 50)
|
|
69
|
+
.join('\n');
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return '(unable to list directory)';
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function main() {
|
|
76
|
+
const { llmConfig, cwd, maxTurns } = parseArgs(process.argv);
|
|
77
|
+
const prompt = await readStdin();
|
|
78
|
+
if (!prompt.trim()) {
|
|
79
|
+
process.stderr.write('Error: no prompt received on stdin\n');
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
const { client, config } = createClient(llmConfig);
|
|
83
|
+
const dirListing = getDirListing(cwd);
|
|
84
|
+
const systemPrompt = buildSystemPrompt(cwd, dirListing);
|
|
85
|
+
const result = await agentLoop({
|
|
86
|
+
prompt: prompt.trim(),
|
|
87
|
+
systemPrompt,
|
|
88
|
+
client,
|
|
89
|
+
llmConfig: config,
|
|
90
|
+
toolSchemas: TOOL_SCHEMAS,
|
|
91
|
+
maxTurns,
|
|
92
|
+
cwd,
|
|
93
|
+
});
|
|
94
|
+
if (!result) {
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
main().catch((err) => {
|
|
99
|
+
process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/api-explore/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
import type { ChatCompletionMessageParam, ChatCompletionTool } from 'openai/resources/chat/completions.js';
|
|
3
|
+
export interface LlmToolCall {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
arguments: string;
|
|
7
|
+
}
|
|
8
|
+
export interface LlmResponse {
|
|
9
|
+
content: string | null;
|
|
10
|
+
toolCalls: LlmToolCall[];
|
|
11
|
+
usage: {
|
|
12
|
+
inputTokens: number;
|
|
13
|
+
outputTokens: number;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface LlmConfig {
|
|
17
|
+
model: string;
|
|
18
|
+
baseUrl: string;
|
|
19
|
+
apiKey: string;
|
|
20
|
+
/** Model-specific extra body params (e.g. Qwen enable_thinking) */
|
|
21
|
+
extraBody?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export declare function createClient(params: LlmConfig): {
|
|
24
|
+
client: OpenAI;
|
|
25
|
+
config: LlmConfig;
|
|
26
|
+
};
|
|
27
|
+
export declare function callLlm(client: OpenAI, config: LlmConfig, messages: ChatCompletionMessageParam[], tools: ChatCompletionTool[]): Promise<LlmResponse>;
|
|
28
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../../src/agents/api-explore/llm.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE3G,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;CACnB,CAMA;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,0BAA0B,EAAE,EACtC,KAAK,EAAE,kBAAkB,EAAE,GAC1B,OAAO,CAAC,WAAW,CAAC,CA0CtB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
export function createClient(params) {
|
|
3
|
+
const client = new OpenAI({
|
|
4
|
+
apiKey: params.apiKey,
|
|
5
|
+
baseURL: params.baseUrl,
|
|
6
|
+
});
|
|
7
|
+
return { client, config: params };
|
|
8
|
+
}
|
|
9
|
+
export async function callLlm(client, config, messages, tools) {
|
|
10
|
+
// Build request body — only include tools/tool_choice when tools are present,
|
|
11
|
+
// merge extraBody for model-specific params (Qwen enable_thinking, etc.)
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
const body = {
|
|
14
|
+
model: config.model,
|
|
15
|
+
messages,
|
|
16
|
+
max_completion_tokens: 2_000,
|
|
17
|
+
temperature: 0.2,
|
|
18
|
+
...config.extraBody,
|
|
19
|
+
};
|
|
20
|
+
if (tools.length > 0) {
|
|
21
|
+
body.tools = tools;
|
|
22
|
+
body.tool_choice = 'auto';
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
const response = await client.chat.completions.create(body);
|
|
26
|
+
const choice = response.choices?.[0];
|
|
27
|
+
if (!choice) {
|
|
28
|
+
throw new Error('No choices returned from LLM API.');
|
|
29
|
+
}
|
|
30
|
+
const msg = choice.message;
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
+
const toolCalls = (msg.tool_calls ?? [])
|
|
33
|
+
.filter((tc) => tc.type === 'function')
|
|
34
|
+
.map((tc) => ({
|
|
35
|
+
id: tc.id,
|
|
36
|
+
name: tc.function.name,
|
|
37
|
+
arguments: tc.function.arguments,
|
|
38
|
+
}));
|
|
39
|
+
return {
|
|
40
|
+
content: msg.content,
|
|
41
|
+
toolCalls,
|
|
42
|
+
usage: {
|
|
43
|
+
inputTokens: response.usage?.prompt_tokens ?? 0,
|
|
44
|
+
outputTokens: response.usage?.completion_tokens ?? 0,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../../../src/agents/api-explore/llm.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAuB5B,MAAM,UAAU,YAAY,CAAC,MAAiB;IAI5C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAc,EACd,MAAiB,EACjB,QAAsC,EACtC,KAA2B;IAE3B,8EAA8E;IAC9E,yEAAyE;IACzE,8DAA8D;IAC9D,MAAM,IAAI,GAAQ;QAChB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ;QACR,qBAAqB,EAAE,KAAK;QAC5B,WAAW,EAAE,GAAG;QAChB,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAQ,CAAC;IAEnE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,MAAM,SAAS,GAAkB,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;SACpD,MAAM,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC;SAC3C,GAAG,CAAC,CAAC,EAAO,EAAE,EAAE,CAAC,CAAC;QACjB,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;QACtB,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS;KACjC,CAAC,CAAC,CAAC;IAEN,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,SAAS;QACT,KAAK,EAAE;YACL,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;YAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;SACrD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured prompt format for maestro explore:
|
|
3
|
+
*
|
|
4
|
+
* FIND: <what to search for — the core query>
|
|
5
|
+
* SCOPE: <file patterns, directories, or modules>
|
|
6
|
+
* EXCLUDE: <what to skip — files, patterns, false positives>
|
|
7
|
+
* ATTENTION: <caveats, edge cases, things to watch for>
|
|
8
|
+
* EXPECTED: <output format — evidence list, summary, JSON>
|
|
9
|
+
*
|
|
10
|
+
* Also accepts plain text (passed through unchanged).
|
|
11
|
+
* Legacy fields PURPOSE/FOCUS/CONSTRAINTS map to FIND/ATTENTION/EXCLUDE.
|
|
12
|
+
*/
|
|
13
|
+
export interface StructuredPrompt {
|
|
14
|
+
find: string;
|
|
15
|
+
scope?: string;
|
|
16
|
+
exclude?: string;
|
|
17
|
+
attention?: string;
|
|
18
|
+
expected?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function isStructuredPrompt(text: string): boolean;
|
|
21
|
+
export declare function parseStructuredPrompt(text: string): StructuredPrompt;
|
|
22
|
+
export declare function buildExplorePrompt(input: string | StructuredPrompt): string;
|
|
23
|
+
//# sourceMappingURL=prompt-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-parser.d.ts","sourceRoot":"","sources":["../../../../src/agents/api-explore/prompt-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAmBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA6BpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,CAY3E"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured prompt format for maestro explore:
|
|
3
|
+
*
|
|
4
|
+
* FIND: <what to search for — the core query>
|
|
5
|
+
* SCOPE: <file patterns, directories, or modules>
|
|
6
|
+
* EXCLUDE: <what to skip — files, patterns, false positives>
|
|
7
|
+
* ATTENTION: <caveats, edge cases, things to watch for>
|
|
8
|
+
* EXPECTED: <output format — evidence list, summary, JSON>
|
|
9
|
+
*
|
|
10
|
+
* Also accepts plain text (passed through unchanged).
|
|
11
|
+
* Legacy fields PURPOSE/FOCUS/CONSTRAINTS map to FIND/ATTENTION/EXCLUDE.
|
|
12
|
+
*/
|
|
13
|
+
const FIELD_MAP = {
|
|
14
|
+
FIND: 'find',
|
|
15
|
+
SCOPE: 'scope',
|
|
16
|
+
EXCLUDE: 'exclude',
|
|
17
|
+
ATTENTION: 'attention',
|
|
18
|
+
EXPECTED: 'expected',
|
|
19
|
+
// Legacy aliases
|
|
20
|
+
PURPOSE: 'find',
|
|
21
|
+
FOCUS: 'attention',
|
|
22
|
+
CONSTRAINTS: 'exclude',
|
|
23
|
+
};
|
|
24
|
+
const FIELD_PATTERN = new RegExp(`^(${Object.keys(FIELD_MAP).join('|')})\\s*:\\s*(.*)`, 'i');
|
|
25
|
+
export function isStructuredPrompt(text) {
|
|
26
|
+
return /^(FIND|PURPOSE)\s*:/im.test(text);
|
|
27
|
+
}
|
|
28
|
+
export function parseStructuredPrompt(text) {
|
|
29
|
+
const fields = {};
|
|
30
|
+
let currentKey = null;
|
|
31
|
+
const lines = [];
|
|
32
|
+
for (const line of text.split('\n')) {
|
|
33
|
+
const match = line.match(FIELD_PATTERN);
|
|
34
|
+
if (match) {
|
|
35
|
+
if (currentKey && lines.length > 0) {
|
|
36
|
+
fields[currentKey] = lines.join('\n').trim();
|
|
37
|
+
lines.length = 0;
|
|
38
|
+
}
|
|
39
|
+
currentKey = FIELD_MAP[match[1].toUpperCase()] ?? null;
|
|
40
|
+
if (match[2].trim())
|
|
41
|
+
lines.push(match[2].trim());
|
|
42
|
+
}
|
|
43
|
+
else if (currentKey) {
|
|
44
|
+
lines.push(line);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (currentKey && lines.length > 0) {
|
|
48
|
+
fields[currentKey] = lines.join('\n').trim();
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
find: fields.find ?? text.trim(),
|
|
52
|
+
scope: fields.scope,
|
|
53
|
+
exclude: fields.exclude,
|
|
54
|
+
attention: fields.attention,
|
|
55
|
+
expected: fields.expected,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export function buildExplorePrompt(input) {
|
|
59
|
+
const parsed = typeof input === 'string'
|
|
60
|
+
? (isStructuredPrompt(input) ? parseStructuredPrompt(input) : { find: input })
|
|
61
|
+
: input;
|
|
62
|
+
const parts = [`Find: ${parsed.find}`];
|
|
63
|
+
if (parsed.scope)
|
|
64
|
+
parts.push(`Scope: ${parsed.scope}`);
|
|
65
|
+
if (parsed.exclude)
|
|
66
|
+
parts.push(`Exclude: ${parsed.exclude}`);
|
|
67
|
+
if (parsed.attention)
|
|
68
|
+
parts.push(`Attention: ${parsed.attention}`);
|
|
69
|
+
if (parsed.expected)
|
|
70
|
+
parts.push(`Expected output: ${parsed.expected}`);
|
|
71
|
+
return parts.join('\n');
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=prompt-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-parser.js","sourceRoot":"","sources":["../../../../src/agents/api-explore/prompt-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parallel explore runner.
|
|
3
|
+
*
|
|
4
|
+
* Execution model: serial within same endpoint, parallel across endpoints.
|
|
5
|
+
* Each endpoint gets its own queue; jobs in the same queue run one-by-one.
|
|
6
|
+
* Different endpoint queues run concurrently.
|
|
7
|
+
*
|
|
8
|
+
* Per-endpoint concurrency can be raised via `endpointConcurrency` option
|
|
9
|
+
* (default 1 = fully serial per endpoint).
|
|
10
|
+
*/
|
|
11
|
+
import { type LlmConfig } from './llm.js';
|
|
12
|
+
export interface ExploreJob {
|
|
13
|
+
id: string;
|
|
14
|
+
prompt: string;
|
|
15
|
+
endpointName: string;
|
|
16
|
+
llmConfig: LlmConfig;
|
|
17
|
+
/** Per-endpoint maxTurns override */
|
|
18
|
+
maxTurns?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ExploreResult {
|
|
21
|
+
id: string;
|
|
22
|
+
prompt: string;
|
|
23
|
+
endpointName: string;
|
|
24
|
+
model: string;
|
|
25
|
+
content: string | null;
|
|
26
|
+
error?: string;
|
|
27
|
+
durationMs: number;
|
|
28
|
+
}
|
|
29
|
+
export interface RunnerOptions {
|
|
30
|
+
jobs: ExploreJob[];
|
|
31
|
+
cwd: string;
|
|
32
|
+
maxTurns: number;
|
|
33
|
+
/** Max concurrent endpoint queues (default: number of distinct endpoints) */
|
|
34
|
+
concurrency: number;
|
|
35
|
+
/** Max concurrent jobs within the same endpoint (default: 1 = serial) */
|
|
36
|
+
endpointConcurrency?: number;
|
|
37
|
+
onProgress?: (msg: string) => void;
|
|
38
|
+
onJobStart?: (job: ExploreJob) => void;
|
|
39
|
+
onJobDone?: (result: ExploreResult) => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Run explore jobs: serial within same endpoint, parallel across endpoints.
|
|
43
|
+
*/
|
|
44
|
+
export declare function runExploreJobs(opts: RunnerOptions): Promise<ExploreResult[]>;
|
|
45
|
+
export interface PromptEntry {
|
|
46
|
+
prompt: string;
|
|
47
|
+
endpoint?: string;
|
|
48
|
+
}
|
|
49
|
+
type NamedEndpoint = {
|
|
50
|
+
name: string;
|
|
51
|
+
llmConfig: LlmConfig;
|
|
52
|
+
maxTurns?: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Build job list from prompt entries. Default: 1 prompt = 1 agent (first endpoint).
|
|
56
|
+
* Per-prompt `endpoint` field overrides the global endpoint selection.
|
|
57
|
+
*/
|
|
58
|
+
export declare function buildJobsFromEntries(entries: PromptEntry[], globalEndpoints: NamedEndpoint[], allEndpoints: NamedEndpoint[]): ExploreJob[];
|
|
59
|
+
/**
|
|
60
|
+
* Build job list from prompts × endpoints cartesian product.
|
|
61
|
+
* Used when --all flag fans one prompt to every endpoint.
|
|
62
|
+
*/
|
|
63
|
+
export declare function buildJobs(prompts: string[], endpoints: NamedEndpoint[]): ExploreJob[];
|
|
64
|
+
export {};
|
|
65
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/agents/api-explore/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAMxD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAuGD;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAyDlF;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,WAAW,EAAE,EACtB,eAAe,EAAE,aAAa,EAAE,EAChC,YAAY,EAAE,aAAa,EAAE,GAC5B,UAAU,EAAE,CAkCd;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,aAAa,EAAE,GACzB,UAAU,EAAE,CAkBd"}
|