@ddtcorex/dsh-maestro-memory 1.0.1
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 +96 -0
- package/LICENSE +21 -0
- package/README.md +448 -0
- package/cordis.patch.yml +13 -0
- package/lib/client.js +756 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +627 -0
- package/lib/index.js.map +1 -0
- package/lib/memory/batch.d.ts +44 -0
- package/lib/memory/batch.d.ts.map +1 -0
- package/lib/memory/batch.js +75 -0
- package/lib/memory/batch.js.map +1 -0
- package/lib/memory/feedback.d.ts +18 -0
- package/lib/memory/feedback.d.ts.map +1 -0
- package/lib/memory/feedback.js +29 -0
- package/lib/memory/feedback.js.map +1 -0
- package/lib/memory/store.d.ts +154 -0
- package/lib/memory/store.d.ts.map +1 -0
- package/lib/memory/store.js +606 -0
- package/lib/memory/store.js.map +1 -0
- package/lib/migration/cli.d.ts +18 -0
- package/lib/migration/cli.d.ts.map +1 -0
- package/lib/migration/cli.js +143 -0
- package/lib/migration/cli.js.map +1 -0
- package/lib/migration/fixture.d.ts +45 -0
- package/lib/migration/fixture.d.ts.map +1 -0
- package/lib/migration/fixture.js +177 -0
- package/lib/migration/fixture.js.map +1 -0
- package/lib/migration/service.d.ts +75 -0
- package/lib/migration/service.d.ts.map +1 -0
- package/lib/migration/service.js +713 -0
- package/lib/migration/service.js.map +1 -0
- package/lib/prompt/snapshot.d.ts +26 -0
- package/lib/prompt/snapshot.d.ts.map +1 -0
- package/lib/prompt/snapshot.js +74 -0
- package/lib/prompt/snapshot.js.map +1 -0
- package/lib/review/queue.d.ts +72 -0
- package/lib/review/queue.d.ts.map +1 -0
- package/lib/review/queue.js +306 -0
- package/lib/review/queue.js.map +1 -0
- package/lib/skills-browser.d.ts +67 -0
- package/lib/skills-browser.d.ts.map +1 -0
- package/lib/skills-browser.js +185 -0
- package/lib/skills-browser.js.map +1 -0
- package/lib/storage/atomic-store.d.ts +211 -0
- package/lib/storage/atomic-store.d.ts.map +1 -0
- package/lib/storage/atomic-store.js +582 -0
- package/lib/storage/atomic-store.js.map +1 -0
- package/lib/storage/layout.d.ts +81 -0
- package/lib/storage/layout.d.ts.map +1 -0
- package/lib/storage/layout.js +162 -0
- package/lib/storage/layout.js.map +1 -0
- package/lib/storage/legacy-format.d.ts +104 -0
- package/lib/storage/legacy-format.d.ts.map +1 -0
- package/lib/storage/legacy-format.js +262 -0
- package/lib/storage/legacy-format.js.map +1 -0
- package/lib/sync/config.d.ts +22 -0
- package/lib/sync/config.d.ts.map +1 -0
- package/lib/sync/config.js +57 -0
- package/lib/sync/config.js.map +1 -0
- package/lib/sync/git.d.ts +97 -0
- package/lib/sync/git.d.ts.map +1 -0
- package/lib/sync/git.js +282 -0
- package/lib/sync/git.js.map +1 -0
- package/lib/sync/index.d.ts +6 -0
- package/lib/sync/index.d.ts.map +1 -0
- package/lib/sync/index.js +6 -0
- package/lib/sync/index.js.map +1 -0
- package/lib/sync/layout.d.ts +15 -0
- package/lib/sync/layout.d.ts.map +1 -0
- package/lib/sync/layout.js +33 -0
- package/lib/sync/layout.js.map +1 -0
- package/lib/sync/merge.d.ts +42 -0
- package/lib/sync/merge.d.ts.map +1 -0
- package/lib/sync/merge.js +159 -0
- package/lib/sync/merge.js.map +1 -0
- package/lib/sync/service.d.ts +70 -0
- package/lib/sync/service.d.ts.map +1 -0
- package/lib/sync/service.js +508 -0
- package/lib/sync/service.js.map +1 -0
- package/lib/todo/store.d.ts +142 -0
- package/lib/todo/store.d.ts.map +1 -0
- package/lib/todo/store.js +452 -0
- package/lib/todo/store.js.map +1 -0
- package/lib/types/client/index.d.ts +7 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/package.json +63 -0
- package/src/client/index.tsx +994 -0
- package/src/host/index.ts +591 -0
- package/src/host/memory/batch.ts +107 -0
- package/src/host/memory/feedback.ts +36 -0
- package/src/host/memory/store.ts +650 -0
- package/src/host/migration/cli.ts +139 -0
- package/src/host/migration/fixture.ts +218 -0
- package/src/host/migration/service.ts +786 -0
- package/src/host/prompt/snapshot.ts +95 -0
- package/src/host/review/queue.ts +325 -0
- package/src/host/skills-browser.ts +191 -0
- package/src/host/storage/atomic-store.ts +605 -0
- package/src/host/storage/layout.ts +191 -0
- package/src/host/storage/legacy-format.ts +308 -0
- package/src/host/sync/config.ts +67 -0
- package/src/host/sync/git.ts +280 -0
- package/src/host/sync/index.ts +5 -0
- package/src/host/sync/layout.ts +39 -0
- package/src/host/sync/merge.ts +188 -0
- package/src/host/sync/service.ts +494 -0
- package/src/host/todo/store.ts +480 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* merge.ts — union merge by id, never drops either version.
|
|
3
|
+
* Pure functions, no I/O.
|
|
4
|
+
*/
|
|
5
|
+
const MEMORY_ID_RE = /^\[id:\s*([0-9a-f]{8})\]\s*/i;
|
|
6
|
+
function extractMemoryId(entry) {
|
|
7
|
+
const m = MEMORY_ID_RE.exec(String(entry));
|
|
8
|
+
return m ? m[1].toLowerCase() : null;
|
|
9
|
+
}
|
|
10
|
+
function normalizeEntry(entry) {
|
|
11
|
+
return String(entry).trim();
|
|
12
|
+
}
|
|
13
|
+
function contentHash(entry) {
|
|
14
|
+
// strip id prefix for comparison of body? But for modifiedBoth we want body difference
|
|
15
|
+
// Compare full stripped id content; if id same but body differs => conflict
|
|
16
|
+
const withoutId = String(entry).replace(MEMORY_ID_RE, '').trim();
|
|
17
|
+
return withoutId;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parse entries into map id => entry. Entries without id are assigned a synthetic
|
|
21
|
+
* id derived from content hash (for safety) but flagged as missing.
|
|
22
|
+
*/
|
|
23
|
+
export function mapById(entries) {
|
|
24
|
+
const m = new Map();
|
|
25
|
+
for (const e of entries) {
|
|
26
|
+
const id = extractMemoryId(e);
|
|
27
|
+
if (id) {
|
|
28
|
+
// keep first occurrence; duplicates by id should not happen but last wins
|
|
29
|
+
if (!m.has(id))
|
|
30
|
+
m.set(id, e);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return m;
|
|
34
|
+
}
|
|
35
|
+
export function idsOf(entries) {
|
|
36
|
+
const s = new Set();
|
|
37
|
+
for (const e of entries) {
|
|
38
|
+
const id = extractMemoryId(e);
|
|
39
|
+
if (id)
|
|
40
|
+
s.add(id);
|
|
41
|
+
}
|
|
42
|
+
return s;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Union merge for memory-style entries (KEY, MEMORY, archive).
|
|
46
|
+
* - local + remote entries with distinct ids => union (both present)
|
|
47
|
+
* - same id, same content => one entry
|
|
48
|
+
* - same id, different content => conflict (neither applied, keep local)
|
|
49
|
+
*/
|
|
50
|
+
export function mergeMemoryEntries(opts) {
|
|
51
|
+
const { track, local, remote, baseIds } = opts;
|
|
52
|
+
const localMap = mapById(local);
|
|
53
|
+
const remoteMap = mapById(remote);
|
|
54
|
+
const base = baseIds ?? new Set();
|
|
55
|
+
const localIds = new Set(localMap.keys());
|
|
56
|
+
const remoteIds = new Set(remoteMap.keys());
|
|
57
|
+
const allIds = new Set([...localIds, ...remoteIds]);
|
|
58
|
+
const merged = [];
|
|
59
|
+
const conflicts = [];
|
|
60
|
+
const addedLocal = [];
|
|
61
|
+
const addedRemote = [];
|
|
62
|
+
for (const id of allIds) {
|
|
63
|
+
const hasLocal = localMap.has(id);
|
|
64
|
+
const hasRemote = remoteMap.has(id);
|
|
65
|
+
const localEntry = localMap.get(id) ?? null;
|
|
66
|
+
const remoteEntry = remoteMap.get(id) ?? null;
|
|
67
|
+
if (hasLocal && !hasRemote) {
|
|
68
|
+
// local only
|
|
69
|
+
if (base.has(id)) {
|
|
70
|
+
// deletedRemote? base had it, remote deleted -> conflict if local modified?
|
|
71
|
+
// per spec: delete vs modify => conflict, delete vs delete => absent
|
|
72
|
+
// Our simple rule: if base has id and remote missing, but local present and content differs from base? we don't have base content, so treat as remote deletion -> keep local but flag? For MVP, keep local.
|
|
73
|
+
merged.push(localEntry);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// addedLocal
|
|
77
|
+
addedLocal.push(id);
|
|
78
|
+
merged.push(localEntry);
|
|
79
|
+
}
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
if (!hasLocal && hasRemote) {
|
|
83
|
+
if (base.has(id)) {
|
|
84
|
+
// deletedLocal vs remote present => conflict? keep remote? per spec conflict
|
|
85
|
+
// For MVP, we consider this addedRemote if not in base, else conflict -> keep remote but record conflict? Simpler add.
|
|
86
|
+
if (localIds.has(id)) {
|
|
87
|
+
// unreachable
|
|
88
|
+
}
|
|
89
|
+
// If base had it and local deleted -> conflict not auto delete. We treat as conflict.
|
|
90
|
+
// Check if local deleted intentionally: we flag conflict
|
|
91
|
+
conflicts.push({ id, track, localEntry: null, remoteEntry, reason: 'deletedLocal vs modifiedRemote' });
|
|
92
|
+
// do not auto-merge; keep local deletion (i.e., not in merged) — but per never-drop, we should keep remote as conflict.
|
|
93
|
+
// For now, push remote to merged but also mark conflict, so union still contains remote? Spec says delete not applied when other side modified => conflict.
|
|
94
|
+
// We'll keep remote out of merged until resolve, to avoid auto-drop of delete.
|
|
95
|
+
// Decision: do not push to merged, leave conflict.
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
addedRemote.push(id);
|
|
100
|
+
merged.push(remoteEntry);
|
|
101
|
+
}
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (hasLocal && hasRemote) {
|
|
105
|
+
const l = localEntry;
|
|
106
|
+
const r = remoteEntry;
|
|
107
|
+
if (normalizeEntry(l) === normalizeEntry(r)) {
|
|
108
|
+
merged.push(l);
|
|
109
|
+
}
|
|
110
|
+
else if (contentHash(l) === contentHash(r)) {
|
|
111
|
+
// ids same, content same after stripping id? Actually already compared normalized; if equal after stripping id they are same body
|
|
112
|
+
merged.push(l);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// same id, different body => conflict
|
|
116
|
+
conflicts.push({ id, track, localEntry: l, remoteEntry: r, reason: 'modifiedBoth' });
|
|
117
|
+
// keep local in merged, remote not auto-applied
|
|
118
|
+
merged.push(l);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Also handle local entries without id (legacy) — they are not in map; append them verbatim to merged if not duplicated
|
|
123
|
+
for (const e of local) {
|
|
124
|
+
if (!extractMemoryId(e)) {
|
|
125
|
+
if (!merged.includes(e))
|
|
126
|
+
merged.push(e);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
for (const e of remote) {
|
|
130
|
+
if (!extractMemoryId(e) && !merged.includes(e)) {
|
|
131
|
+
// remote entry without id — treat as addedRemote but can't dedupe; add if not duplicate body
|
|
132
|
+
const body = contentHash(e);
|
|
133
|
+
const exists = merged.some((m) => contentHash(m) === body);
|
|
134
|
+
if (!exists) {
|
|
135
|
+
merged.push(e);
|
|
136
|
+
if (!extractMemoryId(e)) {
|
|
137
|
+
// synthetic id absent, still count as added
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return { merged, conflicts, addedLocal, addedRemote };
|
|
143
|
+
}
|
|
144
|
+
// Todo merge: same id logic but todos are already stamped with id; reuse same function with track='TODOS'
|
|
145
|
+
export function mergeTodoEntries(opts) {
|
|
146
|
+
// Todos use same id regex: \[id: xxxxxxxx\]
|
|
147
|
+
// But todo entries are multiline: first line contains id; our extract works on full entry (first line)
|
|
148
|
+
return mergeMemoryEntries({ track: 'TODOS', local: opts.local, remote: opts.remote, baseIds: opts.baseIds });
|
|
149
|
+
}
|
|
150
|
+
// Helpers for sync service: compute ids snapshot for meta
|
|
151
|
+
export function snapshotIds(entriesByTrack) {
|
|
152
|
+
const out = {};
|
|
153
|
+
for (const [track, entries] of Object.entries(entriesByTrack)) {
|
|
154
|
+
const ids = [...idsOf(entries)].sort();
|
|
155
|
+
out[track] = ids;
|
|
156
|
+
}
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=merge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/host/sync/merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { SyncMeta } from './config.ts';
|
|
2
|
+
import type { GitAdapter } from './git.ts';
|
|
3
|
+
export declare class SyncService {
|
|
4
|
+
private readonly memoryDir;
|
|
5
|
+
private readonly git;
|
|
6
|
+
constructor(memoryDir?: string | null, git?: GitAdapter);
|
|
7
|
+
private root;
|
|
8
|
+
private hashFor;
|
|
9
|
+
enable(cwd: string, remoteUrl: string, branch?: string): {
|
|
10
|
+
ok: true;
|
|
11
|
+
hash: string;
|
|
12
|
+
} | {
|
|
13
|
+
ok: false;
|
|
14
|
+
error: string;
|
|
15
|
+
};
|
|
16
|
+
disable(cwd: string): {
|
|
17
|
+
ok: true;
|
|
18
|
+
} | {
|
|
19
|
+
ok: false;
|
|
20
|
+
error: string;
|
|
21
|
+
};
|
|
22
|
+
isEnabled(cwd: string): boolean;
|
|
23
|
+
status(cwd: string, reveal?: boolean): {
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
branch?: string;
|
|
26
|
+
remoteUrl?: string;
|
|
27
|
+
remoteRedacted?: string;
|
|
28
|
+
lastSync?: SyncMeta | null;
|
|
29
|
+
conflicts: any[];
|
|
30
|
+
};
|
|
31
|
+
listConflicts(cwd: string): any[];
|
|
32
|
+
private writeConflicts;
|
|
33
|
+
private appendConflict;
|
|
34
|
+
private localFiles;
|
|
35
|
+
private writeLocalFiles;
|
|
36
|
+
fetch(cwd: string): Promise<{
|
|
37
|
+
ok: true;
|
|
38
|
+
conflicts: any[];
|
|
39
|
+
remoteFiles: Record<string, string>;
|
|
40
|
+
status: string;
|
|
41
|
+
} | {
|
|
42
|
+
ok: false;
|
|
43
|
+
error: string;
|
|
44
|
+
}>;
|
|
45
|
+
push(cwd: string, message?: string): Promise<{
|
|
46
|
+
ok: true;
|
|
47
|
+
pushed: boolean;
|
|
48
|
+
conflicts: any[];
|
|
49
|
+
} | {
|
|
50
|
+
ok: false;
|
|
51
|
+
error: string;
|
|
52
|
+
conflicts?: any[];
|
|
53
|
+
}>;
|
|
54
|
+
pull(cwd: string): Promise<{
|
|
55
|
+
ok: true;
|
|
56
|
+
merged: boolean;
|
|
57
|
+
conflicts: any[];
|
|
58
|
+
} | {
|
|
59
|
+
ok: false;
|
|
60
|
+
error: string;
|
|
61
|
+
conflicts?: any[];
|
|
62
|
+
}>;
|
|
63
|
+
resolve(cwd: string, id: string, choice: 'local' | 'remote' | 'both'): {
|
|
64
|
+
ok: true;
|
|
65
|
+
} | {
|
|
66
|
+
ok: false;
|
|
67
|
+
error: string;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/host/sync/service.ts"],"names":[],"mappings":"AAaA,OAAO,EAA0F,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA0E1C,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBADH,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,GAAG,GAAE,UAAiC;IAGzD,OAAO,CAAC,IAAI;IAEZ,OAAO,CAAC,OAAO;IAKf,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAsBlH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAOjE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE;IAoBrK,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE;IAUjC,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,eAAe;IA4BjB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,GAAG,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA8C/I,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IA0E/I,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,GAAG,EAAE,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAiFnI,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CA+DnH"}
|