@langadventurellc/task-trellis-mcp 1.2.2 → 1.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.
Files changed (191) hide show
  1. package/README.md +2 -2
  2. package/dist/__tests__/copyBasicClaudeAgents.test.d.ts +2 -0
  3. package/dist/__tests__/copyBasicClaudeAgents.test.d.ts.map +1 -0
  4. package/dist/__tests__/copyBasicClaudeAgents.test.js +24 -0
  5. package/dist/__tests__/copyBasicClaudeAgents.test.js.map +1 -0
  6. package/dist/__tests__/e2e/crud/createObject.e2e.test.js +4 -4
  7. package/dist/__tests__/e2e/crud/createObject.e2e.test.js.map +1 -1
  8. package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js +4 -4
  9. package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js.map +1 -1
  10. package/dist/__tests__/e2e/crud/getObject.e2e.test.js +3 -3
  11. package/dist/__tests__/e2e/crud/getObject.e2e.test.js.map +1 -1
  12. package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js +10 -10
  13. package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js.map +1 -1
  14. package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js +1 -1
  15. package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js.map +1 -1
  16. package/dist/__tests__/e2e/workflow/getNextAvailableIssue.e2e.test.d.ts +2 -0
  17. package/dist/__tests__/e2e/workflow/getNextAvailableIssue.e2e.test.d.ts.map +1 -0
  18. package/dist/__tests__/e2e/workflow/getNextAvailableIssue.e2e.test.js +806 -0
  19. package/dist/__tests__/e2e/workflow/getNextAvailableIssue.e2e.test.js.map +1 -0
  20. package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js +7 -7
  21. package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js.map +1 -1
  22. package/dist/__tests__/serverStartup.test.js +138 -0
  23. package/dist/__tests__/serverStartup.test.js.map +1 -1
  24. package/dist/models/TrellisObject.d.ts +1 -1
  25. package/dist/models/TrellisObject.d.ts.map +1 -1
  26. package/dist/models/TrellisObjectSummary.d.ts +1 -1
  27. package/dist/models/TrellisObjectSummary.d.ts.map +1 -1
  28. package/dist/models/__tests__/isClaimable.test.js +1 -0
  29. package/dist/models/__tests__/isClaimable.test.js.map +1 -1
  30. package/dist/models/__tests__/isClosed.test.js +3 -1
  31. package/dist/models/__tests__/isClosed.test.js.map +1 -1
  32. package/dist/models/__tests__/isOpen.test.js +3 -1
  33. package/dist/models/__tests__/isOpen.test.js.map +1 -1
  34. package/dist/prompts/PromptArgument.d.ts +16 -0
  35. package/dist/prompts/PromptArgument.d.ts.map +1 -0
  36. package/dist/prompts/PromptArgument.js +3 -0
  37. package/dist/prompts/PromptArgument.js.map +1 -0
  38. package/dist/prompts/PromptManager.d.ts +48 -0
  39. package/dist/prompts/PromptManager.d.ts.map +1 -0
  40. package/dist/prompts/PromptManager.js +151 -0
  41. package/dist/prompts/PromptManager.js.map +1 -0
  42. package/dist/prompts/PromptMessage.d.ts +11 -0
  43. package/dist/prompts/PromptMessage.d.ts.map +1 -0
  44. package/dist/prompts/PromptMessage.js +3 -0
  45. package/dist/prompts/PromptMessage.js.map +1 -0
  46. package/dist/prompts/PromptParser.d.ts +7 -0
  47. package/dist/prompts/PromptParser.d.ts.map +1 -0
  48. package/dist/prompts/PromptParser.js +141 -0
  49. package/dist/prompts/PromptParser.js.map +1 -0
  50. package/dist/prompts/PromptRenderer.d.ts +38 -0
  51. package/dist/prompts/PromptRenderer.d.ts.map +1 -0
  52. package/dist/prompts/PromptRenderer.js +128 -0
  53. package/dist/prompts/PromptRenderer.js.map +1 -0
  54. package/dist/prompts/PromptsRegistry.d.ts +43 -0
  55. package/dist/prompts/PromptsRegistry.d.ts.map +1 -0
  56. package/dist/prompts/PromptsRegistry.js +76 -0
  57. package/dist/prompts/PromptsRegistry.js.map +1 -0
  58. package/dist/prompts/TrellisPrompt.d.ts +19 -0
  59. package/dist/prompts/TrellisPrompt.d.ts.map +1 -0
  60. package/dist/prompts/TrellisPrompt.js +3 -0
  61. package/dist/prompts/TrellisPrompt.js.map +1 -0
  62. package/dist/prompts/__tests__/PromptArgument.test.d.ts +2 -0
  63. package/dist/prompts/__tests__/PromptArgument.test.d.ts.map +1 -0
  64. package/dist/prompts/__tests__/PromptArgument.test.js +60 -0
  65. package/dist/prompts/__tests__/PromptArgument.test.js.map +1 -0
  66. package/dist/prompts/__tests__/PromptManager.test.d.ts +2 -0
  67. package/dist/prompts/__tests__/PromptManager.test.d.ts.map +1 -0
  68. package/dist/prompts/__tests__/PromptManager.test.js +364 -0
  69. package/dist/prompts/__tests__/PromptManager.test.js.map +1 -0
  70. package/dist/prompts/__tests__/PromptParser.test.d.ts +2 -0
  71. package/dist/prompts/__tests__/PromptParser.test.d.ts.map +1 -0
  72. package/dist/prompts/__tests__/PromptParser.test.js +237 -0
  73. package/dist/prompts/__tests__/PromptParser.test.js.map +1 -0
  74. package/dist/prompts/__tests__/PromptRenderer.test.d.ts +2 -0
  75. package/dist/prompts/__tests__/PromptRenderer.test.d.ts.map +1 -0
  76. package/dist/prompts/__tests__/PromptRenderer.test.js +325 -0
  77. package/dist/prompts/__tests__/PromptRenderer.test.js.map +1 -0
  78. package/dist/prompts/__tests__/TrellisPrompt.test.d.ts +2 -0
  79. package/dist/prompts/__tests__/TrellisPrompt.test.d.ts.map +1 -0
  80. package/dist/prompts/__tests__/TrellisPrompt.test.js +107 -0
  81. package/dist/prompts/__tests__/TrellisPrompt.test.js.map +1 -0
  82. package/dist/prompts/index.d.ts +9 -0
  83. package/dist/prompts/index.d.ts.map +1 -0
  84. package/dist/prompts/index.js +14 -0
  85. package/dist/prompts/index.js.map +1 -0
  86. package/dist/prompts/registry.d.ts +6 -0
  87. package/dist/prompts/registry.d.ts.map +1 -0
  88. package/dist/prompts/registry.js +60 -0
  89. package/dist/prompts/registry.js.map +1 -0
  90. package/dist/repositories/local/__tests__/getObjectByFilePath.test.js +5 -5
  91. package/dist/repositories/local/__tests__/getObjectByFilePath.test.js.map +1 -1
  92. package/dist/repositories/local/__tests__/getObjectFilePath.test.js +2 -2
  93. package/dist/repositories/local/__tests__/getObjectFilePath.test.js.map +1 -1
  94. package/dist/resources/basic/prompts/create-epics.md +177 -0
  95. package/dist/resources/basic/prompts/create-features.md +172 -0
  96. package/dist/resources/basic/prompts/create-project.md +128 -0
  97. package/dist/resources/basic/prompts/create-tasks.md +225 -0
  98. package/dist/resources/basic/prompts/implement-task.md +170 -0
  99. package/dist/resources/basic-claude/agents/implementation-planner.md +187 -0
  100. package/dist/resources/basic-claude/agents/issue-verifier.md +154 -0
  101. package/dist/resources/basic-claude/prompts/create-epics.md +204 -0
  102. package/dist/resources/basic-claude/prompts/create-features.md +199 -0
  103. package/dist/resources/basic-claude/prompts/create-project.md +155 -0
  104. package/dist/resources/basic-claude/prompts/create-tasks.md +252 -0
  105. package/dist/resources/basic-claude/prompts/implement-task.md +179 -0
  106. package/dist/server.js +59 -2
  107. package/dist/server.js.map +1 -1
  108. package/dist/services/TaskTrellisService.d.ts +9 -0
  109. package/dist/services/TaskTrellisService.d.ts.map +1 -1
  110. package/dist/services/local/LocalTaskTrellisService.d.ts +6 -0
  111. package/dist/services/local/LocalTaskTrellisService.d.ts.map +1 -1
  112. package/dist/services/local/LocalTaskTrellisService.js +24 -0
  113. package/dist/services/local/LocalTaskTrellisService.js.map +1 -1
  114. package/dist/services/local/__tests__/appendAffectedFiles.test.js +9 -9
  115. package/dist/services/local/__tests__/appendAffectedFiles.test.js.map +1 -1
  116. package/dist/services/local/__tests__/appendModifiedFiles.test.js +1 -1
  117. package/dist/services/local/__tests__/appendModifiedFiles.test.js.map +1 -1
  118. package/dist/services/local/__tests__/claimTask.test.js +1 -0
  119. package/dist/services/local/__tests__/claimTask.test.js.map +1 -1
  120. package/dist/services/local/__tests__/completeTask.test.js +3 -3
  121. package/dist/services/local/__tests__/completeTask.test.js.map +1 -1
  122. package/dist/services/local/__tests__/createObject.test.js +7 -4
  123. package/dist/services/local/__tests__/createObject.test.js.map +1 -1
  124. package/dist/services/local/__tests__/getNextAvailableIssue.test.d.ts +2 -0
  125. package/dist/services/local/__tests__/getNextAvailableIssue.test.d.ts.map +1 -0
  126. package/dist/services/local/__tests__/getNextAvailableIssue.test.js +314 -0
  127. package/dist/services/local/__tests__/getNextAvailableIssue.test.js.map +1 -0
  128. package/dist/services/local/__tests__/listObjects.test.js +1 -0
  129. package/dist/services/local/__tests__/listObjects.test.js.map +1 -1
  130. package/dist/services/local/__tests__/pruneClosed.test.js +1 -0
  131. package/dist/services/local/__tests__/pruneClosed.test.js.map +1 -1
  132. package/dist/services/local/__tests__/updateObject.test.js +2 -2
  133. package/dist/services/local/__tests__/updateObject.test.js.map +1 -1
  134. package/dist/services/local/createObject.d.ts +1 -1
  135. package/dist/services/local/createObject.d.ts.map +1 -1
  136. package/dist/services/local/createObject.js +1 -1
  137. package/dist/services/local/createObject.js.map +1 -1
  138. package/dist/services/local/getNextAvailableIssue.d.ts +14 -0
  139. package/dist/services/local/getNextAvailableIssue.d.ts.map +1 -0
  140. package/dist/services/local/getNextAvailableIssue.js +28 -0
  141. package/dist/services/local/getNextAvailableIssue.js.map +1 -0
  142. package/dist/tools/__tests__/claimTaskTool.test.js +1 -0
  143. package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -1
  144. package/dist/tools/__tests__/completeTaskTool.test.js +1 -0
  145. package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -1
  146. package/dist/tools/__tests__/getObjectTool.test.js +1 -0
  147. package/dist/tools/__tests__/getObjectTool.test.js.map +1 -1
  148. package/dist/tools/__tests__/listObjectsTool.test.js +1 -0
  149. package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -1
  150. package/dist/tools/getNextAvailableIssueTool.d.ts +34 -0
  151. package/dist/tools/getNextAvailableIssueTool.d.ts.map +1 -0
  152. package/dist/tools/getNextAvailableIssueTool.js +94 -0
  153. package/dist/tools/getNextAvailableIssueTool.js.map +1 -0
  154. package/dist/tools/index.d.ts +1 -0
  155. package/dist/tools/index.d.ts.map +1 -1
  156. package/dist/tools/index.js +4 -1
  157. package/dist/tools/index.js.map +1 -1
  158. package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js +3 -3
  159. package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js.map +1 -1
  160. package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +1 -0
  161. package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -1
  162. package/dist/utils/__tests__/deserializeTrellisObject.test.js +23 -1
  163. package/dist/utils/__tests__/deserializeTrellisObject.test.js.map +1 -1
  164. package/dist/utils/__tests__/filterUnavailableObjects.test.js +1 -1
  165. package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -1
  166. package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +1 -0
  167. package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -1
  168. package/dist/utils/__tests__/serializationRoundTrip.test.js +35 -0
  169. package/dist/utils/__tests__/serializationRoundTrip.test.js.map +1 -1
  170. package/dist/utils/__tests__/serializeTrellisObject.test.js +8 -2
  171. package/dist/utils/__tests__/serializeTrellisObject.test.js.map +1 -1
  172. package/dist/utils/__tests__/sortTrellisObjects.test.js +1 -0
  173. package/dist/utils/__tests__/sortTrellisObjects.test.js.map +1 -1
  174. package/dist/utils/__tests__/updateParentHierarchy.test.js +4 -4
  175. package/dist/utils/__tests__/updateParentHierarchy.test.js.map +1 -1
  176. package/dist/utils/deserializeTrellisObject.d.ts.map +1 -1
  177. package/dist/utils/deserializeTrellisObject.js +1 -1
  178. package/dist/utils/deserializeTrellisObject.js.map +1 -1
  179. package/dist/utils/serializeTrellisObject.js +1 -1
  180. package/dist/utils/serializeTrellisObject.js.map +1 -1
  181. package/dist/utils/updateParentHierarchy.d.ts +1 -1
  182. package/dist/utils/updateParentHierarchy.d.ts.map +1 -1
  183. package/dist/utils/updateParentHierarchy.js.map +1 -1
  184. package/dist/validation/__tests__/validateObjectCreation.test.js +3 -3
  185. package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -1
  186. package/dist/validation/__tests__/validateParentExists.test.js +2 -1
  187. package/dist/validation/__tests__/validateParentExists.test.js.map +1 -1
  188. package/dist/validation/validateParentExists.d.ts +1 -1
  189. package/dist/validation/validateParentExists.d.ts.map +1 -1
  190. package/dist/validation/validateParentExists.js.map +1 -1
  191. package/package.json +3 -2
