@auvira.ai/sdk 0.2.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.
- package/LICENSE +21 -0
- package/README.md +414 -0
- package/dist/agent/Agent.d.ts +27 -0
- package/dist/agent/Agent.d.ts.map +1 -0
- package/dist/agent/Agent.js +144 -0
- package/dist/agent/Agent.js.map +1 -0
- package/dist/agent/AgentRegistry.d.ts +13 -0
- package/dist/agent/AgentRegistry.d.ts.map +1 -0
- package/dist/agent/AgentRegistry.js +28 -0
- package/dist/agent/AgentRegistry.js.map +1 -0
- package/dist/agent/AgentRun.d.ts +38 -0
- package/dist/agent/AgentRun.d.ts.map +1 -0
- package/dist/agent/AgentRun.js +101 -0
- package/dist/agent/AgentRun.js.map +1 -0
- package/dist/agent/ConversationStore.d.ts +18 -0
- package/dist/agent/ConversationStore.d.ts.map +1 -0
- package/dist/agent/ConversationStore.js +38 -0
- package/dist/agent/ConversationStore.js.map +1 -0
- package/dist/agent/RunEventBus.d.ts +43 -0
- package/dist/agent/RunEventBus.d.ts.map +1 -0
- package/dist/agent/RunEventBus.js +289 -0
- package/dist/agent/RunEventBus.js.map +1 -0
- package/dist/agent/assistantEvent.d.ts +11 -0
- package/dist/agent/assistantEvent.d.ts.map +1 -0
- package/dist/agent/assistantEvent.js +20 -0
- package/dist/agent/assistantEvent.js.map +1 -0
- package/dist/agent/buildAgentPrompt.d.ts +10 -0
- package/dist/agent/buildAgentPrompt.d.ts.map +1 -0
- package/dist/agent/buildAgentPrompt.js +39 -0
- package/dist/agent/buildAgentPrompt.js.map +1 -0
- package/dist/agent/cancellation.d.ts +9 -0
- package/dist/agent/cancellation.d.ts.map +1 -0
- package/dist/agent/cancellation.js +18 -0
- package/dist/agent/cancellation.js.map +1 -0
- package/dist/agent/editCompletion.d.ts +35 -0
- package/dist/agent/editCompletion.d.ts.map +1 -0
- package/dist/agent/editCompletion.js +179 -0
- package/dist/agent/editCompletion.js.map +1 -0
- package/dist/agent/editEvents.d.ts +11 -0
- package/dist/agent/editEvents.d.ts.map +1 -0
- package/dist/agent/editEvents.js +36 -0
- package/dist/agent/editEvents.js.map +1 -0
- package/dist/agent/evaluateTaskCompletion.d.ts +49 -0
- package/dist/agent/evaluateTaskCompletion.d.ts.map +1 -0
- package/dist/agent/evaluateTaskCompletion.js +257 -0
- package/dist/agent/evaluateTaskCompletion.js.map +1 -0
- package/dist/agent/events.d.ts +182 -0
- package/dist/agent/events.d.ts.map +1 -0
- package/dist/agent/events.js +25 -0
- package/dist/agent/events.js.map +1 -0
- package/dist/agent/parseSendPayload.d.ts +24 -0
- package/dist/agent/parseSendPayload.d.ts.map +1 -0
- package/dist/agent/parseSendPayload.js +71 -0
- package/dist/agent/parseSendPayload.js.map +1 -0
- package/dist/agent/patchUtils.d.ts +17 -0
- package/dist/agent/patchUtils.d.ts.map +1 -0
- package/dist/agent/patchUtils.js +90 -0
- package/dist/agent/patchUtils.js.map +1 -0
- package/dist/agent/resolveModelConfig.d.ts +4 -0
- package/dist/agent/resolveModelConfig.d.ts.map +1 -0
- package/dist/agent/resolveModelConfig.js +27 -0
- package/dist/agent/resolveModelConfig.js.map +1 -0
- package/dist/agent/runAgentTask.d.ts +14 -0
- package/dist/agent/runAgentTask.d.ts.map +1 -0
- package/dist/agent/runAgentTask.js +376 -0
- package/dist/agent/runAgentTask.js.map +1 -0
- package/dist/agent/runResult.d.ts +10 -0
- package/dist/agent/runResult.d.ts.map +1 -0
- package/dist/agent/runResult.js +34 -0
- package/dist/agent/runResult.js.map +1 -0
- package/dist/agent/runValidationWithRepair.d.ts +32 -0
- package/dist/agent/runValidationWithRepair.d.ts.map +1 -0
- package/dist/agent/runValidationWithRepair.js +114 -0
- package/dist/agent/runValidationWithRepair.js.map +1 -0
- package/dist/agent/tools/edit.d.ts +4 -0
- package/dist/agent/tools/edit.d.ts.map +1 -0
- package/dist/agent/tools/edit.js +98 -0
- package/dist/agent/tools/edit.js.map +1 -0
- package/dist/agent/tools/executeTool.d.ts +8 -0
- package/dist/agent/tools/executeTool.d.ts.map +1 -0
- package/dist/agent/tools/executeTool.js +104 -0
- package/dist/agent/tools/executeTool.js.map +1 -0
- package/dist/agent/tools/glob.d.ts +6 -0
- package/dist/agent/tools/glob.d.ts.map +1 -0
- package/dist/agent/tools/glob.js +77 -0
- package/dist/agent/tools/glob.js.map +1 -0
- package/dist/agent/tools/grep.d.ts +4 -0
- package/dist/agent/tools/grep.d.ts.map +1 -0
- package/dist/agent/tools/grep.js +61 -0
- package/dist/agent/tools/grep.js.map +1 -0
- package/dist/agent/tools/pathGuard.d.ts +11 -0
- package/dist/agent/tools/pathGuard.d.ts.map +1 -0
- package/dist/agent/tools/pathGuard.js +55 -0
- package/dist/agent/tools/pathGuard.js.map +1 -0
- package/dist/agent/tools/read.d.ts +4 -0
- package/dist/agent/tools/read.d.ts.map +1 -0
- package/dist/agent/tools/read.js +41 -0
- package/dist/agent/tools/read.js.map +1 -0
- package/dist/agent/tools/types.d.ts +46 -0
- package/dist/agent/tools/types.d.ts.map +1 -0
- package/dist/agent/tools/types.js +2 -0
- package/dist/agent/tools/types.js.map +1 -0
- package/dist/agent/tools/write.d.ts +4 -0
- package/dist/agent/tools/write.d.ts.map +1 -0
- package/dist/agent/tools/write.js +63 -0
- package/dist/agent/tools/write.js.map +1 -0
- package/dist/agent/types.d.ts +193 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +18 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/validateOptions.d.ts +12 -0
- package/dist/agent/validateOptions.d.ts.map +1 -0
- package/dist/agent/validateOptions.js +91 -0
- package/dist/agent/validateOptions.js.map +1 -0
- package/dist/git/cloneGitLabProject.d.ts +10 -0
- package/dist/git/cloneGitLabProject.d.ts.map +1 -0
- package/dist/git/cloneGitLabProject.js +24 -0
- package/dist/git/cloneGitLabProject.js.map +1 -0
- package/dist/git/createAgentBranch.d.ts +3 -0
- package/dist/git/createAgentBranch.d.ts.map +1 -0
- package/dist/git/createAgentBranch.js +14 -0
- package/dist/git/createAgentBranch.js.map +1 -0
- package/dist/git/gitDiff.d.ts +9 -0
- package/dist/git/gitDiff.d.ts.map +1 -0
- package/dist/git/gitDiff.js +34 -0
- package/dist/git/gitDiff.js.map +1 -0
- package/dist/git/maskSecrets.d.ts +3 -0
- package/dist/git/maskSecrets.d.ts.map +1 -0
- package/dist/git/maskSecrets.js +15 -0
- package/dist/git/maskSecrets.js.map +1 -0
- package/dist/git/resolveGitLabProject.d.ts +26 -0
- package/dist/git/resolveGitLabProject.d.ts.map +1 -0
- package/dist/git/resolveGitLabProject.js +68 -0
- package/dist/git/resolveGitLabProject.js.map +1 -0
- package/dist/git/sanitizeGitLabUrl.d.ts +8 -0
- package/dist/git/sanitizeGitLabUrl.d.ts.map +1 -0
- package/dist/git/sanitizeGitLabUrl.js +38 -0
- package/dist/git/sanitizeGitLabUrl.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/agentic/AgenticCustomProvider.d.ts +9 -0
- package/dist/providers/agentic/AgenticCustomProvider.d.ts.map +1 -0
- package/dist/providers/agentic/AgenticCustomProvider.js +366 -0
- package/dist/providers/agentic/AgenticCustomProvider.js.map +1 -0
- package/dist/providers/agentic/agentLoop.d.ts +79 -0
- package/dist/providers/agentic/agentLoop.d.ts.map +1 -0
- package/dist/providers/agentic/agentLoop.js +646 -0
- package/dist/providers/agentic/agentLoop.js.map +1 -0
- package/dist/providers/agentic/priomptContext.d.ts +29 -0
- package/dist/providers/agentic/priomptContext.d.ts.map +1 -0
- package/dist/providers/agentic/priomptContext.js +90 -0
- package/dist/providers/agentic/priomptContext.js.map +1 -0
- package/dist/providers/agentic/seedRetrieval.d.ts +12 -0
- package/dist/providers/agentic/seedRetrieval.d.ts.map +1 -0
- package/dist/providers/agentic/seedRetrieval.js +58 -0
- package/dist/providers/agentic/seedRetrieval.js.map +1 -0
- package/dist/providers/agentic/toolPolicy.d.ts +15 -0
- package/dist/providers/agentic/toolPolicy.d.ts.map +1 -0
- package/dist/providers/agentic/toolPolicy.js +53 -0
- package/dist/providers/agentic/toolPolicy.js.map +1 -0
- package/dist/providers/agentic/toolSchemas.d.ts +177 -0
- package/dist/providers/agentic/toolSchemas.d.ts.map +1 -0
- package/dist/providers/agentic/toolSchemas.js +104 -0
- package/dist/providers/agentic/toolSchemas.js.map +1 -0
- package/dist/providers/agentic/trimAgentHistory.d.ts +18 -0
- package/dist/providers/agentic/trimAgentHistory.d.ts.map +1 -0
- package/dist/providers/agentic/trimAgentHistory.js +68 -0
- package/dist/providers/agentic/trimAgentHistory.js.map +1 -0
- package/dist/providers/custom/CustomModelProvider.d.ts +4 -0
- package/dist/providers/custom/CustomModelProvider.d.ts.map +1 -0
- package/dist/providers/custom/CustomModelProvider.js +538 -0
- package/dist/providers/custom/CustomModelProvider.js.map +1 -0
- package/dist/providers/custom/discoverTargetFiles.d.ts +16 -0
- package/dist/providers/custom/discoverTargetFiles.d.ts.map +1 -0
- package/dist/providers/custom/discoverTargetFiles.js +231 -0
- package/dist/providers/custom/discoverTargetFiles.js.map +1 -0
- package/dist/providers/custom/harnessPinTypes.d.ts +15 -0
- package/dist/providers/custom/harnessPinTypes.d.ts.map +1 -0
- package/dist/providers/custom/harnessPinTypes.js +46 -0
- package/dist/providers/custom/harnessPinTypes.js.map +1 -0
- package/dist/providers/custom/harnessPrompt.d.ts +29 -0
- package/dist/providers/custom/harnessPrompt.d.ts.map +1 -0
- package/dist/providers/custom/harnessPrompt.js +356 -0
- package/dist/providers/custom/harnessPrompt.js.map +1 -0
- package/dist/providers/custom/harnessSectionContext.d.ts +7 -0
- package/dist/providers/custom/harnessSectionContext.d.ts.map +1 -0
- package/dist/providers/custom/harnessSectionContext.js +82 -0
- package/dist/providers/custom/harnessSectionContext.js.map +1 -0
- package/dist/providers/custom/modelRequestDefaults.d.ts +16 -0
- package/dist/providers/custom/modelRequestDefaults.d.ts.map +1 -0
- package/dist/providers/custom/modelRequestDefaults.js +71 -0
- package/dist/providers/custom/modelRequestDefaults.js.map +1 -0
- package/dist/providers/custom/parseModelEditPlan.d.ts +21 -0
- package/dist/providers/custom/parseModelEditPlan.d.ts.map +1 -0
- package/dist/providers/custom/parseModelEditPlan.js +164 -0
- package/dist/providers/custom/parseModelEditPlan.js.map +1 -0
- package/dist/providers/custom/selectPromptFiles.d.ts +18 -0
- package/dist/providers/custom/selectPromptFiles.d.ts.map +1 -0
- package/dist/providers/custom/selectPromptFiles.js +180 -0
- package/dist/providers/custom/selectPromptFiles.js.map +1 -0
- package/dist/providers/custom/visionImages.d.ts +4 -0
- package/dist/providers/custom/visionImages.d.ts.map +1 -0
- package/dist/providers/custom/visionImages.js +10 -0
- package/dist/providers/custom/visionImages.js.map +1 -0
- package/dist/providers/openhands/OpenHandsMockProvider.d.ts +6 -0
- package/dist/providers/openhands/OpenHandsMockProvider.d.ts.map +1 -0
- package/dist/providers/openhands/OpenHandsMockProvider.js +73 -0
- package/dist/providers/openhands/OpenHandsMockProvider.js.map +1 -0
- package/dist/providers/openhands/OpenHandsProvider.d.ts +4 -0
- package/dist/providers/openhands/OpenHandsProvider.d.ts.map +1 -0
- package/dist/providers/openhands/OpenHandsProvider.js +163 -0
- package/dist/providers/openhands/OpenHandsProvider.js.map +1 -0
- package/dist/providers/openhands/openHandsEvents.d.ts +6 -0
- package/dist/providers/openhands/openHandsEvents.d.ts.map +1 -0
- package/dist/providers/openhands/openHandsEvents.js +54 -0
- package/dist/providers/openhands/openHandsEvents.js.map +1 -0
- package/dist/providers/openhands/types.d.ts +16 -0
- package/dist/providers/openhands/types.d.ts.map +1 -0
- package/dist/providers/openhands/types.js +2 -0
- package/dist/providers/openhands/types.js.map +1 -0
- package/dist/providers/runProvider.d.ts +4 -0
- package/dist/providers/runProvider.d.ts.map +1 -0
- package/dist/providers/runProvider.js +16 -0
- package/dist/providers/runProvider.js.map +1 -0
- package/dist/providers/types.d.ts +35 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +5 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/server/routes.d.ts +9 -0
- package/dist/server/routes.d.ts.map +1 -0
- package/dist/server/routes.js +58 -0
- package/dist/server/routes.js.map +1 -0
- package/dist/server/server.d.ts +10 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +39 -0
- package/dist/server/server.js.map +1 -0
- package/dist/tools/fileExists.d.ts +3 -0
- package/dist/tools/fileExists.d.ts.map +1 -0
- package/dist/tools/fileExists.js +12 -0
- package/dist/tools/fileExists.js.map +1 -0
- package/dist/tools/resolveBuildValidation.d.ts +8 -0
- package/dist/tools/resolveBuildValidation.d.ts.map +1 -0
- package/dist/tools/resolveBuildValidation.js +35 -0
- package/dist/tools/resolveBuildValidation.js.map +1 -0
- package/dist/tools/runCommand.d.ts +17 -0
- package/dist/tools/runCommand.d.ts.map +1 -0
- package/dist/tools/runCommand.js +92 -0
- package/dist/tools/runCommand.js.map +1 -0
- package/dist/tools/safeValidateCommand.d.ts +9 -0
- package/dist/tools/safeValidateCommand.d.ts.map +1 -0
- package/dist/tools/safeValidateCommand.js +59 -0
- package/dist/tools/safeValidateCommand.js.map +1 -0
- package/dist/util/apiThrottle.d.ts +14 -0
- package/dist/util/apiThrottle.d.ts.map +1 -0
- package/dist/util/apiThrottle.js +50 -0
- package/dist/util/apiThrottle.js.map +1 -0
- package/dist/util/globMatch.d.ts +7 -0
- package/dist/util/globMatch.d.ts.map +1 -0
- package/dist/util/globMatch.js +25 -0
- package/dist/util/globMatch.js.map +1 -0
- package/dist/util/modelApiClient.d.ts +47 -0
- package/dist/util/modelApiClient.d.ts.map +1 -0
- package/dist/util/modelApiClient.js +245 -0
- package/dist/util/modelApiClient.js.map +1 -0
- package/dist/util/screenshotBase64.d.ts +3 -0
- package/dist/util/screenshotBase64.d.ts.map +1 -0
- package/dist/util/screenshotBase64.js +7 -0
- package/dist/util/screenshotBase64.js.map +1 -0
- package/dist/workspace/cleanupWorkspace.d.ts +3 -0
- package/dist/workspace/cleanupWorkspace.d.ts.map +1 -0
- package/dist/workspace/cleanupWorkspace.js +6 -0
- package/dist/workspace/cleanupWorkspace.js.map +1 -0
- package/dist/workspace/copyLocalRepo.d.ts +5 -0
- package/dist/workspace/copyLocalRepo.d.ts.map +1 -0
- package/dist/workspace/copyLocalRepo.js +34 -0
- package/dist/workspace/copyLocalRepo.js.map +1 -0
- package/dist/workspace/createWorkspace.d.ts +7 -0
- package/dist/workspace/createWorkspace.d.ts.map +1 -0
- package/dist/workspace/createWorkspace.js +10 -0
- package/dist/workspace/createWorkspace.js.map +1 -0
- package/dist/workspace/prepareWorkspace.d.ts +4 -0
- package/dist/workspace/prepareWorkspace.d.ts.map +1 -0
- package/dist/workspace/prepareWorkspace.js +46 -0
- package/dist/workspace/prepareWorkspace.js.map +1 -0
- package/dist/workspace/resolveWorkspaceMode.d.ts +7 -0
- package/dist/workspace/resolveWorkspaceMode.d.ts.map +1 -0
- package/dist/workspace/resolveWorkspaceMode.js +15 -0
- package/dist/workspace/resolveWorkspaceMode.js.map +1 -0
- package/dist/workspace/syncRepoToOwner.d.ts +3 -0
- package/dist/workspace/syncRepoToOwner.d.ts.map +1 -0
- package/dist/workspace/syncRepoToOwner.js +14 -0
- package/dist/workspace/syncRepoToOwner.js.map +1 -0
- package/dist/workspace/workspaceCheckpoint.d.ts +20 -0
- package/dist/workspace/workspaceCheckpoint.d.ts.map +1 -0
- package/dist/workspace/workspaceCheckpoint.js +243 -0
- package/dist/workspace/workspaceCheckpoint.js.map +1 -0
- package/dist/workspace/writeScreenshot.d.ts +15 -0
- package/dist/workspace/writeScreenshot.d.ts.map +1 -0
- package/dist/workspace/writeScreenshot.js +56 -0
- package/dist/workspace/writeScreenshot.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
function tryParseJson(text) {
|
|
2
|
+
try {
|
|
3
|
+
return JSON.parse(text);
|
|
4
|
+
}
|
|
5
|
+
catch {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function repairMissingOpeningBrace(text) {
|
|
10
|
+
const trimmed = text.trim();
|
|
11
|
+
if (trimmed.startsWith("{")) {
|
|
12
|
+
return trimmed;
|
|
13
|
+
}
|
|
14
|
+
const firstQuote = trimmed.indexOf('"');
|
|
15
|
+
if (firstQuote === -1) {
|
|
16
|
+
return trimmed;
|
|
17
|
+
}
|
|
18
|
+
return `{${trimmed}`;
|
|
19
|
+
}
|
|
20
|
+
function extractJsonCandidate(raw) {
|
|
21
|
+
const fenced = raw.match(/```(?:json)?\s*([\s\S]*?)```/i);
|
|
22
|
+
let candidate = (fenced?.[1] ?? raw).trim();
|
|
23
|
+
if (!candidate.includes("{") && !candidate.includes("[")) {
|
|
24
|
+
return candidate;
|
|
25
|
+
}
|
|
26
|
+
if (!candidate.startsWith("{") && !candidate.startsWith("[")) {
|
|
27
|
+
if (candidate.startsWith('"')) {
|
|
28
|
+
candidate = repairMissingOpeningBrace(candidate);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const start = candidate.indexOf("{");
|
|
32
|
+
const arrayStart = candidate.indexOf("[");
|
|
33
|
+
const useArray = arrayStart !== -1 && (start === -1 || arrayStart < start);
|
|
34
|
+
const index = useArray ? arrayStart : start;
|
|
35
|
+
if (index !== -1) {
|
|
36
|
+
candidate = candidate.slice(index);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (candidate.startsWith('"')) {
|
|
41
|
+
candidate = repairMissingOpeningBrace(candidate);
|
|
42
|
+
}
|
|
43
|
+
const end = candidate.lastIndexOf("}");
|
|
44
|
+
const arrayEnd = candidate.lastIndexOf("]");
|
|
45
|
+
const closingIndex = Math.max(end, arrayEnd);
|
|
46
|
+
if (closingIndex > 0 && closingIndex < candidate.length - 1) {
|
|
47
|
+
candidate = candidate.slice(0, closingIndex + 1);
|
|
48
|
+
}
|
|
49
|
+
return candidate;
|
|
50
|
+
}
|
|
51
|
+
function normalizeEditShape(value) {
|
|
52
|
+
if (!value || typeof value !== "object") {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
const record = value;
|
|
56
|
+
const path = typeof record.path === "string"
|
|
57
|
+
? record.path
|
|
58
|
+
: typeof record.file === "string"
|
|
59
|
+
? record.file
|
|
60
|
+
: typeof record.filepath === "string"
|
|
61
|
+
? record.filepath
|
|
62
|
+
: undefined;
|
|
63
|
+
if (!path) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const search = typeof record.search === "string"
|
|
67
|
+
? record.search
|
|
68
|
+
: typeof record.old === "string"
|
|
69
|
+
? record.old
|
|
70
|
+
: typeof record.old_string === "string"
|
|
71
|
+
? record.old_string
|
|
72
|
+
: undefined;
|
|
73
|
+
const replace = typeof record.replace === "string"
|
|
74
|
+
? record.replace
|
|
75
|
+
: typeof record.new === "string"
|
|
76
|
+
? record.new
|
|
77
|
+
: typeof record.new_string === "string"
|
|
78
|
+
? record.new_string
|
|
79
|
+
: undefined;
|
|
80
|
+
const content = typeof record.content === "string"
|
|
81
|
+
? record.content
|
|
82
|
+
: typeof record.new_content === "string"
|
|
83
|
+
? record.new_content
|
|
84
|
+
: undefined;
|
|
85
|
+
if (content !== undefined) {
|
|
86
|
+
return { path, content };
|
|
87
|
+
}
|
|
88
|
+
if (search !== undefined && replace !== undefined) {
|
|
89
|
+
return { path, search, replace };
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
function extractEditsArray(value) {
|
|
94
|
+
if (Array.isArray(value)) {
|
|
95
|
+
return value;
|
|
96
|
+
}
|
|
97
|
+
if (!value || typeof value !== "object") {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const record = value;
|
|
101
|
+
for (const key of ["edits", "changes", "files", "patches"]) {
|
|
102
|
+
if (Array.isArray(record[key])) {
|
|
103
|
+
return record[key];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
function normalizePlan(value) {
|
|
109
|
+
const editsRaw = extractEditsArray(value);
|
|
110
|
+
if (!editsRaw?.length) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
const edits = [];
|
|
114
|
+
for (const item of editsRaw) {
|
|
115
|
+
const edit = normalizeEditShape(item);
|
|
116
|
+
if (!edit) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
edits.push(edit);
|
|
120
|
+
}
|
|
121
|
+
const record = value && typeof value === "object"
|
|
122
|
+
? value
|
|
123
|
+
: {};
|
|
124
|
+
return {
|
|
125
|
+
summary: typeof record.summary === "string" ? record.summary : undefined,
|
|
126
|
+
response: typeof record.response === "string" ? record.response : undefined,
|
|
127
|
+
edits,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/** Parses and normalizes model edit-plan JSON from raw LLM output. */
|
|
131
|
+
export function parseModelEditPlan(raw) {
|
|
132
|
+
const trimmed = raw.trim();
|
|
133
|
+
if (!trimmed) {
|
|
134
|
+
return { failure: "EMPTY_CONTENT" };
|
|
135
|
+
}
|
|
136
|
+
if (!trimmed.includes("{") && !trimmed.includes("[")) {
|
|
137
|
+
return { failure: "MISSING_EDITS" };
|
|
138
|
+
}
|
|
139
|
+
const candidate = extractJsonCandidate(trimmed);
|
|
140
|
+
let parsed = tryParseJson(candidate);
|
|
141
|
+
if (parsed === undefined && candidate !== trimmed) {
|
|
142
|
+
parsed = tryParseJson(extractJsonCandidate(trimmed));
|
|
143
|
+
}
|
|
144
|
+
if (parsed === undefined) {
|
|
145
|
+
return { failure: "PARSE_FAILED" };
|
|
146
|
+
}
|
|
147
|
+
const plan = normalizePlan(parsed);
|
|
148
|
+
if (!plan) {
|
|
149
|
+
const hasEditsKey = parsed &&
|
|
150
|
+
typeof parsed === "object" &&
|
|
151
|
+
extractEditsArray(parsed) !== undefined;
|
|
152
|
+
return { failure: hasEditsKey ? "INVALID_EDIT_SHAPE" : "MISSING_EDITS" };
|
|
153
|
+
}
|
|
154
|
+
return { plan };
|
|
155
|
+
}
|
|
156
|
+
/** Truncates raw model output for repair prompts. */
|
|
157
|
+
export function truncateModelOutput(raw, maxChars = 500) {
|
|
158
|
+
const sanitized = raw.replace(/\s+/g, " ").trim();
|
|
159
|
+
if (sanitized.length <= maxChars) {
|
|
160
|
+
return sanitized;
|
|
161
|
+
}
|
|
162
|
+
return `${sanitized.slice(0, maxChars)}…`;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=parseModelEditPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseModelEditPlan.js","sourceRoot":"","sources":["../../../src/providers/custom/parseModelEditPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SelectedDomContext } from "../../agent/types.js";
|
|
2
|
+
import type { HarnessPinnedTarget } from "./harnessPinTypes.js";
|
|
3
|
+
export interface FileSnapshot {
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SelectPromptFilesInput {
|
|
8
|
+
prompt: string;
|
|
9
|
+
files: FileSnapshot[];
|
|
10
|
+
hasScreenshot?: boolean;
|
|
11
|
+
selectedDom?: SelectedDomContext;
|
|
12
|
+
pinnedTarget?: HarnessPinnedTarget;
|
|
13
|
+
harnessMode?: boolean;
|
|
14
|
+
maxBytes?: number;
|
|
15
|
+
}
|
|
16
|
+
/** Selects and caps repository files included in the model prompt. */
|
|
17
|
+
export declare function selectPromptFiles(input: SelectPromptFilesInput): FileSnapshot[];
|
|
18
|
+
//# sourceMappingURL=selectPromptFiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectPromptFiles.d.ts","sourceRoot":"","sources":["../../../src/providers/custom/selectPromptFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AA2BhE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0JD,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,EAAE,CAuF/E"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { isHarnessPrompt } from "../../agent/parseSendPayload.js";
|
|
2
|
+
import { extractHintTokens } from "./discoverTargetFiles.js";
|
|
3
|
+
import { HARNESS_REPO_FILE_BYTE_LIMIT } from "./harnessPrompt.js";
|
|
4
|
+
const STYLE_KEYWORDS = [
|
|
5
|
+
"globals.css",
|
|
6
|
+
"palette",
|
|
7
|
+
"vibe",
|
|
8
|
+
"color",
|
|
9
|
+
"visual",
|
|
10
|
+
"style",
|
|
11
|
+
"background",
|
|
12
|
+
"mood",
|
|
13
|
+
];
|
|
14
|
+
const HERO_KEYWORDS = ["hero", "headline", "h1"];
|
|
15
|
+
const DEFAULT_MAX_BYTES = 12_288;
|
|
16
|
+
const UNRELATED_COMPONENT_TOKENS = [
|
|
17
|
+
"delivery",
|
|
18
|
+
"rain",
|
|
19
|
+
"rebates",
|
|
20
|
+
"doraemon",
|
|
21
|
+
"shine",
|
|
22
|
+
"backdrop",
|
|
23
|
+
];
|
|
24
|
+
function promptLower(prompt) {
|
|
25
|
+
return prompt.toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
function isStylePrompt(prompt) {
|
|
28
|
+
const lower = promptLower(prompt);
|
|
29
|
+
return STYLE_KEYWORDS.some((keyword) => lower.includes(keyword));
|
|
30
|
+
}
|
|
31
|
+
function isHeroTextPrompt(prompt) {
|
|
32
|
+
const lower = promptLower(prompt);
|
|
33
|
+
return HERO_KEYWORDS.some((keyword) => lower.includes(keyword));
|
|
34
|
+
}
|
|
35
|
+
function hasPinnedSection(selectedDom, pinnedTarget) {
|
|
36
|
+
return Boolean(selectedDom?.componentHint?.trim() ||
|
|
37
|
+
selectedDom?.text?.trim() ||
|
|
38
|
+
selectedDom?.sectionIndex != null ||
|
|
39
|
+
pinnedTarget?.sectionIndex != null ||
|
|
40
|
+
pinnedTarget?.sectionTitle);
|
|
41
|
+
}
|
|
42
|
+
function pathMatchesPinnedHint(path, componentHint) {
|
|
43
|
+
if (!componentHint?.trim()) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
const lowerPath = path.toLowerCase();
|
|
47
|
+
return extractHintTokens(componentHint).some((token) => {
|
|
48
|
+
const compact = token.replace(/\s+/g, "");
|
|
49
|
+
return (lowerPath.includes(compact) ||
|
|
50
|
+
lowerPath.includes(compact.replace(/\s+/g, "-")));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function unrelatedComponentPenalty(path, pinned, selectedDom) {
|
|
54
|
+
const pinText = [
|
|
55
|
+
pinned?.sectionTitle,
|
|
56
|
+
pinned?.sectionType,
|
|
57
|
+
pinned?.componentHint,
|
|
58
|
+
selectedDom?.sectionTitle,
|
|
59
|
+
selectedDom?.sectionType,
|
|
60
|
+
selectedDom?.componentHint,
|
|
61
|
+
selectedDom?.text,
|
|
62
|
+
]
|
|
63
|
+
.filter(Boolean)
|
|
64
|
+
.join(" ")
|
|
65
|
+
.toLowerCase();
|
|
66
|
+
const basename = path.split("/").pop()?.toLowerCase() ?? path.toLowerCase();
|
|
67
|
+
let penalty = 0;
|
|
68
|
+
for (const token of UNRELATED_COMPONENT_TOKENS) {
|
|
69
|
+
if (basename.includes(token) && !pinText.includes(token)) {
|
|
70
|
+
penalty += 300;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return penalty;
|
|
74
|
+
}
|
|
75
|
+
function pathScore(file, style, hero, heroOnly, selectedDom, pinnedTarget) {
|
|
76
|
+
const path = file.path;
|
|
77
|
+
const lower = path.toLowerCase();
|
|
78
|
+
let score = 0;
|
|
79
|
+
const pinned = hasPinnedSection(selectedDom, pinnedTarget);
|
|
80
|
+
const componentHint = selectedDom?.componentHint ?? pinnedTarget?.componentHint;
|
|
81
|
+
const sectionTitle = selectedDom?.sectionTitle ?? pinnedTarget?.sectionTitle;
|
|
82
|
+
const sectionIndex = selectedDom?.sectionIndex ?? pinnedTarget?.sectionIndex;
|
|
83
|
+
const sectionType = selectedDom?.sectionType ?? pinnedTarget?.sectionType;
|
|
84
|
+
if (pinned && pathMatchesPinnedHint(path, componentHint)) {
|
|
85
|
+
score += 400;
|
|
86
|
+
}
|
|
87
|
+
if (pinned && sectionTitle && file.content.includes(sectionTitle)) {
|
|
88
|
+
score += 500;
|
|
89
|
+
}
|
|
90
|
+
if (pinned &&
|
|
91
|
+
sectionIndex != null &&
|
|
92
|
+
(file.content.includes(`sections[${sectionIndex}]`) ||
|
|
93
|
+
(sectionType &&
|
|
94
|
+
file.content.includes(`"analyticsId": "section_${sectionType}`)))) {
|
|
95
|
+
score += 400;
|
|
96
|
+
}
|
|
97
|
+
if (path.startsWith("__harness__/")) {
|
|
98
|
+
score += 1_000;
|
|
99
|
+
}
|
|
100
|
+
if (lower.includes("globals.css")) {
|
|
101
|
+
score += style && !heroOnly ? 100 : 10;
|
|
102
|
+
if (pinned && style) {
|
|
103
|
+
score += 80;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (lower.includes("tailwind.config"))
|
|
107
|
+
score += style ? 90 : 5;
|
|
108
|
+
if (lower.includes("siteconfig") || lower.endsWith("siteconfig.ts")) {
|
|
109
|
+
score += style ? 120 : hero ? 250 : 20;
|
|
110
|
+
if (pinned && style && sectionIndex != null) {
|
|
111
|
+
score += 200;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (lower.includes("hero"))
|
|
115
|
+
score += hero || style ? 80 : 10;
|
|
116
|
+
if (heroOnly && lower.includes("hero"))
|
|
117
|
+
score += 200;
|
|
118
|
+
if (pinned && style && lower.includes("hero"))
|
|
119
|
+
score -= 60;
|
|
120
|
+
if (lower.endsWith(".css"))
|
|
121
|
+
score += style && !heroOnly ? 60 : 5;
|
|
122
|
+
if (lower.endsWith(".tsx") || lower.endsWith(".jsx")) {
|
|
123
|
+
score += hero && !pinned ? 50 : pinned ? 30 : 10;
|
|
124
|
+
}
|
|
125
|
+
if (lower.includes("page.tsx") && pinned && style) {
|
|
126
|
+
score += 300;
|
|
127
|
+
}
|
|
128
|
+
else if (lower.includes("page.tsx")) {
|
|
129
|
+
score += 5;
|
|
130
|
+
}
|
|
131
|
+
if (lower.includes("/lib/") || lower.includes("config")) {
|
|
132
|
+
score += hero && !pinned ? 0 : pinned && style ? 40 : -50;
|
|
133
|
+
}
|
|
134
|
+
if (style && pinned) {
|
|
135
|
+
score -= unrelatedComponentPenalty(path, pinnedTarget, selectedDom);
|
|
136
|
+
}
|
|
137
|
+
return score;
|
|
138
|
+
}
|
|
139
|
+
/** Selects and caps repository files included in the model prompt. */
|
|
140
|
+
export function selectPromptFiles(input) {
|
|
141
|
+
const harnessMode = input.harnessMode === true || isHarnessPrompt(input.prompt);
|
|
142
|
+
const maxBytes = input.maxBytes ??
|
|
143
|
+
(harnessMode ? HARNESS_REPO_FILE_BYTE_LIMIT : DEFAULT_MAX_BYTES);
|
|
144
|
+
const style = isStylePrompt(input.prompt) || input.hasScreenshot === true;
|
|
145
|
+
const hero = isHeroTextPrompt(input.prompt) &&
|
|
146
|
+
!hasPinnedSection(input.selectedDom, input.pinnedTarget);
|
|
147
|
+
const heroOnly = hero && !style;
|
|
148
|
+
const ranked = [...input.files].sort((a, b) => pathScore(b, style, hero, heroOnly, input.selectedDom, input.pinnedTarget) -
|
|
149
|
+
pathScore(a, style, hero, heroOnly, input.selectedDom, input.pinnedTarget));
|
|
150
|
+
const minScore = style ? 10 : 0;
|
|
151
|
+
const eligible = ranked.filter((file) => pathScore(file, style, hero, heroOnly, input.selectedDom, input.pinnedTarget) >= minScore);
|
|
152
|
+
const selected = [];
|
|
153
|
+
let usedBytes = 0;
|
|
154
|
+
for (const file of eligible.length > 0 ? eligible : ranked) {
|
|
155
|
+
const fileBytes = Buffer.byteLength(file.content, "utf8");
|
|
156
|
+
if (usedBytes + fileBytes > maxBytes &&
|
|
157
|
+
selected.length > 0 &&
|
|
158
|
+
!file.path.startsWith("__harness__/")) {
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
selected.push(file);
|
|
162
|
+
usedBytes += fileBytes;
|
|
163
|
+
if (usedBytes >= maxBytes && !file.path.startsWith("__harness__/")) {
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (selected.length === 0 && ranked.length > 0) {
|
|
168
|
+
return [ranked[0]];
|
|
169
|
+
}
|
|
170
|
+
const componentHint = input.selectedDom?.componentHint ?? input.pinnedTarget?.componentHint;
|
|
171
|
+
const sectionTitle = input.selectedDom?.sectionTitle ?? input.pinnedTarget?.sectionTitle;
|
|
172
|
+
const pinnedSelected = selected.some((file) => pathMatchesPinnedHint(file.path, componentHint) ||
|
|
173
|
+
(sectionTitle && file.content.includes(sectionTitle)));
|
|
174
|
+
const pinnedIsHero = componentHint?.toLowerCase().includes("hero");
|
|
175
|
+
if (pinnedSelected && style && !pinnedIsHero) {
|
|
176
|
+
return selected.filter((file) => !file.path.toLowerCase().includes("hero"));
|
|
177
|
+
}
|
|
178
|
+
return selected;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=selectPromptFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectPromptFiles.js","sourceRoot":"","sources":["../../../src/providers/custom/selectPromptFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visionImages.d.ts","sourceRoot":"","sources":["../../../src/providers/custom/visionImages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAMpE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { normalizeScreenshotBase64 } from "../../util/screenshotBase64.js";
|
|
2
|
+
/** Converts payload images to OpenAI-compatible vision data URLs. */
|
|
3
|
+
export function imagesToDataUrls(images) {
|
|
4
|
+
return images.map((image) => {
|
|
5
|
+
const base64 = normalizeScreenshotBase64(image.data);
|
|
6
|
+
const mime = image.mimeType || "image/png";
|
|
7
|
+
return `data:${mime};base64,${base64}`;
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=visionImages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visionImages.js","sourceRoot":"","sources":["../../../src/providers/custom/visionImages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAAC,MAAyB;IACxD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC;QAC3C,OAAO,QAAQ,IAAI,WAAW,MAAM,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MockEditInput, MockEditResult } from "./types.js";
|
|
2
|
+
/** Extracts the target headline from a mock prompt. */
|
|
3
|
+
export declare function extractHeadlineFromPrompt(prompt: string): string | undefined;
|
|
4
|
+
/** Deterministic mock provider that edits hero headline files. */
|
|
5
|
+
export declare function runOpenHandsMockProvider(input: MockEditInput): Promise<MockEditResult>;
|
|
6
|
+
//# sourceMappingURL=OpenHandsMockProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenHandsMockProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/openhands/OpenHandsMockProvider.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAahE,uDAAuD;AACvD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED,kEAAkE;AAClE,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,cAAc,CAAC,CA+CzB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { fileExists } from "../../tools/fileExists.js";
|
|
4
|
+
const TARGET_FILES = [
|
|
5
|
+
"components/Hero.tsx",
|
|
6
|
+
"src/components/Hero.tsx",
|
|
7
|
+
"src/lib/pages/home.siteConfig.ts",
|
|
8
|
+
"app/page.tsx",
|
|
9
|
+
"pages/index.tsx",
|
|
10
|
+
];
|
|
11
|
+
const HEADLINE_PATTERN = /Change the hero headline to\s+(.+?)(?:\.|$|\n)/i;
|
|
12
|
+
/** Extracts the target headline from a mock prompt. */
|
|
13
|
+
export function extractHeadlineFromPrompt(prompt) {
|
|
14
|
+
const match = prompt.match(HEADLINE_PATTERN);
|
|
15
|
+
return match?.[1]?.trim();
|
|
16
|
+
}
|
|
17
|
+
/** Deterministic mock provider that edits hero headline files. */
|
|
18
|
+
export async function runOpenHandsMockProvider(input) {
|
|
19
|
+
const newHeadline = extractHeadlineFromPrompt(input.prompt);
|
|
20
|
+
if (!newHeadline) {
|
|
21
|
+
return {
|
|
22
|
+
ok: false,
|
|
23
|
+
summary: "Mock provider could not extract headline from prompt",
|
|
24
|
+
response: "Unable to determine requested headline change.",
|
|
25
|
+
error: {
|
|
26
|
+
message: "Prompt must include 'Change the hero headline to ...'",
|
|
27
|
+
code: "PROVIDER_ERROR",
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
for (const relativePath of TARGET_FILES) {
|
|
32
|
+
const absolutePath = join(input.repoPath, relativePath);
|
|
33
|
+
if (!(await fileExists(absolutePath))) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
const original = await fs.readFile(absolutePath, "utf8");
|
|
37
|
+
const updated = replaceHeadline(original, input.selectedDomText, newHeadline);
|
|
38
|
+
if (updated === original) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
await fs.writeFile(absolutePath, updated, "utf8");
|
|
42
|
+
return {
|
|
43
|
+
ok: true,
|
|
44
|
+
changedFile: relativePath,
|
|
45
|
+
summary: `Updated headline in ${relativePath}`,
|
|
46
|
+
response: `Changed hero headline to "${newHeadline}" in ${relativePath}.`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
ok: false,
|
|
51
|
+
summary: "Mock provider found no editable target file",
|
|
52
|
+
response: "No hero headline target file was found in the repository.",
|
|
53
|
+
error: {
|
|
54
|
+
message: "No target file found for headline edit",
|
|
55
|
+
code: "PROVIDER_ERROR",
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function replaceHeadline(content, selectedDomText, newHeadline) {
|
|
60
|
+
if (selectedDomText && content.includes(selectedDomText)) {
|
|
61
|
+
return content.replace(selectedDomText, newHeadline);
|
|
62
|
+
}
|
|
63
|
+
const siteConfigHeadline = content.match(/"headline"\s*:\s*"([^"]+)"/);
|
|
64
|
+
if (siteConfigHeadline?.[1]) {
|
|
65
|
+
return content.replace(`"headline": "${siteConfigHeadline[1]}"`, `"headline": "${newHeadline}"`);
|
|
66
|
+
}
|
|
67
|
+
const h1Match = content.match(/<h1[^>]*>([\s\S]*?)<\/h1>/i);
|
|
68
|
+
if (h1Match?.[1]) {
|
|
69
|
+
return content.replace(h1Match[1], newHeadline);
|
|
70
|
+
}
|
|
71
|
+
return content;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=OpenHandsMockProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenHandsMockProvider.js","sourceRoot":"","sources":["../../../src/providers/openhands/OpenHandsMockProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ProviderRunInput, ProviderRunOutput } from "../types.js";
|
|
2
|
+
/** Runs the OpenHands-compatible provider (mock or CLI). */
|
|
3
|
+
export declare function runOpenHandsProvider(input: ProviderRunInput): Promise<ProviderRunOutput>;
|
|
4
|
+
//# sourceMappingURL=OpenHandsProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenHandsProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/openhands/OpenHandsProvider.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA4EvE,4DAA4D;AAC5D,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAiH5B"}
|