crbro-memory 2.9.0 → 2.10.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/README.md +25 -16
  2. package/SECURITY.md +27 -2
  3. package/bin/crbro.mjs +18 -1
  4. package/dist/daemon/endpoint.d.ts +1 -0
  5. package/dist/daemon/endpoint.d.ts.map +1 -1
  6. package/dist/daemon/endpoint.js +4 -13
  7. package/dist/daemon/endpoint.js.map +1 -1
  8. package/dist/engine/backup.d.ts.map +1 -1
  9. package/dist/engine/backup.js +4 -0
  10. package/dist/engine/backup.js.map +1 -1
  11. package/dist/engine/cortex.d.ts +18 -6
  12. package/dist/engine/cortex.d.ts.map +1 -1
  13. package/dist/engine/cortex.js +119 -92
  14. package/dist/engine/cortex.js.map +1 -1
  15. package/dist/engine/doctor.d.ts +93 -0
  16. package/dist/engine/doctor.d.ts.map +1 -0
  17. package/dist/engine/doctor.js +378 -0
  18. package/dist/engine/doctor.js.map +1 -0
  19. package/dist/engine/evidence.d.ts +26 -0
  20. package/dist/engine/evidence.d.ts.map +1 -0
  21. package/dist/engine/evidence.js +171 -0
  22. package/dist/engine/evidence.js.map +1 -0
  23. package/dist/engine/hippocampus.d.ts.map +1 -1
  24. package/dist/engine/hippocampus.js +32 -29
  25. package/dist/engine/hippocampus.js.map +1 -1
  26. package/dist/engine/keychain.d.ts.map +1 -1
  27. package/dist/engine/keychain.js +52 -20
  28. package/dist/engine/keychain.js.map +1 -1
  29. package/dist/engine/maintenance.d.ts.map +1 -1
  30. package/dist/engine/maintenance.js +3 -3
  31. package/dist/engine/maintenance.js.map +1 -1
  32. package/dist/engine/prefrontal.d.ts +4 -1
  33. package/dist/engine/prefrontal.d.ts.map +1 -1
  34. package/dist/engine/prefrontal.js +100 -66
  35. package/dist/engine/prefrontal.js.map +1 -1
  36. package/dist/engine/projects.d.ts +20 -0
  37. package/dist/engine/projects.d.ts.map +1 -0
  38. package/dist/engine/projects.js +80 -0
  39. package/dist/engine/projects.js.map +1 -0
  40. package/dist/engine/secrets.d.ts.map +1 -1
  41. package/dist/engine/secrets.js +12 -1
  42. package/dist/engine/secrets.js.map +1 -1
  43. package/dist/engine/shelf.d.ts +66 -8
  44. package/dist/engine/shelf.d.ts.map +1 -1
  45. package/dist/engine/shelf.js +350 -12
  46. package/dist/engine/shelf.js.map +1 -1
  47. package/dist/search/index.d.ts +5 -0
  48. package/dist/search/index.d.ts.map +1 -1
  49. package/dist/search/index.js +21 -8
  50. package/dist/search/index.js.map +1 -1
  51. package/dist/search/quality.d.ts +18 -0
  52. package/dist/search/quality.d.ts.map +1 -0
  53. package/dist/search/quality.js +31 -0
  54. package/dist/search/quality.js.map +1 -0
  55. package/dist/server.d.ts.map +1 -1
  56. package/dist/server.js +123 -34
  57. package/dist/server.js.map +1 -1
  58. package/dist/sync/materialize.d.ts +1 -0
  59. package/dist/sync/materialize.d.ts.map +1 -1
  60. package/dist/sync/materialize.js +33 -8
  61. package/dist/sync/materialize.js.map +1 -1
  62. package/dist/sync/ops.d.ts +7 -2
  63. package/dist/sync/ops.d.ts.map +1 -1
  64. package/dist/sync/ops.js.map +1 -1
  65. package/dist/sync/space.d.ts +5 -3
  66. package/dist/sync/space.d.ts.map +1 -1
  67. package/dist/sync/space.js +187 -77
  68. package/dist/sync/space.js.map +1 -1
  69. package/dist/types/index.d.ts +30 -5
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/utils/lock.d.ts +2 -0
  72. package/dist/utils/lock.d.ts.map +1 -1
  73. package/dist/utils/lock.js +132 -52
  74. package/dist/utils/lock.js.map +1 -1
  75. package/dist/version.d.ts +26 -0
  76. package/dist/version.d.ts.map +1 -0
  77. package/dist/version.js +65 -0
  78. package/dist/version.js.map +1 -0
  79. package/hooks/crbro-lifecycle.mjs +612 -608
  80. package/package.json +5 -5
