@projitive/mcp 1.0.0 → 1.0.2

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 (33) hide show
  1. package/README.md +29 -1
  2. package/output/helpers/artifacts/artifacts.js +10 -0
  3. package/output/helpers/artifacts/artifacts.test.js +18 -0
  4. package/output/helpers/artifacts/index.js +1 -0
  5. package/output/helpers/index.js +3 -0
  6. package/output/helpers/linter/codes.js +25 -0
  7. package/output/helpers/linter/index.js +2 -0
  8. package/output/helpers/linter/linter.js +6 -0
  9. package/output/helpers/linter/linter.test.js +16 -0
  10. package/output/helpers/response/index.js +1 -0
  11. package/output/helpers/response/response.js +73 -0
  12. package/output/helpers/response/response.test.js +50 -0
  13. package/output/index.js +1 -0
  14. package/output/projitive.js +252 -97
  15. package/output/projitive.test.js +29 -1
  16. package/output/rendering-input-guard.test.js +20 -0
  17. package/output/roadmap.js +106 -80
  18. package/output/roadmap.test.js +11 -0
  19. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectContext.md +48 -0
  20. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectInit.md +40 -0
  21. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectLocate.md +22 -0
  22. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectNext.md +31 -0
  23. package/output/smoke-reports/2026-02-18T13-18-19-740Z/projectScan.md +28 -0
  24. package/output/smoke-reports/2026-02-18T13-18-19-740Z/roadmapContext.md +33 -0
  25. package/output/smoke-reports/2026-02-18T13-18-19-740Z/roadmapList.md +25 -0
  26. package/output/smoke-reports/2026-02-18T13-18-19-740Z/summary.json +90 -0
  27. package/output/smoke-reports/2026-02-18T13-18-19-740Z/summary.md +17 -0
  28. package/output/smoke-reports/2026-02-18T13-18-19-740Z/taskContext.md +47 -0
  29. package/output/smoke-reports/2026-02-18T13-18-19-740Z/taskList.md +27 -0
  30. package/output/smoke-reports/2026-02-18T13-18-19-740Z/taskNext.md +64 -0
  31. package/output/tasks.js +341 -162
  32. package/output/tasks.test.js +51 -1
  33. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { TASKS_END, TASKS_START, isValidTaskId, normalizeTask, parseTasksBlock, rankActionableTaskCandidates, renderTasksMarkdown, taskPriority, toTaskUpdatedAtMs, validateTransition, } from "./tasks.js";
2
+ import { TASKS_END, TASKS_START, collectTaskLintSuggestions, isValidTaskId, normalizeTask, parseTasksBlock, rankActionableTaskCandidates, renderTasksMarkdown, taskPriority, toTaskUpdatedAtMs, validateTransition, } from "./tasks.js";
3
3
  function buildCandidate(partial) {
4
4
  const task = normalizeTask({
5
5
  id: partial.id,
@@ -75,4 +75,54 @@ describe("tasks module", () => {
75
75
  expect(ranked[1].task.id).toBe("TASK-0002");
76
76
  expect(ranked[2].task.id).toBe("TASK-0001");
77
77
  });
78
+ it("renders lint lines with stable code prefix", () => {
79
+ const task = normalizeTask({
80
+ id: "TASK-0001",
81
+ title: "lint",
82
+ status: "IN_PROGRESS",
83
+ owner: "",
84
+ roadmapRefs: [],
85
+ });
86
+ const lint = collectTaskLintSuggestions([task]);
87
+ expect(lint.some((line) => line.startsWith("- [TASK_IN_PROGRESS_OWNER_EMPTY]"))).toBe(true);
88
+ expect(lint.some((line) => line.startsWith("- [TASK_ROADMAP_REFS_EMPTY]"))).toBe(true);
89
+ });
90
+ it("scopes outside-marker lint to provided task IDs", () => {
91
+ const tasks = [
92
+ normalizeTask({ id: "TASK-0001", title: "A", status: "TODO", roadmapRefs: ["ROADMAP-0001"] }),
93
+ normalizeTask({ id: "TASK-0002", title: "B", status: "TODO", roadmapRefs: ["ROADMAP-0001"] }),
94
+ ];
95
+ const markdown = [
96
+ "# Tasks",
97
+ "TASK-0002 outside",
98
+ "TASK-0003 outside",
99
+ TASKS_START,
100
+ "## TASK-0001 | TODO | A",
101
+ "- owner: (none)",
102
+ "- summary: (none)",
103
+ "- updatedAt: 2026-02-18T00:00:00.000Z",
104
+ "- roadmapRefs: ROADMAP-0001",
105
+ "- links:",
106
+ " - (none)",
107
+ "- hooks:",
108
+ " - (none)",
109
+ "## TASK-0002 | TODO | B",
110
+ "- owner: (none)",
111
+ "- summary: (none)",
112
+ "- updatedAt: 2026-02-18T00:00:00.000Z",
113
+ "- roadmapRefs: ROADMAP-0001",
114
+ "- links:",
115
+ " - (none)",
116
+ "- hooks:",
117
+ " - (none)",
118
+ TASKS_END,
119
+ ].join("\n");
120
+ const scoped = collectTaskLintSuggestions(tasks, markdown, new Set(["TASK-0001"]));
121
+ const scopedOutside = scoped.find((line) => line.includes("TASK IDs found outside marker block"));
122
+ expect(scopedOutside).toBeUndefined();
123
+ const all = collectTaskLintSuggestions(tasks, markdown);
124
+ const allOutside = all.find((line) => line.includes("TASK IDs found outside marker block"));
125
+ expect(allOutside).toContain("TASK-0002");
126
+ expect(allOutside).toContain("TASK-0003");
127
+ });
78
128
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projitive/mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Projitive MCP Server for project and task discovery/update",
5
5
  "license": "ISC",
6
6
  "author": "",