memory-journal-mcp 7.1.0 → 7.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 (124) hide show
  1. package/README.md +59 -51
  2. package/dist/{chunk-GW5DYUQJ.js → chunk-CHWIPVQN.js} +174 -74
  3. package/dist/{chunk-37BQOJDZ.js → chunk-WXDEVIFL.js} +87 -8
  4. package/dist/{chunk-JEGRDY6W.js → chunk-ZJJD2F5T.js} +487 -89
  5. package/dist/cli.js +30 -4
  6. package/dist/github-integration-YODGZH3K.js +1 -0
  7. package/dist/index.d.ts +5 -1
  8. package/dist/index.js +3 -3
  9. package/dist/{tools-O44Q52RD.js → tools-MNMGDTQI.js} +2 -2
  10. package/package.json +4 -4
  11. package/skills/README.md +77 -0
  12. package/skills/autonomous-dev/SKILL.md +56 -0
  13. package/skills/bin/sync.js +50 -0
  14. package/skills/bun/SKILL.md +156 -0
  15. package/skills/github-commander/SKILL.md +1 -1
  16. package/skills/github-commander/workflows/code-quality-audit.md +7 -5
  17. package/skills/github-commander/workflows/issue-triage.md +13 -4
  18. package/skills/github-commander/workflows/milestone-sprint.md +9 -1
  19. package/skills/github-commander/workflows/perf-audit.md +2 -0
  20. package/skills/github-commander/workflows/pr-review.md +9 -3
  21. package/skills/github-commander/workflows/roadmap-kickoff.md +79 -0
  22. package/skills/github-commander/workflows/security-audit.md +3 -3
  23. package/skills/github-commander/workflows/update-deps.md +2 -2
  24. package/skills/gitlab/SKILL.md +115 -0
  25. package/skills/gitlab/package-lock.json +392 -0
  26. package/skills/gitlab/package.json +14 -0
  27. package/skills/gitlab/scripts/gitlab-client.ts +125 -0
  28. package/skills/gitlab/scripts/gitlab-helper.ts +80 -0
  29. package/skills/golang/SKILL.md +54 -0
  30. package/skills/mysql/SKILL.md +30 -0
  31. package/skills/package.json +48 -0
  32. package/skills/playwright-standard/SKILL.md +58 -0
  33. package/skills/playwright-standard/examples/fixtures.ts +66 -0
  34. package/skills/playwright-standard/examples/type-stubs.d.ts +10 -0
  35. package/skills/playwright-standard/references/advanced-scenarios.md +59 -0
  36. package/skills/playwright-standard/references/infrastructure.md +43 -0
  37. package/skills/postgres/SKILL.md +33 -0
  38. package/skills/react-best-practices/AGENTS.md +2883 -0
  39. package/skills/react-best-practices/README.md +127 -0
  40. package/skills/react-best-practices/SKILL.md +138 -0
  41. package/skills/react-best-practices/metadata.json +17 -0
  42. package/skills/react-best-practices/rules/_sections.md +46 -0
  43. package/skills/react-best-practices/rules/_template.md +28 -0
  44. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  45. package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  46. package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  47. package/skills/react-best-practices/rules/async-api-routes.md +35 -0
  48. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  49. package/skills/react-best-practices/rules/async-dependencies.md +48 -0
  50. package/skills/react-best-practices/rules/async-parallel.md +24 -0
  51. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  52. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  53. package/skills/react-best-practices/rules/bundle-conditional.md +37 -0
  54. package/skills/react-best-practices/rules/bundle-defer-third-party.md +48 -0
  55. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +34 -0
  56. package/skills/react-best-practices/rules/bundle-preload.md +44 -0
  57. package/skills/react-best-practices/rules/client-event-listeners.md +78 -0
  58. package/skills/react-best-practices/rules/client-localstorage-schema.md +74 -0
  59. package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  60. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  61. package/skills/react-best-practices/rules/js-batch-dom-css.md +110 -0
  62. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  63. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  64. package/skills/react-best-practices/rules/js-cache-storage.md +68 -0
  65. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  66. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  67. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  68. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  69. package/skills/react-best-practices/rules/js-length-check-first.md +50 -0
  70. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  71. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  72. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  73. package/skills/react-best-practices/rules/rendering-activity.md +24 -0
  74. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +38 -0
  75. package/skills/react-best-practices/rules/rendering-conditional-render.md +32 -0
  76. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  77. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +36 -0
  78. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +72 -0
  79. package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +26 -0
  80. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  81. package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  82. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  83. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  84. package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  85. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  86. package/skills/react-best-practices/rules/rerender-functional-setstate.md +77 -0
  87. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +56 -0
  88. package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +36 -0
  89. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  90. package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  91. package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  92. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  93. package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  94. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  95. package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  96. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  97. package/skills/react-best-practices/rules/server-cache-react.md +76 -0
  98. package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  99. package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  100. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  101. package/skills/rust/SKILL.md +86 -0
  102. package/skills/shadcn-ui/SKILL.md +72 -0
  103. package/skills/skill-builder/SKILL.md +457 -0
  104. package/skills/skill-builder/checklist.md +65 -0
  105. package/skills/sqlite/SKILL.md +38 -0
  106. package/skills/typescript/SKILL.md +453 -0
  107. package/skills/typescript/assets/eslint-template.js +102 -0
  108. package/skills/typescript/assets/tsconfig-template.json +45 -0
  109. package/skills/typescript/references/enterprise-patterns.md +531 -0
  110. package/skills/typescript/references/generics.md +493 -0
  111. package/skills/typescript/references/nestjs-integration.md +579 -0
  112. package/skills/typescript/references/react-integration.md +616 -0
  113. package/skills/typescript/references/toolchain.md +547 -0
  114. package/skills/typescript/references/type-system.md +481 -0
  115. package/skills/vitest-standard/SKILL.md +82 -0
  116. package/skills/vitest-standard/examples/service-mock.ts +60 -0
  117. package/skills/vitest-standard/examples/tdd-calculator.ts +41 -0
  118. package/skills/vitest-standard/examples/type-stubs.d.ts +18 -0
  119. package/skills/vitest-standard/references/async-and-errors.md +58 -0
  120. package/skills/vitest-standard/references/coverage-and-config.md +53 -0
  121. package/skills/vitest-standard/references/mocking.md +61 -0
  122. package/skills/vitest-standard/references/tdd-patterns.md +60 -0
  123. package/dist/github-integration-FOJ4U6I5.js +0 -1
  124. package/skills/github-commander/workflows/full-audit.md +0 -134
