@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.
Files changed (109) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/LICENSE +21 -0
  3. package/README.md +448 -0
  4. package/cordis.patch.yml +13 -0
  5. package/lib/client.js +756 -0
  6. package/lib/index.d.ts +10 -0
  7. package/lib/index.d.ts.map +1 -0
  8. package/lib/index.js +627 -0
  9. package/lib/index.js.map +1 -0
  10. package/lib/memory/batch.d.ts +44 -0
  11. package/lib/memory/batch.d.ts.map +1 -0
  12. package/lib/memory/batch.js +75 -0
  13. package/lib/memory/batch.js.map +1 -0
  14. package/lib/memory/feedback.d.ts +18 -0
  15. package/lib/memory/feedback.d.ts.map +1 -0
  16. package/lib/memory/feedback.js +29 -0
  17. package/lib/memory/feedback.js.map +1 -0
  18. package/lib/memory/store.d.ts +154 -0
  19. package/lib/memory/store.d.ts.map +1 -0
  20. package/lib/memory/store.js +606 -0
  21. package/lib/memory/store.js.map +1 -0
  22. package/lib/migration/cli.d.ts +18 -0
  23. package/lib/migration/cli.d.ts.map +1 -0
  24. package/lib/migration/cli.js +143 -0
  25. package/lib/migration/cli.js.map +1 -0
  26. package/lib/migration/fixture.d.ts +45 -0
  27. package/lib/migration/fixture.d.ts.map +1 -0
  28. package/lib/migration/fixture.js +177 -0
  29. package/lib/migration/fixture.js.map +1 -0
  30. package/lib/migration/service.d.ts +75 -0
  31. package/lib/migration/service.d.ts.map +1 -0
  32. package/lib/migration/service.js +713 -0
  33. package/lib/migration/service.js.map +1 -0
  34. package/lib/prompt/snapshot.d.ts +26 -0
  35. package/lib/prompt/snapshot.d.ts.map +1 -0
  36. package/lib/prompt/snapshot.js +74 -0
  37. package/lib/prompt/snapshot.js.map +1 -0
  38. package/lib/review/queue.d.ts +72 -0
  39. package/lib/review/queue.d.ts.map +1 -0
  40. package/lib/review/queue.js +306 -0
  41. package/lib/review/queue.js.map +1 -0
  42. package/lib/skills-browser.d.ts +67 -0
  43. package/lib/skills-browser.d.ts.map +1 -0
  44. package/lib/skills-browser.js +185 -0
  45. package/lib/skills-browser.js.map +1 -0
  46. package/lib/storage/atomic-store.d.ts +211 -0
  47. package/lib/storage/atomic-store.d.ts.map +1 -0
  48. package/lib/storage/atomic-store.js +582 -0
  49. package/lib/storage/atomic-store.js.map +1 -0
  50. package/lib/storage/layout.d.ts +81 -0
  51. package/lib/storage/layout.d.ts.map +1 -0
  52. package/lib/storage/layout.js +162 -0
  53. package/lib/storage/layout.js.map +1 -0
  54. package/lib/storage/legacy-format.d.ts +104 -0
  55. package/lib/storage/legacy-format.d.ts.map +1 -0
  56. package/lib/storage/legacy-format.js +262 -0
  57. package/lib/storage/legacy-format.js.map +1 -0
  58. package/lib/sync/config.d.ts +22 -0
  59. package/lib/sync/config.d.ts.map +1 -0
  60. package/lib/sync/config.js +57 -0
  61. package/lib/sync/config.js.map +1 -0
  62. package/lib/sync/git.d.ts +97 -0
  63. package/lib/sync/git.d.ts.map +1 -0
  64. package/lib/sync/git.js +282 -0
  65. package/lib/sync/git.js.map +1 -0
  66. package/lib/sync/index.d.ts +6 -0
  67. package/lib/sync/index.d.ts.map +1 -0
  68. package/lib/sync/index.js +6 -0
  69. package/lib/sync/index.js.map +1 -0
  70. package/lib/sync/layout.d.ts +15 -0
  71. package/lib/sync/layout.d.ts.map +1 -0
  72. package/lib/sync/layout.js +33 -0
  73. package/lib/sync/layout.js.map +1 -0
  74. package/lib/sync/merge.d.ts +42 -0
  75. package/lib/sync/merge.d.ts.map +1 -0
  76. package/lib/sync/merge.js +159 -0
  77. package/lib/sync/merge.js.map +1 -0
  78. package/lib/sync/service.d.ts +70 -0
  79. package/lib/sync/service.d.ts.map +1 -0
  80. package/lib/sync/service.js +508 -0
  81. package/lib/sync/service.js.map +1 -0
  82. package/lib/todo/store.d.ts +142 -0
  83. package/lib/todo/store.d.ts.map +1 -0
  84. package/lib/todo/store.js +452 -0
  85. package/lib/todo/store.js.map +1 -0
  86. package/lib/types/client/index.d.ts +7 -0
  87. package/lib/types/client/index.d.ts.map +1 -0
  88. package/package.json +63 -0
  89. package/src/client/index.tsx +994 -0
  90. package/src/host/index.ts +591 -0
  91. package/src/host/memory/batch.ts +107 -0
  92. package/src/host/memory/feedback.ts +36 -0
  93. package/src/host/memory/store.ts +650 -0
  94. package/src/host/migration/cli.ts +139 -0
  95. package/src/host/migration/fixture.ts +218 -0
  96. package/src/host/migration/service.ts +786 -0
  97. package/src/host/prompt/snapshot.ts +95 -0
  98. package/src/host/review/queue.ts +325 -0
  99. package/src/host/skills-browser.ts +191 -0
  100. package/src/host/storage/atomic-store.ts +605 -0
  101. package/src/host/storage/layout.ts +191 -0
  102. package/src/host/storage/legacy-format.ts +308 -0
  103. package/src/host/sync/config.ts +67 -0
  104. package/src/host/sync/git.ts +280 -0
  105. package/src/host/sync/index.ts +5 -0
  106. package/src/host/sync/layout.ts +39 -0
  107. package/src/host/sync/merge.ts +188 -0
  108. package/src/host/sync/service.ts +494 -0
  109. package/src/host/todo/store.ts +480 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/host/migration/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { MaestroMemoryStore } from '../memory/store.ts';
