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> <current_context>
<user id="${user.id}" name="${user.name}" username="${user.username}" /> <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> <statuses>
${Object.entries(organisation.statuses) ${Object.entries(organisation.statuses)
.map(([name, color]) => ` <status name="${name}" color="${color}" />`) .map(([name, color]) => ` <status name="${name}" color="${color}" />`)
.join("\n")} .join("\n")}
</statuses> </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.map((p) => ` <project key="${p.Project.key}" name="${p.Project.name}" />`).join("\n")}
</projects> </organisation_projects>
<sprints> <current_project key="${project.key}" name="${project.name}">
${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>
</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}"> <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")} ${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>
<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}"> <issues_by_status>
${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")} <status name="TO DO" count="${byStatus("TO DO").length}">
</my_issues> ${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> <issue_details>
<status name="TO DO" count="${byStatus("TO DO").length}"> ${assignedIssues
${byStatus("TO DO") .map(
.map( (i) => ` <issue id="${i.Issue.id}" number="${i.Issue.number}">
(i) => <title>${i.Issue.title.replace(/"/g, "&quot;")}</title>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`, <description>${(i.Issue.description || "").replace(/"/g, "&quot;")}</description>
) <status>${i.Issue.status}</status>
.join("\n")} <type>${i.Issue.type}</type>
</status> <sprint>${sprints.find((s) => s.id === i.Issue.sprintId)?.name || "None"}</sprint>
<status name="IN PROGRESS" count="${byStatus("IN PROGRESS").length}"> </issue>`,
${byStatus("IN PROGRESS") )
.map( .join("\n")}
(i) => </issue_details>
` <issue id="${i.Issue.id}" number="${i.Issue.number}" title="${i.Issue.title.replace(/"/g, "&quot;")}" />`, </current_project>
)
.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>
</current_context>`; </current_context>`;
}; };