@@ -0,0 +1,19 @@
1
+ import { PromptArgument } from "./PromptArgument";
2
+ /**
3
+ * Represents a prompt template for the Task Trellis MCP system.
4
+ * Prompts define reusable templates with placeholders that can be filled
5
+ * with specific arguments to generate contextualized user messages.
6
+ */
7
+ export interface TrellisPrompt {
8
+ /** Kebab-case identifier for the prompt (e.g., "create-project") */
9
+ name: string;
10
+ /** Optional human-readable title for internal use */
11
+ title?: string;
12
+ /** Single-sentence summary displayed in slash command help */
13
+ description: string;
14
+ /** List of arguments that can be provided to fill the template */
15
+ arguments: PromptArgument[];
16
+ /** Markdown body template with placeholders for arguments */
17
+ userTemplate: string;
18
+ }
19
+ //# sourceMappingURL=TrellisPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrellisPrompt.d.ts","sourceRoot":"","sources":["../../src/prompts/TrellisPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IAEb,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IAEpB,kEAAkE;IAClE,SAAS,EAAE,cAAc,EAAE,CAAC;IAE5B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TrellisPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrellisPrompt.js","sourceRoot":"","sources":["../../src/prompts/TrellisPrompt.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PromptArgument.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptArgument.test.d.ts","sourceRoot":"","sources":["../../../src/prompts/__tests__/PromptArgument.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ describe("PromptArgument", () => {
4
+ describe("interface structure", () => {
5
+ it("should accept valid argument with all required fields", () => {
6
+ const arg = {
7
+ name: "testArg",
8
+ required: true,
9
+ description: "A test argument",
10
+ };
11
+ expect(arg.name).toBe("testArg");
12
+ expect(arg.required).toBe(true);
13
+ expect(arg.description).toBeDefined();
14
+ expect(arg.type).toBeUndefined();
15
+ });
16
+ it("should accept argument with optional type field", () => {
17
+ const stringArg = {
18
+ name: "textInput",
19
+ type: "string",
20
+ required: true,
21
+ description: "A text input field",
22
+ };
23
+ const booleanArg = {
24
+ name: "enableFeature",
25
+ type: "boolean",
26
+ required: false,
27
+ description: "Toggle feature on/off",
28
+ };
29
+ expect(stringArg.type).toBe("string");
30
+ expect(booleanArg.type).toBe("boolean");
31
+ });
32
+ it("should handle optional arguments", () => {
33
+ const optionalArg = {
34
+ name: "optionalField",
35
+ required: false,
36
+ description: "An optional field",
37
+ };
38
+ expect(optionalArg.required).toBe(false);
39
+ });
40
+ });
41
+ describe("type system validation", () => {
42
+ it("should only accept 'string' or 'boolean' as type values", () => {
43
+ const validTypes = [
44
+ "string",
45
+ "boolean",
46
+ undefined,
47
+ ];
48
+ validTypes.forEach((type) => {
49
+ const arg = {
50
+ name: "testArg",
51
+ type,
52
+ required: true,
53
+ description: "Test",
54
+ };
55
+ expect([undefined, "string", "boolean"]).toContain(arg.type);
56
+ });
57
+ });
58
+ });
59
+ });
60
+ //# sourceMappingURL=PromptArgument.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptArgument.test.js","sourceRoot":"","sources":["../../../src/prompts/__tests__/PromptArgument.test.ts"],"names":[],"mappings":";;AAEA,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,GAAG,GAAmB;gBAC1B,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,iBAAiB;aAC/B,CAAC;YAEF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,SAAS,GAAmB;gBAChC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,oBAAoB;aAClC,CAAC;YAEF,MAAM,UAAU,GAAmB;gBACjC,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,uBAAuB;aACrC,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,WAAW,GAAmB;gBAClC,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,mBAAmB;aACjC,CAAC;YAEF,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,UAAU,GAA4C;gBAC1D,QAAQ;gBACR,SAAS;gBACT,SAAS;aACV,CAAC;YAEF,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC1B,MAAM,GAAG,GAAmB;oBAC1B,IAAI,EAAE,SAAS;oBACf,IAAI;oBACJ,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,MAAM;iBACpB,CAAC;gBACF,MAAM,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PromptManager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptManager.test.d.ts","sourceRoot":"","sources":["../../../src/prompts/__tests__/PromptManager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,364 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const globals_1 = require("@jest/globals");
37
+ const fs = __importStar(require("fs/promises"));
38
+ const PromptManager_js_1 = require("../PromptManager.js");
39
+ // Mock fs/promises
40
+ globals_1.jest.mock("fs/promises");
41
+ // Mock parsePromptFile
42
+ globals_1.jest.mock("../PromptParser.js", () => ({
43
+ parsePromptFile: globals_1.jest.fn(),
44
+ }));
45
+ describe("PromptManager", () => {
46
+ let manager;
47
+ let mockAccess;
48
+ let mockReaddir;
49
+ let mockConsoleError;
50
+ beforeEach(() => {
51
+ manager = new PromptManager_js_1.PromptManager(); // Default to "basic" package
52
+ // Setup mocks
53
+ mockAccess = fs.access;
54
+ mockReaddir = fs.readdir;
55
+ mockConsoleError = globals_1.jest
56
+ .spyOn(console, "error")
57
+ .mockImplementation(() => { });
58
+ globals_1.jest.clearAllMocks();
59
+ });
60
+ afterEach(() => {
61
+ mockConsoleError.mockRestore();
62
+ });
63
+ describe("constructor", () => {
64
+ it("should initialize with empty cache", () => {
65
+ expect(manager.list()).toEqual([]);
66
+ expect(manager.size()).toBe(0);
67
+ });
68
+ });
69
+ describe("load", () => {
70
+ it("should handle non-existent directory gracefully", async () => {
71
+ mockAccess.mockRejectedValue(new Error("Directory not found"));
72
+ await manager.load();
73
+ expect(manager.list()).toEqual([]);
74
+ expect(manager.size()).toBe(0);
75
+ expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining("Prompts directory does not exist"));
76
+ });
77
+ it("should load valid prompt files", async () => {
78
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
79
+ mockAccess.mockResolvedValue(undefined);
80
+ mockReaddir.mockResolvedValue([
81
+ "test-prompt.md",
82
+ "another.md",
83
+ "readme.txt",
84
+ ]);
85
+ const mockPrompt1 = {
86
+ name: "test-prompt",
87
+ description: "A test prompt",
88
+ arguments: [],
89
+ userTemplate: "Test template",
90
+ };
91
+ const mockPrompt2 = {
92
+ name: "another-prompt",
93
+ description: "Another prompt",
94
+ arguments: [],
95
+ userTemplate: "Another template",
96
+ };
97
+ mockParsePromptFile.mockImplementation((filePath) => {
98
+ if (filePath.includes("test-prompt.md")) {
99
+ return Promise.resolve(mockPrompt1);
100
+ }
101
+ else if (filePath.includes("another.md")) {
102
+ return Promise.resolve(mockPrompt2);
103
+ }
104
+ return Promise.reject(new Error("File not found"));
105
+ });
106
+ await manager.load();
107
+ expect(manager.size()).toBe(2);
108
+ expect(manager.has("test-prompt")).toBe(true);
109
+ expect(manager.has("another-prompt")).toBe(true);
110
+ expect(manager.get("test-prompt")).toEqual(mockPrompt1);
111
+ expect(manager.get("another-prompt")).toEqual(mockPrompt2);
112
+ });
113
+ it("should skip invalid prompt files", async () => {
114
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
115
+ mockAccess.mockResolvedValue(undefined);
116
+ mockReaddir.mockResolvedValue(["invalid.md", "valid.md"]);
117
+ const mockValidPrompt = {
118
+ name: "valid-prompt",
119
+ description: "Valid prompt",
120
+ arguments: [],
121
+ userTemplate: "Valid template",
122
+ };
123
+ mockParsePromptFile.mockImplementation((filePath) => {
124
+ if (filePath.includes("invalid.md")) {
125
+ return Promise.reject(new Error("Parse error"));
126
+ }
127
+ else if (filePath.includes("valid.md")) {
128
+ return Promise.resolve(mockValidPrompt);
129
+ }
130
+ return Promise.reject(new Error("File not found"));
131
+ });
132
+ await manager.load();
133
+ expect(manager.size()).toBe(1);
134
+ expect(manager.has("valid-prompt")).toBe(true);
135
+ expect(mockConsoleError).toHaveBeenCalledWith("Failed to parse prompt file invalid.md:", expect.any(Error));
136
+ });
137
+ it("should skip prompts with missing names", async () => {
138
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
139
+ mockAccess.mockResolvedValue(undefined);
140
+ mockReaddir.mockResolvedValue(["no-name.md"]);
141
+ const mockPromptNoName = {
142
+ name: "",
143
+ description: "No name prompt",
144
+ arguments: [],
145
+ userTemplate: "Template",
146
+ };
147
+ mockParsePromptFile.mockResolvedValue(mockPromptNoName);
148
+ await manager.load();
149
+ expect(manager.size()).toBe(0);
150
+ expect(mockConsoleError).toHaveBeenCalledWith("Invalid prompt file no-name.md: missing name");
151
+ });
152
+ it("should handle duplicate prompt names", async () => {
153
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
154
+ mockAccess.mockResolvedValue(undefined);
155
+ mockReaddir.mockResolvedValue(["first.md", "second.md"]);
156
+ const mockDuplicatePrompt = {
157
+ name: "duplicate-name",
158
+ description: "Duplicate prompt",
159
+ arguments: [],
160
+ userTemplate: "Template content",
161
+ };
162
+ mockParsePromptFile.mockResolvedValue(mockDuplicatePrompt);
163
+ await manager.load();
164
+ expect(manager.size()).toBe(1);
165
+ expect(mockConsoleError).toHaveBeenCalledWith('Duplicate prompt name "duplicate-name" found in file second.md');
166
+ });
167
+ it("should only load once", async () => {
168
+ mockAccess.mockResolvedValue(undefined);
169
+ mockReaddir.mockResolvedValue([]);
170
+ await manager.load();
171
+ await manager.load();
172
+ expect(mockReaddir).toHaveBeenCalledTimes(1);
173
+ });
174
+ it("should handle readdir error", async () => {
175
+ mockAccess.mockResolvedValue(undefined);
176
+ mockReaddir.mockRejectedValue(new Error("Read error"));
177
+ await manager.load();
178
+ expect(manager.size()).toBe(0);
179
+ expect(mockConsoleError).toHaveBeenCalledWith("Failed to read prompts directory:", expect.any(Error));
180
+ });
181
+ });
182
+ describe("list", () => {
183
+ it("should return all loaded prompts", async () => {
184
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
185
+ mockAccess.mockResolvedValue(undefined);
186
+ mockReaddir.mockResolvedValue(["prompt1.md", "prompt2.md"]);
187
+ const mockPrompt1 = {
188
+ name: "prompt-one",
189
+ description: "Prompt One",
190
+ arguments: [],
191
+ userTemplate: "Template one",
192
+ };
193
+ const mockPrompt2 = {
194
+ name: "prompt-two",
195
+ description: "Prompt Two",
196
+ arguments: [],
197
+ userTemplate: "Template two",
198
+ };
199
+ mockParsePromptFile.mockImplementation((filePath) => {
200
+ if (filePath.includes("prompt1.md")) {
201
+ return Promise.resolve(mockPrompt1);
202
+ }
203
+ else if (filePath.includes("prompt2.md")) {
204
+ return Promise.resolve(mockPrompt2);
205
+ }
206
+ return Promise.reject(new Error("File not found"));
207
+ });
208
+ await manager.load();
209
+ const prompts = manager.list();
210
+ expect(prompts).toHaveLength(2);
211
+ expect(prompts.map((p) => p.name).sort()).toEqual([
212
+ "prompt-one",
213
+ "prompt-two",
214
+ ]);
215
+ });
216
+ it("should return empty array when no prompts loaded", () => {
217
+ const prompts = manager.list();
218
+ expect(prompts).toEqual([]);
219
+ });
220
+ });
221
+ describe("get", () => {
222
+ beforeEach(async () => {
223
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
224
+ mockAccess.mockResolvedValue(undefined);
225
+ mockReaddir.mockResolvedValue(["test.md"]);
226
+ const mockPrompt = {
227
+ name: "test-prompt",
228
+ description: "Test description",
229
+ arguments: [],
230
+ userTemplate: "Test template",
231
+ };
232
+ mockParsePromptFile.mockResolvedValue(mockPrompt);
233
+ await manager.load();
234
+ });
235
+ it("should return prompt by name", () => {
236
+ const prompt = manager.get("test-prompt");
237
+ expect(prompt).toBeDefined();
238
+ expect(prompt?.name).toBe("test-prompt");
239
+ expect(prompt?.description).toBe("Test description");
240
+ expect(prompt?.userTemplate).toBe("Test template");
241
+ });
242
+ it("should return undefined for non-existent prompt", () => {
243
+ const prompt = manager.get("non-existent");
244
+ expect(prompt).toBeUndefined();
245
+ });
246
+ });
247
+ describe("has", () => {
248
+ beforeEach(async () => {
249
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
250
+ mockAccess.mockResolvedValue(undefined);
251
+ mockReaddir.mockResolvedValue(["test.md"]);
252
+ const mockPrompt = {
253
+ name: "test-prompt",
254
+ description: "Test prompt",
255
+ arguments: [],
256
+ userTemplate: "Test template",
257
+ };
258
+ mockParsePromptFile.mockResolvedValue(mockPrompt);
259
+ await manager.load();
260
+ });
261
+ it("should return true for existing prompt", () => {
262
+ expect(manager.has("test-prompt")).toBe(true);
263
+ });
264
+ it("should return false for non-existent prompt", () => {
265
+ expect(manager.has("non-existent")).toBe(false);
266
+ });
267
+ });
268
+ describe("size", () => {
269
+ it("should return 0 for empty cache", () => {
270
+ expect(manager.size()).toBe(0);
271
+ });
272
+ it("should return correct count after loading", async () => {
273
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
274
+ mockAccess.mockResolvedValue(undefined);
275
+ mockReaddir.mockResolvedValue(["prompt1.md", "prompt2.md"]);
276
+ mockParsePromptFile.mockImplementation((filePath) => {
277
+ const name = filePath.includes("prompt1.md") ? "prompt1" : "prompt2";
278
+ return Promise.resolve({
279
+ name,
280
+ description: `${name} description`,
281
+ arguments: [],
282
+ userTemplate: `${name} template`,
283
+ });
284
+ });
285
+ await manager.load();
286
+ expect(manager.size()).toBe(2);
287
+ });
288
+ });
289
+ describe("clear", () => {
290
+ it("should clear all cached prompts", async () => {
291
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
292
+ mockAccess.mockResolvedValue(undefined);
293
+ mockReaddir.mockResolvedValue(["test.md"]);
294
+ mockParsePromptFile.mockResolvedValue({
295
+ name: "test",
296
+ description: "Test",
297
+ arguments: [],
298
+ userTemplate: "Test",
299
+ });
300
+ await manager.load();
301
+ expect(manager.size()).toBeGreaterThan(0);
302
+ manager.clear();
303
+ expect(manager.size()).toBe(0);
304
+ expect(manager.list()).toEqual([]);
305
+ expect(manager.has("test")).toBe(false);
306
+ expect(manager.get("test")).toBeUndefined();
307
+ });
308
+ it("should allow loading again after clear", async () => {
309
+ manager.clear();
310
+ mockAccess.mockResolvedValue(undefined);
311
+ mockReaddir.mockResolvedValue([]);
312
+ await manager.load();
313
+ // Should not throw and should complete normally
314
+ expect(manager.size()).toBe(0);
315
+ });
316
+ });
317
+ describe("promptPackage parameter", () => {
318
+ it("should default to 'basic' package when no parameter provided", () => {
319
+ const defaultManager = new PromptManager_js_1.PromptManager();
320
+ // Internal state not exposed, but we can test behavior through load()
321
+ expect(defaultManager).toBeDefined();
322
+ });
323
+ it("should accept custom package parameter", () => {
324
+ const customManager = new PromptManager_js_1.PromptManager("basic-claude");
325
+ expect(customManager).toBeDefined();
326
+ });
327
+ it("should use correct path for 'basic' package", async () => {
328
+ const basicManager = new PromptManager_js_1.PromptManager("basic");
329
+ mockAccess.mockRejectedValue(new Error("Directory not found"));
330
+ await basicManager.load();
331
+ // Verify the correct path was checked (basic package)
332
+ expect(mockAccess).toHaveBeenCalledWith(expect.stringContaining("resources/basic/prompts"));
333
+ });
334
+ it("should use correct path for 'basic-claude' package", async () => {
335
+ const claudeManager = new PromptManager_js_1.PromptManager("basic-claude");
336
+ mockAccess.mockRejectedValue(new Error("Directory not found"));
337
+ await claudeManager.load();
338
+ // Verify the correct path was checked (basic-claude package)
339
+ expect(mockAccess).toHaveBeenCalledWith(expect.stringContaining("resources/basic-claude/prompts"));
340
+ });
341
+ it("should include package name in error messages", async () => {
342
+ const claudeManager = new PromptManager_js_1.PromptManager("basic-claude");
343
+ mockAccess.mockRejectedValue(new Error("Directory not found"));
344
+ await claudeManager.load();
345
+ expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining("for package 'basic-claude'"));
346
+ });
347
+ it("should include package name in success messages", async () => {
348
+ const mockParsePromptFile = require("../PromptParser.js").parsePromptFile;
349
+ const claudeManager = new PromptManager_js_1.PromptManager("basic-claude");
350
+ mockAccess.mockResolvedValue(undefined);
351
+ mockReaddir.mockResolvedValue(["test.md"]);
352
+ const mockPrompt = {
353
+ name: "test-prompt",
354
+ description: "Test prompt",
355
+ arguments: [],
356
+ userTemplate: "Test template",
357
+ };
358
+ mockParsePromptFile.mockResolvedValue(mockPrompt);
359
+ await claudeManager.load();
360
+ expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining("from package 'basic-claude'"));
361
+ });
362
+ });
363
+ });
364
+ //# sourceMappingURL=PromptManager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptManager.test.js","sourceRoot":"","sources":["../../../src/prompts/__tests__/PromptManager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PromptParser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptParser.test.d.ts","sourceRoot":"","sources":["../../../src/prompts/__tests__/PromptParser.test.ts"],"names":[],"mappings":""}