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.
- package/README.md +59 -51
- package/dist/{chunk-GW5DYUQJ.js → chunk-CHWIPVQN.js} +174 -74
- package/dist/{chunk-37BQOJDZ.js → chunk-WXDEVIFL.js} +87 -8
- package/dist/{chunk-JEGRDY6W.js → chunk-ZJJD2F5T.js} +487 -89
- package/dist/cli.js +30 -4
- package/dist/github-integration-YODGZH3K.js +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +3 -3
- package/dist/{tools-O44Q52RD.js → tools-MNMGDTQI.js} +2 -2
- package/package.json +4 -4
- package/skills/README.md +77 -0
- package/skills/autonomous-dev/SKILL.md +56 -0
- package/skills/bin/sync.js +50 -0
- package/skills/bun/SKILL.md +156 -0
- package/skills/github-commander/SKILL.md +1 -1
- package/skills/github-commander/workflows/code-quality-audit.md +7 -5
- package/skills/github-commander/workflows/issue-triage.md +13 -4
- package/skills/github-commander/workflows/milestone-sprint.md +9 -1
- package/skills/github-commander/workflows/perf-audit.md +2 -0
- package/skills/github-commander/workflows/pr-review.md +9 -3
- package/skills/github-commander/workflows/roadmap-kickoff.md +79 -0
- package/skills/github-commander/workflows/security-audit.md +3 -3
- package/skills/github-commander/workflows/update-deps.md +2 -2
- package/skills/gitlab/SKILL.md +115 -0
- package/skills/gitlab/package-lock.json +392 -0
- package/skills/gitlab/package.json +14 -0
- package/skills/gitlab/scripts/gitlab-client.ts +125 -0
- package/skills/gitlab/scripts/gitlab-helper.ts +80 -0
- package/skills/golang/SKILL.md +54 -0
- package/skills/mysql/SKILL.md +30 -0
- package/skills/package.json +48 -0
- package/skills/playwright-standard/SKILL.md +58 -0
- package/skills/playwright-standard/examples/fixtures.ts +66 -0
- package/skills/playwright-standard/examples/type-stubs.d.ts +10 -0
- package/skills/playwright-standard/references/advanced-scenarios.md +59 -0
- package/skills/playwright-standard/references/infrastructure.md +43 -0
- package/skills/postgres/SKILL.md +33 -0
- package/skills/react-best-practices/AGENTS.md +2883 -0
- package/skills/react-best-practices/README.md +127 -0
- package/skills/react-best-practices/SKILL.md +138 -0
- package/skills/react-best-practices/metadata.json +17 -0
- package/skills/react-best-practices/rules/_sections.md +46 -0
- package/skills/react-best-practices/rules/_template.md +28 -0
- package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/react-best-practices/rules/async-api-routes.md +35 -0
- package/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/react-best-practices/rules/async-dependencies.md +48 -0
- package/skills/react-best-practices/rules/async-parallel.md +24 -0
- package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/react-best-practices/rules/bundle-conditional.md +37 -0
- package/skills/react-best-practices/rules/bundle-defer-third-party.md +48 -0
- package/skills/react-best-practices/rules/bundle-dynamic-imports.md +34 -0
- package/skills/react-best-practices/rules/bundle-preload.md +44 -0
- package/skills/react-best-practices/rules/client-event-listeners.md +78 -0
- package/skills/react-best-practices/rules/client-localstorage-schema.md +74 -0
- package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/react-best-practices/rules/js-batch-dom-css.md +110 -0
- package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/react-best-practices/rules/js-cache-storage.md +68 -0
- package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/react-best-practices/rules/js-length-check-first.md +50 -0
- package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/react-best-practices/rules/rendering-activity.md +24 -0
- package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +38 -0
- package/skills/react-best-practices/rules/rendering-conditional-render.md +32 -0
- package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/react-best-practices/rules/rendering-hoist-jsx.md +36 -0
- package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +72 -0
- package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +26 -0
- package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/react-best-practices/rules/rerender-functional-setstate.md +77 -0
- package/skills/react-best-practices/rules/rerender-lazy-state-init.md +56 -0
- package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +36 -0
- package/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/rust/SKILL.md +86 -0
- package/skills/shadcn-ui/SKILL.md +72 -0
- package/skills/skill-builder/SKILL.md +457 -0
- package/skills/skill-builder/checklist.md +65 -0
- package/skills/sqlite/SKILL.md +38 -0
- package/skills/typescript/SKILL.md +453 -0
- package/skills/typescript/assets/eslint-template.js +102 -0
- package/skills/typescript/assets/tsconfig-template.json +45 -0
- package/skills/typescript/references/enterprise-patterns.md +531 -0
- package/skills/typescript/references/generics.md +493 -0
- package/skills/typescript/references/nestjs-integration.md +579 -0
- package/skills/typescript/references/react-integration.md +616 -0
- package/skills/typescript/references/toolchain.md +547 -0
- package/skills/typescript/references/type-system.md +481 -0
- package/skills/vitest-standard/SKILL.md +82 -0
- package/skills/vitest-standard/examples/service-mock.ts +60 -0
- package/skills/vitest-standard/examples/tdd-calculator.ts +41 -0
- package/skills/vitest-standard/examples/type-stubs.d.ts +18 -0
- package/skills/vitest-standard/references/async-and-errors.md +58 -0
- package/skills/vitest-standard/references/coverage-and-config.md +53 -0
- package/skills/vitest-standard/references/mocking.md +61 -0
- package/skills/vitest-standard/references/tdd-patterns.md +60 -0
- package/dist/github-integration-FOJ4U6I5.js +0 -1
- 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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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, "
|
|
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
|
|
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
|
|
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
|
}
|