Spaces:
Build error
Build error
File size: 3,952 Bytes
b59aa07 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import {
ReadObservation,
CommandObservation,
IPythonObservation,
EditObservation,
BrowseObservation,
OpenHandsObservation,
RecallObservation,
} from "#/types/core/observations";
import { getObservationResult } from "./get-observation-result";
import { getDefaultEventContent, MAX_CONTENT_LENGTH } from "./shared";
import i18n from "#/i18n";
const getReadObservationContent = (event: ReadObservation): string =>
`\`\`\`\n${event.content}\n\`\`\``;
const getCommandObservationContent = (
event: CommandObservation | IPythonObservation,
): string => {
let { content } = event;
if (content.length > MAX_CONTENT_LENGTH) {
content = `${content.slice(0, MAX_CONTENT_LENGTH)}...`;
}
return `Output:\n\`\`\`sh\n${content.trim() || i18n.t("OBSERVATION$COMMAND_NO_OUTPUT")}\n\`\`\``;
};
const getEditObservationContent = (
event: EditObservation,
successMessage: boolean,
): string => {
if (successMessage) {
return `\`\`\`diff\n${event.extras.diff}\n\`\`\``; // Content is already truncated by the ACI
}
return event.content;
};
const getBrowseObservationContent = (event: BrowseObservation) => {
let contentDetails = `**URL:** ${event.extras.url}\n`;
if (event.extras.error) {
contentDetails += `\n\n**Error:**\n${event.extras.error}\n`;
}
contentDetails += `\n\n**Output:**\n${event.content}`;
if (contentDetails.length > MAX_CONTENT_LENGTH) {
contentDetails = `${contentDetails.slice(0, MAX_CONTENT_LENGTH)}...(truncated)`;
}
return contentDetails;
};
const getRecallObservationContent = (event: RecallObservation): string => {
let content = "";
if (event.extras.recall_type === "workspace_context") {
if (event.extras.repo_name) {
content += `\n\n**Repository:** ${event.extras.repo_name}`;
}
if (event.extras.repo_directory) {
content += `\n\n**Directory:** ${event.extras.repo_directory}`;
}
if (event.extras.date) {
content += `\n\n**Date:** ${event.extras.date}`;
}
if (
event.extras.runtime_hosts &&
Object.keys(event.extras.runtime_hosts).length > 0
) {
content += `\n\n**Available Hosts**`;
for (const [host, port] of Object.entries(event.extras.runtime_hosts)) {
content += `\n\n- ${host} (port ${port})`;
}
}
if (event.extras.repo_instructions) {
content += `\n\n**Repository Instructions:**\n\n${event.extras.repo_instructions}`;
}
if (event.extras.additional_agent_instructions) {
content += `\n\n**Additional Instructions:**\n\n${event.extras.additional_agent_instructions}`;
}
}
// Handle microagent knowledge
if (
event.extras.microagent_knowledge &&
event.extras.microagent_knowledge.length > 0
) {
content += `\n\n**Triggered Microagent Knowledge:**`;
for (const knowledge of event.extras.microagent_knowledge) {
content += `\n\n- **${knowledge.name}** (triggered by keyword: ${knowledge.trigger})\n\n\`\`\`\n${knowledge.content}\n\`\`\``;
}
}
if (
event.extras.custom_secrets_descriptions &&
Object.keys(event.extras.custom_secrets_descriptions).length > 0
) {
content += `\n\n**Custom Secrets**`;
for (const [name, description] of Object.entries(
event.extras.custom_secrets_descriptions,
)) {
content += `\n\n- $${name}: ${description}`;
}
}
return content;
};
export const getObservationContent = (event: OpenHandsObservation): string => {
switch (event.observation) {
case "read":
return getReadObservationContent(event);
case "edit":
return getEditObservationContent(
event,
getObservationResult(event) === "success",
);
case "run_ipython":
case "run":
return getCommandObservationContent(event);
case "browse":
return getBrowseObservationContent(event);
case "recall":
return getRecallObservationContent(event);
default:
return getDefaultEventContent(event);
}
};
|