@@ -15,6 +15,25 @@ function toTask(entry) {
15
15
  }
16
16
  return entry;
17
17
  }
18
+ function normalizeContext(ctx) {
19
+ return {
20
+ last_session: '', active_topics: [], last_updated: (0, fs_js_1.now)(), ...ctx,
21
+ pending_tasks: (ctx?.pending_tasks || []).map(toTask),
22
+ recently_closed: ctx?.recently_closed || [],
23
+ };
24
+ }
25
+ function projectView(ctx, project) {
26
+ if (!project)
27
+ return ctx;
28
+ const visible = (t) => !t.project || t.project === project;
29
+ return {
30
+ ...ctx, active_topics: ctx.project_topics?.[project] || [],
31
+ project_topics: ctx.project_topics?.[project] ? { [project]: ctx.project_topics[project] } : {},
32
+ pending_tasks: ctx.pending_tasks.map(toTask).filter(visible)
33
+ .sort((a, b) => (a.due || '9999').localeCompare(b.due || '9999') || b.added.localeCompare(a.added)),
34
+ recently_closed: (ctx.recently_closed || []).filter(visible),
35
+ };
36
+ }
18
37
  class Prefrontal {
19
38
  brain;
20
39
  constructor(brain) {
@@ -24,21 +43,9 @@ class Prefrontal {
24
43
  /**
25
44
  * Get the current active context.
26
45
  */
27
- async getContext() {
46
+ async getContext(project) {
28
47
  const ctx = await (0, fs_js_1.readJSON)(this.brain.paths.activeContext());
29
- if (!ctx) {
30
- return {
31
- last_session: '',
32
- active_topics: [],
33
- pending_tasks: [],
34
- recently_closed: [],
35
- last_updated: (0, fs_js_1.now)(),
36
- };
37
- }
38
- // Upgrade v1 string entries in memory; they get written back on next update.
39
- ctx.pending_tasks = (ctx.pending_tasks || []).map(toTask);
40
- ctx.recently_closed = ctx.recently_closed || [];
41
- return ctx;
48
+ return projectView(normalizeContext(ctx), project);
42
49
  }
43
50
  /**
44
51
  * Update the active context.
@@ -48,76 +55,103 @@ class Prefrontal {
48
55
  * timestamp said "changed just now" about a context nobody had changed.
49
56
  */
50
57
  async updateContext(updates) {
51
- const ctx = await this.getContext();
58
+ if (updates.project && !/^[a-zA-Z0-9_-]{1,100}$/.test(updates.project))
59
+ throw new Error('Invalid project id.');
60
+ if (updates.due && (!/^\d{4}-\d{2}-\d{2}$/.test(updates.due) ||
61
+ !Number.isFinite(Date.parse(updates.due)) || new Date(updates.due).toISOString().slice(0, 10) !== updates.due)) {
62
+ throw new Error('Invalid due date; use a real YYYY-MM-DD calendar day.');
63
+ }
52
64
  const hayCambio = updates.clear === true ||
53
65
  updates.set_topics !== undefined ||
54
66
  (updates.add_pending !== undefined && updates.add_pending !== '') ||
55
67
  (updates.resolve_pending !== undefined && updates.resolve_pending !== '') ||
56
68
  (updates.discard_pending !== undefined && updates.discard_pending !== '');
57
69
  if (!hayCambio) {
58
- return { ...ctx, resolved: [], discarded: [], written: false };
59
- }
60
- if (updates.clear) {
61
- ctx.active_topics = [];
62
- ctx.pending_tasks = [];
63
- ctx.recently_closed = [];
70
+ return { ...await this.getContext(updates.project), resolved: [], discarded: [], written: false };
64
71
  }
65
- let tasks = ctx.pending_tasks.map(toTask);
66
72
  let resolved = [];
67
73
  let discarded = [];
68
74
  let redacted = [];
69
- if (updates.set_topics) {
70
- ctx.active_topics = updates.set_topics;
71
- }
72
- if (updates.add_pending) {
73
- // An open item is read back by crbro_boot in every session and copied
74
- // into compaction checkpoints: it goes through the same filter as learn.
75
- const filtrado = (0, secrets_js_1.redact)(updates.add_pending.trim());
76
- redacted = filtrado.found;
77
- const text = filtrado.text;
78
- const id = (0, hash_js_1.pendingId)(text);
79
- if (!tasks.some(t => t.id === id)) {
80
- tasks.push({ id, text, added: (0, fs_js_1.now)() });
75
+ const saved = await (0, fs_js_1.updateJSON)(this.brain.paths.activeContext(), current => {
76
+ const ctx = normalizeContext(current);
77
+ if (updates.clear) {
78
+ if (updates.project) {
79
+ delete ctx.project_topics?.[updates.project];
80
+ ctx.pending_tasks = ctx.pending_tasks.map(toTask).filter(t => t.project !== updates.project);
81
+ ctx.recently_closed = ctx.recently_closed?.filter(t => t.project !== updates.project);
82
+ }
83
+ else {
84
+ ctx.active_topics = [];
85
+ ctx.project_topics = {};
86
+ ctx.pending_tasks = [];
87
+ ctx.recently_closed = [];
88
+ }
81
89
  }
82
- }
83
- // Id, exact text, or a case-insensitive substring of at least 8 chars in
84
- // either direction — the same predicate for resolving and discarding.
85
- const matcher = (needleRaw) => {
86
- const needle = needleRaw.trim();
87
- const lower = needle.toLowerCase();
88
- return (t) => t.id === needle ||
89
- t.text === needle ||
90
- (lower.length >= 8 &&
91
- (t.text.toLowerCase().includes(lower) || lower.includes(t.text.toLowerCase())));
92
- };
93
- if (updates.resolve_pending) {
94
- const hit = matcher(updates.resolve_pending);
95
- resolved = tasks.filter(hit).map(t => ({ ...t, closed: (0, fs_js_1.now)() }));
96
- tasks = tasks.filter(t => !hit(t));
97
- if (resolved.length > 0) {
98
- ctx.recently_closed = [...resolved, ...(ctx.recently_closed || [])]
99
- .slice(0, RECENTLY_CLOSED_CAP);
90
+ let tasks = ctx.pending_tasks.map(toTask);
91
+ if (updates.set_topics) {
92
+ if (updates.project)
93
+ (ctx.project_topics ||= {})[updates.project] = updates.set_topics;
94
+ else
95
+ ctx.active_topics = updates.set_topics;
100
96
  }
101
- }
102
- if (updates.discard_pending) {
103
- const hit = matcher(updates.discard_pending);
104
- discarded = tasks.filter(hit);
105
- tasks = tasks.filter(t => !hit(t));
106
- }
107
- ctx.pending_tasks = tasks;
108
- ctx.last_updated = (0, fs_js_1.now)();
109
- await (0, fs_js_1.writeJSON)(this.brain.paths.activeContext(), ctx);
110
- return { ...ctx, resolved, discarded, written: true, ...(redacted.length ? { redacted } : {}) };
97
+ if (updates.add_pending) {
98
+ // An open item is read back by crbro_boot in every session and copied
99
+ // into compaction checkpoints: it goes through the same filter as learn.
100
+ const filtrado = (0, secrets_js_1.redact)(updates.add_pending.trim());
101
+ redacted = filtrado.found;
102
+ const text = filtrado.text;
103
+ const id = (0, hash_js_1.pendingId)(updates.project ? `${updates.project}\n${text}` : text);
104
+ const criterion = updates.done_when ? (0, secrets_js_1.redact)(updates.done_when) : undefined;
105
+ redacted.push(...(criterion?.found || []));
106
+ const existing = tasks.find(t => t.id === id);
107
+ const metadata = {
108
+ ...(updates.project ? { project: updates.project } : {}),
109
+ ...(updates.due ? { due: updates.due } : {}),
110
+ ...(criterion ? { done_when: criterion.text } : {}),
111
+ };
112
+ if (existing)
113
+ Object.assign(existing, metadata);
114
+ else
115
+ tasks.push({ id, text, added: (0, fs_js_1.now)(), status: 'open', ...metadata });
116
+ }
117
+ // Id, exact text, or a case-insensitive substring of at least 8 chars in
118
+ // either direction — the same predicate for resolving and discarding.
119
+ const matcher = (needleRaw) => {
120
+ const needle = needleRaw.trim();
121
+ const lower = needle.toLowerCase();
122
+ return (t) => (!updates.project || !t.project || t.project === updates.project) && (t.id === needle ||
123
+ t.text === needle ||
124
+ (lower.length >= 8 &&
125
+ (t.text.toLowerCase().includes(lower) || lower.includes(t.text.toLowerCase()))));
126
+ };
127
+ if (updates.resolve_pending) {
128
+ const hit = matcher(updates.resolve_pending);
129
+ resolved = tasks.filter(hit).map(t => ({ ...t, closed: (0, fs_js_1.now)(), status: 'done' }));
130
+ tasks = tasks.filter(t => !hit(t));
131
+ if (resolved.length > 0) {
132
+ ctx.recently_closed = [...resolved, ...(ctx.recently_closed || [])]
133
+ .slice(0, RECENTLY_CLOSED_CAP);
134
+ }
135
+ }
136
+ if (updates.discard_pending) {
137
+ const hit = matcher(updates.discard_pending);
138
+ discarded = tasks.filter(hit);
139
+ tasks = tasks.filter(t => !hit(t));
140
+ }
141
+ ctx.pending_tasks = tasks;
142
+ ctx.last_updated = (0, fs_js_1.now)();
143
+ return ctx;
144
+ });
145
+ return { ...projectView(saved, updates.project), resolved, discarded, written: true, ...(redacted.length ? { redacted } : {}) };
111
146
  }
112
147
  /**
113
148
  * Record which session was logged last. Nothing else in the context moves.
114
149
  * Before this, nothing ever wrote last_session, so boot reported null forever.
115
150
  */
116
151
  async setLastSession(sessionId) {
117
- const ctx = await this.getContext();
118
- ctx.last_session = sessionId;
119
- ctx.last_updated = (0, fs_js_1.now)();
120
- await (0, fs_js_1.writeJSON)(this.brain.paths.activeContext(), ctx);
152
+ await (0, fs_js_1.updateJSON)(this.brain.paths.activeContext(), current => ({
153
+ ...normalizeContext(current), last_session: sessionId, last_updated: (0, fs_js_1.now)(),
154
+ }));
121
155
  }
122
156
  // ─── Hot Topics ─────────────────────────────────────────────────
123
157
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"prefrontal.js","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prefrontal.js","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Brain } from './brain.js';
2
+ export interface ProjectProfile {
3
+ id: string;
4
+ aliases: string[];
5
+ neurons: string[];
6
+ updated: string;
7
+ }
8
+ export declare function projectReference(value: string): string;
9
+ export declare class ProjectRegistry {
10
+ private readonly file;
11
+ constructor(brain: Brain);
12
+ find(reference: string): Promise<ProjectProfile | null>;
13
+ boundNeurons(): Promise<string[]>;
14
+ bind(reference: string, options: {
15
+ id?: string;
16
+ aliases?: string[];
17
+ neurons?: string[];
18
+ }): Promise<ProjectProfile>;
19
+ }
20
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/engine/projects.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAetD;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAClB,KAAK,EAAE,KAAK;IAElB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAMvD,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKjC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;CA6BzH"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProjectRegistry = void 0;
7
+ exports.projectReference = projectReference;
8
+ // Identidad local explícita: un nombre de carpeta no identifica un proyecto.
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const hash_js_1 = require("../utils/hash.js");
11
+ const fs_js_1 = require("../utils/fs.js");
12
+ const secrets_js_1 = require("./secrets.js");
13
+ function projectReference(value) {
14
+ let ref = value.trim().replace(/\\/g, '/').replace(/\/+$/, '');
15
+ if (!ref || ref.length > 2048 || /[\x00-\x1f]/.test(ref))
16
+ throw new Error('Invalid project reference.');
17
+ if ((0, secrets_js_1.secretKinds)(ref).length)
18
+ throw new Error('Project references must not contain credentials.');
19
+ if (/^git@[^:]+:/.test(ref))
20
+ ref = ref.replace(/^git@([^:]+):/, 'https://$1/');
21
+ if (/^https?:\/\//i.test(ref)) {
22
+ const url = new URL(ref);
23
+ if (url.username || url.password || url.search || url.hash) {
24
+ throw new Error('Project URLs must not contain credentials, query parameters or fragments.');
25
+ }
26
+ ref = `${url.host.toLowerCase()}${url.pathname}`;
27
+ }
28
+ ref = ref.replace(/\.git$/, '').replace(/\/+$/, '');
29
+ if (/^[a-z]:\//i.test(ref))
30
+ ref = node_path_1.default.posix.normalize(ref).toLowerCase();
31
+ return ref;
32
+ }
33
+ class ProjectRegistry {
34
+ file;
35
+ constructor(brain) { this.file = node_path_1.default.join(brain.paths.root, 'projects.json'); }
36
+ async find(reference) {
37
+ const ref = projectReference(reference);
38
+ const data = await (0, fs_js_1.readJSON)(this.file);
39
+ return Object.values(data?.projects || {}).find(p => p.id === ref || p.aliases.includes(ref)) || null;
40
+ }
41
+ async boundNeurons() {
42
+ const data = await (0, fs_js_1.readJSON)(this.file);
43
+ return [...new Set(Object.values(data?.projects || {}).flatMap(p => p.neurons))];
44
+ }
45
+ async bind(reference, options) {
46
+ const ref = projectReference(reference);
47
+ const aliases = [...new Set([ref, ...(options.aliases || []).map(projectReference)])];
48
+ if (aliases.length > 32)
49
+ throw new Error('At most 32 project aliases.');
50
+ if (options.id && !/^[a-zA-Z0-9_-]{1,100}$/.test(options.id))
51
+ throw new Error('Invalid project id.');
52
+ if (options.neurons?.some(id => !/^[a-zA-Z0-9_-]{1,200}$/.test(id)))
53
+ throw new Error('Invalid neuron id.');
54
+ let result;
55
+ await (0, fs_js_1.updateJSON)(this.file, current => {
56
+ const data = current || { version: 1, projects: {} };
57
+ const existing = Object.values(data.projects).find(p => p.id === ref || p.aliases.includes(ref));
58
+ const id = options.id || existing?.id || `project_${(0, hash_js_1.contentHash)(ref, 16)}`;
59
+ for (const p of Object.values(data.projects)) {
60
+ if (p.id !== id && (aliases.includes(p.id) || p.aliases.includes(id) || p.aliases.some(a => aliases.includes(a)))) {
61
+ throw new Error('Project alias already belongs to another project; no assignment changed.');
62
+ }
63
+ }
64
+ const previous = data.projects[id];
65
+ const mergedAliases = [...new Set([...(previous?.aliases || []), ...aliases])];
66
+ if (mergedAliases.length > 32)
67
+ throw new Error('At most 32 project aliases.');
68
+ result = {
69
+ id, aliases: mergedAliases,
70
+ neurons: options.neurons === undefined ? previous?.neurons || [] : [...new Set(options.neurons)],
71
+ updated: (0, fs_js_1.now)(),
72
+ };
73
+ data.projects[id] = result;
74
+ return data;
75
+ });
76
+ return result;
77
+ }
78
+ }
79
+ exports.ProjectRegistry = ProjectRegistry;
80
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/engine/projects.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AA2GD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAY,CAAC;AAEvG,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAcrD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAsBtE;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAElD"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAsHD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAY,CAAC;AAEvG,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAcrD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAsBtE;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAElD"}
@@ -66,7 +66,18 @@ const PATTERNS = [
66
66
  // requiring the value to mix classes so plain words do not match.
67
67
  {
68
68
  kind: 'password',
69
- re: /\b(?:password|passwd|contrase[nñ]a|clave)\s*(?:es|is)?\s*[:=]\s*["'`]?([^\s"'`,;]{8,})/gi,
69
+ re: /\b(?:password|passwd|contrase[nñ]a)\s*(?:es|is)?\s*[:=]\s*["'`]?([^\s"'`,;]{8,})/gi,
70
+ },
71
+ {
72
+ // "clave" is also the Spanish adjective "key/important": "Decisión clave:
73
+ // mantener…", "Dato clave: …". With "clave" in the pattern above, every
74
+ // such heading lost its first word to [REDACTED: password] — 3 notes on
75
+ // the reference brain, and the audit flagged 16 more. So after "clave"
76
+ // the value must look like a password: three of lower case, upper case,
77
+ // digit and symbol. Dates ("4-oct-2026"), words and SHOUTED words do not.
78
+ // No /i flag: it would erase the case classes the value check counts.
79
+ kind: 'password',
80
+ re: /\b(?:[Cc]lave|CLAVE)\s*(?:es|is|ES|IS)?\s*[:=]\s*["'`]?((?:(?=[^\s"'`,;]*[a-z])(?=[^\s"'`,;]*[A-Z])(?=[^\s"'`,;]*[0-9])|(?=[^\s"'`,;]*[a-z])(?=[^\s"'`,;]*[A-Z])(?=[^\s"'`,;]*[!@#$%^&*_+=?~])|(?=[^\s"'`,;]*[a-z])(?=[^\s"'`,;]*[0-9])(?=[^\s"'`,;]*[!@#$%^&*_+=?~])|(?=[^\s"'`,;]*[A-Z])(?=[^\s"'`,;]*[0-9])(?=[^\s"'`,;]*[!@#$%^&*_+=?~]))[^\s"'`,;]{8,})/g,
70
81
  },
71
82
  {
72
83
  // The value must mix a letter AND a digit — that is what separates a
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":"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"}
@@ -20,17 +20,50 @@ export declare function isShelfLife(v: unknown): v is ShelfLife;
20
20
  * one costs a wrong answer.
21
21
  */
22
22
  export declare function mostVolatile(a: ShelfLife | undefined, b: ShelfLife | undefined): ShelfLife | undefined;
23
- export type ShelfReason = 'version' | 'price' | 'port' | 'host' | 'url' | 'path' | 'config' | 'role';
24
23
  /**
25
- * The class an unmarked fact gets from its text: volatile when a rule fires
26
- * (and which one), normal otherwise.
24
+ * Why an unmarked fact got its class. The first eight make it volatile;
25
+ * `history` (a dated record of something done) and `miner` (imported by the
26
+ * miner) make it permanent (2.9.1).
27
27
  */
28
- export declare function detectShelf(text: string): {
29
- shelf: 'volatile' | 'normal';
28
+ export type ShelfReason = 'version' | 'price' | 'port' | 'host' | 'url' | 'path' | 'config' | 'role' | 'history' | 'miner';
29
+ /**
30
+ * True when the text reads as a dated record of something done (see the
31
+ * rule above). Exported for the tests and the design doc's examples.
32
+ */
33
+ export declare function isDatedRecord(text: string): boolean;
34
+ /**
35
+ * The same decision with the rule that made it, for the tests and for
36
+ * diagnosing a real brain: 'record', or the first rule that said no.
37
+ */
38
+ export declare function recordVerdict(text: string): {
39
+ record: boolean;
40
+ why: string;
41
+ };
42
+ /**
43
+ * The class an unmarked fact gets from its text: permanent when it is a dated
44
+ * record of something done (2.9.1), else volatile when a rule fires (and
45
+ * which one), normal otherwise.
46
+ */
47
+ export declare function detectShelf(text: string, temporal?: Fact['temporal']): {
48
+ shelf: 'volatile' | 'normal' | 'permanent';
30
49
  reason?: ShelfReason;
31
50
  };
32
- /** The class that applies to a fact: its explicit shelf_life, or the one its text implies. */
33
- export declare function shelfOfFact(f: Pick<Fact, 'text' | 'shelf_life'>): {
51
+ /**
52
+ * The class that applies to a fact: its explicit shelf_life; else permanent
53
+ * when the miner imported it (2.9.1: an imported note is a copy of something
54
+ * written elsewhere, at some other time, and was never a claim this memory
55
+ * made about the present — warning on it is noise); else the one its text
56
+ * implies.
57
+ *
58
+ * `current` impide inferir historia por origen o texto, sin verificar nada.
59
+ * Sin temporalidad explícita se conserva la clasificación legacy por
60
+ * confirmations; repetir ya no cambia la fecha de verificación.
61
+ */
62
+ export declare function shelfOfFact(f: Pick<Fact, 'text' | 'shelf_life' | 'temporal'> & {
63
+ source?: string;
64
+ verified?: string;
65
+ confirmations?: number;
66
+ }): {
34
67
  shelf: ShelfLife;
35
68
  inferred: boolean;
36
69
  reason?: ShelfReason;
@@ -46,8 +79,33 @@ export interface StalenessContext {
46
79
  windows: ShelfWindows;
47
80
  /** manifest.staleness_since: the first boot of a CRBRO that knows shelf life. Absent → now (full grace). */
48
81
  since?: string;
82
+ /**
83
+ * The brain existed before a CRBRO that knows shelf life first booted it
84
+ * (2.9.1). Then the facts the detector infers volatile get the staggered
85
+ * grace too, not only the rest: a brain written for months before 2.9 has
86
+ * hundreds of them, and flagging them all on upgrade day is the flood the
87
+ * grace exists to prevent. A brain created by 2.9 or later is not legacy,
88
+ * so a volatile line written there before the stamp still warns at once.
89
+ */
90
+ legacy?: boolean;
49
91
  }
50
- export declare function stalenessContext(since?: string | null, env?: NodeJS.ProcessEnv, nowMs?: number): StalenessContext | null;
92
+ /**
93
+ * Whether a brain predates shelf life, from its manifest: not stamped yet, a
94
+ * creation date that cannot be read, or a stamp later than its creation by
95
+ * more than LEGACY_MARGIN_MS.
96
+ */
97
+ export declare function isLegacyBrain(created: string | null | undefined, since: string | null | undefined): boolean;
98
+ /**
99
+ * `created` is the manifest's: pass it (see stalenessContextOf) and the
100
+ * context knows whether the brain is legacy. Left out, it is not legacy —
101
+ * the 2.9.0 behaviour, where a volatile fact never got the grace.
102
+ */
103
+ export declare function stalenessContext(since?: string | null, env?: NodeJS.ProcessEnv, nowMs?: number, created?: string | null): StalenessContext | null;
104
+ /** The context for a brain, from its manifest (or none, when it could not be read: no legacy, full grace). */
105
+ export declare function stalenessContextOf(manifest: {
106
+ staleness_since?: string | null;
107
+ created?: string | null;
108
+ } | null | undefined, env?: NodeJS.ProcessEnv, nowMs?: number): StalenessContext | null;
51
109
  export interface StaleInfo {
52
110
  /** Past its window. */
53
111
  stale: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"shelf.d.ts","sourceRoot":"","sources":["../../src/engine/shelf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shelf.d.ts","sourceRoot":"","sources":["../../src/engine/shelf.ts"],"names":[],"mappings":"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"}