dsh-daoing-memory 0.1.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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/README.zh-CN.md +91 -0
  4. package/cordis.patch.yml +22 -0
  5. package/lib/client.js +10339 -0
  6. package/lib/client.js.map +1 -0
  7. package/lib/index.js +3138 -0
  8. package/lib/invariant.js +33 -0
  9. package/lib/tools.js +1472 -0
  10. package/lib/typert.host.d.ts +3 -0
  11. package/lib/typert.host.js +4058 -0
  12. package/lib/typert.remote-client.d.ts +149 -0
  13. package/lib/typert.remote-client.d.ts.map +1 -0
  14. package/lib/typert.remote-client.js +3167 -0
  15. package/lib/types/client/ExperiencePage.d.ts +15 -0
  16. package/lib/types/client/ExperiencePage.d.ts.map +1 -0
  17. package/lib/types/client/ExperiencePage.js +117 -0
  18. package/lib/types/client/ExperiencePage.js.map +1 -0
  19. package/lib/types/client/FactDiaryPage.d.ts +17 -0
  20. package/lib/types/client/FactDiaryPage.d.ts.map +1 -0
  21. package/lib/types/client/FactDiaryPage.js +155 -0
  22. package/lib/types/client/FactDiaryPage.js.map +1 -0
  23. package/lib/types/client/HumanOpsPage.d.ts +16 -0
  24. package/lib/types/client/HumanOpsPage.d.ts.map +1 -0
  25. package/lib/types/client/HumanOpsPage.js +208 -0
  26. package/lib/types/client/HumanOpsPage.js.map +1 -0
  27. package/lib/types/client/LedgerPage.d.ts +13 -0
  28. package/lib/types/client/LedgerPage.d.ts.map +1 -0
  29. package/lib/types/client/LedgerPage.js +113 -0
  30. package/lib/types/client/LedgerPage.js.map +1 -0
  31. package/lib/types/client/MemoryNavSection.d.ts +20 -0
  32. package/lib/types/client/MemoryNavSection.d.ts.map +1 -0
  33. package/lib/types/client/MemoryNavSection.js +23 -0
  34. package/lib/types/client/MemoryNavSection.js.map +1 -0
  35. package/lib/types/client/Workbench.d.ts +23 -0
  36. package/lib/types/client/Workbench.d.ts.map +1 -0
  37. package/lib/types/client/Workbench.js +140 -0
  38. package/lib/types/client/Workbench.js.map +1 -0
  39. package/lib/types/client/actions.d.ts +165 -0
  40. package/lib/types/client/actions.d.ts.map +1 -0
  41. package/lib/types/client/actions.js +51 -0
  42. package/lib/types/client/actions.js.map +1 -0
  43. package/lib/types/client/index.d.ts +24 -0
  44. package/lib/types/client/index.d.ts.map +1 -0
  45. package/lib/types/client/index.js +103 -0
  46. package/lib/types/client/index.js.map +1 -0
  47. package/lib/types/client/navStore.d.ts +45 -0
  48. package/lib/types/client/navStore.d.ts.map +1 -0
  49. package/lib/types/client/navStore.js +36 -0
  50. package/lib/types/client/navStore.js.map +1 -0
  51. package/lib/types/core.d.ts +195 -0
  52. package/lib/types/core.d.ts.map +1 -0
  53. package/lib/types/core.js +1304 -0
  54. package/lib/types/core.js.map +1 -0
  55. package/lib/types/index.d.ts +71 -0
  56. package/lib/types/index.d.ts.map +1 -0
  57. package/lib/types/index.js +97 -0
  58. package/lib/types/index.js.map +1 -0
  59. package/lib/types/invariant.d.ts +21 -0
  60. package/lib/types/invariant.d.ts.map +1 -0
  61. package/lib/types/invariant.js +33 -0
  62. package/lib/types/invariant.js.map +1 -0
  63. package/lib/types/service.d.ts +130 -0
  64. package/lib/types/service.d.ts.map +1 -0
  65. package/lib/types/service.js +417 -0
  66. package/lib/types/service.js.map +1 -0
  67. package/lib/types/store.d.ts +244 -0
  68. package/lib/types/store.d.ts.map +1 -0
  69. package/lib/types/store.js +864 -0
  70. package/lib/types/store.js.map +1 -0
  71. package/lib/types/tools.d.ts +25 -0
  72. package/lib/types/tools.d.ts.map +1 -0
  73. package/lib/types/tools.js +1144 -0
  74. package/lib/types/tools.js.map +1 -0
  75. package/lib/types/types.d.ts +836 -0
  76. package/lib/types/types.d.ts.map +1 -0
  77. package/lib/types/types.js +8 -0
  78. package/lib/types/types.js.map +1 -0
  79. package/package.json +106 -0
  80. package/skill/memory-extraction.md +62 -0
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Memory store: durable SQLite persistence for the experience lifecycle,
3
+ * use reports, diary, facts, extractions, recall telemetry, and the
4
+ * append-only hash-chained ledger. Uses node:sqlite (DatabaseSync) so the
5
+ * library runs with zero external services.
6
+ * @module dsh-daoing-memory/store
7
+ */
8
+ import type { DatabaseSync } from 'node:sqlite';
9
+ import type { ConcernEntry, ConcernStatus, ConcernTree, DiaryEntry, EvidenceRef, ExperienceSnapshot, ExperienceStatus, ExtractionRecord, FactEntry, LedgerBlock } from './types.ts';
10
+ /** Monotone store schema version. v1→v2 is an additive ALTER migration (see open()). */
11
+ export declare const MEMORY_SCHEMA_VERSION = 5;
12
+ /** Half-life (ms) of the recency weighting applied to verification samples. */
13
+ export declare const TRUST_HALF_LIFE_MS: number;
14
+ /** One concerns-table row (007 §2). */
15
+ export interface ConcernRowShape {
16
+ id: string;
17
+ parent_id: string | null;
18
+ title: string;
19
+ background: string;
20
+ kind: string | null;
21
+ status: string | null;
22
+ ts: number;
23
+ source_diary_ids: string;
24
+ context: string;
25
+ deleted: number;
26
+ }
27
+ /** One counted use report row. */
28
+ export interface UseReportRow {
29
+ id: string;
30
+ experienceId: string;
31
+ revision: number;
32
+ outcome: 'success' | 'fail';
33
+ attribution: 'experience' | 'environment' | 'unrelated' | 'unknown';
34
+ counted: 'alpha' | 'beta' | 'none';
35
+ evidence: EvidenceRef | undefined;
36
+ dedupeKey: string | undefined;
37
+ ts: number;
38
+ }
39
+ /** One recall telemetry row. */
40
+ export interface RecallEventRow {
41
+ id: string;
42
+ ts: number;
43
+ situation: string;
44
+ injectedIds: string[];
45
+ none: boolean;
46
+ /** Active context scope of the recall ('' = unscoped, 006 §2). */
47
+ context: string;
48
+ }
49
+ /** Hash one ledger block's content, chained to the previous hash. */
50
+ export declare function blockHash(ts: number, op: string, objectType: string, objectId: string, actor: string, payload: string, prevHash: string): string;
51
+ /** Tokenize into latin words + CJK bigrams so Chinese situations match. */
52
+ export declare function tokenize(text: string): string[];
53
+ /** Rough token estimate for injection budgeting (CJK-heavy text). */
54
+ export declare function estimateTokens(text: string): number;
55
+ /** The durable store behind the memory core. */
56
+ export declare class MemoryStore {
57
+ private readonly db;
58
+ /** @param db - an open node:sqlite DatabaseSync handle. */
59
+ constructor(db: DatabaseSync);
60
+ /** Insert or update one experience revision row. */
61
+ upsertExperience(s: ExperienceSnapshot): void;
62
+ /** Read one experience revision. */
63
+ getExperience(familyId: string, revision: number): ExperienceSnapshot | undefined;
64
+ /** The active (non-superseded, non-deleted) revision of a family, if any. */
65
+ getActiveRevision(familyId: string): ExperienceSnapshot | undefined;
66
+ /** All revisions of one family, oldest first. */
67
+ getFamily(familyId: string): ExperienceSnapshot[];
68
+ /** List experience revisions by filter; live-ish first, best trust first. */
69
+ listExperiences(filter: {
70
+ status?: ExperienceStatus;
71
+ kind?: string;
72
+ family?: string;
73
+ context?: string;
74
+ }): ExperienceSnapshot[];
75
+ /**
76
+ * Recall candidates: token overlap against situation+gist+limits of the given
77
+ * statuses, best overlap first. An optional context scopes the pool: only
78
+ * same-context or globally-shared (global_flag) revisions qualify (006 §2).
79
+ */
80
+ recallCandidates(queryTokens: Set<string>, topK: number, opts?: {
81
+ statuses?: ExperienceStatus[];
82
+ context?: string;
83
+ }): {
84
+ snapshot: ExperienceSnapshot;
85
+ score: number;
86
+ }[];
87
+ /**
88
+ * Near-duplicate detection for the information-gain gate (007 flow-log fix).
89
+ * Unlike recallCandidates it scores on gist+situation only (the lesson's
90
+ * identity), so identical lessons with divergent limits/paths still match.
91
+ * Returns the single best match across the requested statuses, or undefined.
92
+ */
93
+ findNearDuplicate(queryTokens: Set<string>, statuses: ExperienceStatus[]): {
94
+ snapshot: ExperienceSnapshot;
95
+ score: number;
96
+ } | undefined;
97
+ /** Count live revisions in one family (capacity budget). */
98
+ countFamilyActive(familyTag: string): number;
99
+ /** Mark one revision deleted (human delete tombstone). */
100
+ deleteFamily(familyId: string): void;
101
+ /**
102
+ * Insert one counted report; a repeated (family, revision, dedupeKey)
103
+ * returns false instead of double-counting (idempotent use).
104
+ */
105
+ insertReport(report: UseReportRow): boolean;
106
+ /** Recent counted reports of one revision, newest first. */
107
+ reportsFor(familyId: string, revision: number, limit: number): UseReportRow[];
108
+ /** Every report row (export). */
109
+ allReports(): UseReportRow[];
110
+ /** Recency-weighted alpha/beta over counted reports. */
111
+ weightedTrust(familyId: string, revision: number, now: number): number;
112
+ /** Append one block, chaining the hash; returns the stored block. */
113
+ appendLedger(block: Omit<LedgerBlock, 'seq' | 'hash'>): LedgerBlock;
114
+ /** The newest block's hash ('' when the ledger is empty). */
115
+ ledgerHead(): string;
116
+ /** Ledger blocks, newest first, optionally filtered. */
117
+ ledgerQuery(filter: {
118
+ objectType?: string;
119
+ objectId?: string;
120
+ op?: string;
121
+ limit: number;
122
+ offset?: number;
123
+ seqFrom?: number;
124
+ seqTo?: number;
125
+ }): LedgerBlock[];
126
+ /** Shared WHERE-builder for the ledger query and its filtered count. */
127
+ private ledgerFilterClauses;
128
+ /** Count ledger blocks matching a filter (for pagination, 007 §2). */
129
+ ledgerQueryCount(filter: {
130
+ objectType?: string;
131
+ objectId?: string;
132
+ op?: string;
133
+ seqFrom?: number;
134
+ seqTo?: number;
135
+ }): number;
136
+ /** The complete ledger, oldest first (integrity checks + export). */
137
+ ledgerAll(): LedgerBlock[];
138
+ /** Total ledger block count. */
139
+ ledgerCount(): number;
140
+ /** Append one diary entry (append-only layer). */
141
+ insertDiary(entry: DiaryEntry): void;
142
+ /** Diary entries, newest first. */
143
+ listDiary(limit: number, offset: number, onlyUnextracted: boolean): DiaryEntry[];
144
+ /** Unextracted entries, oldest first (the extraction window). */
145
+ unextractedDiary(): DiaryEntry[];
146
+ /** Mark diary entries extracted. */
147
+ markDiaryExtracted(ids: string[]): void;
148
+ /** One diary entry by id. */
149
+ getDiary(id: string): DiaryEntry | undefined;
150
+ /** Several diary entries by id, preserving the requested order (008 Path A: fact→diary provenance). */
151
+ getDiaryByIds(ids: string[]): DiaryEntry[];
152
+ /** Diary counters. */
153
+ diaryCounts(): {
154
+ total: number;
155
+ unextracted: number;
156
+ };
157
+ /** Insert one fact version. */
158
+ insertFact(fact: FactEntry): void;
159
+ /** Update one fact version in place (locking, tombstones, supersede links). */
160
+ updateFact(fact: FactEntry): void;
161
+ /** The current (open valid-time window, not deleted) version of one slot. */
162
+ currentFact(category: string, factKey: string): FactEntry | undefined;
163
+ /** One fact version by id. */
164
+ getFact(id: string): FactEntry | undefined;
165
+ /** Shared WHERE for fact filters (008 §3: reused by list + count). */
166
+ private factFilterClauses;
167
+ /** Fact versions by filter (008 §3: server-side pagination). */
168
+ listFacts(filter: {
169
+ category?: string;
170
+ includeHistory: boolean;
171
+ }, limit: number, offset: number): FactEntry[];
172
+ /** Count of facts matching the filter (008 §3: pagination total). */
173
+ factFilteredCount(filter: {
174
+ category?: string;
175
+ includeHistory: boolean;
176
+ }): number;
177
+ /** All fact versions including tombstones (export). */
178
+ allFacts(): FactEntry[];
179
+ /** Fact counters. */
180
+ factCounts(): {
181
+ total: number;
182
+ current: number;
183
+ locked: number;
184
+ conflictPending: number;
185
+ };
186
+ rowToConcern(row: ConcernRowShape): ConcernEntry;
187
+ /** Insert one concerns row (top-level or a discussion mention). */
188
+ insertConcern(c: ConcernEntry): void;
189
+ /**
190
+ * Top-level concerns (newest first) each with its discussion loop (oldest
191
+ * first). Optional kind/status filter + limit/offset pagination over the
192
+ * top-level rows; a mention set is attached for every returned top-level.
193
+ */
194
+ listConcernTrees(filter: {
195
+ kind?: string;
196
+ status?: string;
197
+ }, limit?: number, offset?: number): ConcernTree[];
198
+ /** Count top-level (non-deleted) concerns matching the optional kind/status filter. */
199
+ listConcernsCount(filter: {
200
+ kind?: string;
201
+ status?: string;
202
+ }): number;
203
+ /** Update a top-level concern's lifecycle status. */
204
+ setConcernStatus(id: string, status: ConcernStatus): void;
205
+ /** Tombstone a concern and its whole discussion loop (human-only cleanup). */
206
+ deleteConcernSubtree(id: string): void;
207
+ /** Record one extraction run. */
208
+ insertExtraction(record: ExtractionRecord): void;
209
+ /** Extraction runs, newest first (008 §3: server-side pagination). */
210
+ listExtractions(limit: number, offset: number): ExtractionRecord[];
211
+ /** Total extraction runs (008 §3: pagination count). */
212
+ extractionCount(): number;
213
+ /** Last extraction ts (cadence gate). */
214
+ lastExtractionTs(): number;
215
+ /** Record one consolidation run (which experiences merged into which). */
216
+ recordConsolidation(record: {
217
+ id: string;
218
+ ts: number;
219
+ mergedIds: string[];
220
+ producedId: string;
221
+ note: string;
222
+ }): void;
223
+ /** Last consolidation ts (interval cadence gate; 0 = never consolidated). */
224
+ lastConsolidationTs(): number;
225
+ /** Non-deleted experiences created strictly after `ts` (new material since last consolidation). */
226
+ countExperiencesSince(ts: number): number;
227
+ /** Archive a set of experiences by family_id (leave recall; recoverable — never hard-deleted autonomously). */
228
+ archiveExperienceIds(ids: string[], ts: number): void;
229
+ /** Record one recall event. */
230
+ insertRecallEvent(event: RecallEventRow): void;
231
+ /** Recall telemetry counters. */
232
+ recallCounts(): {
233
+ events: number;
234
+ negative: number;
235
+ };
236
+ /** All recall events (export). */
237
+ allRecallEvents(): RecallEventRow[];
238
+ private rowToExperience;
239
+ private rowToReport;
240
+ private rowToLedger;
241
+ private rowToDiary;
242
+ private rowToFact;
243
+ }
244
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}