@@ -35,7 +35,7 @@ var ERROR_SUGGESTIONS = [
35
35
  {
36
36
  pattern: /SQLITE_CONSTRAINT|unique constraint/i,
37
37
  suggestion: "A uniqueness or integrity constraint was violated. Check input values.",
38
- code: "VALIDATION_FAILED"
38
+ code: "VALIDATION_ERROR"
39
39
  },
40
40
  // Disk / space patterns
41
41
  {
@@ -46,18 +46,18 @@ var ERROR_SUGGESTIONS = [
46
46
  {
47
47
  pattern: /malformed|invalid json|unexpected token/i,
48
48
  suggestion: "The input appears malformed. Check the format and try again.",
49
- code: "VALIDATION_FAILED"
49
+ code: "VALIDATION_ERROR"
50
50
  },
51
51
  // Schema / types patterns
52
52
  {
53
53
  pattern: /invalid input syntax for type|requires a.*column/i,
54
54
  suggestion: "The provided value is not valid for the assigned type.",
55
- code: "VALIDATION_FAILED"
55
+ code: "VALIDATION_ERROR"
56
56
  },
57
57
  {
58
58
  pattern: /^Missing required parameters:/i,
59
59
  suggestion: "Provide all required parameters in your request.",
60
- code: "VALIDATION_FAILED"
60
+ code: "VALIDATION_ERROR"
61
61
  },
62
62
  // Codemode / Sandbox patterns
63
63
  {
@@ -68,7 +68,7 @@ var ERROR_SUGGESTIONS = [
68
68
  {
69
69
  pattern: /code validation failed/i,
70
70
  suggestion: "Check for blocked patterns. Use mj.* API instead.",
71
- code: "VALIDATION_FAILED"
71
+ code: "VALIDATION_ERROR"
72
72
  },
73
73
  {
74
74
  pattern: /sandbox.*not initialized/i,
@@ -148,7 +148,7 @@ var QueryError = class extends MemoryJournalMcpError {
148
148
  };
149
149
  var ValidationError = class extends MemoryJournalMcpError {
150
150
  constructor(message, details) {
151
- super(message, "VALIDATION_FAILED", "validation" /* VALIDATION */, {
151
+ super(message, "VALIDATION_ERROR", "validation" /* VALIDATION */, {
152
152
  suggestion: "Check input parameters against the tool schema",
153
153
  recoverable: false,
154
154
  details
@@ -496,6 +496,40 @@ var IssuesManager = class {
496
496
  return null;
497
497
  }
498
498
  }
499
+ async getIssueComments(owner, repo, issueNumber, limit = 30) {
500
+ const _limit = Math.min(limit, 100);
501
+ if (_limit <= 0) return [];
502
+ if (!this.client.octokit) {
503
+ return [];
504
+ }
505
+ const cacheKey = `issue-comments:${owner}:${repo}:${String(issueNumber)}:${String(_limit)}`;
506
+ const cached = this.client.getCached(cacheKey);
507
+ if (cached) return cached;
508
+ try {
509
+ const response = await this.client.octokit.issues.listComments({
510
+ owner,
511
+ repo,
512
+ issue_number: issueNumber,
513
+ per_page: _limit,
514
+ sort: "created",
515
+ direction: "asc"
516
+ });
517
+ const comments = response.data.slice(0, _limit).map((comment) => ({
518
+ author: comment.user?.login ?? "unknown",
519
+ body: comment.body ?? "",
520
+ createdAt: comment.created_at
521
+ }));
522
+ this.client.setCache(cacheKey, comments);
523
+ return comments;
524
+ } catch (error) {
525
+ logger.error("Failed to get issue comments", {
526
+ module: "GitHub",
527
+ entityId: issueNumber,
528
+ error: error instanceof Error ? error.message : String(error)
529
+ });
530
+ return [];
531
+ }
532
+ }
499
533
  async createIssue(owner, repo, title, body, labels, assignees, milestone) {
500
534
  if (!this.client.octokit) {
501
535
  logger.error("Cannot create issue: GitHub API not available", { module: "GitHub" });
@@ -1034,7 +1068,9 @@ var ProjectsManager = class {
1034
1068
  });
1035
1069
  return { success: false, error: errorMessage };
1036
1070
  } finally {
1037
- this.client.invalidateCache("kanban:");
1071
+ if (typeof this.client.invalidateCache === "function") {
1072
+ this.client.invalidateCache("kanban:");
1073
+ }
1038
1074
  }
1039
1075
  }
1040
1076
  async addProjectItem(projectId, contentId) {
@@ -1070,7 +1106,44 @@ var ProjectsManager = class {
1070
1106
  });
1071
1107
  return { success: false, error: errorMessage };
1072
1108
  } finally {
1073
- this.client.invalidateCache("kanban:");
1109
+ if (typeof this.client.invalidateCache === "function") {
1110
+ this.client.invalidateCache("kanban:");
1111
+ }
1112
+ }
1113
+ }
1114
+ async deleteProjectItem(projectId, itemId) {
1115
+ if (!this.client.graphqlWithAuth) {
1116
+ return { success: false, error: "GraphQL not available - no token" };
1117
+ }
1118
+ try {
1119
+ const mutation = `
1120
+ mutation($projectId: ID!, $itemId: ID!) {
1121
+ deleteProjectV2Item(input: { projectId: $projectId, itemId: $itemId }) {
1122
+ deletedItemId
1123
+ }
1124
+ }
1125
+ `;
1126
+ await this.client.graphqlWithAuth(mutation, {
1127
+ projectId,
1128
+ itemId
1129
+ });
1130
+ logger.info("Deleted project item", {
1131
+ module: "GitHub",
1132
+ context: { projectId, itemId }
1133
+ });
1134
+ return { success: true };
1135
+ } catch (error) {
1136
+ const errorMessage = error instanceof Error ? error.message : String(error);
1137
+ logger.error("Failed to delete item from project", {
1138
+ module: "GitHub",
1139
+ context: { projectId, itemId },
1140
+ error: errorMessage
1141
+ });
1142
+ return { success: false, error: errorMessage };
1143
+ } finally {
1144
+ if (typeof this.client.invalidateCache === "function") {
1145
+ this.client.invalidateCache("kanban:");
1146
+ }
1074
1147
  }
1075
1148
  }
1076
1149
  };
@@ -1540,6 +1613,9 @@ var GitHubIntegration = class {
1540
1613
  async getIssue(owner, repo, issueNumber) {
1541
1614
  return this.issuesManager.getIssue(owner, repo, issueNumber);
1542
1615
  }
1616
+ async getIssueComments(owner, repo, issueNumber, limit = 30) {
1617
+ return this.issuesManager.getIssueComments(owner, repo, issueNumber, limit);
1618
+ }
1543
1619
  async createIssue(owner, repo, title, body, labels, assignees, milestone) {
1544
1620
  return this.issuesManager.createIssue(
1545
1621
  owner,
@@ -1634,6 +1710,9 @@ var GitHubIntegration = class {
1634
1710
  async addProjectItem(projectId, contentId) {
1635
1711
  return this.projectsManager.addProjectItem(projectId, contentId);
1636
1712
  }
1713
+ async deleteProjectItem(projectId, itemId) {
1714
+ return this.projectsManager.deleteProjectItem(projectId, itemId);
1715
+ }
1637
1716
  async getMilestones(owner, repo, state = "open", limit = 20) {
1638
1717
  return this.milestonesManager.getMilestones(owner, repo, state, limit);
1639
1718
  }