@danielmarbach/mnemonic-mcp 0.27.2 ā 0.28.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/CHANGELOG.md +19 -0
- package/build/auto-relate.d.ts.map +1 -1
- package/build/auto-relate.js +11 -5
- package/build/auto-relate.js.map +1 -1
- package/build/brands.d.ts +38 -0
- package/build/brands.d.ts.map +1 -0
- package/build/brands.js +51 -0
- package/build/brands.js.map +1 -0
- package/build/cache.d.ts.map +1 -1
- package/build/cache.js +2 -4
- package/build/cache.js.map +1 -1
- package/build/cli/import-claude-memory.d.ts +4 -0
- package/build/cli/import-claude-memory.d.ts.map +1 -0
- package/build/cli/import-claude-memory.js +144 -0
- package/build/cli/import-claude-memory.js.map +1 -0
- package/build/cli/migrate.d.ts +2 -0
- package/build/cli/migrate.d.ts.map +1 -0
- package/build/cli/migrate.js +104 -0
- package/build/cli/migrate.js.map +1 -0
- package/build/config.d.ts +2 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +41 -14
- package/build/config.js.map +1 -1
- package/build/consolidate.d.ts +2 -1
- package/build/consolidate.d.ts.map +1 -1
- package/build/consolidate.js +3 -6
- package/build/consolidate.js.map +1 -1
- package/build/context.d.ts +5 -0
- package/build/context.d.ts.map +1 -0
- package/build/context.js +41 -0
- package/build/context.js.map +1 -0
- package/build/date-utils.d.ts +3 -0
- package/build/date-utils.d.ts.map +1 -0
- package/build/date-utils.js +10 -0
- package/build/date-utils.js.map +1 -0
- package/build/embeddings.d.ts +2 -1
- package/build/embeddings.d.ts.map +1 -1
- package/build/embeddings.js +24 -2
- package/build/embeddings.js.map +1 -1
- package/build/error-utils.d.ts +3 -0
- package/build/error-utils.d.ts.map +1 -0
- package/build/error-utils.js +9 -0
- package/build/error-utils.js.map +1 -0
- package/build/git-constants.d.ts +2 -0
- package/build/git-constants.d.ts.map +1 -0
- package/build/git-constants.js +2 -0
- package/build/git-constants.js.map +1 -0
- package/build/git.d.ts +27 -18
- package/build/git.d.ts.map +1 -1
- package/build/git.js +39 -22
- package/build/git.js.map +1 -1
- package/build/helpers/embed.d.ts +13 -0
- package/build/helpers/embed.d.ts.map +1 -0
- package/build/helpers/embed.js +70 -0
- package/build/helpers/embed.js.map +1 -0
- package/build/helpers/git-commit.d.ts +43 -0
- package/build/helpers/git-commit.d.ts.map +1 -0
- package/build/helpers/git-commit.js +129 -0
- package/build/helpers/git-commit.js.map +1 -0
- package/build/helpers/index.d.ts +19 -0
- package/build/helpers/index.d.ts.map +1 -0
- package/build/helpers/index.js +83 -0
- package/build/helpers/index.js.map +1 -0
- package/build/helpers/persistence.d.ts +34 -0
- package/build/helpers/persistence.d.ts.map +1 -0
- package/build/helpers/persistence.js +176 -0
- package/build/helpers/persistence.js.map +1 -0
- package/build/helpers/project.d.ts +21 -0
- package/build/helpers/project.d.ts.map +1 -0
- package/build/helpers/project.js +75 -0
- package/build/helpers/project.js.map +1 -0
- package/build/helpers/vault.d.ts +50 -0
- package/build/helpers/vault.d.ts.map +1 -0
- package/build/helpers/vault.js +196 -0
- package/build/helpers/vault.js.map +1 -0
- package/build/index.js +12 -5467
- package/build/index.js.map +1 -1
- package/build/lexical.d.ts +1 -1
- package/build/lexical.d.ts.map +1 -1
- package/build/lexical.js +2 -3
- package/build/lexical.js.map +1 -1
- package/build/markdown-ast.d.ts.map +1 -1
- package/build/markdown-ast.js +4 -2
- package/build/markdown-ast.js.map +1 -1
- package/build/migration.d.ts.map +1 -1
- package/build/migration.js +6 -5
- package/build/migration.js.map +1 -1
- package/build/project-introspection.d.ts +4 -4
- package/build/project-introspection.d.ts.map +1 -1
- package/build/project-introspection.js +68 -26
- package/build/project-introspection.js.map +1 -1
- package/build/project-memory-policy.d.ts.map +1 -1
- package/build/project-memory-policy.js +38 -3
- package/build/project-memory-policy.js.map +1 -1
- package/build/project.d.ts +2 -1
- package/build/project.d.ts.map +1 -1
- package/build/project.js +5 -4
- package/build/project.js.map +1 -1
- package/build/projections.d.ts.map +1 -1
- package/build/projections.js +2 -1
- package/build/projections.js.map +1 -1
- package/build/prompts.d.ts +3 -0
- package/build/prompts.d.ts.map +1 -0
- package/build/prompts.js +138 -0
- package/build/prompts.js.map +1 -0
- package/build/provenance.d.ts +1 -1
- package/build/provenance.d.ts.map +1 -1
- package/build/provenance.js +8 -11
- package/build/provenance.js.map +1 -1
- package/build/recall.d.ts +2 -1
- package/build/recall.d.ts.map +1 -1
- package/build/recall.js +29 -14
- package/build/recall.js.map +1 -1
- package/build/relationships.d.ts +2 -2
- package/build/relationships.d.ts.map +1 -1
- package/build/relationships.js +34 -38
- package/build/relationships.js.map +1 -1
- package/build/semantic-patch.d.ts.map +1 -1
- package/build/semantic-patch.js +10 -4
- package/build/semantic-patch.js.map +1 -1
- package/build/server-context.d.ts +18 -0
- package/build/server-context.d.ts.map +1 -0
- package/build/server-context.js +2 -0
- package/build/server-context.js.map +1 -0
- package/build/startup.d.ts +5 -0
- package/build/startup.d.ts.map +1 -0
- package/build/startup.js +37 -0
- package/build/startup.js.map +1 -0
- package/build/storage.d.ts +17 -15
- package/build/storage.d.ts.map +1 -1
- package/build/storage.js +32 -40
- package/build/storage.js.map +1 -1
- package/build/structured-content.d.ts +81 -74
- package/build/structured-content.d.ts.map +1 -1
- package/build/structured-content.js +25 -17
- package/build/structured-content.js.map +1 -1
- package/build/temporal-interpretation.d.ts +2 -1
- package/build/temporal-interpretation.d.ts.map +1 -1
- package/build/temporal-interpretation.js +13 -7
- package/build/temporal-interpretation.js.map +1 -1
- package/build/tools/consolidate-helpers.d.ts +55 -0
- package/build/tools/consolidate-helpers.d.ts.map +1 -0
- package/build/tools/consolidate-helpers.js +815 -0
- package/build/tools/consolidate-helpers.js.map +1 -0
- package/build/tools/consolidate.d.ts +4 -0
- package/build/tools/consolidate.d.ts.map +1 -0
- package/build/tools/consolidate.js +127 -0
- package/build/tools/consolidate.js.map +1 -0
- package/build/tools/detect-project.d.ts +6 -0
- package/build/tools/detect-project.d.ts.map +1 -0
- package/build/tools/detect-project.js +79 -0
- package/build/tools/detect-project.js.map +1 -0
- package/build/tools/discover-tags.d.ts +4 -0
- package/build/tools/discover-tags.d.ts.map +1 -0
- package/build/tools/discover-tags.js +236 -0
- package/build/tools/discover-tags.js.map +1 -0
- package/build/tools/forget.d.ts +4 -0
- package/build/tools/forget.d.ts.map +1 -0
- package/build/tools/forget.js +123 -0
- package/build/tools/forget.js.map +1 -0
- package/build/tools/get-project-identity.d.ts +4 -0
- package/build/tools/get-project-identity.d.ts.map +1 -0
- package/build/tools/get-project-identity.js +59 -0
- package/build/tools/get-project-identity.js.map +1 -0
- package/build/tools/get.d.ts +4 -0
- package/build/tools/get.d.ts.map +1 -0
- package/build/tools/get.js +115 -0
- package/build/tools/get.js.map +1 -0
- package/build/tools/index.d.ts +4 -0
- package/build/tools/index.d.ts.map +1 -0
- package/build/tools/index.js +47 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/list.d.ts +4 -0
- package/build/tools/list.d.ts.map +1 -0
- package/build/tools/list.js +95 -0
- package/build/tools/list.js.map +1 -0
- package/build/tools/memory-graph.d.ts +4 -0
- package/build/tools/memory-graph.d.ts.map +1 -0
- package/build/tools/memory-graph.js +84 -0
- package/build/tools/memory-graph.js.map +1 -0
- package/build/tools/migration.d.ts +5 -0
- package/build/tools/migration.d.ts.map +1 -0
- package/build/tools/migration.js +157 -0
- package/build/tools/migration.js.map +1 -0
- package/build/tools/move-memory.d.ts +4 -0
- package/build/tools/move-memory.d.ts.map +1 -0
- package/build/tools/move-memory.js +170 -0
- package/build/tools/move-memory.js.map +1 -0
- package/build/tools/policy.d.ts +5 -0
- package/build/tools/policy.d.ts.map +1 -0
- package/build/tools/policy.js +195 -0
- package/build/tools/policy.js.map +1 -0
- package/build/tools/project-memory-summary.d.ts +4 -0
- package/build/tools/project-memory-summary.d.ts.map +1 -0
- package/build/tools/project-memory-summary.js +477 -0
- package/build/tools/project-memory-summary.js.map +1 -0
- package/build/tools/recall-helpers.d.ts +28 -0
- package/build/tools/recall-helpers.d.ts.map +1 -0
- package/build/tools/recall-helpers.js +137 -0
- package/build/tools/recall-helpers.js.map +1 -0
- package/build/tools/recall.d.ts +4 -0
- package/build/tools/recall.d.ts.map +1 -0
- package/build/tools/recall.js +343 -0
- package/build/tools/recall.js.map +1 -0
- package/build/tools/recent-memories.d.ts +4 -0
- package/build/tools/recent-memories.d.ts.map +1 -0
- package/build/tools/recent-memories.js +79 -0
- package/build/tools/recent-memories.js.map +1 -0
- package/build/tools/relate.d.ts +4 -0
- package/build/tools/relate.d.ts.map +1 -0
- package/build/tools/relate.js +180 -0
- package/build/tools/relate.js.map +1 -0
- package/build/tools/remember.d.ts +4 -0
- package/build/tools/remember.d.ts.map +1 -0
- package/build/tools/remember.js +219 -0
- package/build/tools/remember.js.map +1 -0
- package/build/tools/set-project-identity.d.ts +4 -0
- package/build/tools/set-project-identity.d.ts.map +1 -0
- package/build/tools/set-project-identity.js +113 -0
- package/build/tools/set-project-identity.js.map +1 -0
- package/build/tools/sync.d.ts +4 -0
- package/build/tools/sync.d.ts.map +1 -0
- package/build/tools/sync.js +127 -0
- package/build/tools/sync.js.map +1 -0
- package/build/tools/unrelate.d.ts +4 -0
- package/build/tools/unrelate.d.ts.map +1 -0
- package/build/tools/unrelate.js +179 -0
- package/build/tools/unrelate.js.map +1 -0
- package/build/tools/update.d.ts +4 -0
- package/build/tools/update.d.ts.map +1 -0
- package/build/tools/update.js +365 -0
- package/build/tools/update.js.map +1 -0
- package/build/tools/where-is-memory.d.ts +4 -0
- package/build/tools/where-is-memory.d.ts.map +1 -0
- package/build/tools/where-is-memory.js +61 -0
- package/build/tools/where-is-memory.js.map +1 -0
- package/build/validation.d.ts +24 -0
- package/build/validation.d.ts.map +1 -0
- package/build/validation.js +62 -0
- package/build/validation.js.map +1 -0
- package/build/vault.d.ts.map +1 -1
- package/build/vault.js +11 -5
- package/build/vault.js.map +1 -1
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,25 @@ The format is loosely based on Keep a Changelog and uses semver-style version he
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.28.0] - 2026-05-03
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Recall and note handling pipelines are now protected against undefined-index crashes through stricter TypeScript compilation with exhaustive switch guards on union types.
|
|
14
|
+
- Branded types now validate note IDs, project IDs, embedding model IDs, and ISO dates at trust boundaries, replacing unsafe type casts with validation and narrowing.
|
|
15
|
+
- Union type literals are now single-source const arrays with derived Zod enums, ensuring runtime values and schema definitions stay synchronized.
|
|
16
|
+
- The monolithic `index.ts` has been split into dedicated modules for tools, helpers, CLI commands, and server context. No functional changes ā pure structural refactoring that improves maintainability and testability.
|
|
17
|
+
- Project config lookups are now cached in memory, eliminating redundant file reads on repeated policy and identity queries.
|
|
18
|
+
- The markdown AST processor is now reused across note parsing calls, improving throughput on repeated operations.
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Note IDs and remote names are now regex-validated at the MCP boundary, preventing path traversal from malformed identifiers.
|
|
23
|
+
- `OLLAMA_URL` is now validated against SSRF patterns before use.
|
|
24
|
+
- Branch pattern matching now uses safe regex construction, preventing ReDoS from crafted branch names.
|
|
25
|
+
- JSON.parse results at trust boundaries (embeddings, projections, frontmatter relationships) are now validated through Zod schemas, preventing corrupted local data from silently propagating.
|
|
26
|
+
- Title and content inputs now have defense-in-depth size limits (500 and 100,000 characters respectively).
|
|
27
|
+
|
|
9
28
|
## [0.27.2] - 2026-05-01
|
|
10
29
|
|
|
11
30
|
### Fixed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-relate.d.ts","sourceRoot":"","sources":["../src/auto-relate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"auto-relate.d.ts","sourceRoot":"","sources":["../src/auto-relate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyDD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,sBAAsB,EAAE,GACnC,YAAY,EAAE,CAgChB"}
|
package/build/auto-relate.js
CHANGED
|
@@ -3,6 +3,12 @@ import { computeLexicalScore, normalizeText, tokenize } from "./lexical.js";
|
|
|
3
3
|
const MIN_TITLE_MENTION_LENGTH = 12;
|
|
4
4
|
const MAX_AUTO_RELATIONSHIPS = 2;
|
|
5
5
|
const STRONG_OVERLAP_THRESHOLD = 0.42;
|
|
6
|
+
// Scoring weights for auto-relationship suggestion
|
|
7
|
+
const AUTO_RELATE_LEXICAL_WEIGHT = 0.45; // Weight for lexical overlap score
|
|
8
|
+
const AUTO_RELATE_TITLE_OVERLAP_WEIGHT = 0.2; // Weight for title token overlap
|
|
9
|
+
const AUTO_RELATE_TAG_WEIGHT_PER_SHARED = 0.08; // Per shared tag (capped at 3 tags)
|
|
10
|
+
const AUTO_RELATE_RECENCY_WEIGHT = 0.05; // Weight for recency-based boost
|
|
11
|
+
const AUTO_RELATE_MIN_SCORE = 0.32; // Minimum combined score to suggest relationship
|
|
6
12
|
function hasExplicitTitleMention(source, candidate) {
|
|
7
13
|
const normalizedTitle = normalizeText(candidate.title);
|
|
8
14
|
if (normalizedTitle.length < MIN_TITLE_MENTION_LENGTH) {
|
|
@@ -23,7 +29,7 @@ function computeSharedTagScore(source, candidate) {
|
|
|
23
29
|
shared++;
|
|
24
30
|
}
|
|
25
31
|
}
|
|
26
|
-
return Math.min(shared, 3) *
|
|
32
|
+
return Math.min(shared, 3) * AUTO_RELATE_TAG_WEIGHT_PER_SHARED;
|
|
27
33
|
}
|
|
28
34
|
function computeTitleTokenOverlap(source, candidate) {
|
|
29
35
|
const sourceTokens = new Set(tokenize(source.title));
|
|
@@ -53,15 +59,15 @@ export function suggestAutoRelationships(source, candidates) {
|
|
|
53
59
|
const lexical = computeLexicalScore(sourceSummary || source.title, candidateProjection);
|
|
54
60
|
const titleOverlap = computeTitleTokenOverlap(source, candidate.note);
|
|
55
61
|
const sharedTags = computeSharedTagScore(source, candidate.note);
|
|
56
|
-
const recencyBoost = candidate.score ? Math.min(candidate.score, 1) *
|
|
62
|
+
const recencyBoost = candidate.score ? Math.min(candidate.score, 1) * AUTO_RELATE_RECENCY_WEIGHT : 0;
|
|
57
63
|
const score = (explicitMention ? 1 : 0) +
|
|
58
|
-
lexical *
|
|
59
|
-
titleOverlap *
|
|
64
|
+
lexical * AUTO_RELATE_LEXICAL_WEIGHT +
|
|
65
|
+
titleOverlap * AUTO_RELATE_TITLE_OVERLAP_WEIGHT +
|
|
60
66
|
sharedTags +
|
|
61
67
|
recencyBoost;
|
|
62
68
|
return { candidate, explicitMention, lexical, score };
|
|
63
69
|
})
|
|
64
|
-
.filter(({ explicitMention, lexical, score }) => explicitMention || (lexical >= STRONG_OVERLAP_THRESHOLD && score >=
|
|
70
|
+
.filter(({ explicitMention, lexical, score }) => explicitMention || (lexical >= STRONG_OVERLAP_THRESHOLD && score >= AUTO_RELATE_MIN_SCORE))
|
|
65
71
|
.sort((left, right) => {
|
|
66
72
|
if (right.score !== left.score)
|
|
67
73
|
return right.score - left.score;
|
package/build/auto-relate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-relate.js","sourceRoot":"","sources":["../src/auto-relate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAU5E,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,SAAS,uBAAuB,CAAC,MAAY,EAAE,SAAe;IAC5D,MAAM,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,eAAe,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACrE,OAAO,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAY,EAAE,SAAe;IAC1D,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"auto-relate.js","sourceRoot":"","sources":["../src/auto-relate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded types for domain primitives ā prevent accidental misuse of plain strings.
|
|
3
|
+
*
|
|
4
|
+
* These types are nominal: a `MemoryId` is not assignable from `string` at the type level,
|
|
5
|
+
* but at runtime it is just a string. Use assertion functions (e.g., `assertMemoryId`)
|
|
6
|
+
* or type predicates (e.g., `isValidMemoryId`) to create branded values from plain strings
|
|
7
|
+
* at trust boundaries. For internal code that constructs values from trusted sources,
|
|
8
|
+
* the smart constructors (e.g., `memoryId()`) provide unchecked casts.
|
|
9
|
+
*/
|
|
10
|
+
/** Nominal brand: `Brand<string, B>` is assignable to `string` but not from `string`. */
|
|
11
|
+
export type Brand<T, B> = T & {
|
|
12
|
+
readonly __brand: B;
|
|
13
|
+
};
|
|
14
|
+
/** Unique identifier for a memory note (slug + short UUID). */
|
|
15
|
+
export type MemoryId = Brand<string, "MemoryId">;
|
|
16
|
+
/** Stable identifier for a project (normalized git remote or slug). */
|
|
17
|
+
export type ProjectId = Brand<string, "ProjectId">;
|
|
18
|
+
/** Identifier for the embedding model used (e.g. "nomic-embed-text-v2-moe"). */
|
|
19
|
+
export type EmbeddingModelId = Brand<string, "EmbeddingModelId">;
|
|
20
|
+
/** ISO 8601 date string used for timestamps (createdAt, updatedAt). */
|
|
21
|
+
export type ISO8601DateString = Brand<string, "ISO8601DateString">;
|
|
22
|
+
/** Check whether a value is a valid memory ID (alphanumeric, hyphens, underscores). */
|
|
23
|
+
export declare function isValidMemoryId(value: string): value is MemoryId;
|
|
24
|
+
/** Check whether a string is a valid ISO 8601 date string. */
|
|
25
|
+
export declare function isValidIsoDateString(value: string): value is ISO8601DateString;
|
|
26
|
+
/** Assert that a string is a valid memory ID. Throws on invalid input. */
|
|
27
|
+
export declare function assertMemoryId(value: string, label?: string): asserts value is MemoryId;
|
|
28
|
+
/** Assert that a string is a valid ISO 8601 date string. Throws on invalid input. */
|
|
29
|
+
export declare function assertIsoDateString(value: string, label?: string): asserts value is ISO8601DateString;
|
|
30
|
+
/** Create a `MemoryId` from a plain string (e.g., when generating from title + UUID). */
|
|
31
|
+
export declare function memoryId(id: string): MemoryId;
|
|
32
|
+
/** Create a `ProjectId` from a plain string (e.g., normalized git remote). */
|
|
33
|
+
export declare function projectId(id: string): ProjectId;
|
|
34
|
+
/** Create an `EmbeddingModelId` from a plain string. */
|
|
35
|
+
export declare function embeddingModelId(id: string): EmbeddingModelId;
|
|
36
|
+
/** Create an `ISO8601DateString` from a plain ISO date string. */
|
|
37
|
+
export declare function isoDateString(date: string): ISO8601DateString;
|
|
38
|
+
//# sourceMappingURL=brands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brands.d.ts","sourceRoot":"","sources":["../src/brands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,yFAAyF;AACzF,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAItD,+DAA+D;AAC/D,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEjD,uEAAuE;AACvE,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEnD,gFAAgF;AAChF,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEjE,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAQnE,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,QAAQ,CAEhE;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAID,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAIrF;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAIrG;AAID,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAE7C;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAE/C;AAED,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,CAE7D;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAE7D"}
|
package/build/brands.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded types for domain primitives ā prevent accidental misuse of plain strings.
|
|
3
|
+
*
|
|
4
|
+
* These types are nominal: a `MemoryId` is not assignable from `string` at the type level,
|
|
5
|
+
* but at runtime it is just a string. Use assertion functions (e.g., `assertMemoryId`)
|
|
6
|
+
* or type predicates (e.g., `isValidMemoryId`) to create branded values from plain strings
|
|
7
|
+
* at trust boundaries. For internal code that constructs values from trusted sources,
|
|
8
|
+
* the smart constructors (e.g., `memoryId()`) provide unchecked casts.
|
|
9
|
+
*/
|
|
10
|
+
// āā Validation patterns āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
11
|
+
const MEMORY_ID_PATTERN = /^[a-zA-Z0-9_-]+$/;
|
|
12
|
+
// āā Type predicates (return boolean, enable narrowing) āāāāāāāāāāāāāāāāāāāāāāāā
|
|
13
|
+
/** Check whether a value is a valid memory ID (alphanumeric, hyphens, underscores). */
|
|
14
|
+
export function isValidMemoryId(value) {
|
|
15
|
+
return MEMORY_ID_PATTERN.test(value);
|
|
16
|
+
}
|
|
17
|
+
/** Check whether a string is a valid ISO 8601 date string. */
|
|
18
|
+
export function isValidIsoDateString(value) {
|
|
19
|
+
return !isNaN(Date.parse(value));
|
|
20
|
+
}
|
|
21
|
+
// āā Assertion functions (throw on invalid, narrow type on success) āāāāāāāāāāā
|
|
22
|
+
/** Assert that a string is a valid memory ID. Throws on invalid input. */
|
|
23
|
+
export function assertMemoryId(value, label = "id") {
|
|
24
|
+
if (!MEMORY_ID_PATTERN.test(value)) {
|
|
25
|
+
throw new Error(`Invalid ${label}: ${value} (must match ${MEMORY_ID_PATTERN.source})`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/** Assert that a string is a valid ISO 8601 date string. Throws on invalid input. */
|
|
29
|
+
export function assertIsoDateString(value, label = "date") {
|
|
30
|
+
if (isNaN(Date.parse(value))) {
|
|
31
|
+
throw new Error(`Invalid ${label}: ${value} (not a valid ISO 8601 date string)`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// āā Smart constructors (unchecked casts for trusted internal code) āāāāāāāāāāāā
|
|
35
|
+
/** Create a `MemoryId` from a plain string (e.g., when generating from title + UUID). */
|
|
36
|
+
export function memoryId(id) {
|
|
37
|
+
return id;
|
|
38
|
+
}
|
|
39
|
+
/** Create a `ProjectId` from a plain string (e.g., normalized git remote). */
|
|
40
|
+
export function projectId(id) {
|
|
41
|
+
return id;
|
|
42
|
+
}
|
|
43
|
+
/** Create an `EmbeddingModelId` from a plain string. */
|
|
44
|
+
export function embeddingModelId(id) {
|
|
45
|
+
return id;
|
|
46
|
+
}
|
|
47
|
+
/** Create an `ISO8601DateString` from a plain ISO date string. */
|
|
48
|
+
export function isoDateString(date) {
|
|
49
|
+
return date;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=brands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brands.js","sourceRoot":"","sources":["../src/brands.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqBH,kFAAkF;AAElF,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAE7C,iFAAiF;AAEjF,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,gFAAgF;AAEhF,0EAA0E;AAC1E,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAK,GAAG,IAAI;IACxD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,KAAK,gBAAgB,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,KAAK,GAAG,MAAM;IAC/D,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,KAAK,KAAK,qCAAqC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,EAAc,CAAC;AACxB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,SAAS,CAAC,EAAU;IAClC,OAAO,EAAe,CAAC;AACzB,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,EAAsB,CAAC;AAChC,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAyB,CAAC;AACnC,CAAC"}
|
package/build/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/build/cache.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { performance } from "perf_hooks";
|
|
2
|
+
import { debugLog } from "./error-utils.js";
|
|
2
3
|
// āā Module-level singleton āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
3
4
|
const sessionCaches = {};
|
|
4
5
|
// āā Internal helpers āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
5
|
-
function debugLog(event, message) {
|
|
6
|
-
console.error(`[${event}] ${message}`);
|
|
7
|
-
}
|
|
8
6
|
function ensureActiveProjectCache(projectId) {
|
|
9
7
|
const current = sessionCaches.activeProject;
|
|
10
8
|
if (current?.projectId === projectId) {
|
|
@@ -156,7 +154,7 @@ export function setSessionCachedNote(projectId, vaultPath, note) {
|
|
|
156
154
|
const existing = cache.vaultCaches.get(vaultPath);
|
|
157
155
|
if (existing) {
|
|
158
156
|
existing.notesById.set(note.id, note);
|
|
159
|
-
if (!existing.
|
|
157
|
+
if (!existing.notesById.has(note.id)) {
|
|
160
158
|
existing.noteList.push(note);
|
|
161
159
|
}
|
|
162
160
|
return;
|
package/build/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-claude-memory.d.ts","sourceRoot":"","sources":["../../src/cli/import-claude-memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQ7C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAIxD;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAsJlD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { randomUUID } from "crypto";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { promises as fs } from "fs";
|
|
4
|
+
import { memoryId, isoDateString } from "../brands.js";
|
|
5
|
+
import { resolveUserPath, defaultVaultPath, defaultClaudeHome } from "../paths.js";
|
|
6
|
+
import { VaultManager } from "../vault.js";
|
|
7
|
+
import { parseMemorySections } from "../import.js";
|
|
8
|
+
import { MnemonicConfigStore } from "../config.js";
|
|
9
|
+
export function makeImportNoteId(title) {
|
|
10
|
+
const slug = title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60);
|
|
11
|
+
const suffix = randomUUID().split("-")[0];
|
|
12
|
+
return memoryId(slug ? `${slug}-${suffix}` : suffix);
|
|
13
|
+
}
|
|
14
|
+
export async function runImportCli() {
|
|
15
|
+
const argv = process.argv.slice(3);
|
|
16
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
17
|
+
console.log(`
|
|
18
|
+
Mnemonic: Import Claude Code Auto-Memory
|
|
19
|
+
|
|
20
|
+
Usage:
|
|
21
|
+
mnemonic import-claude-memory [options]
|
|
22
|
+
|
|
23
|
+
Options:
|
|
24
|
+
--dry-run Show what would be imported without writing anything
|
|
25
|
+
--cwd=<path> Project path to resolve Claude memory for (default: cwd)
|
|
26
|
+
--claude-home=<p> Claude home directory (default: ~/.claude, or $CLAUDE_HOME)
|
|
27
|
+
--help Show this help message
|
|
28
|
+
|
|
29
|
+
How it works:
|
|
30
|
+
Claude Code stores per-project auto-memory in:
|
|
31
|
+
~/.claude/projects/<encoded-path>/memory/*.md
|
|
32
|
+
|
|
33
|
+
Each ## heading in those files becomes a separate mnemonic note
|
|
34
|
+
tagged with "claude-memory" and "imported". Notes with duplicate
|
|
35
|
+
titles are skipped.
|
|
36
|
+
|
|
37
|
+
Examples:
|
|
38
|
+
mnemonic import-claude-memory --dry-run
|
|
39
|
+
mnemonic import-claude-memory
|
|
40
|
+
mnemonic import-claude-memory --cwd=/path/to/project
|
|
41
|
+
`);
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}
|
|
44
|
+
const dryRun = argv.includes("--dry-run");
|
|
45
|
+
const cwdOption = argv.find(arg => arg.startsWith("--cwd="));
|
|
46
|
+
const targetCwd = cwdOption ? resolveUserPath(cwdOption.split("=")[1]) : process.cwd();
|
|
47
|
+
const claudeHomeOption = argv.find(arg => arg.startsWith("--claude-home="));
|
|
48
|
+
const claudeHome = claudeHomeOption
|
|
49
|
+
? resolveUserPath(claudeHomeOption.split("=")[1])
|
|
50
|
+
: process.env["CLAUDE_HOME"]
|
|
51
|
+
? resolveUserPath(process.env["CLAUDE_HOME"])
|
|
52
|
+
: defaultClaudeHome();
|
|
53
|
+
const VAULT_PATH = process.env["VAULT_PATH"]
|
|
54
|
+
? resolveUserPath(process.env["VAULT_PATH"])
|
|
55
|
+
: defaultVaultPath();
|
|
56
|
+
// Encode the project path the same way Claude Code does:
|
|
57
|
+
// /Users/foo/Projects/bar ā -Users-foo-Projects-bar
|
|
58
|
+
// On Windows both \ and / are replaced with -
|
|
59
|
+
const projectDirName = targetCwd.replace(/[/\\]/g, "-");
|
|
60
|
+
const memoryDir = path.join(claudeHome, "projects", projectDirName, "memory");
|
|
61
|
+
try {
|
|
62
|
+
await fs.access(memoryDir);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
console.log(`No Claude memory found for this project.`);
|
|
66
|
+
console.log(`Expected: ${memoryDir}`);
|
|
67
|
+
process.exit(0);
|
|
68
|
+
}
|
|
69
|
+
const files = (await fs.readdir(memoryDir)).filter(f => f.endsWith(".md")).sort();
|
|
70
|
+
if (files.length === 0) {
|
|
71
|
+
console.log("No markdown files found in Claude memory directory.");
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
console.log(`Found ${files.length} file(s) in ${memoryDir}`);
|
|
75
|
+
const vaultManager = new VaultManager(VAULT_PATH);
|
|
76
|
+
await vaultManager.initMain();
|
|
77
|
+
const vault = vaultManager.main;
|
|
78
|
+
const existingNotes = await vault.storage.listNotes();
|
|
79
|
+
const existingTitles = new Set(existingNotes.map(n => n.title.toLowerCase()));
|
|
80
|
+
const now = isoDateString(new Date().toISOString());
|
|
81
|
+
const notesToWrite = [];
|
|
82
|
+
const skipped = [];
|
|
83
|
+
for (const file of files) {
|
|
84
|
+
const raw = await fs.readFile(path.join(memoryDir, file), "utf-8");
|
|
85
|
+
const sections = parseMemorySections(raw);
|
|
86
|
+
const sourceTag = file.replace(/\.md$/i, "").toLowerCase().replace(/[^a-z0-9]+/g, "-");
|
|
87
|
+
for (const section of sections) {
|
|
88
|
+
if (existingTitles.has(section.title.toLowerCase())) {
|
|
89
|
+
skipped.push(section.title);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
notesToWrite.push({
|
|
93
|
+
id: makeImportNoteId(section.title),
|
|
94
|
+
title: section.title,
|
|
95
|
+
content: section.content,
|
|
96
|
+
tags: ["claude-memory", "imported", sourceTag],
|
|
97
|
+
lifecycle: "permanent",
|
|
98
|
+
createdAt: now,
|
|
99
|
+
updatedAt: now,
|
|
100
|
+
memoryVersion: 1,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (skipped.length > 0) {
|
|
105
|
+
console.log(`\nSkipped (title already exists in vault):`);
|
|
106
|
+
skipped.forEach(t => console.log(` ~ ${t}`));
|
|
107
|
+
}
|
|
108
|
+
if (notesToWrite.length === 0) {
|
|
109
|
+
console.log("\nNothing new to import.");
|
|
110
|
+
process.exit(0);
|
|
111
|
+
}
|
|
112
|
+
console.log(`\nSections to import (${notesToWrite.length}):`);
|
|
113
|
+
notesToWrite.forEach(n => console.log(` + ${n.title}`));
|
|
114
|
+
if (dryRun) {
|
|
115
|
+
console.log("\nā Dry-run complete ā no changes written");
|
|
116
|
+
process.exit(0);
|
|
117
|
+
}
|
|
118
|
+
const filesToCommit = [];
|
|
119
|
+
await Promise.all(notesToWrite.map(async (note) => {
|
|
120
|
+
await vault.storage.writeNote(note);
|
|
121
|
+
filesToCommit.push(`notes/${note.id}.md`);
|
|
122
|
+
}));
|
|
123
|
+
const commitMessage = [
|
|
124
|
+
`import: claude-memory (${notesToWrite.length} note${notesToWrite.length === 1 ? "" : "s"})`,
|
|
125
|
+
"",
|
|
126
|
+
`- Notes: ${notesToWrite.length}`,
|
|
127
|
+
`- Source: ${memoryDir}`,
|
|
128
|
+
`- Skipped: ${skipped.length} (already exist)`,
|
|
129
|
+
].join("\n");
|
|
130
|
+
try {
|
|
131
|
+
const importConfigStore = new MnemonicConfigStore(VAULT_PATH);
|
|
132
|
+
await vault.git.commit(commitMessage, filesToCommit);
|
|
133
|
+
const mutationPushMode = (await importConfigStore.load()).mutationPushMode;
|
|
134
|
+
if (mutationPushMode !== "none") {
|
|
135
|
+
await vault.git.push();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
console.error(`\nNotes written but git operation failed: ${err}`);
|
|
140
|
+
}
|
|
141
|
+
console.log(`\nā Imported ${notesToWrite.length} note${notesToWrite.length === 1 ? "" : "s"} into main vault`);
|
|
142
|
+
process.exit(0);
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=import-claude-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-claude-memory.js","sourceRoot":"","sources":["../../src/cli/import-claude-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAKA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA8GnD"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { resolveUserPath, defaultVaultPath } from "../paths.js";
|
|
2
|
+
import { VaultManager } from "../vault.js";
|
|
3
|
+
import { Migrator } from "../migration.js";
|
|
4
|
+
import { readVaultSchemaVersion } from "../config.js";
|
|
5
|
+
export async function runMigrateCli() {
|
|
6
|
+
const VAULT_PATH = process.env["VAULT_PATH"]
|
|
7
|
+
? resolveUserPath(process.env["VAULT_PATH"])
|
|
8
|
+
: defaultVaultPath();
|
|
9
|
+
const argv = process.argv.slice(3);
|
|
10
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
11
|
+
console.log(`
|
|
12
|
+
Mnemonic Migration Tool
|
|
13
|
+
|
|
14
|
+
Usage:
|
|
15
|
+
mnemonic migrate [options]
|
|
16
|
+
|
|
17
|
+
Options:
|
|
18
|
+
--dry-run Show what would change without modifying files (STRONGLY RECOMMENDED)
|
|
19
|
+
--cwd=<path> Limit migration to specific project vault (/path/to/project)
|
|
20
|
+
--list Show available migrations and pending count
|
|
21
|
+
--help Show this help message
|
|
22
|
+
|
|
23
|
+
Workflow:
|
|
24
|
+
1. Always use --dry-run first to see what will change
|
|
25
|
+
2. Review the output carefully
|
|
26
|
+
3. Run without --dry-run to execute and auto-commit
|
|
27
|
+
|
|
28
|
+
Examples:
|
|
29
|
+
# Step 1: See what would change
|
|
30
|
+
mnemonic migrate --dry-run
|
|
31
|
+
|
|
32
|
+
# Step 2: Review, then execute (auto-commits changes)
|
|
33
|
+
mnemonic migrate
|
|
34
|
+
|
|
35
|
+
# For a specific project
|
|
36
|
+
mnemonic migrate --dry-run --cwd=/path/to/project
|
|
37
|
+
mnemonic migrate --cwd=/path/to/project
|
|
38
|
+
`);
|
|
39
|
+
process.exit(0);
|
|
40
|
+
}
|
|
41
|
+
const dryRun = argv.includes("--dry-run");
|
|
42
|
+
const cwdOption = argv.find(arg => arg.startsWith("--cwd="));
|
|
43
|
+
const targetCwd = cwdOption ? cwdOption.split("=")[1] : undefined;
|
|
44
|
+
const vaultManager = new VaultManager(VAULT_PATH);
|
|
45
|
+
await vaultManager.initMain();
|
|
46
|
+
const migrator = new Migrator(vaultManager);
|
|
47
|
+
if (argv.includes("--list")) {
|
|
48
|
+
const migrations = migrator.listAvailableMigrations();
|
|
49
|
+
console.log("Available migrations:");
|
|
50
|
+
migrations.forEach(m => console.log(` ${m.name}: ${m.description}`));
|
|
51
|
+
console.log("\nVault schema versions:");
|
|
52
|
+
let totalPending = 0;
|
|
53
|
+
for (const vault of vaultManager.allKnownVaults()) {
|
|
54
|
+
const version = await readVaultSchemaVersion(vault.storage.vaultPath);
|
|
55
|
+
const pending = await migrator.getPendingMigrations(version);
|
|
56
|
+
totalPending += pending.length;
|
|
57
|
+
const label = vault.isProject ? "project" : "main";
|
|
58
|
+
console.log(` ${label} (${vault.storage.vaultPath}): ${version} ā ${pending.length} pending`);
|
|
59
|
+
}
|
|
60
|
+
if (dryRun && totalPending > 0) {
|
|
61
|
+
console.log("\nš” Run without --dry-run to execute these migrations");
|
|
62
|
+
console.log(" Changes will be automatically committed and pushed");
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (dryRun) {
|
|
67
|
+
console.log("Running migrations in dry-run mode...");
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log("ā ļø Executing migrations (changes will be committed and pushed)...");
|
|
71
|
+
console.log(" Use --dry-run first if you want to preview changes\n");
|
|
72
|
+
}
|
|
73
|
+
const { migrationResults, vaultsProcessed } = await migrator.runAllPending({ dryRun, cwd: targetCwd });
|
|
74
|
+
for (const [vaultPath, results] of migrationResults) {
|
|
75
|
+
console.log(`\nVault: ${vaultPath}`);
|
|
76
|
+
for (const { migration, result } of results) {
|
|
77
|
+
console.log(` Migration ${migration}:`);
|
|
78
|
+
console.log(` Notes processed: ${result.notesProcessed}`);
|
|
79
|
+
console.log(` Notes modified: ${result.notesModified}`);
|
|
80
|
+
if (!dryRun && result.notesModified > 0) {
|
|
81
|
+
console.log(` Auto-committed: ${result.warnings.length === 0 ? "ā" : "ā (see warnings)"}`);
|
|
82
|
+
}
|
|
83
|
+
if (result.errors.length > 0) {
|
|
84
|
+
console.log(` Errors: ${result.errors.length}`);
|
|
85
|
+
result.errors.forEach(e => console.log(` - ${e.noteId}: ${e.error}`));
|
|
86
|
+
}
|
|
87
|
+
if (result.warnings.length > 0) {
|
|
88
|
+
console.log(` Warnings: ${result.warnings.length}`);
|
|
89
|
+
result.warnings.forEach(w => console.log(` - ${w}`));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (!dryRun && vaultsProcessed > 0) {
|
|
94
|
+
console.log("\nā Migration completed");
|
|
95
|
+
console.log("Changes have been automatically committed and pushed.");
|
|
96
|
+
}
|
|
97
|
+
else if (dryRun) {
|
|
98
|
+
console.log("\nā Dry-run completed - no changes made");
|
|
99
|
+
if (vaultsProcessed > 0) {
|
|
100
|
+
console.log("\nš” Ready to execute? Run: mnemonic migrate");
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"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"}
|
package/build/config.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export declare function readVaultSchemaVersion(vaultPath: string): Promise<strin
|
|
|
20
20
|
*/
|
|
21
21
|
export declare function writeVaultSchemaVersion(vaultPath: string, schemaVersion: string): Promise<void>;
|
|
22
22
|
export declare class MnemonicConfigStore {
|
|
23
|
+
#private;
|
|
23
24
|
readonly filePath: string;
|
|
24
25
|
constructor(mainVaultPath: string);
|
|
25
26
|
load(): Promise<MnemonicConfig>;
|
|
@@ -28,6 +29,7 @@ export declare class MnemonicConfigStore {
|
|
|
28
29
|
setProjectPolicy(policy: ProjectMemoryPolicy): Promise<void>;
|
|
29
30
|
setProjectIdentityOverride(projectId: string, override: ProjectIdentityOverride): Promise<void>;
|
|
30
31
|
setSchemaVersion(schemaVersion: string): Promise<void>;
|
|
32
|
+
invalidateCache(): void;
|
|
31
33
|
private readAll;
|
|
32
34
|
private writeAll;
|
|
33
35
|
}
|
package/build/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC3D,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACnE;AAkID;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrG;AAED,qBAAa,mBAAmB;;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGd,aAAa,EAAE,MAAM;IAI3B,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAI/B,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAK7E,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAK3F,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/F,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,eAAe,IAAI,IAAI;YAIT,OAAO;YA0BP,QAAQ;CAIvB"}
|