2
+ export interface SnapshotContext {
3
+ cwd: string | null;
4
+ branch?: string;
5
+ sessionId?: string;
6
+ sessionName?: string;
7
+ }
8
+ /** Default per-section byte budgets for the snapshot prompt. */
9
+ export declare const SNAPSHOT_SECTION_CAPS: {
10
+ readonly memory: 2048;
11
+ readonly user: 4096;
12
+ readonly key: 6144;
13
+ };
14
+ export type SnapshotSectionKey = keyof typeof SNAPSHOT_SECTION_CAPS;
15
+ export interface SnapshotRenderOpts {
16
+ /** Partial override of {@link SNAPSHOT_SECTION_CAPS}; unspecified sections keep defaults. */
17
+ caps?: Partial<Record<SnapshotSectionKey, number>>;
18
+ }
19
+ /**
20
+ * Bounded snapshot renderer — contract từ README § System Prompt Snapshot:
21
+ * Header (sessionId/sessionName) + USER + global MEMORY + current-project KEY
22
+ * (branch-filtered) + end-of-turn discipline note.
23
+ * daily và project KHÔNG inject.
24
+ */
25
+ export declare function renderSnapshot(store: MaestroMemoryStore, ctx: SnapshotContext, opts?: SnapshotRenderOpts): string;
26
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/host/prompt/snapshot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAG5D,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,gEAAgE;AAChE,eAAO,MAAM,qBAAqB;;;;CAAmD,CAAA;AAErF,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,qBAAqB,CAAA;AAEnE,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAA;CACnD;AAgCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,eAAe,EACpB,IAAI,GAAE,kBAAuB,GAC5B,MAAM,CAiCR"}
@@ -0,0 +1,74 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import { entryHeadPrefix, parseEntrySummary } from "../storage/legacy-format.js";
3
+ /** Default per-section byte budgets for the snapshot prompt. */
4
+ export const SNAPSHOT_SECTION_CAPS = { memory: 2048, user: 4096, key: 6144 };
5
+ const SECTION_SEP = '\n---\n';
6
+ /** Compact an oversize entry to `head + [summary:…]` when it carries a summary tag; otherwise keep whole. */
7
+ function compactToHead(entry) {
8
+ const summary = parseEntrySummary(entry);
9
+ if (summary === null)
10
+ return entry;
11
+ return `${entryHeadPrefix(entry)}[summary:${summary}]`;
12
+ }
13
+ /**
14
+ * Keep the newest entries whose combined UTF-8 size (with separators) fits `cap`.
15
+ * The newest entry is always kept — compacted to its summary head when oversized
16
+ * and tagged; untagged oversize entries stay whole rather than vanishing.
17
+ */
18
+ function fitSection(entries, cap) {
19
+ if (entries.length === 0)
20
+ return [];
21
+ const keptDesc = [];
22
+ let used = 0;
23
+ for (let i = entries.length - 1; i >= 0; i--) {
24
+ const isNewest = keptDesc.length === 0;
25
+ let candidate = entries[i];
26
+ if (isNewest && Buffer.byteLength(candidate, 'utf8') > cap)
27
+ candidate = compactToHead(candidate);
28
+ const cost = Buffer.byteLength(candidate, 'utf8') + (keptDesc.length ? SECTION_SEP.length : 0);
29
+ if (!isNewest && used + cost > cap)
30
+ break;
31
+ keptDesc.push(candidate);
32
+ used += cost;
33
+ }
34
+ return keptDesc.reverse();
35
+ }
36
+ /**
37
+ * Bounded snapshot renderer — contract từ README § System Prompt Snapshot:
38
+ * Header (sessionId/sessionName) + USER + global MEMORY + current-project KEY
39
+ * (branch-filtered) + end-of-turn discipline note.
40
+ * daily và project KHÔNG inject.
41
+ */
42
+ export function renderSnapshot(store, ctx, opts = {}) {
43
+ const caps = { ...SNAPSHOT_SECTION_CAPS, ...opts.caps };
44
+ const parts = [];
45
+ // Header
46
+ if (ctx.sessionId || ctx.sessionName) {
47
+ const header = [
48
+ ctx.sessionId ? `sessionId: ${ctx.sessionId}` : null,
49
+ ctx.sessionName ? `sessionName: ${ctx.sessionName}` : null,
50
+ ].filter(Boolean).join(' | ');
51
+ if (header)
52
+ parts.push(`# Session\n${header}`);
53
+ }
54
+ // Bounded memory sections — delegate branch filtering to store.list, then enforce byte caps
55
+ const mem = fitSection(store.list('memory'), caps.memory);
56
+ const user = fitSection(store.list('user'), caps.user);
57
+ const key = ctx.cwd
58
+ ? fitSection(store.list('key', ctx.cwd, ctx.branch ? { branch: ctx.branch } : {}), caps.key)
59
+ : [];
60
+ if (mem.length)
61
+ parts.push(`# Global Memory\n${mem.join('\n---\n')}`);
62
+ if (user.length)
63
+ parts.push(`# User Memory\n${user.join('\n---\n')}`);
64
+ if (key.length)
65
+ parts.push(`# Project Key Memory\n${key.join('\n---\n')}`);
66
+ // End-of-turn discipline note — verbatim contract (hardened: exactly once, always last)
67
+ const discipline = `---\nEnd of every turn you must: 1. Write daily+project via memory entries (daily+project in one call) 2. Check dtodo list (bounded, max 8)`;
68
+ // Defensive: strip any pre-existing discipline entry (should never occur — parts is fresh per call)
69
+ // then append exactly once so the note is guaranteed last even for empty stores or repeated calls.
70
+ const deduped = parts.filter((p) => p !== discipline);
71
+ deduped.push(discipline);
72
+ return deduped.join('\n\n');
73
+ }
74
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/host/prompt/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * review/queue.ts — SuggestionQueue for M2-PR-B confirmation queue
3
+ * Durable JSONL queue SUGGESTIONS.jsonl, gated memory_suggest and explicit RPC decisions.
4
+ * Handles append/dedupe/edited approval/reject/archive/malformed JSONL/recovery.
5
+ */
6
+ export interface SuggestionEntry {
7
+ time: string;
8
+ target: string;
9
+ content: string;
10
+ reason: string;
11
+ cwd?: string | null;
12
+ sessionId?: string | null;
13
+ hits?: number;
14
+ firstSeen?: string;
15
+ lastSeen?: string;
16
+ }
17
+ export declare function normalizeWhitespace(text: string): string;
18
+ /**
19
+ * SuggestionQueue — durable JSONL queue with malformed recovery and dedupe.
20
+ */
21
+ export declare class SuggestionQueue {
22
+ private readonly file;
23
+ constructor(file: string);
24
+ static fromRoot(memoryDir: string | null, file?: string): SuggestionQueue;
25
+ /** Read all suggestions; missing file -> [], malformed lines skipped. */
26
+ read(): SuggestionEntry[];
27
+ /** Atomically write full list (same-directory lock, temp+rename). */
28
+ write(entries: SuggestionEntry[]): void;
29
+ /** Append one suggestion with dedupe (same target+normalized content bumps hits). */
30
+ append(entry: SuggestionEntry): {
31
+ ok: true;
32
+ queued: number;
33
+ deduped?: boolean;
34
+ hits?: number;
35
+ };
36
+ /** Mutate under lock; fn may edit entries in place. Writes back after fn. */
37
+ mutate<T>(fn: (entries: SuggestionEntry[]) => T): T;
38
+ /** Alias for read */
39
+ list(): SuggestionEntry[];
40
+ private readUnsafe;
41
+ private writeUnsafe;
42
+ }
43
+ /** Enqueue helper with dedupe, used by memory_suggest tool */
44
+ export declare function enqueueSuggestion(queue: SuggestionQueue, target: string, content: string, reason: string, agent?: {
45
+ id?: string;
46
+ session?: {
47
+ header?: {
48
+ cwd?: string | null;
49
+ };
50
+ };
51
+ }): {
52
+ ok: boolean;
53
+ message?: string;
54
+ queued: number;
55
+ hits?: number;
56
+ };
57
+ /** Approve suggestions by 1-based indices, supports edited content and target override */
58
+ export declare function approveSuggestions(store: any, todoStore: any, queue: SuggestionQueue, indices: number[], agent?: any, edits?: Map<number, string>, targets?: Map<number, string>, options?: {
59
+ isTodoEnabled?: () => boolean;
60
+ }): {
61
+ lines: string[];
62
+ remaining: number;
63
+ };
64
+ export declare function rejectSuggestions(queue: SuggestionQueue, indices: number[]): {
65
+ removed: number;
66
+ remaining: number;
67
+ };
68
+ export declare function archiveSuggestions(archive: any, queue: SuggestionQueue, indices: number[]): {
69
+ lines: string[];
70
+ remaining: number;
71
+ };
72
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/host/review/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * review/queue.ts — SuggestionQueue for M2-PR-B confirmation queue
3
+ * Durable JSONL queue SUGGESTIONS.jsonl, gated memory_suggest and explicit RPC decisions.
4
+ * Handles append/dedupe/edited approval/reject/archive/malformed JSONL/recovery.
5
+ */
6
+ import { mkdirSync, readFileSync, writeFileSync, renameSync } from 'node:fs';
7
+ import { dirname, join } from 'node:path';
8
+ import { withLockSync } from "../storage/atomic-store.js";
9
+ import { resolveMemoryRoot, suggestionsPath } from "../storage/layout.js";
10
+ function nowIso() {
11
+ return new Date().toISOString();
12
+ }
13
+ export function normalizeWhitespace(text) {
14
+ return String(text ?? '').replace(/\s+/g, ' ').trim();
15
+ }
16
+ /**
17
+ * SuggestionQueue — durable JSONL queue with malformed recovery and dedupe.
18
+ */
19
+ export class SuggestionQueue {
20
+ file;
21
+ constructor(file) {
22
+ this.file = file;
23
+ }
24
+ static fromRoot(memoryDir, file) {
25
+ const root = resolveMemoryRoot(memoryDir);
26
+ return new SuggestionQueue(file ?? suggestionsPath(root));
27
+ }
28
+ /** Read all suggestions; missing file -> [], malformed lines skipped. */
29
+ read() {
30
+ try {
31
+ const text = readFileSync(this.file, 'utf8');
32
+ const lines = text.split('\n').filter((l) => l.trim().length > 0);
33
+ const out = [];
34
+ for (const line of lines) {
35
+ try {
36
+ const obj = JSON.parse(line);
37
+ if (obj && typeof obj.target === 'string' && typeof obj.content === 'string') {
38
+ out.push(obj);
39
+ }
40
+ }
41
+ catch {
42
+ // skip malformed line (recovery: not crashing, next write cleans)
43
+ continue;
44
+ }
45
+ }
46
+ return out;
47
+ }
48
+ catch (e) {
49
+ if (e?.code === 'ENOENT')
50
+ return [];
51
+ throw e;
52
+ }
53
+ }
54
+ /** Atomically write full list (same-directory lock, temp+rename). */
55
+ write(entries) {
56
+ const dir = dirname(this.file);
57
+ mkdirSync(dir, { recursive: true });
58
+ withLockSync(dir, () => {
59
+ const tmp = join(dir, `.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`);
60
+ const content = entries.map((e) => JSON.stringify(e)).join('\n') + (entries.length > 0 ? '\n' : '');
61
+ writeFileSync(tmp, content, 'utf8');
62
+ renameSync(tmp, this.file);
63
+ });
64
+ }
65
+ /** Append one suggestion with dedupe (same target+normalized content bumps hits). */
66
+ append(entry) {
67
+ const dir = dirname(this.file);
68
+ mkdirSync(dir, { recursive: true });
69
+ return withLockSync(dir, () => {
70
+ const entries = this.readUnsafe();
71
+ const normalized = normalizeWhitespace(entry.content);
72
+ const existing = entries.find((e) => e.target === entry.target && normalizeWhitespace(e.content) === normalized);
73
+ if (existing) {
74
+ existing.hits = (existing.hits ?? 1) + 1;
75
+ existing.lastSeen = nowIso();
76
+ if (entry.reason)
77
+ existing.reason = entry.reason;
78
+ this.writeUnsafe(entries);
79
+ return { ok: true, queued: entries.length, deduped: true, hits: existing.hits };
80
+ }
81
+ const toPush = {
82
+ time: entry.time ?? nowIso(),
83
+ target: entry.target,
84
+ content: entry.content,
85
+ reason: entry.reason,
86
+ cwd: entry.cwd ?? null,
87
+ sessionId: entry.sessionId ?? null,
88
+ hits: 1,
89
+ firstSeen: nowIso(),
90
+ lastSeen: nowIso(),
91
+ };
92
+ entries.push(toPush);
93
+ this.writeUnsafe(entries);
94
+ return { ok: true, queued: entries.length };
95
+ });
96
+ }
97
+ /** Mutate under lock; fn may edit entries in place. Writes back after fn. */
98
+ mutate(fn) {
99
+ const dir = dirname(this.file);
100
+ mkdirSync(dir, { recursive: true });
101
+ return withLockSync(dir, () => {
102
+ const entries = this.readUnsafe();
103
+ const result = fn(entries);
104
+ this.writeUnsafe(entries);
105
+ return result;
106
+ });
107
+ }
108
+ /** Alias for read */
109
+ list() {
110
+ return this.read();
111
+ }
112
+ // internal read without lock (caller holds lock)
113
+ readUnsafe() {
114
+ try {
115
+ const text = readFileSync(this.file, 'utf8');
116
+ const lines = text.split('\n').filter((l) => l.trim().length > 0);
117
+ const out = [];
118
+ for (const line of lines) {
119
+ try {
120
+ const obj = JSON.parse(line);
121
+ if (obj && typeof obj.target === 'string' && typeof obj.content === 'string')
122
+ out.push(obj);
123
+ }
124
+ catch {
125
+ continue;
126
+ }
127
+ }
128
+ return out;
129
+ }
130
+ catch (e) {
131
+ if (e?.code === 'ENOENT')
132
+ return [];
133
+ throw e;
134
+ }
135
+ }
136
+ writeUnsafe(entries) {
137
+ const dir = dirname(this.file);
138
+ mkdirSync(dir, { recursive: true });
139
+ const tmp = join(dir, `.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`);
140
+ const content = entries.map((e) => JSON.stringify(e)).join('\n') + (entries.length > 0 ? '\n' : '');
141
+ writeFileSync(tmp, content, 'utf8');
142
+ renameSync(tmp, this.file);
143
+ }
144
+ }
145
+ /** Enqueue helper with dedupe, used by memory_suggest tool */
146
+ export function enqueueSuggestion(queue, target, content, reason, agent) {
147
+ const normalized = normalizeWhitespace(content);
148
+ if (!normalized)
149
+ return { ok: false, message: 'empty content', queued: queue.read().length };
150
+ if (!reason?.trim())
151
+ return { ok: false, message: 'empty reason', queued: queue.read().length };
152
+ const res = queue.mutate((entries) => {
153
+ const existing = entries.find((e) => e.target === target && normalizeWhitespace(e.content) === normalized);
154
+ if (existing) {
155
+ existing.hits = (existing.hits ?? 1) + 1;
156
+ existing.lastSeen = nowIso();
157
+ if (reason)
158
+ existing.reason = reason;
159
+ return { deduped: true, hits: existing.hits, queued: entries.length };
160
+ }
161
+ entries.push({
162
+ time: nowIso(),
163
+ sessionId: agent?.id ?? null,
164
+ cwd: agent?.session?.header?.cwd ?? null,
165
+ target,
166
+ content,
167
+ reason,
168
+ hits: 1,
169
+ firstSeen: nowIso(),
170
+ lastSeen: nowIso(),
171
+ });
172
+ return { deduped: false, queued: entries.length };
173
+ });
174
+ if (res.deduped) {
175
+ return { ok: true, message: `deduped (hits=${res.hits})`, queued: res.queued, hits: res.hits };
176
+ }
177
+ return { ok: true, queued: res.queued };
178
+ }
179
+ /** Approve suggestions by 1-based indices, supports edited content and target override */
180
+ export function approveSuggestions(store, todoStore, queue, indices, agent, edits, targets, options = {}) {
181
+ const isTodoEnabled = options.isTodoEnabled ?? (() => true);
182
+ return queue.mutate((entries) => {
183
+ const kept = [];
184
+ const lines = [];
185
+ entries.forEach((entry, idx) => {
186
+ const number = idx + 1;
187
+ if (!indices.includes(number)) {
188
+ kept.push(entry);
189
+ return;
190
+ }
191
+ const isTodo = entry.target.startsWith('todo-');
192
+ const target = isTodo ? entry.target : (targets?.get(number) ?? entry.target);
193
+ const edited = edits?.get(number)?.trim();
194
+ const content = edited ? edited : entry.content;
195
+ if (!content?.trim()) {
196
+ lines.push(`✗ #${number} [${target}] empty content, kept`);
197
+ kept.push(entry);
198
+ return;
199
+ }
200
+ if (isTodo && !isTodoEnabled()) {
201
+ lines.push(`✗ #${number} [${target}] TODO_DISABLED: Todo feature is not enabled`);
202
+ kept.push(entry);
203
+ return;
204
+ }
205
+ let outcome;
206
+ if (isTodo) {
207
+ // todoStore may be minimal; try addTodo or add
208
+ if (todoStore?.addTodo)
209
+ outcome = todoStore.addTodo(target.slice(5), content, {}, entry.cwd ?? agent?.session?.header?.cwd);
210
+ else if (todoStore?.add)
211
+ outcome = todoStore.add(target.slice(5), { content }, entry.cwd ?? agent?.session?.header?.cwd);
212
+ else
213
+ outcome = { ok: false, message: 'todo store not available' };
214
+ }
215
+ else {
216
+ const cwdForStore = entry.cwd ?? agent?.session?.header?.cwd ?? null;
217
+ try {
218
+ if (store?.add)
219
+ outcome = store.add(target, content, cwdForStore);
220
+ else
221
+ outcome = { ok: false, message: 'store not available' };
222
+ }
223
+ catch (e) {
224
+ outcome = { ok: false, message: e?.message ?? String(e) };
225
+ }
226
+ }
227
+ if (outcome?.duplicate === true) {
228
+ lines.push(`#${number} [${target}] duplicate skipped`);
229
+ }
230
+ else if (outcome?.ok) {
231
+ lines.push(`#${number} [${target}] approved`);
232
+ }
233
+ else {
234
+ lines.push(`✗ #${number} [${target}] ${outcome?.message ?? outcome?.error ?? 'failed'}`);
235
+ kept.push(entry);
236
+ }
237
+ });
238
+ entries.length = 0;
239
+ entries.push(...kept);
240
+ return { lines, remaining: kept.length };
241
+ });
242
+ }
243
+ export function rejectSuggestions(queue, indices) {
244
+ return queue.mutate((entries) => {
245
+ const kept = [];
246
+ let removed = 0;
247
+ entries.forEach((entry, idx) => {
248
+ if (indices.includes(idx + 1))
249
+ removed += 1;
250
+ else
251
+ kept.push(entry);
252
+ });
253
+ entries.length = 0;
254
+ entries.push(...kept);
255
+ return { removed, remaining: kept.length };
256
+ });
257
+ }
258
+ export function archiveSuggestions(archive, queue, indices) {
259
+ return queue.mutate((entries) => {
260
+ const kept = [];
261
+ const lines = [];
262
+ entries.forEach((entry, idx) => {
263
+ const number = idx + 1;
264
+ if (!indices.includes(number)) {
265
+ kept.push(entry);
266
+ return;
267
+ }
268
+ const originTag = entry.target.startsWith('todo-') ? `\n(original track: ${entry.target})` : '';
269
+ const stamp = new Date().toISOString().slice(0, 10);
270
+ const stamped = `[${stamp}] ${entry.content}${originTag}${entry.reason ? `\n(archive reason: ${entry.reason})` : ''}`;
271
+ // archive may be MaestroMemoryStore or ArchiveStore
272
+ let outcome;
273
+ try {
274
+ if (archive?.append) {
275
+ // ArchiveStore path: needs cwd for key
276
+ if (entry.target === 'key' || entry.target.startsWith('todo-'))
277
+ outcome = archive.append(entry.target, stamped, entry.cwd ?? undefined);
278
+ else
279
+ outcome = archive.append(entry.target, stamped);
280
+ }
281
+ else if (archive?.archive) {
282
+ outcome = archive.archive(entry.target, entry.content, entry.cwd);
283
+ }
284
+ else {
285
+ outcome = { ok: false, message: 'archive not available' };
286
+ }
287
+ }
288
+ catch (e) {
289
+ outcome = { ok: false, message: e?.message ?? String(e) };
290
+ }
291
+ // MaestroMemoryStore archive via atomic store uses raw string; treat any truthy ok
292
+ const ok = outcome?.ok === true || outcome === undefined;
293
+ if (ok) {
294
+ lines.push(`#${number} [${entry.target}] archived`);
295
+ }
296
+ else {
297
+ lines.push(`✗ #${number} [${entry.target}] ${outcome?.message ?? outcome?.error ?? 'archive failed'}`);
298
+ kept.push(entry);
299
+ }
300
+ });
301
+ entries.length = 0;
302
+ entries.push(...kept);
303
+ return { lines, remaining: kept.length };
304
+ });
305
+ }
306
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/host/review/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * host/skills-browser.ts — M6 read-first skills browser
3
+ *
4
+ * Goal: expose existing Maestro skills without taking ownership.
5
+ * - Confirm boundary with maestro-skills and list metadata/origin only.
6
+ * - Read-only: no mutation, no write API.
7
+ * - Model suggestions cannot change skills.
8
+ * - Browser cannot alter maestro-skills discovery behavior (no provider registration, no writes).
9
+ *
10
+ * If later approved to edit, mutation must require explicit user action and
11
+ * symlink/path containment tests before any write support. This file prepares
12
+ * the containment helper (isPathContained) and documents the guard, but does
13
+ * not implement mutation in M6.
14
+ *
15
+ * NOTE for future mutation (NOT implemented in M6):
16
+ * Any future mutation endpoint must require an explicit user action
17
+ * (UI click with confirmation) and must verify path containment via
18
+ * isPathContained(targetPath, allowedRoot) including realpath resolution
19
+ * for symlinks, rejecting any traversal or symlink escape. Tests for
20
+ * symlink/path containment must pass before mutation is enabled.
21
+ */
22
+ export interface SkillBrowseEntry {
23
+ name: string;
24
+ description: string;
25
+ origin: string;
26
+ path: string;
27
+ locator: string;
28
+ metadata: Record<string, string>;
29
+ }
30
+ export interface ListSkillsOpts {
31
+ roots?: Array<{
32
+ dir: string;
33
+ origin: string;
34
+ }>;
35
+ skillsDir?: string;
36
+ origin?: string;
37
+ }
38
+ /**
39
+ * Whether child is contained inside parent (no traversal escape).
40
+ * Uses resolved absolute paths and checks relative path does not start with "..".
41
+ * This helper prepares symlink/path containment tests required before any
42
+ * future mutation support — explicit user action + containment check.
43
+ */
44
+ export declare function isPathContained(child: string, parent: string): boolean;
45
+ /**
46
+ * List skills from a single directory, read-only.
47
+ * - Scans <skillsDir>/* /SKILL.md
48
+ * - Parses frontmatter for name/description
49
+ * - Returns metadata/origin only, does not return body/content
50
+ * - Does not follow symlink escapes for future mutation; for listing we
51
+ * report the logical path, but future mutation will verify containment via
52
+ * isPathContained + realpath.
53
+ */
54
+ export declare function listSkillsSync(skillsDir: string, origin?: string): SkillBrowseEntry[];
55
+ /**
56
+ * Async variant aggregating multiple roots.
57
+ * Each root is { dir, origin }. If only skillsDir is supplied, use that.
58
+ */
59
+ export declare function listSkills(opts?: ListSkillsOpts): Promise<SkillBrowseEntry[]>;
60
+ /**
61
+ * Resolve default maestro-skills directory for browser (read-only).
62
+ * Tries well-known checkout location; returns null if not present.
63
+ * This does NOT alter maestro-skills discovery — it only reads the directory
64
+ * if it exists, for metadata/origin listing.
65
+ */
66
+ export declare function resolveDefaultMaestroSkillsDir(): string | null;
67
+ //# sourceMappingURL=skills-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-browser.d.ts","sourceRoot":"","sources":["../src/host/skills-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOtE;AAsCD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,gBAAgB,EAAE,CAqDvF;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAcvF;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,GAAG,IAAI,CAS9D"}