provided current project context

This commit is contained in:
2026-01-31 19:10:27 +00:00
parent 9ffa02076d
commit e4a585aee8

View File

@@ -34,70 +34,71 @@ export const buildContext = async (orgId: number, projectId: number, user: UserR
<current_context>
<user id="${user.id}" name="${user.name}" username="${user.username}" />
<organisation name="${organisation.name}" slug="${organisation.slug}">
<current_organisation name="${organisation.name}" slug="${organisation.slug}">
<statuses>
${Object.entries(organisation.statuses)
.map(([name, color]) => ` <status name="${name}" color="${color}" />`)
.join("\n")}
</statuses>
</organisation>
</current_organisation>
<projects>
<organisation_projects id="${organisation.id}_projects" name="Projects for ${organisation.name}" count="${projects.length}">
${projects.map((p) => ` <project key="${p.Project.key}" name="${p.Project.name}" />`).join("\n")}
</projects>
</organisation_projects>
<sprints>
${sprints.map((s) => ` <sprint id="${s.id}" name="${s.name}" start="${s.startDate.toUTCString()?.split("T")[0]}" end="${s.endDate?.toUTCString().split("T")[0]}" />`).join("\n")}
</sprints>
<current_project key="${project.key}" name="${project.name}">
<sprints>
${sprints.map((s) => ` <sprint id="${s.id}" name="${s.name}" start="${s.startDate.toUTCString()?.split("T")[0]}" end="${s.endDate?.toUTCString().split("T")[0]}" />`).join("\n")}
</sprints>
<all_issues count="${issues.length}">
${issues.map((i) => ` <issue id="${i.Issue.id}" number="${i.Issue.number}" type="${i.Issue.type}" status="${i.Issue.status}" title="${i.Issue.title.replace(/"/g, "&quot;")}" sprint="${sprints.find((s) => s.id === i.Issue.sprintId)?.name || "Unassigned"}" />`).join("\n")}
</all_issues>
<all_issues count="${issues.length}">
${issues.map((i) => ` <issue id="${i.Issue.id}" number="${i.Issue.number}" type="${i.Issue.type}" status="${i.Issue.status}" title="${i.Issue.title.replace(/"/g, "&quot;")}" sprint="${sprints.find((s) => s.id === i.Issue.sprintId)?.name || "Unassigned"}" />`).join("\n")}
</all_issues>
<my_issues count="${assignedIssues.length}">
${assignedIssues.map((i) => ` <issue id="${i.Issue.id}" number="${i.Issue.number}" type="${i.Issue.type}" status="${i.Issue.status}" title="${i.Issue.title.replace(/"/g, "&quot;")}" sprint="${sprints.find((s) => s.id === i.Issue.sprintId)?.name || "Unassigned"}" />`).join("\n")}
</my_issues>
<my_issues count="${assignedIssues.length}">
${assignedIssues.map((i) => ` <issue id="${i.Issue.id}" number="${i.Issue.number}" type="${i.Issue.type}" status="${i.Issue.status}" title="${i.Issue.title.replace(/"/g, "&quot;")}" sprint="${sprints.find((s) => s.id === i.Issue.sprintId)?.name || "Unassigned"}" />`).join("\n")}
</my_issues>
<issues_by_status>
<status name="TO DO" count="${byStatus("TO DO").length}">
${byStatus("TO DO")
.map(
(i) =>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`,
)
.join("\n")}
</status>
<status name="IN PROGRESS" count="${byStatus("IN PROGRESS").length}">
${byStatus("IN PROGRESS")
.map(
(i) =>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`,
)
.join("\n")}
</status>
<status name="DONE" count="${byStatus("DONE").length}">
${byStatus("DONE")
.map(
(i) =>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`,
)
.join("\n")}
</status>
</issues_by_status>
<issues_by_status>
<status name="TO DO" count="${byStatus("TO DO").length}">
${byStatus("TO DO")
.map(
(i) =>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`,
)
.join("\n")}
</status>
<status name="IN PROGRESS" count="${byStatus("IN PROGRESS").length}">
${byStatus("IN PROGRESS")
.map(
(i) =>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`,
)
.join("\n")}
</status>
<status name="DONE" count="${byStatus("DONE").length}">
${byStatus("DONE")
.map(
(i) =>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`,
)
.join("\n")}
</status>
</issues_by_status>
<issue_details>
${assignedIssues
.map(
(i) => ` <issue id="${i.Issue.id}" number="${i.Issue.number}">
<title>${i.Issue.title.replace(/"/g, "&quot;")}</title>
<description>${(i.Issue.description || "").replace(/"/g, "&quot;")}</description>
<status>${i.Issue.status}</status>
<type>${i.Issue.type}</type>
<sprint>${sprints.find((s) => s.id === i.Issue.sprintId)?.name || "None"}</sprint>
</issue>`,
)
.join("\n")}
</issue_details>
<issue_details>
${assignedIssues
.map(
(i) => ` <issue id="${i.Issue.id}" number="${i.Issue.number}">
<title>${i.Issue.title.replace(/"/g, "&quot;")}</title>
<description>${(i.Issue.description || "").replace(/"/g, "&quot;")}</description>
<status>${i.Issue.status}</status>
<type>${i.Issue.type}</type>
<sprint>${sprints.find((s) => s.id === i.Issue.sprintId)?.name || "None"}</sprint>
</issue>`,
)
.join("\n")}
</issue_details>
</current_project>
</current_context>`;
};