@jigyasudham/veto 3.4.0 → 3.5.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 +36 -0
- package/dist/agents/llm-runner.d.ts.map +1 -1
- package/dist/agents/llm-runner.js +61 -4
- package/dist/agents/llm-runner.js.map +1 -1
- package/dist/cli/lessons.d.ts +17 -0
- package/dist/cli/lessons.d.ts.map +1 -0
- package/dist/cli/lessons.js +448 -0
- package/dist/cli/lessons.js.map +1 -0
- package/dist/cli/statusline-hosts.js +1 -1
- package/dist/cli/statusline-hosts.js.map +1 -1
- package/dist/cli/statusline.d.ts +1 -0
- package/dist/cli/statusline.d.ts.map +1 -1
- package/dist/cli/statusline.js +18 -1
- package/dist/cli/statusline.js.map +1 -1
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/lessons/classify.d.ts +3 -0
- package/dist/lessons/classify.d.ts.map +1 -1
- package/dist/lessons/classify.js +12 -5
- package/dist/lessons/classify.js.map +1 -1
- package/dist/lessons/consent.d.ts +30 -0
- package/dist/lessons/consent.d.ts.map +1 -0
- package/dist/lessons/consent.js +86 -0
- package/dist/lessons/consent.js.map +1 -0
- package/dist/lessons/discover.d.ts +7 -0
- package/dist/lessons/discover.d.ts.map +1 -1
- package/dist/lessons/discover.js +5 -5
- package/dist/lessons/discover.js.map +1 -1
- package/dist/lessons/harvest.d.ts +40 -4
- package/dist/lessons/harvest.d.ts.map +1 -1
- package/dist/lessons/harvest.js +192 -17
- package/dist/lessons/harvest.js.map +1 -1
- package/dist/lessons/manage.d.ts +163 -0
- package/dist/lessons/manage.d.ts.map +1 -0
- package/dist/lessons/manage.js +337 -0
- package/dist/lessons/manage.js.map +1 -0
- package/dist/lessons/on-save.d.ts +18 -0
- package/dist/lessons/on-save.d.ts.map +1 -0
- package/dist/lessons/on-save.js +53 -0
- package/dist/lessons/on-save.js.map +1 -0
- package/dist/lessons/select.d.ts +1 -1
- package/dist/lessons/select.d.ts.map +1 -1
- package/dist/lessons/select.js +8 -6
- package/dist/lessons/select.js.map +1 -1
- package/dist/lessons/store.d.ts +80 -1
- package/dist/lessons/store.d.ts.map +1 -1
- package/dist/lessons/store.js +147 -10
- package/dist/lessons/store.js.map +1 -1
- package/dist/memory/config.d.ts +13 -0
- package/dist/memory/config.d.ts.map +1 -1
- package/dist/memory/config.js +24 -0
- package/dist/memory/config.js.map +1 -1
- package/dist/memory/local.d.ts.map +1 -1
- package/dist/memory/local.js +6 -3
- package/dist/memory/local.js.map +1 -1
- package/dist/memory/schema.d.ts +1 -1
- package/dist/memory/schema.d.ts.map +1 -1
- package/dist/memory/schema.js +50 -0
- package/dist/memory/schema.js.map +1 -1
- package/dist/server/handlers/council.d.ts.map +1 -1
- package/dist/server/handlers/council.js +36 -3
- package/dist/server/handlers/council.js.map +1 -1
- package/dist/server/handlers/session.d.ts.map +1 -1
- package/dist/server/handlers/session.js +10 -0
- package/dist/server/handlers/session.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/lessons/select.js
CHANGED
|
@@ -6,7 +6,7 @@ import { STOPWORDS } from '../transcripts/stopwords.js';
|
|
|
6
6
|
import { isLessonsSharingEnabled } from '../memory/config.js';
|
|
7
7
|
import { resolveProjectIdentity } from './identity.js';
|
|
8
8
|
import { claudeProjectSlug, sameClaudeSlug } from './source-project.js';
|
|
9
|
-
import { disabledLessonSources } from './store.js';
|
|
9
|
+
import { disabledLessonSources, isProjectExcluded, lessonEntryKey } from './store.js';
|
|
10
10
|
const K1 = 1.2;
|
|
11
11
|
const B = 0.75;
|
|
12
12
|
const TOKEN_CAP = 500;
|
|
@@ -80,6 +80,8 @@ export function selectLessonsForShadow(input) {
|
|
|
80
80
|
if (!isLessonsSharingEnabled())
|
|
81
81
|
return { lessonIds: [], estimatedTokens: 0, targetProjectIdentity: null, reason: 'consent_off' };
|
|
82
82
|
const targetIdentity = resolveProjectIdentity(input.targetProjectDir);
|
|
83
|
+
if (isProjectExcluded(targetIdentity))
|
|
84
|
+
return { lessonIds: [], estimatedTokens: 0, targetProjectIdentity: targetIdentity, reason: 'project_excluded' };
|
|
83
85
|
const now = input.now ?? Date.now();
|
|
84
86
|
const disabled = disabledLessonSources();
|
|
85
87
|
const all = getDb().prepare('SELECT * FROM lessons').all();
|
|
@@ -95,19 +97,19 @@ export function selectLessonsForShadow(input) {
|
|
|
95
97
|
// Newest wins on conflict: the same entry held in several places (one memory
|
|
96
98
|
// file copied into the D:, F: and G: checkouts' folders) counts once, as its
|
|
97
99
|
// newest version, even when an older copy ranks higher. Identical text from
|
|
98
|
-
// different entries is served once too.
|
|
99
|
-
|
|
100
|
+
// different entries is served once too. Same-named files of two different
|
|
101
|
+
// projects are two entries.
|
|
100
102
|
const newestByEntry = new Map();
|
|
101
103
|
for (const row of candidates) {
|
|
102
|
-
const held = newestByEntry.get(
|
|
104
|
+
const held = newestByEntry.get(lessonEntryKey(row));
|
|
103
105
|
if (!held || Date.parse(row.source_mtime) > Date.parse(held.source_mtime))
|
|
104
|
-
newestByEntry.set(
|
|
106
|
+
newestByEntry.set(lessonEntryKey(row), row);
|
|
105
107
|
}
|
|
106
108
|
const chosen = [];
|
|
107
109
|
const seenText = new Set();
|
|
108
110
|
let tokens = 0;
|
|
109
111
|
for (const { row } of ranked) {
|
|
110
|
-
if (newestByEntry.get(
|
|
112
|
+
if (newestByEntry.get(lessonEntryKey(row)) !== row || seenText.has(row.text_masked))
|
|
111
113
|
continue;
|
|
112
114
|
const estimate = estimateTokens(row.text_masked);
|
|
113
115
|
if (tokens + estimate > TOKEN_CAP)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/lessons/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/lessons/select.ts"],"names":[],"mappings":"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"}
|
package/dist/lessons/store.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LessonSource } from './adapters/index.js';
|
|
2
|
-
import type { LessonScope } from './classify.js';
|
|
2
|
+
import type { LessonScope, ScopeReason } from './classify.js';
|
|
3
3
|
export type LessonRow = {
|
|
4
4
|
id: string;
|
|
5
5
|
source_cli: LessonSource;
|
|
@@ -8,6 +8,7 @@ export type LessonRow = {
|
|
|
8
8
|
project_identity: string;
|
|
9
9
|
project_label: string | null;
|
|
10
10
|
scope: LessonScope;
|
|
11
|
+
scope_reason: ScopeReason | null;
|
|
11
12
|
kind: string;
|
|
12
13
|
text_masked: string;
|
|
13
14
|
source_hash: string;
|
|
@@ -22,6 +23,7 @@ export type HarvestedSection = {
|
|
|
22
23
|
anchor: string;
|
|
23
24
|
textMasked: string;
|
|
24
25
|
scope: LessonScope;
|
|
26
|
+
scopeReason: ScopeReason;
|
|
25
27
|
kind: string;
|
|
26
28
|
quarantineReason: string | null;
|
|
27
29
|
};
|
|
@@ -33,24 +35,101 @@ export type SyncLessonsInput = {
|
|
|
33
35
|
sourceMtime: string;
|
|
34
36
|
sections: HarvestedSection[];
|
|
35
37
|
};
|
|
38
|
+
/** A note's text, compared the way a person would: case and spacing do not make it a different note. */
|
|
39
|
+
export declare function lessonSignature(textMasked: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* One memory entry wherever it is kept: the same file name and section in any
|
|
42
|
+
* checkout of the same project (the D:, F: and G: copies of one Claude memory
|
|
43
|
+
* folder) is one entry, held in several places.
|
|
44
|
+
*/
|
|
45
|
+
export declare function lessonEntryKey(row: {
|
|
46
|
+
source_cli: string;
|
|
47
|
+
project_identity: string;
|
|
48
|
+
source_path: string;
|
|
49
|
+
section_anchor: string;
|
|
50
|
+
}): string;
|
|
51
|
+
/**
|
|
52
|
+
* Tombstone a note and delete it with every version and copy of it. Each row
|
|
53
|
+
* removed gets a tombstone of its own, so a copy's later edits stay forgotten,
|
|
54
|
+
* and so does text identical to a copy (not only to the note picked). Returns
|
|
55
|
+
* how many rows were removed, the note itself included.
|
|
56
|
+
*/
|
|
57
|
+
export declare function tombstoneLesson(row: LessonRow): number;
|
|
58
|
+
export declare function isProjectExcluded(projectIdentity: string): boolean;
|
|
59
|
+
export type ProjectExclusion = {
|
|
60
|
+
project_identity: string;
|
|
61
|
+
project_label: string | null;
|
|
62
|
+
created_at: string;
|
|
63
|
+
};
|
|
64
|
+
export declare function excludedProjects(): ProjectExclusion[];
|
|
65
|
+
/** Keep a project out of sharing, and delete what was already harvested from it. */
|
|
66
|
+
export declare function excludeProject(projectIdentity: string, projectLabel: string | null): {
|
|
67
|
+
added: boolean;
|
|
68
|
+
removed: number;
|
|
69
|
+
};
|
|
70
|
+
export declare function includeProject(projectIdentity: string): boolean;
|
|
36
71
|
/**
|
|
37
72
|
* Make a source's rows exactly its current sections: insert new ones, update
|
|
38
73
|
* changed ones, delete the rest (lifetime = source). A source that failed to
|
|
39
74
|
* parse never reaches this function, so a malformed file cannot erase rows;
|
|
40
75
|
* an empty section list is a successful parse of nothing and clears them.
|
|
76
|
+
* A forgotten section counts as absent: it is deleted, never re-added.
|
|
41
77
|
*/
|
|
42
78
|
export declare function syncLessons(input: SyncLessonsInput): {
|
|
43
79
|
inserted: number;
|
|
44
80
|
updated: number;
|
|
45
81
|
removed: number;
|
|
46
82
|
};
|
|
83
|
+
/** Delete every row harvested from one source file. */
|
|
84
|
+
export declare function deleteLessonSource(source: LessonSource, sourcePath: string): number;
|
|
47
85
|
/** Delete every row whose source file is no longer among the discovered ones. */
|
|
48
86
|
export declare function purgeVanishedLessonSources(present: Array<{
|
|
49
87
|
source: LessonSource;
|
|
50
88
|
sourcePath: string;
|
|
51
89
|
}>): number;
|
|
90
|
+
export type LessonFileState = {
|
|
91
|
+
mtime: string | null;
|
|
92
|
+
size: number | null;
|
|
93
|
+
content_hash: string | null;
|
|
94
|
+
project_identity: string | null;
|
|
95
|
+
harvester_version: number;
|
|
96
|
+
unavailable_streak: number;
|
|
97
|
+
};
|
|
98
|
+
/** What this file looked like when it was last harvested, or null if never. */
|
|
99
|
+
export declare function lessonFileState(source: LessonSource, sourcePath: string): LessonFileState | null;
|
|
100
|
+
/** Remember a successful look at a file. Clears any unavailable streak. */
|
|
101
|
+
export declare function recordLessonFileState(input: {
|
|
102
|
+
source: LessonSource;
|
|
103
|
+
sourcePath: string;
|
|
104
|
+
mtime: string;
|
|
105
|
+
size: number;
|
|
106
|
+
contentHash: string;
|
|
107
|
+
projectIdentity: string;
|
|
108
|
+
harvesterVersion: number;
|
|
109
|
+
}): void;
|
|
110
|
+
/**
|
|
111
|
+
* A file that could not be read. The streak grows so a source that is gone —
|
|
112
|
+
* an unplugged drive, most often — is probed less and less on the save path,
|
|
113
|
+
* where a multi-second stat would be paid by the user for nothing.
|
|
114
|
+
*/
|
|
115
|
+
export declare function recordLessonFileUnavailable(source: LessonSource, sourcePath: string): number;
|
|
116
|
+
/** Drop remembered state for files no longer discovered, so it cannot outlive them. */
|
|
117
|
+
export declare function purgeVanishedLessonFileState(present: Array<{
|
|
118
|
+
source: LessonSource;
|
|
119
|
+
sourcePath: string;
|
|
120
|
+
}>): number;
|
|
121
|
+
/**
|
|
122
|
+
* Projects whose Claude folder was never traced back to a directory on this
|
|
123
|
+
* machine - an unplugged drive, most often. Counted from what is stored rather
|
|
124
|
+
* than from a pass, because a pass that changed nothing resolves no projects.
|
|
125
|
+
*/
|
|
126
|
+
export declare function unresolvedProjectCount(): number;
|
|
127
|
+
/** `veto lessons off` and a forced refresh both need the memory of files cleared. */
|
|
128
|
+
export declare function clearLessonFileState(): number;
|
|
129
|
+
export declare function enableLessonSource(source: LessonSource): boolean;
|
|
52
130
|
export declare function disableLessonSource(source: LessonSource, reason: string): void;
|
|
53
131
|
export declare function isLessonSourceEnabled(source: LessonSource): boolean;
|
|
54
132
|
/** Hosts whose adapter tripped the format-drift canary; their rows are not served. */
|
|
55
133
|
export declare function disabledLessonSources(): Set<LessonSource>;
|
|
134
|
+
export declare function disabledLessonSourceReasons(): Map<LessonSource, string>;
|
|
56
135
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lessons/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lessons/store.ts"],"names":[],"mappings":"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"}
|
package/dist/lessons/store.js
CHANGED
|
@@ -1,11 +1,79 @@
|
|
|
1
1
|
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { basename } from 'node:path';
|
|
2
3
|
import { getDb } from '../memory/local.js';
|
|
3
4
|
/** Per SECTION, over everything stored: an edit elsewhere in the file leaves this row alone. */
|
|
4
5
|
function sectionHash(input, section) {
|
|
5
6
|
return createHash('sha256')
|
|
6
|
-
.update(JSON.stringify([input.projectIdentity, input.projectLabel, section.scope, section.kind, section.quarantineReason, section.textMasked]))
|
|
7
|
+
.update(JSON.stringify([input.projectIdentity, input.projectLabel, section.scope, section.scopeReason, section.kind, section.quarantineReason, section.textMasked]))
|
|
7
8
|
.digest('hex');
|
|
8
9
|
}
|
|
10
|
+
/** A note's text, compared the way a person would: case and spacing do not make it a different note. */
|
|
11
|
+
export function lessonSignature(textMasked) {
|
|
12
|
+
return createHash('sha256').update(textMasked.toLowerCase().replace(/\s+/g, ' ').trim()).digest('hex');
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* One memory entry wherever it is kept: the same file name and section in any
|
|
16
|
+
* checkout of the same project (the D:, F: and G: copies of one Claude memory
|
|
17
|
+
* folder) is one entry, held in several places.
|
|
18
|
+
*/
|
|
19
|
+
export function lessonEntryKey(row) {
|
|
20
|
+
return [row.source_cli, row.project_identity, basename(row.source_path).toLowerCase(), row.section_anchor].join('\n');
|
|
21
|
+
}
|
|
22
|
+
function tombstoneMatcher() {
|
|
23
|
+
const stmt = getDb().prepare(`SELECT 1 FROM lesson_tombstones
|
|
24
|
+
WHERE (source_cli = ? AND source_path = ? AND section_anchor = ?) OR entry_key = ? OR signature = ? LIMIT 1`);
|
|
25
|
+
return probe => stmt.get(probe.source_cli, probe.source_path, probe.section_anchor, lessonEntryKey(probe), lessonSignature(probe.text_masked)) !== undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Tombstone a note and delete it with every version and copy of it. Each row
|
|
29
|
+
* removed gets a tombstone of its own, so a copy's later edits stay forgotten,
|
|
30
|
+
* and so does text identical to a copy (not only to the note picked). Returns
|
|
31
|
+
* how many rows were removed, the note itself included.
|
|
32
|
+
*/
|
|
33
|
+
export function tombstoneLesson(row) {
|
|
34
|
+
return inTransaction(() => {
|
|
35
|
+
const db = getDb();
|
|
36
|
+
const forgetId = randomUUID();
|
|
37
|
+
const now = new Date().toISOString();
|
|
38
|
+
const insert = db.prepare(`INSERT INTO lesson_tombstones (id, forget_id, source_cli, source_path, section_anchor, entry_key, signature, created_at)
|
|
39
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
40
|
+
const del = db.prepare('DELETE FROM lessons WHERE id = ?');
|
|
41
|
+
const forgotten = tombstoneMatcher();
|
|
42
|
+
const tombstoned = new Set();
|
|
43
|
+
let pending = [row];
|
|
44
|
+
let removed = 0;
|
|
45
|
+
while (pending.length) {
|
|
46
|
+
for (const r of pending) {
|
|
47
|
+
tombstoned.add(r.id);
|
|
48
|
+
insert.run(randomUUID(), forgetId, r.source_cli, r.source_path, r.section_anchor, lessonEntryKey(r), lessonSignature(r.text_masked), now);
|
|
49
|
+
}
|
|
50
|
+
const matches = db.prepare('SELECT * FROM lessons').all().filter(forgotten);
|
|
51
|
+
for (const r of matches)
|
|
52
|
+
removed += Number(del.run(r.id).changes);
|
|
53
|
+
pending = matches.filter(r => !tombstoned.has(r.id));
|
|
54
|
+
}
|
|
55
|
+
return removed;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function isProjectExcluded(projectIdentity) {
|
|
59
|
+
return getDb().prepare('SELECT 1 FROM lesson_project_exclusions WHERE project_identity = ?').get(projectIdentity) !== undefined;
|
|
60
|
+
}
|
|
61
|
+
export function excludedProjects() {
|
|
62
|
+
return getDb().prepare('SELECT project_identity, project_label, created_at FROM lesson_project_exclusions ORDER BY created_at').all();
|
|
63
|
+
}
|
|
64
|
+
/** Keep a project out of sharing, and delete what was already harvested from it. */
|
|
65
|
+
export function excludeProject(projectIdentity, projectLabel) {
|
|
66
|
+
return inTransaction(() => {
|
|
67
|
+
const db = getDb();
|
|
68
|
+
const added = Number(db.prepare('INSERT OR IGNORE INTO lesson_project_exclusions (project_identity, project_label, created_at) VALUES (?, ?, ?)')
|
|
69
|
+
.run(projectIdentity, projectLabel, new Date().toISOString()).changes) > 0;
|
|
70
|
+
const removed = Number(db.prepare('DELETE FROM lessons WHERE project_identity = ?').run(projectIdentity).changes);
|
|
71
|
+
return { added, removed };
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export function includeProject(projectIdentity) {
|
|
75
|
+
return Number(getDb().prepare('DELETE FROM lesson_project_exclusions WHERE project_identity = ?').run(projectIdentity).changes) > 0;
|
|
76
|
+
}
|
|
9
77
|
function inTransaction(run) {
|
|
10
78
|
const db = getDb();
|
|
11
79
|
db.exec('BEGIN');
|
|
@@ -24,37 +92,47 @@ function inTransaction(run) {
|
|
|
24
92
|
* changed ones, delete the rest (lifetime = source). A source that failed to
|
|
25
93
|
* parse never reaches this function, so a malformed file cannot erase rows;
|
|
26
94
|
* an empty section list is a successful parse of nothing and clears them.
|
|
95
|
+
* A forgotten section counts as absent: it is deleted, never re-added.
|
|
27
96
|
*/
|
|
28
97
|
export function syncLessons(input) {
|
|
29
98
|
return inTransaction(() => {
|
|
30
99
|
const db = getDb();
|
|
31
100
|
const existing = db.prepare('SELECT id, source_hash FROM lessons WHERE source_cli = ? AND source_path = ? AND section_anchor = ?');
|
|
32
|
-
const insert = db.prepare(`INSERT INTO lessons (id, source_cli, source_path, section_anchor, project_identity, project_label, scope, kind, text_masked, source_hash, source_mtime, quarantined, quarantine_reason, created_at, updated_at)
|
|
33
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
34
|
-
const update = db.prepare(`UPDATE lessons SET project_identity = ?, project_label = ?, scope = ?, kind = ?, text_masked = ?, source_hash = ?, source_mtime = ?, quarantined = ?, quarantine_reason = ?, updated_at = ? WHERE id = ?`);
|
|
101
|
+
const insert = db.prepare(`INSERT INTO lessons (id, source_cli, source_path, section_anchor, project_identity, project_label, scope, scope_reason, kind, text_masked, source_hash, source_mtime, quarantined, quarantine_reason, created_at, updated_at)
|
|
102
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
|
|
103
|
+
const update = db.prepare(`UPDATE lessons SET project_identity = ?, project_label = ?, scope = ?, scope_reason = ?, kind = ?, text_masked = ?, source_hash = ?, source_mtime = ?, quarantined = ?, quarantine_reason = ?, updated_at = ? WHERE id = ?`);
|
|
104
|
+
const forgotten = tombstoneMatcher();
|
|
35
105
|
const now = new Date().toISOString();
|
|
36
106
|
let inserted = 0;
|
|
37
107
|
let updated = 0;
|
|
38
|
-
|
|
108
|
+
const kept = input.sections.filter(section => !forgotten({
|
|
109
|
+
source_cli: input.sourceCli, source_path: input.sourcePath, section_anchor: section.anchor,
|
|
110
|
+
project_identity: input.projectIdentity, text_masked: section.textMasked,
|
|
111
|
+
}));
|
|
112
|
+
for (const section of kept) {
|
|
39
113
|
const hash = sectionHash(input, section);
|
|
40
114
|
const quarantined = section.quarantineReason ? 1 : 0;
|
|
41
115
|
const row = existing.get(input.sourceCli, input.sourcePath, section.anchor);
|
|
42
116
|
if (!row) {
|
|
43
|
-
insert.run(randomUUID(), input.sourceCli, input.sourcePath, section.anchor, input.projectIdentity, input.projectLabel, section.scope, section.kind, section.textMasked, hash, input.sourceMtime, quarantined, section.quarantineReason, now, now);
|
|
117
|
+
insert.run(randomUUID(), input.sourceCli, input.sourcePath, section.anchor, input.projectIdentity, input.projectLabel, section.scope, section.scopeReason, section.kind, section.textMasked, hash, input.sourceMtime, quarantined, section.quarantineReason, now, now);
|
|
44
118
|
inserted++;
|
|
45
119
|
}
|
|
46
120
|
else if (row.source_hash !== hash) {
|
|
47
|
-
update.run(input.projectIdentity, input.projectLabel, section.scope, section.kind, section.textMasked, hash, input.sourceMtime, quarantined, section.quarantineReason, now, row.id);
|
|
121
|
+
update.run(input.projectIdentity, input.projectLabel, section.scope, section.scopeReason, section.kind, section.textMasked, hash, input.sourceMtime, quarantined, section.quarantineReason, now, row.id);
|
|
48
122
|
updated++;
|
|
49
123
|
}
|
|
50
124
|
}
|
|
51
|
-
const anchors =
|
|
125
|
+
const anchors = kept.map(section => section.anchor);
|
|
52
126
|
const keep = anchors.length ? ` AND section_anchor NOT IN (${anchors.map(() => '?').join(', ')})` : '';
|
|
53
127
|
const removed = Number(db.prepare(`DELETE FROM lessons WHERE source_cli = ? AND source_path = ?${keep}`)
|
|
54
128
|
.run(input.sourceCli, input.sourcePath, ...anchors).changes);
|
|
55
129
|
return { inserted, updated, removed };
|
|
56
130
|
});
|
|
57
131
|
}
|
|
132
|
+
/** Delete every row harvested from one source file. */
|
|
133
|
+
export function deleteLessonSource(source, sourcePath) {
|
|
134
|
+
return Number(getDb().prepare('DELETE FROM lessons WHERE source_cli = ? AND source_path = ?').run(source, sourcePath).changes);
|
|
135
|
+
}
|
|
58
136
|
/** Delete every row whose source file is no longer among the discovered ones. */
|
|
59
137
|
export function purgeVanishedLessonSources(present) {
|
|
60
138
|
const keep = new Set(present.map(p => `${p.source}\u0000${p.sourcePath}`));
|
|
@@ -68,6 +146,62 @@ export function purgeVanishedLessonSources(present) {
|
|
|
68
146
|
}
|
|
69
147
|
return removed;
|
|
70
148
|
}
|
|
149
|
+
/** What this file looked like when it was last harvested, or null if never. */
|
|
150
|
+
export function lessonFileState(source, sourcePath) {
|
|
151
|
+
const row = getDb().prepare('SELECT mtime, size, content_hash, project_identity, harvester_version, unavailable_streak FROM lesson_file_state WHERE source_cli = ? AND source_path = ?')
|
|
152
|
+
.get(source, sourcePath);
|
|
153
|
+
return row ?? null;
|
|
154
|
+
}
|
|
155
|
+
/** Remember a successful look at a file. Clears any unavailable streak. */
|
|
156
|
+
export function recordLessonFileState(input) {
|
|
157
|
+
getDb().prepare(`INSERT INTO lesson_file_state (source_cli, source_path, mtime, size, content_hash, project_identity, harvester_version, unavailable_streak, unavailable_at, checked_at)
|
|
158
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, 0, NULL, ?)
|
|
159
|
+
ON CONFLICT(source_cli, source_path) DO UPDATE SET mtime = excluded.mtime, size = excluded.size, content_hash = excluded.content_hash,
|
|
160
|
+
project_identity = excluded.project_identity, harvester_version = excluded.harvester_version, unavailable_streak = 0, unavailable_at = NULL, checked_at = excluded.checked_at`)
|
|
161
|
+
.run(input.source, input.sourcePath, input.mtime, input.size, input.contentHash, input.projectIdentity, input.harvesterVersion, new Date().toISOString());
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* A file that could not be read. The streak grows so a source that is gone —
|
|
165
|
+
* an unplugged drive, most often — is probed less and less on the save path,
|
|
166
|
+
* where a multi-second stat would be paid by the user for nothing.
|
|
167
|
+
*/
|
|
168
|
+
export function recordLessonFileUnavailable(source, sourcePath) {
|
|
169
|
+
const now = new Date().toISOString();
|
|
170
|
+
getDb().prepare(`INSERT INTO lesson_file_state (source_cli, source_path, harvester_version, unavailable_streak, unavailable_at, checked_at)
|
|
171
|
+
VALUES (?, ?, 0, 1, ?, ?)
|
|
172
|
+
ON CONFLICT(source_cli, source_path) DO UPDATE SET unavailable_streak = lesson_file_state.unavailable_streak + 1, unavailable_at = excluded.unavailable_at, checked_at = excluded.checked_at`)
|
|
173
|
+
.run(source, sourcePath, now, now);
|
|
174
|
+
return lessonFileState(source, sourcePath)?.unavailable_streak ?? 1;
|
|
175
|
+
}
|
|
176
|
+
/** Drop remembered state for files no longer discovered, so it cannot outlive them. */
|
|
177
|
+
export function purgeVanishedLessonFileState(present) {
|
|
178
|
+
const keep = new Set(present.map(p => `${p.source}\u0000${p.sourcePath}`));
|
|
179
|
+
const db = getDb();
|
|
180
|
+
const rows = db.prepare('SELECT source_cli, source_path FROM lesson_file_state').all();
|
|
181
|
+
const del = db.prepare('DELETE FROM lesson_file_state WHERE source_cli = ? AND source_path = ?');
|
|
182
|
+
let removed = 0;
|
|
183
|
+
for (const row of rows) {
|
|
184
|
+
if (!keep.has(`${row.source_cli}\u0000${row.source_path}`))
|
|
185
|
+
removed += Number(del.run(row.source_cli, row.source_path).changes);
|
|
186
|
+
}
|
|
187
|
+
return removed;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Projects whose Claude folder was never traced back to a directory on this
|
|
191
|
+
* machine - an unplugged drive, most often. Counted from what is stored rather
|
|
192
|
+
* than from a pass, because a pass that changed nothing resolves no projects.
|
|
193
|
+
*/
|
|
194
|
+
export function unresolvedProjectCount() {
|
|
195
|
+
const row = getDb().prepare("SELECT COUNT(DISTINCT project_identity) AS n FROM lessons WHERE project_identity LIKE 'claude-slug:%'").get();
|
|
196
|
+
return row.n;
|
|
197
|
+
}
|
|
198
|
+
/** `veto lessons off` and a forced refresh both need the memory of files cleared. */
|
|
199
|
+
export function clearLessonFileState() {
|
|
200
|
+
return Number(getDb().prepare('DELETE FROM lesson_file_state').run().changes);
|
|
201
|
+
}
|
|
202
|
+
export function enableLessonSource(source) {
|
|
203
|
+
return Number(getDb().prepare('DELETE FROM lesson_source_state WHERE source_cli = ?').run(source).changes) > 0;
|
|
204
|
+
}
|
|
71
205
|
export function disableLessonSource(source, reason) {
|
|
72
206
|
getDb().prepare(`INSERT INTO lesson_source_state (source_cli, enabled, disabled_reason, checked_at) VALUES (?, 0, ?, ?)
|
|
73
207
|
ON CONFLICT(source_cli) DO UPDATE SET enabled = 0, disabled_reason = excluded.disabled_reason, checked_at = excluded.checked_at`)
|
|
@@ -79,7 +213,10 @@ export function isLessonSourceEnabled(source) {
|
|
|
79
213
|
}
|
|
80
214
|
/** Hosts whose adapter tripped the format-drift canary; their rows are not served. */
|
|
81
215
|
export function disabledLessonSources() {
|
|
82
|
-
|
|
83
|
-
|
|
216
|
+
return new Set(disabledLessonSourceReasons().keys());
|
|
217
|
+
}
|
|
218
|
+
export function disabledLessonSourceReasons() {
|
|
219
|
+
const rows = getDb().prepare('SELECT source_cli, disabled_reason FROM lesson_source_state WHERE enabled = 0').all();
|
|
220
|
+
return new Map(rows.map(row => [row.source_cli, row.disabled_reason ?? 'format drift']));
|
|
84
221
|
}
|
|
85
222
|
//# sourceMappingURL=store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/lessons/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/lessons/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA0C3C,gGAAgG;AAChG,SAAS,WAAW,CAAC,KAAuB,EAAE,OAAyB;IACrE,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;SACnK,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,GAAkG;IAC/H,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxH,CAAC;AAID,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC;gHACiF,CAAC,CAAC;IAChH,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,SAAS,CAAC;AAC/J,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAc;IAC5C,OAAO,aAAa,CAAC,GAAG,EAAE;QACxB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;sCACQ,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5I,CAAC;YACD,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,GAAG,EAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7F,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAClE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,eAAuB;IACvD,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,SAAS,CAAC;AAClI,CAAC;AAID,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,EAAE,CAAC,OAAO,CAAC,uGAAuG,CAAC,CAAC,GAAG,EAAwB,CAAC;AAC9J,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,eAAuB,EAAE,YAA2B;IACjF,OAAO,aAAa,CAAC,GAAG,EAAE;QACxB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,gHAAgH,CAAC;aAC9I,GAAG,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;QAClH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,eAAuB;IACpD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtI,CAAC;AAED,SAAS,aAAa,CAAI,GAAY;IACpC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC;QAAC,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;QAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;IACzD,OAAO,GAAG,EAAE,CAAC;QAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAC,MAAM,GAAG,CAAC;IAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,aAAa,CAAC,GAAG,EAAE;QACxB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,qGAAqG,CAAC,CAAC;QACnI,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;8DACgC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,4NAA4N,CAAC,CAAC;QACxP,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;YACvD,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM;YAC1F,gBAAgB,EAAE,KAAK,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU;SACzE,CAAC,CAAC,CAAC;QACJ,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAoD,CAAC;YAC/H,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EACvJ,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC9G,QAAQ,EAAE,CAAC;YACb,CAAC;iBAAM,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EACjJ,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,+DAA+D,IAAI,EAAE,CAAC;aACrG,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,UAAkB;IACzE,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;AACjI,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,0BAA0B,CAAC,OAA4D;IACrG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,EAAwD,CAAC;IAC5I,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC;IACvF,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IAClI,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAWD,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,UAAkB;IACtE,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,2JAA2J,CAAC;SACrL,GAAG,CAAC,MAAM,EAAE,UAAU,CAAgC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,KAErC;IACC,KAAK,EAAE,CAAC,OAAO,CAAC;;;oLAGkK,CAAC;SAChL,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9J,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAoB,EAAE,UAAkB;IAClF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,OAAO,CAAC;;iMAE+K,CAAC;SAC7L,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,OAAO,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,kBAAkB,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,4BAA4B,CAAC,OAA4D;IACvG,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAA8D,CAAC;IACnJ,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC;IACjG,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,UAAU,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IAClI,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,uGAAuG,CAAC,CAAC,GAAG,EAAmB,CAAC;IAC5J,OAAO,GAAG,CAAC,CAAC,CAAC;AACf,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,oBAAoB;IAClC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB,EAAE,MAAc;IACtE,KAAK,EAAE,CAAC,OAAO,CAAC;oIACkH,CAAC;SAChI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAoC,CAAC;IAC3I,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,GAAG,CAAC,2BAA2B,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,+EAA+E,CAAC,CAAC,GAAG,EAAyE,CAAC;IAC3L,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,eAAe,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;AAC3F,CAAC"}
|
package/dist/memory/config.d.ts
CHANGED
|
@@ -12,6 +12,15 @@ export type LessonsConfig = {
|
|
|
12
12
|
consent_at: string | null;
|
|
13
13
|
cross_project: boolean;
|
|
14
14
|
cross_vendor: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Whether saving a session also re-reads each AI's memory. On by default:
|
|
17
|
+
* recording notes by hand is the thing that never happens. Turning it off
|
|
18
|
+
* leaves consent and every `veto lessons` command working, so a problem in
|
|
19
|
+
* the field is one setting away from being stopped (council 534e2bd5).
|
|
20
|
+
*/
|
|
21
|
+
harvest_on_save: boolean;
|
|
22
|
+
/** When saving a session first harvested; the one-time note is shown once. */
|
|
23
|
+
first_harvest_at: string | null;
|
|
15
24
|
};
|
|
16
25
|
export declare const LESSONS_CONSENT_VERSION = 2;
|
|
17
26
|
export declare const DEFAULT_LESSONS: LessonsConfig;
|
|
@@ -35,5 +44,9 @@ export declare function setConfig(partial: Partial<VetoConfig>): void;
|
|
|
35
44
|
/** Explicit v2 opt-in. No version upgrade can silently enable sharing. */
|
|
36
45
|
export declare function enableLessonsSharing(): LessonsConfig;
|
|
37
46
|
export declare function disableLessonsSharing(): void;
|
|
47
|
+
/** True once, the first time a save harvests, so the user is told it happens. */
|
|
48
|
+
export declare function firstHarvestOnSave(): boolean;
|
|
49
|
+
/** Whether a session save should also re-read each AI's memory. */
|
|
50
|
+
export declare function isHarvestOnSaveEnabled(config?: LessonsConfig): boolean;
|
|
38
51
|
export declare function isLessonsSharingEnabled(config?: LessonsConfig): boolean;
|
|
39
52
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/memory/config.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAIF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/memory/config.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAIF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAMF,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,eAAe,EAAE,aAQ7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,gBAAgB,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE,cAAc,GAAG,KAAK,CAAC;IAGrC,mBAAmB,EAAE,OAAO,CAAC;IAI7B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,OAAO,EAAE,aAAa,CAAC;CACxB,CAAC;AAYF,eAAO,MAAM,eAAe,EAAE,UAAU,CAAC,kBAAkB,CAK1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,iBAOjC,CAAC;AA2BF,wBAAgB,SAAS,IAAI,UAAU,CAoCtC;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAc5D;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,IAAI,aAAa,CAcpD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,IAAI,OAAO,CAK5C;AAED,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,aAAmC,GAAG,OAAO,CAE3F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,GAAE,aAAmC,GAAG,OAAO,CAK5F"}
|
package/dist/memory/config.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { join, dirname } from 'node:path';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
4
|
+
// Consent v2 covers the trial only: reading notes and logging what would have
|
|
5
|
+
// been shared. Its disclosure PROMISES to ask again before any note is given to
|
|
6
|
+
// an AI (owner, 2026-09-20), so the release that starts delivery must bump this
|
|
7
|
+
// to 3, which pauses sharing until each user accepts the new disclosure.
|
|
4
8
|
export const LESSONS_CONSENT_VERSION = 2;
|
|
5
9
|
export const DEFAULT_LESSONS = {
|
|
6
10
|
enabled: false,
|
|
@@ -8,6 +12,8 @@ export const DEFAULT_LESSONS = {
|
|
|
8
12
|
consent_at: null,
|
|
9
13
|
cross_project: false,
|
|
10
14
|
cross_vendor: false,
|
|
15
|
+
harvest_on_save: true,
|
|
16
|
+
first_harvest_at: null,
|
|
11
17
|
};
|
|
12
18
|
// VETO_CONFIG_PATH overrides the config location (tests isolate here, mirroring
|
|
13
19
|
// VETO_TEST_DB). Read per-call so the override applies even after this module
|
|
@@ -51,6 +57,8 @@ function normalizeLessons(raw) {
|
|
|
51
57
|
consent_at: typeof raw?.consent_at === 'string' ? raw.consent_at : null,
|
|
52
58
|
cross_project: raw?.cross_project === true,
|
|
53
59
|
cross_vendor: raw?.cross_vendor === true,
|
|
60
|
+
harvest_on_save: raw?.harvest_on_save !== false,
|
|
61
|
+
first_harvest_at: typeof raw?.first_harvest_at === 'string' ? raw.first_harvest_at : null,
|
|
54
62
|
};
|
|
55
63
|
}
|
|
56
64
|
export function getConfig() {
|
|
@@ -114,6 +122,10 @@ export function enableLessonsSharing() {
|
|
|
114
122
|
consent_at: new Date().toISOString(),
|
|
115
123
|
cross_project: true,
|
|
116
124
|
cross_vendor: true,
|
|
125
|
+
// Turning sharing on keeps the switch the user last chose, so a machine
|
|
126
|
+
// that had harvest-on-save off does not silently get it back.
|
|
127
|
+
harvest_on_save: getConfig().lessons.harvest_on_save,
|
|
128
|
+
first_harvest_at: getConfig().lessons.first_harvest_at,
|
|
117
129
|
};
|
|
118
130
|
setConfig({ lessons });
|
|
119
131
|
return lessons;
|
|
@@ -122,6 +134,18 @@ export function disableLessonsSharing() {
|
|
|
122
134
|
const current = getConfig().lessons;
|
|
123
135
|
setConfig({ lessons: { ...current, enabled: false, cross_project: false, cross_vendor: false } });
|
|
124
136
|
}
|
|
137
|
+
/** True once, the first time a save harvests, so the user is told it happens. */
|
|
138
|
+
export function firstHarvestOnSave() {
|
|
139
|
+
const current = getConfig().lessons;
|
|
140
|
+
if (current.first_harvest_at)
|
|
141
|
+
return false;
|
|
142
|
+
setConfig({ lessons: { ...current, first_harvest_at: new Date().toISOString() } });
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
/** Whether a session save should also re-read each AI's memory. */
|
|
146
|
+
export function isHarvestOnSaveEnabled(config = getConfig().lessons) {
|
|
147
|
+
return isLessonsSharingEnabled(config) && config.harvest_on_save !== false;
|
|
148
|
+
}
|
|
125
149
|
export function isLessonsSharingEnabled(config = getConfig().lessons) {
|
|
126
150
|
return config.enabled
|
|
127
151
|
&& config.consent_version === LESSONS_CONSENT_VERSION
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/memory/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/memory/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/memory/local.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA8BhD,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AACD,OAAO,EAAyC,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAqB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAG7L,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AAmCF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAS7E;AAOD,wBAAgB,OAAO,IAAI,IAAI,CAE9B;AAED,wBAAgB,KAAK,IAAI,YAAY,CA4BpC;
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/memory/local.ts"],"names":[],"mappings":"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"}
|