@langadventurellc/task-trellis-mcp 2.1.0 → 2.3.0
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/README.md +7 -0
- package/dist/__tests__/serverStartup.test.js +6 -0
- package/dist/__tests__/serverStartup.test.js.map +1 -1
- package/dist/http/__tests__/attachmentHandler.test.d.ts +2 -0
- package/dist/http/__tests__/attachmentHandler.test.d.ts.map +1 -0
- package/dist/http/__tests__/attachmentHandler.test.js +130 -0
- package/dist/http/__tests__/attachmentHandler.test.js.map +1 -0
- package/dist/http/__tests__/projectTreePage.test.js +65 -1
- package/dist/http/__tests__/projectTreePage.test.js.map +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +1 -0
- package/dist/http/index.js.map +1 -1
- package/dist/http/projectTreePage/attachmentHandler.d.ts +4 -0
- package/dist/http/projectTreePage/attachmentHandler.d.ts.map +1 -0
- package/dist/http/projectTreePage/attachmentHandler.js +73 -0
- package/dist/http/projectTreePage/attachmentHandler.js.map +1 -0
- package/dist/http/projectTreePage/detailViewHandler.d.ts.map +1 -1
- package/dist/http/projectTreePage/detailViewHandler.js +2 -1
- package/dist/http/projectTreePage/detailViewHandler.js.map +1 -1
- package/dist/http/projectTreePage/index.d.ts +1 -0
- package/dist/http/projectTreePage/index.d.ts.map +1 -1
- package/dist/http/projectTreePage/index.js +3 -1
- package/dist/http/projectTreePage/index.js.map +1 -1
- package/dist/http/projectTreePage/renderDetailView.d.ts +1 -1
- package/dist/http/projectTreePage/renderDetailView.d.ts.map +1 -1
- package/dist/http/projectTreePage/renderDetailView.js +14 -3
- package/dist/http/projectTreePage/renderDetailView.js.map +1 -1
- package/dist/repositories/Repository.d.ts +4 -0
- package/dist/repositories/Repository.d.ts.map +1 -1
- package/dist/repositories/local/LocalRepository.d.ts +4 -0
- package/dist/repositories/local/LocalRepository.d.ts.map +1 -1
- package/dist/repositories/local/LocalRepository.js +20 -0
- package/dist/repositories/local/LocalRepository.js.map +1 -1
- package/dist/repositories/local/RepoIndex.d.ts +29 -0
- package/dist/repositories/local/RepoIndex.d.ts.map +1 -0
- package/dist/repositories/local/RepoIndex.js +81 -0
- package/dist/repositories/local/RepoIndex.js.map +1 -0
- package/dist/repositories/local/RepoIndexEntry.d.ts +5 -0
- package/dist/repositories/local/RepoIndexEntry.d.ts.map +1 -0
- package/dist/repositories/local/RepoIndexEntry.js +3 -0
- package/dist/repositories/local/RepoIndexEntry.js.map +1 -0
- package/dist/repositories/local/__tests__/RepoIndex.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/RepoIndex.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/RepoIndex.test.js +93 -0
- package/dist/repositories/local/__tests__/RepoIndex.test.js.map +1 -0
- package/dist/repositories/local/__tests__/copyAttachment.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/copyAttachment.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/copyAttachment.test.js +102 -0
- package/dist/repositories/local/__tests__/copyAttachment.test.js.map +1 -0
- package/dist/repositories/local/__tests__/deleteAttachment.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/deleteAttachment.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/deleteAttachment.test.js +87 -0
- package/dist/repositories/local/__tests__/deleteAttachment.test.js.map +1 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.js +33 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getAttachmentsFolder.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getAttachmentsFolder.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getAttachmentsFolder.test.js +105 -0
- package/dist/repositories/local/__tests__/getAttachmentsFolder.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getChildrenByFilePath.test.js +14 -0
- package/dist/repositories/local/__tests__/getChildrenByFilePath.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getObjectById.test.js +73 -0
- package/dist/repositories/local/__tests__/getObjectById.test.js.map +1 -1
- package/dist/repositories/local/__tests__/listAttachments.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/listAttachments.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/listAttachments.test.js +100 -0
- package/dist/repositories/local/__tests__/listAttachments.test.js.map +1 -0
- package/dist/repositories/local/copyAttachment.d.ts +8 -0
- package/dist/repositories/local/copyAttachment.d.ts.map +1 -0
- package/dist/repositories/local/copyAttachment.js +42 -0
- package/dist/repositories/local/copyAttachment.js.map +1 -0
- package/dist/repositories/local/deleteAttachment.d.ts +6 -0
- package/dist/repositories/local/deleteAttachment.d.ts.map +1 -0
- package/dist/repositories/local/deleteAttachment.js +26 -0
- package/dist/repositories/local/deleteAttachment.js.map +1 -0
- package/dist/repositories/local/deleteObjectById.d.ts.map +1 -1
- package/dist/repositories/local/deleteObjectById.js +18 -0
- package/dist/repositories/local/deleteObjectById.js.map +1 -1
- package/dist/repositories/local/getAttachmentsFolder.d.ts +8 -0
- package/dist/repositories/local/getAttachmentsFolder.d.ts.map +1 -0
- package/dist/repositories/local/getAttachmentsFolder.js +62 -0
- package/dist/repositories/local/getAttachmentsFolder.js.map +1 -0
- package/dist/repositories/local/getChildrenByFilePath.d.ts.map +1 -1
- package/dist/repositories/local/getChildrenByFilePath.js +4 -22
- package/dist/repositories/local/getChildrenByFilePath.js.map +1 -1
- package/dist/repositories/local/getObjectById.d.ts +4 -5
- package/dist/repositories/local/getObjectById.d.ts.map +1 -1
- package/dist/repositories/local/getObjectById.js +21 -27
- package/dist/repositories/local/getObjectById.js.map +1 -1
- package/dist/repositories/local/getObjects.d.ts.map +1 -1
- package/dist/repositories/local/getObjects.js +63 -76
- package/dist/repositories/local/getObjects.js.map +1 -1
- package/dist/repositories/local/listAttachments.d.ts +4 -0
- package/dist/repositories/local/listAttachments.d.ts.map +1 -0
- package/dist/repositories/local/listAttachments.js +26 -0
- package/dist/repositories/local/listAttachments.js.map +1 -0
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -1
- package/dist/services/TaskTrellisService.d.ts +14 -0
- package/dist/services/TaskTrellisService.d.ts.map +1 -1
- package/dist/services/local/LocalTaskTrellisService.d.ts +12 -0
- package/dist/services/local/LocalTaskTrellisService.d.ts.map +1 -1
- package/dist/services/local/LocalTaskTrellisService.js +8 -0
- package/dist/services/local/LocalTaskTrellisService.js.map +1 -1
- package/dist/services/local/__tests__/appendAffectedFiles.test.js +35 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.js.map +1 -1
- package/dist/services/local/__tests__/appendModifiedFiles.test.js +4 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.js.map +1 -1
- package/dist/services/local/__tests__/appendObjectLog.test.js +4 -0
- package/dist/services/local/__tests__/appendObjectLog.test.js.map +1 -1
- package/dist/services/local/__tests__/claimTask.test.js +4 -0
- package/dist/services/local/__tests__/claimTask.test.js.map +1 -1
- package/dist/services/local/__tests__/completeTask.test.js +4 -0
- package/dist/services/local/__tests__/completeTask.test.js.map +1 -1
- package/dist/services/local/__tests__/createObject.test.js +4 -0
- package/dist/services/local/__tests__/createObject.test.js.map +1 -1
- package/dist/services/local/__tests__/getNextAvailableIssue.test.js +4 -0
- package/dist/services/local/__tests__/getNextAvailableIssue.test.js.map +1 -1
- package/dist/services/local/__tests__/listObjects.test.js +4 -0
- package/dist/services/local/__tests__/listObjects.test.js.map +1 -1
- package/dist/services/local/__tests__/pruneClosed.test.js +4 -0
- package/dist/services/local/__tests__/pruneClosed.test.js.map +1 -1
- package/dist/services/local/__tests__/updateObject.test.js +4 -0
- package/dist/services/local/__tests__/updateObject.test.js.map +1 -1
- package/dist/services/local/addAttachment.d.ts +9 -0
- package/dist/services/local/addAttachment.d.ts.map +1 -0
- package/dist/services/local/addAttachment.js +25 -0
- package/dist/services/local/addAttachment.js.map +1 -0
- package/dist/services/local/appendAffectedFiles.d.ts.map +1 -1
- package/dist/services/local/appendAffectedFiles.js +18 -1
- package/dist/services/local/appendAffectedFiles.js.map +1 -1
- package/dist/services/local/removeAttachment.d.ts +9 -0
- package/dist/services/local/removeAttachment.d.ts.map +1 -0
- package/dist/services/local/removeAttachment.js +25 -0
- package/dist/services/local/removeAttachment.js.map +1 -0
- package/dist/tools/__tests__/addAttachmentTool.test.d.ts +2 -0
- package/dist/tools/__tests__/addAttachmentTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/addAttachmentTool.test.js +54 -0
- package/dist/tools/__tests__/addAttachmentTool.test.js.map +1 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js +32 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js.map +1 -1
- package/dist/tools/__tests__/appendObjectLogTool.test.js +4 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -1
- package/dist/tools/__tests__/claimTaskTool.test.js +6 -0
- package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/completeTaskTool.test.js +6 -0
- package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/createObjectTool.test.js +4 -0
- package/dist/tools/__tests__/createObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/deleteObjectTool.test.js +4 -0
- package/dist/tools/__tests__/deleteObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/getObjectTool.test.js +29 -2
- package/dist/tools/__tests__/getObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/listObjectsTool.test.js +6 -0
- package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -1
- package/dist/tools/__tests__/removeAttachmentTool.test.d.ts +2 -0
- package/dist/tools/__tests__/removeAttachmentTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/removeAttachmentTool.test.js +57 -0
- package/dist/tools/__tests__/removeAttachmentTool.test.js.map +1 -0
- package/dist/tools/__tests__/updateObjectTool.test.js +4 -0
- package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -1
- package/dist/tools/addAttachmentTool.d.ts +27 -0
- package/dist/tools/addAttachmentTool.d.ts.map +1 -0
- package/dist/tools/addAttachmentTool.js +29 -0
- package/dist/tools/addAttachmentTool.js.map +1 -0
- package/dist/tools/appendModifiedFilesTool.d.ts.map +1 -1
- package/dist/tools/appendModifiedFilesTool.js +45 -0
- package/dist/tools/appendModifiedFilesTool.js.map +1 -1
- package/dist/tools/getObjectTool.d.ts.map +1 -1
- package/dist/tools/getObjectTool.js +1 -0
- package/dist/tools/getObjectTool.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +7 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/removeAttachmentTool.d.ts +27 -0
- package/dist/tools/removeAttachmentTool.d.ts.map +1 -0
- package/dist/tools/removeAttachmentTool.js +29 -0
- package/dist/tools/removeAttachmentTool.js.map +1 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js +4 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js.map +1 -1
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +16 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -1
- package/dist/utils/__tests__/filterUnavailableObjects.test.js +4 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -1
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +16 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -1
- package/dist/utils/__tests__/updateParentHierarchy.test.js +4 -0
- package/dist/utils/__tests__/updateParentHierarchy.test.js.map +1 -1
- package/dist/validation/__tests__/validateObjectCreation.test.js +4 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -1
- package/dist/validation/__tests__/validateParentExists.test.js +4 -0
- package/dist/validation/__tests__/validateParentExists.test.js.map +1 -1
- package/dist/validation/__tests__/validateStatusTransition.test.js +4 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -38,6 +38,7 @@ const promises_1 = require("fs/promises");
|
|
|
38
38
|
const path_1 = require("path");
|
|
39
39
|
const utils_1 = require("../../utils");
|
|
40
40
|
const findMarkdownFiles_1 = require("./findMarkdownFiles");
|
|
41
|
+
const getAttachmentsFolder_1 = require("./getAttachmentsFolder");
|
|
41
42
|
// Should this be replaced by getObjectById?
|
|
42
43
|
async function findObjectById(id, planningRoot) {
|
|
43
44
|
const markdownFiles = await (0, findMarkdownFiles_1.findMarkdownFiles)(planningRoot);
|
|
@@ -76,6 +77,7 @@ async function deleteAssociatedFolder(id, filePath) {
|
|
|
76
77
|
if (!id.startsWith("P-") && !id.startsWith("E-") && !id.startsWith("F-")) {
|
|
77
78
|
return;
|
|
78
79
|
}
|
|
80
|
+
// rm -rf on the object folder also removes the attachments/ subfolder within it.
|
|
79
81
|
const associatedFolderPath = (0, path_1.dirname)(filePath);
|
|
80
82
|
try {
|
|
81
83
|
await (0, promises_1.rm)(associatedFolderPath, { recursive: true, force: true });
|
|
@@ -104,7 +106,23 @@ async function deleteObjectById(id, planningRoot, force) {
|
|
|
104
106
|
if (!force) {
|
|
105
107
|
await checkObjectDependencies(object, planningRoot);
|
|
106
108
|
}
|
|
109
|
+
// Resolve task attachments folder before deletion. Best-effort: tolerate a
|
|
110
|
+
// broken parent chain (e.g., orphaned child during prune) — cleanup is skipped
|
|
111
|
+
// when the path can't be computed.
|
|
112
|
+
let taskAttachmentsFolder = null;
|
|
113
|
+
if (id.startsWith("T-")) {
|
|
114
|
+
try {
|
|
115
|
+
taskAttachmentsFolder = await (0, getAttachmentsFolder_1.getAttachmentsFolder)(foundObject.object, planningRoot);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
taskAttachmentsFolder = null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
107
121
|
await deleteObjectFile(filePath);
|
|
122
|
+
// For P/E/F, deleteAssociatedFolder rm -rf covers the attachments/ subfolder.
|
|
108
123
|
await deleteAssociatedFolder(id, filePath);
|
|
124
|
+
if (taskAttachmentsFolder) {
|
|
125
|
+
await (0, promises_1.rm)(taskAttachmentsFolder, { recursive: true, force: true });
|
|
126
|
+
}
|
|
109
127
|
}
|
|
110
128
|
//# sourceMappingURL=deleteObjectById.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteObjectById.js","sourceRoot":"","sources":["../../../src/repositories/local/deleteObjectById.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"deleteObjectById.js","sourceRoot":"","sources":["../../../src/repositories/local/deleteObjectById.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoGA,4CAkCC;AAtID,0CAAmD;AACnD,+BAA+B;AAG/B,uCAGqB;AACrB,2DAAwD;AACxD,iEAA8D;AAO9D,4CAA4C;AAC5C,KAAK,UAAU,cAAc,CAC3B,EAAU,EACV,YAAoB;IAEpB,MAAM,aAAa,GAAG,MAAM,IAAA,qCAAiB,EAAC,YAAY,CAAC,CAAC;IAE5D,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,aAAa,GACjB,IAAA,gCAAwB,EAAC,WAAW,CAAC,CAAC;YAExC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YACzE,SAAS;QACX,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,YAA2B,EAC3B,YAAoB;IAEpB,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;IAC9D,MAAM,MAAM,GAAiB;QAC3B,kBAAkB,EAAE,YAAY;QAChC,kBAAkB,EAAE,KAAK;QACzB,SAAS,EAAE,CAAC;KACb,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,MAAM,IAAA,iCAAyB,EAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC7E,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wBAAwB,YAAY,CAAC,EAAE,uEAAuE,CAC/G,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,EAAU,EACV,QAAgB;IAEhB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO;IACT,CAAC;IAED,iFAAiF;IACjF,MAAM,oBAAoB,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,IAAA,aAAE,EAAC,oBAAoB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,+CAA+C,oBAAoB,GAAG,EACtE,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,gBAAgB,CACpC,EAAU,EACV,YAAoB,EACpB,KAAe;IAEf,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,uBAAuB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED,2EAA2E;IAC3E,+EAA+E;IAC/E,mCAAmC;IACnC,IAAI,qBAAqB,GAAkB,IAAI,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,qBAAqB,GAAG,MAAM,IAAA,2CAAoB,EAChD,WAAW,CAAC,MAAM,EAClB,YAAY,CACb,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjC,8EAA8E;IAC9E,MAAM,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE3C,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,IAAA,aAAE,EAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type TrellisObject } from "../../models";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the managed attachments folder path for any issue type.
|
|
4
|
+
* Traverses the parent chain for tasks and features to build the correct path.
|
|
5
|
+
* Accepts a pre-loaded object to avoid redundant getObjectById calls.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getAttachmentsFolder(obj: TrellisObject, planningRoot: string): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=getAttachmentsFolder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAttachmentsFolder.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/getAttachmentsFolder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,cAAc,CAAC;AAqDrE;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAcjB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAttachmentsFolder = getAttachmentsFolder;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
const getObjectById_1 = require("./getObjectById");
|
|
7
|
+
function epicFolder(id, parent, root) {
|
|
8
|
+
if (!parent)
|
|
9
|
+
return (0, path_1.join)(root, "e", id, "attachments");
|
|
10
|
+
return (0, path_1.join)(root, "p", parent, "e", id, "attachments");
|
|
11
|
+
}
|
|
12
|
+
async function featureFolder(id, parent, root) {
|
|
13
|
+
const epic = await (0, getObjectById_1.getObjectById)(parent, root);
|
|
14
|
+
if (!epic)
|
|
15
|
+
throw new Error(`Parent object with ID '${parent}' not found`);
|
|
16
|
+
if (epic.type !== models_1.TrellisObjectType.EPIC)
|
|
17
|
+
throw new Error(`Feature ${id} parent must be an epic`);
|
|
18
|
+
if (!epic.parent)
|
|
19
|
+
return (0, path_1.join)(root, "e", parent, "f", id, "attachments");
|
|
20
|
+
return (0, path_1.join)(root, "p", epic.parent, "e", parent, "f", id, "attachments");
|
|
21
|
+
}
|
|
22
|
+
async function taskFolder(id, parent, root) {
|
|
23
|
+
if (!parent)
|
|
24
|
+
return (0, path_1.join)(root, "t", "attachments", id);
|
|
25
|
+
const feature = await (0, getObjectById_1.getObjectById)(parent, root);
|
|
26
|
+
if (!feature)
|
|
27
|
+
throw new Error(`Parent object with ID '${parent}' not found`);
|
|
28
|
+
if (feature.type !== models_1.TrellisObjectType.FEATURE)
|
|
29
|
+
throw new Error(`Task ${id} parent must be a feature`);
|
|
30
|
+
if (!feature.parent)
|
|
31
|
+
return (0, path_1.join)(root, "f", parent, "t", "attachments", id);
|
|
32
|
+
const epic = await (0, getObjectById_1.getObjectById)(feature.parent, root);
|
|
33
|
+
if (!epic)
|
|
34
|
+
throw new Error(`Parent object with ID '${feature.parent}' not found`);
|
|
35
|
+
if (epic.type !== models_1.TrellisObjectType.EPIC)
|
|
36
|
+
throw new Error(`Feature parent ${feature.parent} must be an epic`);
|
|
37
|
+
if (!epic.parent)
|
|
38
|
+
return (0, path_1.join)(root, "e", feature.parent, "f", parent, "t", "attachments", id);
|
|
39
|
+
return (0, path_1.join)(root, "p", epic.parent, "e", feature.parent, "f", parent, "t", "attachments", id);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns the managed attachments folder path for any issue type.
|
|
43
|
+
* Traverses the parent chain for tasks and features to build the correct path.
|
|
44
|
+
* Accepts a pre-loaded object to avoid redundant getObjectById calls.
|
|
45
|
+
*/
|
|
46
|
+
async function getAttachmentsFolder(obj, planningRoot) {
|
|
47
|
+
switch (obj.type) {
|
|
48
|
+
case models_1.TrellisObjectType.PROJECT:
|
|
49
|
+
return (0, path_1.join)(planningRoot, "p", obj.id, "attachments");
|
|
50
|
+
case models_1.TrellisObjectType.EPIC:
|
|
51
|
+
return epicFolder(obj.id, obj.parent, planningRoot);
|
|
52
|
+
case models_1.TrellisObjectType.FEATURE:
|
|
53
|
+
if (!obj.parent)
|
|
54
|
+
return (0, path_1.join)(planningRoot, "f", obj.id, "attachments");
|
|
55
|
+
return featureFolder(obj.id, obj.parent, planningRoot);
|
|
56
|
+
case models_1.TrellisObjectType.TASK:
|
|
57
|
+
return taskFolder(obj.id, obj.parent, planningRoot);
|
|
58
|
+
default:
|
|
59
|
+
throw new Error(`Unknown object type: ${String(obj.type)}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=getAttachmentsFolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAttachmentsFolder.js","sourceRoot":"","sources":["../../../src/repositories/local/getAttachmentsFolder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getChildrenByFilePath.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/getChildrenByFilePath.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getChildrenByFilePath.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/getChildrenByFilePath.ts"],"names":[],"mappings":"AAiDA;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB"}
|
|
@@ -3,23 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getChildrenByFilePath = getChildrenByFilePath;
|
|
4
4
|
const promises_1 = require("node:fs/promises");
|
|
5
5
|
const node_path_1 = require("node:path");
|
|
6
|
-
const getObjectByFilePath_1 = require("./getObjectByFilePath");
|
|
7
6
|
/**
|
|
8
7
|
* Determines the child folders based on the object type prefix
|
|
9
8
|
*/
|
|
10
9
|
function getChildFolders(parentDir, objectPrefix) {
|
|
11
10
|
switch (objectPrefix) {
|
|
12
11
|
case "P":
|
|
13
|
-
// Projects have epics in e/ subfolder
|
|
14
12
|
return [(0, node_path_1.join)(parentDir, "e")];
|
|
15
13
|
case "E":
|
|
16
|
-
// Epics have features in f/ subfolder
|
|
17
14
|
return [(0, node_path_1.join)(parentDir, "f")];
|
|
18
15
|
case "F":
|
|
19
|
-
// Features have tasks in t/open/ and t/closed/ subfolders
|
|
20
16
|
return [(0, node_path_1.join)(parentDir, "t", "open"), (0, node_path_1.join)(parentDir, "t", "closed")];
|
|
21
17
|
default:
|
|
22
|
-
// Tasks (T) and unknown types have no children
|
|
23
18
|
return [];
|
|
24
19
|
}
|
|
25
20
|
}
|
|
@@ -34,29 +29,16 @@ async function scanFolderForChildren(folder) {
|
|
|
34
29
|
const fullPath = (0, node_path_1.join)(folder, entry);
|
|
35
30
|
const stats = await (0, promises_1.stat)(fullPath);
|
|
36
31
|
if (stats.isDirectory()) {
|
|
37
|
-
// For P, E, F objects, the
|
|
38
|
-
|
|
39
|
-
const mdFilePath = (0, node_path_1.join)(fullPath, `${entry}.md`);
|
|
40
|
-
try {
|
|
41
|
-
const mdStats = await (0, promises_1.stat)(mdFilePath);
|
|
42
|
-
if (mdStats.isFile()) {
|
|
43
|
-
const childObject = await (0, getObjectByFilePath_1.getObjectByFilePath)(mdFilePath);
|
|
44
|
-
children.push(childObject.id);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
// File doesn't exist, skip
|
|
49
|
-
}
|
|
32
|
+
// For P, E, F objects, the directory name is the child id
|
|
33
|
+
children.push(entry);
|
|
50
34
|
}
|
|
51
35
|
else if (stats.isFile() && entry.endsWith(".md")) {
|
|
52
|
-
// For tasks in open/closed folders,
|
|
53
|
-
|
|
54
|
-
children.push(childObject.id);
|
|
36
|
+
// For tasks in open/closed folders, strip .md to get the id
|
|
37
|
+
children.push(entry.replace(/\.md$/i, ""));
|
|
55
38
|
}
|
|
56
39
|
}
|
|
57
40
|
}
|
|
58
41
|
catch (error) {
|
|
59
|
-
// Folder doesn't exist or can't be read, skip silently
|
|
60
42
|
if (error instanceof Error && "code" in error && error.code !== "ENOENT") {
|
|
61
43
|
console.error(`Warning: Could not read directory ${folder}:`, error);
|
|
62
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getChildrenByFilePath.js","sourceRoot":"","sources":["../../../src/repositories/local/getChildrenByFilePath.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getChildrenByFilePath.js","sourceRoot":"","sources":["../../../src/repositories/local/getChildrenByFilePath.ts"],"names":[],"mappings":";;AA6DA,sDAoBC;AAjFD,+CAAiD;AACjD,yCAAoD;AAEpD;;GAEG;AACH,SAAS,eAAe,CAAC,SAAiB,EAAE,YAAoB;IAC9D,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,GAAG;YACN,OAAO,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAChC,KAAK,GAAG;YACN,OAAO,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAChC,KAAK,GAAG;YACN,OAAO,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,IAAA,gBAAI,EAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxE;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,MAAc;IACjD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,MAAM,CAAC,CAAC;QAEtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,MAAM,IAAA,eAAI,EAAC,QAAQ,CAAC,CAAC;YAEnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,0DAA0D;gBAC1D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,4DAA4D;gBAC5D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,qCAAqC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,qBAAqB,CACzC,QAAgB;IAEhB,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAA,oBAAQ,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE3C,6CAA6C;IAC7C,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtD,kDAAkD;IAClD,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAE9D,4CAA4C;IAC5C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { TrellisObject } from "../../models";
|
|
2
2
|
/**
|
|
3
|
-
* Gets a TrellisObject by its ID
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @throws Error if file reading fails
|
|
3
|
+
* Gets a TrellisObject by its ID using the RepoIndex cache.
|
|
4
|
+
*
|
|
5
|
+
* On a warm hit: single file read, no directory scan. On a miss: repopulates
|
|
6
|
+
* the index (detecting external writes from other MCP instances) and retries.
|
|
8
7
|
*/
|
|
9
8
|
export declare function getObjectById(id: string, planningRoot: string): Promise<TrellisObject | null>;
|
|
10
9
|
//# sourceMappingURL=getObjectById.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getObjectById.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/getObjectById.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C
|
|
1
|
+
{"version":3,"file":"getObjectById.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/getObjectById.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAoB/B"}
|
|
@@ -3,37 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getObjectById = getObjectById;
|
|
4
4
|
const promises_1 = require("fs/promises");
|
|
5
5
|
const deserializeTrellisObject_1 = require("../../utils/deserializeTrellisObject");
|
|
6
|
-
const findMarkdownFiles_1 = require("./findMarkdownFiles");
|
|
7
6
|
const getChildrenByFilePath_1 = require("./getChildrenByFilePath");
|
|
7
|
+
const RepoIndex_1 = require("./RepoIndex");
|
|
8
8
|
/**
|
|
9
|
-
* Gets a TrellisObject by its ID
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* @throws Error if file reading fails
|
|
9
|
+
* Gets a TrellisObject by its ID using the RepoIndex cache.
|
|
10
|
+
*
|
|
11
|
+
* On a warm hit: single file read, no directory scan. On a miss: repopulates
|
|
12
|
+
* the index (detecting external writes from other MCP instances) and retries.
|
|
14
13
|
*/
|
|
15
14
|
async function getObjectById(id, planningRoot) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
console.error(`Warning: Could not deserialize file ${filePath}:`, error);
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
15
|
+
let entry = await RepoIndex_1.RepoIndex.lookup(planningRoot, id);
|
|
16
|
+
if (!entry) {
|
|
17
|
+
await RepoIndex_1.RepoIndex.populate(planningRoot);
|
|
18
|
+
entry = await RepoIndex_1.RepoIndex.lookup(planningRoot, id);
|
|
19
|
+
}
|
|
20
|
+
if (!entry)
|
|
21
|
+
return null;
|
|
22
|
+
try {
|
|
23
|
+
const fileContent = await (0, promises_1.readFile)(entry.filePath, "utf-8");
|
|
24
|
+
const trellisObject = (0, deserializeTrellisObject_1.deserializeTrellisObject)(fileContent);
|
|
25
|
+
trellisObject.childrenIds = await (0, getChildrenByFilePath_1.getChildrenByFilePath)(entry.filePath);
|
|
26
|
+
return trellisObject;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error(`Warning: Could not deserialize file ${entry.filePath}:`, error);
|
|
30
|
+
return null;
|
|
35
31
|
}
|
|
36
|
-
// If we get here, no object with the given ID was found
|
|
37
|
-
return null;
|
|
38
32
|
}
|
|
39
33
|
//# sourceMappingURL=getObjectById.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getObjectById.js","sourceRoot":"","sources":["../../../src/repositories/local/getObjectById.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getObjectById.js","sourceRoot":"","sources":["../../../src/repositories/local/getObjectById.ts"],"names":[],"mappings":";;AAYA,sCAuBC;AAnCD,0CAAuC;AAEvC,mFAAgF;AAChF,mEAAgE;AAChE,2CAAwC;AAExC;;;;;GAKG;AACI,KAAK,UAAU,aAAa,CACjC,EAAU,EACV,YAAoB;IAEpB,IAAI,KAAK,GAAG,MAAM,qBAAS,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,qBAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvC,KAAK,GAAG,MAAM,qBAAS,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,IAAA,mBAAQ,EAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAA,mDAAwB,EAAC,WAAW,CAAC,CAAC;QAC5D,aAAa,CAAC,WAAW,GAAG,MAAM,IAAA,6CAAqB,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxE,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,uCAAuC,KAAK,CAAC,QAAQ,GAAG,EACxD,KAAK,CACN,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getObjects.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/getObjects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getObjects.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/getObjects.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAsDtB,wBAAsB,UAAU,CAC9B,kBAAkB,EAAE,MAAM,EAC1B,aAAa,UAAQ,EACrB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,EAC9C,MAAM,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,EACpD,QAAQ,CAAC,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,GACzD,OAAO,CAAC,aAAa,EAAE,CAAC,CAgC1B"}
|
|
@@ -1,87 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.getObjects = getObjects;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
37
5
|
const isOpen_1 = require("../../models/isOpen");
|
|
6
|
+
const deserializeTrellisObject_1 = require("../../utils/deserializeTrellisObject");
|
|
7
|
+
const getChildrenByFilePath_1 = require("./getChildrenByFilePath");
|
|
8
|
+
const RepoIndex_1 = require("./RepoIndex");
|
|
9
|
+
const scopeFilter_1 = require("./scopeFilter");
|
|
10
|
+
function normalizeFilter(value) {
|
|
11
|
+
if (value === undefined)
|
|
12
|
+
return undefined;
|
|
13
|
+
const arr = Array.isArray(value) ? value : [value];
|
|
14
|
+
return arr.length > 0 ? arr : undefined;
|
|
15
|
+
}
|
|
16
|
+
async function isEntryFresh(entry) {
|
|
17
|
+
try {
|
|
18
|
+
const stats = await (0, promises_1.stat)(entry.filePath);
|
|
19
|
+
return stats.mtimeMs === entry.mtime;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function loadObjectFromEntry(entry) {
|
|
26
|
+
try {
|
|
27
|
+
const content = await (0, promises_1.readFile)(entry.filePath, "utf-8");
|
|
28
|
+
const obj = (0, deserializeTrellisObject_1.deserializeTrellisObject)(content);
|
|
29
|
+
obj.childrenIds = await (0, getChildrenByFilePath_1.getChildrenByFilePath)(entry.filePath);
|
|
30
|
+
return obj;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error(`Warning: Could not deserialize file ${entry.filePath}:`, error);
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function passesFilters(obj, typeArray, statusArray, priorityArray, includeClosed) {
|
|
38
|
+
if (typeArray && !typeArray.includes(obj.type))
|
|
39
|
+
return false;
|
|
40
|
+
if (statusArray && !statusArray.includes(obj.status))
|
|
41
|
+
return false;
|
|
42
|
+
if (priorityArray && !priorityArray.includes(obj.priority))
|
|
43
|
+
return false;
|
|
44
|
+
if (!includeClosed && !(0, isOpen_1.isOpen)(obj))
|
|
45
|
+
return false;
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
38
48
|
async function getObjects(planningRootFolder, includeClosed = false, scope, type, status, priority) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
const statusArray = status &&
|
|
48
|
-
(Array.isArray(status)
|
|
49
|
-
? status.length > 0
|
|
50
|
-
? status
|
|
51
|
-
: undefined
|
|
52
|
-
: [status]);
|
|
53
|
-
const priorityArray = priority &&
|
|
54
|
-
(Array.isArray(priority)
|
|
55
|
-
? priority.length > 0
|
|
56
|
-
? priority
|
|
57
|
-
: undefined
|
|
58
|
-
: [priority]);
|
|
49
|
+
// Always rescan. A cold-only gate misses files created by other MCP instances
|
|
50
|
+
// (or any writer that bypasses LocalRepository.saveObject), because the bucket
|
|
51
|
+
// retains entries — so `entries().length === 0` stays false — while new ids
|
|
52
|
+
// sit on disk un-indexed. Populate is cheap: regex-only, no YAML parse.
|
|
53
|
+
await RepoIndex_1.RepoIndex.populate(planningRootFolder);
|
|
54
|
+
const typeArray = normalizeFilter(type);
|
|
55
|
+
const statusArray = normalizeFilter(status);
|
|
56
|
+
const priorityArray = normalizeFilter(priority);
|
|
59
57
|
const objects = [];
|
|
60
|
-
for (const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// Apply status filter using array membership test
|
|
68
|
-
if (statusArray && !statusArray.includes(trellisObject.status)) {
|
|
69
|
-
continue; // Skip if status doesn't match any in the array
|
|
70
|
-
}
|
|
71
|
-
// Apply priority filter using array membership test
|
|
72
|
-
if (priorityArray && !priorityArray.includes(trellisObject.priority)) {
|
|
73
|
-
continue; // Skip if priority doesn't match any in the array
|
|
74
|
-
}
|
|
75
|
-
if (!includeClosed && !(0, isOpen_1.isOpen)(trellisObject)) {
|
|
76
|
-
continue; // Skip closed objects if includeClosed is false
|
|
77
|
-
}
|
|
78
|
-
objects.push(trellisObject);
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
// Skip files that can't be deserialized (might not be valid Trellis objects)
|
|
82
|
-
console.error(`Warning: Could not deserialize file ${filePath}:`, error);
|
|
58
|
+
for (const [id, entry] of RepoIndex_1.RepoIndex.entries(planningRootFolder)) {
|
|
59
|
+
if (scope && !(0, scopeFilter_1.matchesScope)(entry.filePath, scope))
|
|
60
|
+
continue;
|
|
61
|
+
if (!includeClosed && entry.filePath.includes("/t/closed/"))
|
|
62
|
+
continue;
|
|
63
|
+
if (!(await isEntryFresh(entry))) {
|
|
64
|
+
RepoIndex_1.RepoIndex.invalidate(planningRootFolder, id);
|
|
83
65
|
continue;
|
|
84
66
|
}
|
|
67
|
+
const obj = await loadObjectFromEntry(entry);
|
|
68
|
+
if (!obj)
|
|
69
|
+
continue;
|
|
70
|
+
if (passesFilters(obj, typeArray, statusArray, priorityArray, includeClosed))
|
|
71
|
+
objects.push(obj);
|
|
85
72
|
}
|
|
86
73
|
return objects;
|
|
87
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getObjects.js","sourceRoot":"","sources":["../../../src/repositories/local/getObjects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getObjects.js","sourceRoot":"","sources":["../../../src/repositories/local/getObjects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type TrellisObject } from "../../models";
|
|
2
|
+
/** Returns filenames of all attachments for an issue. Returns [] if no folder exists or the parent chain is broken. */
|
|
3
|
+
export declare function listAttachments(obj: TrellisObject, planningRoot: string): Promise<string[]>;
|
|
4
|
+
//# sourceMappingURL=listAttachments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listAttachments.d.ts","sourceRoot":"","sources":["../../../src/repositories/local/listAttachments.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,uHAAuH;AACvH,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAgBnB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listAttachments = listAttachments;
|
|
4
|
+
const promises_1 = require("fs/promises");
|
|
5
|
+
const getAttachmentsFolder_1 = require("./getAttachmentsFolder");
|
|
6
|
+
/** Returns filenames of all attachments for an issue. Returns [] if no folder exists or the parent chain is broken. */
|
|
7
|
+
async function listAttachments(obj, planningRoot) {
|
|
8
|
+
let folder;
|
|
9
|
+
try {
|
|
10
|
+
folder = await (0, getAttachmentsFolder_1.getAttachmentsFolder)(obj, planningRoot);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const entries = await (0, promises_1.readdir)(folder, { withFileTypes: true });
|
|
17
|
+
return entries.filter((e) => e.isFile()).map((e) => e.name);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (error.code === "ENOENT") {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=listAttachments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listAttachments.js","sourceRoot":"","sources":["../../../src/repositories/local/listAttachments.ts"],"names":[],"mappings":";;AAKA,0CAmBC;AAxBD,0CAAsC;AAEtC,iEAA8D;AAE9D,uHAAuH;AAChH,KAAK,UAAU,eAAe,CACnC,GAAkB,EAClB,YAAoB;IAEpB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAA,2CAAoB,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -103,6 +103,8 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, () => {
|
|
|
103
103
|
tools_1.getNextAvailableIssueTool,
|
|
104
104
|
tools_1.completeTaskTool,
|
|
105
105
|
tools_1.getUiInfoTool,
|
|
106
|
+
tools_1.addAttachmentTool,
|
|
107
|
+
tools_1.removeAttachmentTool,
|
|
106
108
|
];
|
|
107
109
|
return { tools };
|
|
108
110
|
});
|
|
@@ -132,6 +134,10 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, (request) => {
|
|
|
132
134
|
return (0, tools_1.handleCompleteTask)(_getService(), repository, args, serverConfig);
|
|
133
135
|
case "get_ui_info":
|
|
134
136
|
return (0, tools_1.handleGetUiInfo)(projectDir);
|
|
137
|
+
case "add_attachment":
|
|
138
|
+
return (0, tools_1.handleAddAttachment)(_getService(), repository, args);
|
|
139
|
+
case "remove_attachment":
|
|
140
|
+
return (0, tools_1.handleRemoveAttachment)(_getService(), repository, args);
|
|
135
141
|
default:
|
|
136
142
|
throw new Error(`Unknown tool: ${toolName}`);
|
|
137
143
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;AAEA,wEAAmE;AACnE,wEAAiF;AACjF,iEAG4C;AAC5C,yCAAoC;AACpC,4CAAoB;AACpB,gDAAwB;AAExB,6CAAgD;AAChD,mDAKyB;AACzB,iDAA6D;AAE7D,sFAAmF;AACnF,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,5 +83,19 @@ export interface TaskTrellisService {
|
|
|
83
83
|
text: string;
|
|
84
84
|
}>;
|
|
85
85
|
}>;
|
|
86
|
+
/** Copies a file into the managed attachments folder for an issue. */
|
|
87
|
+
addAttachment(repository: Repository, id: string, sourcePath: string): Promise<{
|
|
88
|
+
content: Array<{
|
|
89
|
+
type: string;
|
|
90
|
+
text: string;
|
|
91
|
+
}>;
|
|
92
|
+
}>;
|
|
93
|
+
/** Deletes a named file from the managed attachments folder for an issue. */
|
|
94
|
+
removeAttachment(repository: Repository, id: string, filename: string): Promise<{
|
|
95
|
+
content: Array<{
|
|
96
|
+
type: string;
|
|
97
|
+
text: string;
|
|
98
|
+
}>;
|
|
99
|
+
}>;
|
|
86
100
|
}
|
|
87
101
|
//# sourceMappingURL=TaskTrellisService.d.ts.map
|