@remnic/core 10.0.57 → 10.0.59
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/dist/access-admin-ops-surface.js +11 -11
- package/dist/access-authorization-probe.js +12 -12
- package/dist/access-boundary.js +11 -11
- package/dist/access-cli.js +47 -47
- package/dist/access-extraction-force-flush.js +11 -11
- package/dist/access-http-briefing.js +12 -12
- package/dist/access-http-query.js +13 -13
- package/dist/access-http.js +27 -27
- package/dist/access-identity-continuity-surface.js +11 -11
- package/dist/access-lcm-surface.js +11 -11
- package/dist/access-mcp.js +20 -20
- package/dist/access-namespace-preflight.js +11 -11
- package/dist/access-observe-write-surface.js +11 -11
- package/dist/access-operations-batch.js +12 -12
- package/dist/access-operations.js +19 -19
- package/dist/access-recall-concurrency.js +11 -11
- package/dist/access-recall-response.js +11 -11
- package/dist/access-recall-surface.js +11 -11
- package/dist/access-service.js +11 -11
- package/dist/access-surface-catalog.js +13 -13
- package/dist/active-recall.js +1 -1
- package/dist/briefing.js +2 -2
- package/dist/causal-consolidation.js +3 -3
- package/dist/{chunk-LIVNX7WK.js → chunk-2IVK5IDY.js} +2 -2
- package/dist/{chunk-HJQ4NKKO.js → chunk-37VTMUAL.js} +2 -2
- package/dist/{chunk-E2YAGEFR.js → chunk-3E3Z6UA3.js} +18 -18
- package/dist/{chunk-TRAOZ2WP.js → chunk-4B73TQQV.js} +2 -2
- package/dist/{chunk-53OFDW3P.js → chunk-4G2A7MH3.js} +3 -3
- package/dist/{chunk-UQYBPPVC.js → chunk-5U2BBF7E.js} +2 -2
- package/dist/{chunk-LTDK6HBV.js → chunk-6BO27AWQ.js} +2 -2
- package/dist/{chunk-65B5RFKQ.js → chunk-7NT3FKAF.js} +2 -2
- package/dist/{chunk-34UVJNSG.js → chunk-AMKIIRLL.js} +2 -2
- package/dist/{chunk-YLN4ZQV4.js → chunk-BPIAXMGC.js} +2 -2
- package/dist/{chunk-FZLZUDJJ.js → chunk-DJR37Q37.js} +2 -2
- package/dist/{chunk-IFOCK3OJ.js → chunk-EH46DHBU.js} +2 -2
- package/dist/{chunk-KCTL5EY7.js → chunk-EJFOGYF3.js} +3 -3
- package/dist/{chunk-XHEKS4UN.js → chunk-FB4JQEFS.js} +2 -2
- package/dist/{chunk-W3R77WHT.js → chunk-FXWX7VD3.js} +7 -7
- package/dist/{chunk-L5UB5BIY.js → chunk-IEW6NDHX.js} +7 -7
- package/dist/{chunk-W4QTA2H5.js → chunk-IQSRVR6Z.js} +2 -2
- package/dist/{chunk-CIMD2MUR.js → chunk-ISNPYOXR.js} +3 -3
- package/dist/{chunk-QAHP5SBG.js → chunk-JD5F5MYN.js} +3 -3
- package/dist/{chunk-HM3ZTDAX.js → chunk-JY2BGCYN.js} +2 -2
- package/dist/{chunk-HJ4X4BGS.js → chunk-JZRQY7ZQ.js} +2 -2
- package/dist/{chunk-UBOWDOL5.js → chunk-KAL5SXPP.js} +5 -5
- package/dist/{chunk-B43P3DTC.js → chunk-KBOQQEVC.js} +2 -2
- package/dist/{chunk-CTNDFKEX.js → chunk-KMJDH4KX.js} +10 -10
- package/dist/{chunk-LRVFS4KA.js → chunk-LLG5VNK7.js} +2 -2
- package/dist/{chunk-TTTPTQ6S.js → chunk-MLUPSZFK.js} +2 -2
- package/dist/{chunk-VGE4PUY6.js → chunk-NGH74LDV.js} +2 -2
- package/dist/{chunk-2EYCW2ET.js → chunk-OL7A7NKH.js} +2 -2
- package/dist/{chunk-AOSCGNIC.js → chunk-PM4PKC3Y.js} +2 -2
- package/dist/{chunk-W2KH27MQ.js → chunk-QY24FSXT.js} +16 -16
- package/dist/{chunk-QS5DUSBM.js → chunk-R4BR62UO.js} +2 -2
- package/dist/{chunk-W7NKMRAF.js → chunk-RFT4OPYI.js} +2 -2
- package/dist/{chunk-AO5ZOD32.js → chunk-RHJ5VGB3.js} +2 -2
- package/dist/{chunk-FFQNNFHX.js → chunk-RYB553SS.js} +2 -2
- package/dist/{chunk-3632XJMR.js → chunk-TYSD7UQO.js} +2 -2
- package/dist/{chunk-V4VCBFAL.js → chunk-UGTYADB4.js} +3 -3
- package/dist/{chunk-7XGNGLAN.js → chunk-UHH67NLU.js} +2 -2
- package/dist/{chunk-5LBBXI2A.js → chunk-USNU3BEQ.js} +2 -2
- package/dist/{chunk-OWNAWY6D.js → chunk-VCLNU6MY.js} +2 -2
- package/dist/{chunk-3LNAQLW4.js → chunk-WASVDS6G.js} +3 -3
- package/dist/{chunk-OCXDZJL4.js → chunk-WXBVGKS6.js} +14 -13
- package/dist/chunk-WXBVGKS6.js.map +1 -0
- package/dist/{chunk-4W5B5Z6P.js → chunk-WZYAXOGO.js} +2 -2
- package/dist/{chunk-QF5EJ5VP.js → chunk-Y5KESB7T.js} +8 -8
- package/dist/{chunk-6CDNOREO.js → chunk-YDDLSGYE.js} +2 -2
- package/dist/{chunk-M4U25HLR.js → chunk-YZNTAOPZ.js} +2 -2
- package/dist/{chunk-3H3PNQEF.js → chunk-ZAZZOQAQ.js} +2 -2
- package/dist/{chunk-P5FYZH5G.js → chunk-ZE5N4JSY.js} +2 -2
- package/dist/cli.js +37 -37
- package/dist/coding/export-okf-codegraph.js +1 -1
- package/dist/compounding/engine.js +3 -3
- package/dist/config.js +1 -1
- package/dist/connectors/codex-materialize-runner.js +2 -2
- package/dist/connectors/index.js +2 -2
- package/dist/convergence-refresh.js +4 -4
- package/dist/corpus-watermark.js +4 -4
- package/dist/entity-retrieval.js +2 -2
- package/dist/external-wiki-access.js +12 -12
- package/dist/extraction.js +2 -2
- package/dist/harmonic-retrieval.js +2 -2
- package/dist/index.js +47 -47
- package/dist/location/index.js +4 -4
- package/dist/maintenance/memory-governance.js +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +2 -2
- package/dist/maintenance/rebuild-memory-projection-runner.js +4 -4
- package/dist/maintenance/rebuild-memory-projection.js +3 -3
- package/dist/memory-browse-operations.js +12 -12
- package/dist/namespaces/migrate.js +3 -3
- package/dist/namespaces/storage.js +2 -2
- package/dist/operator-doctor-corpus.js +5 -5
- package/dist/operator-toolkit.js +10 -10
- package/dist/orchestration/maintenance.js +12 -12
- package/dist/orchestrator.js +47 -47
- package/dist/recall-navigation-operations.js +12 -12
- package/dist/recall-navigation.js +11 -11
- package/dist/resume-bundles.js +1 -1
- package/dist/semantic-consolidation.js +3 -3
- package/dist/semantic-rule-promotion.js +2 -2
- package/dist/semantic-rule-verifier.js +2 -2
- package/dist/source-agent-qualifier.js +2 -2
- package/dist/standup/build.js +2 -2
- package/dist/storage/memory-read-store.d.ts +11 -3
- package/dist/storage/memory-read-store.d.ts.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/support-passport/index.js +14 -14
- package/dist/transfer/export-okf.js +2 -2
- package/dist/verified-recall.js +2 -2
- package/dist/who-knows-cli.js +3 -3
- package/dist/who-knows.js +2 -2
- package/package.json +2 -2
- package/src/storage/memory-read-store.ts +22 -32
- package/dist/chunk-OCXDZJL4.js.map +0 -1
- /package/dist/{chunk-LIVNX7WK.js.map → chunk-2IVK5IDY.js.map} +0 -0
- /package/dist/{chunk-HJQ4NKKO.js.map → chunk-37VTMUAL.js.map} +0 -0
- /package/dist/{chunk-E2YAGEFR.js.map → chunk-3E3Z6UA3.js.map} +0 -0
- /package/dist/{chunk-TRAOZ2WP.js.map → chunk-4B73TQQV.js.map} +0 -0
- /package/dist/{chunk-53OFDW3P.js.map → chunk-4G2A7MH3.js.map} +0 -0
- /package/dist/{chunk-UQYBPPVC.js.map → chunk-5U2BBF7E.js.map} +0 -0
- /package/dist/{chunk-LTDK6HBV.js.map → chunk-6BO27AWQ.js.map} +0 -0
- /package/dist/{chunk-65B5RFKQ.js.map → chunk-7NT3FKAF.js.map} +0 -0
- /package/dist/{chunk-34UVJNSG.js.map → chunk-AMKIIRLL.js.map} +0 -0
- /package/dist/{chunk-YLN4ZQV4.js.map → chunk-BPIAXMGC.js.map} +0 -0
- /package/dist/{chunk-FZLZUDJJ.js.map → chunk-DJR37Q37.js.map} +0 -0
- /package/dist/{chunk-IFOCK3OJ.js.map → chunk-EH46DHBU.js.map} +0 -0
- /package/dist/{chunk-KCTL5EY7.js.map → chunk-EJFOGYF3.js.map} +0 -0
- /package/dist/{chunk-XHEKS4UN.js.map → chunk-FB4JQEFS.js.map} +0 -0
- /package/dist/{chunk-W3R77WHT.js.map → chunk-FXWX7VD3.js.map} +0 -0
- /package/dist/{chunk-L5UB5BIY.js.map → chunk-IEW6NDHX.js.map} +0 -0
- /package/dist/{chunk-W4QTA2H5.js.map → chunk-IQSRVR6Z.js.map} +0 -0
- /package/dist/{chunk-CIMD2MUR.js.map → chunk-ISNPYOXR.js.map} +0 -0
- /package/dist/{chunk-QAHP5SBG.js.map → chunk-JD5F5MYN.js.map} +0 -0
- /package/dist/{chunk-HM3ZTDAX.js.map → chunk-JY2BGCYN.js.map} +0 -0
- /package/dist/{chunk-HJ4X4BGS.js.map → chunk-JZRQY7ZQ.js.map} +0 -0
- /package/dist/{chunk-UBOWDOL5.js.map → chunk-KAL5SXPP.js.map} +0 -0
- /package/dist/{chunk-B43P3DTC.js.map → chunk-KBOQQEVC.js.map} +0 -0
- /package/dist/{chunk-CTNDFKEX.js.map → chunk-KMJDH4KX.js.map} +0 -0
- /package/dist/{chunk-LRVFS4KA.js.map → chunk-LLG5VNK7.js.map} +0 -0
- /package/dist/{chunk-TTTPTQ6S.js.map → chunk-MLUPSZFK.js.map} +0 -0
- /package/dist/{chunk-VGE4PUY6.js.map → chunk-NGH74LDV.js.map} +0 -0
- /package/dist/{chunk-2EYCW2ET.js.map → chunk-OL7A7NKH.js.map} +0 -0
- /package/dist/{chunk-AOSCGNIC.js.map → chunk-PM4PKC3Y.js.map} +0 -0
- /package/dist/{chunk-W2KH27MQ.js.map → chunk-QY24FSXT.js.map} +0 -0
- /package/dist/{chunk-QS5DUSBM.js.map → chunk-R4BR62UO.js.map} +0 -0
- /package/dist/{chunk-W7NKMRAF.js.map → chunk-RFT4OPYI.js.map} +0 -0
- /package/dist/{chunk-AO5ZOD32.js.map → chunk-RHJ5VGB3.js.map} +0 -0
- /package/dist/{chunk-FFQNNFHX.js.map → chunk-RYB553SS.js.map} +0 -0
- /package/dist/{chunk-3632XJMR.js.map → chunk-TYSD7UQO.js.map} +0 -0
- /package/dist/{chunk-V4VCBFAL.js.map → chunk-UGTYADB4.js.map} +0 -0
- /package/dist/{chunk-7XGNGLAN.js.map → chunk-UHH67NLU.js.map} +0 -0
- /package/dist/{chunk-5LBBXI2A.js.map → chunk-USNU3BEQ.js.map} +0 -0
- /package/dist/{chunk-OWNAWY6D.js.map → chunk-VCLNU6MY.js.map} +0 -0
- /package/dist/{chunk-3LNAQLW4.js.map → chunk-WASVDS6G.js.map} +0 -0
- /package/dist/{chunk-4W5B5Z6P.js.map → chunk-WZYAXOGO.js.map} +0 -0
- /package/dist/{chunk-QF5EJ5VP.js.map → chunk-Y5KESB7T.js.map} +0 -0
- /package/dist/{chunk-6CDNOREO.js.map → chunk-YDDLSGYE.js.map} +0 -0
- /package/dist/{chunk-M4U25HLR.js.map → chunk-YZNTAOPZ.js.map} +0 -0
- /package/dist/{chunk-3H3PNQEF.js.map → chunk-ZAZZOQAQ.js.map} +0 -0
- /package/dist/{chunk-P5FYZH5G.js.map → chunk-ZE5N4JSY.js.map} +0 -0
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-BPIAXMGC.js";
|
|
8
|
+
import "./chunk-USNU3BEQ.js";
|
|
9
|
+
import "./chunk-WXBVGKS6.js";
|
|
10
10
|
import "./chunk-UHVXE24Y.js";
|
|
11
11
|
import "./chunk-DM5QZ3YU.js";
|
|
12
12
|
import "./chunk-G6A3SGCE.js";
|
package/dist/who-knows.js
CHANGED
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-USNU3BEQ.js";
|
|
13
|
+
import "./chunk-WXBVGKS6.js";
|
|
14
14
|
import "./chunk-UHVXE24Y.js";
|
|
15
15
|
import "./chunk-DM5QZ3YU.js";
|
|
16
16
|
import "./chunk-G6A3SGCE.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.59",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3346,7 +3346,7 @@
|
|
|
3346
3346
|
"core"
|
|
3347
3347
|
],
|
|
3348
3348
|
"peerDependencies": {
|
|
3349
|
-
"@remnic/coding-graph": "^10.0.
|
|
3349
|
+
"@remnic/coding-graph": "^10.0.59"
|
|
3350
3350
|
},
|
|
3351
3351
|
"peerDependenciesMeta": {
|
|
3352
3352
|
"@remnic/coding-graph": {
|
|
@@ -19,7 +19,6 @@ import { RECALL_FALLBACK_DIRS } from "../utils/category-dir.js";
|
|
|
19
19
|
import { isErrnoCode } from "../utils/errno.js";
|
|
20
20
|
import { isPopulatedUnnamedEntityRecord } from "../utils/malformed-entity-record.js";
|
|
21
21
|
import { isMacOsReplicationJunkBasename } from "../utils/macos-replication-junk.js";
|
|
22
|
-
import { assertPathInsideRoot } from "../utils/path-containment.js";
|
|
23
22
|
import { isAbortError } from "../abort-error.js";
|
|
24
23
|
import { checkCorpusReadAbort, type CorpusReadOptions } from "../corpus-read-cancellation.js";
|
|
25
24
|
import { isValidTranscriptDate } from "../wearables/day-store.js";
|
|
@@ -89,8 +88,7 @@ export interface MemoryReadStoreDeps {
|
|
|
89
88
|
/**
|
|
90
89
|
* A backend READ failure worth propagating from a strict (census) scan: an
|
|
91
90
|
* errno-coded fs error that is NOT `ENOENT`. `ENOENT` (an absent dir) and
|
|
92
|
-
* code-less rejections
|
|
93
|
-
* assertPathInsideRoot) are expected and skipped; `EACCES`/`EIO`/… mean the
|
|
91
|
+
* code-less rejections are expected and skipped; `EACCES`/`EIO`/… mean the
|
|
94
92
|
* corpus is unreadable and a divergence census must fail loud rather than
|
|
95
93
|
* silently publish a partial count (issue #2156 round-5). Non-strict (recall)
|
|
96
94
|
* callers ignore this and degrade to a best-effort partial scan.
|
|
@@ -233,9 +231,17 @@ export class MemoryReadStore {
|
|
|
233
231
|
/**
|
|
234
232
|
* Recursively collect `*.md` paths under `startDirs`, hardened against symlink
|
|
235
233
|
* escape: a category dir symlinked outside memoryDir (e.g. decisions/ -> an
|
|
236
|
-
* external dir) must NOT pull out-of-store files into a scan (info leak).
|
|
237
|
-
*
|
|
238
|
-
*
|
|
234
|
+
* external dir) must NOT pull out-of-store files into a scan (info leak).
|
|
235
|
+
*
|
|
236
|
+
* Containment is established once, not per file: the memory root is resolved
|
|
237
|
+
* with a single `realpath`, every directory the walk enters is `lstat`ed (a
|
|
238
|
+
* symlinked or non-directory entry is never followed), and the entry TYPE
|
|
239
|
+
* comes from `readdir(withFileTypes)` — so a symlinked entry, file or
|
|
240
|
+
* directory, is skipped without a per-entry `realpath`. The old per-entry
|
|
241
|
+
* `realpath` cost one syscall per markdown file (hundreds of thousands per
|
|
242
|
+
* corpus scan) to re-derive a fact the directory-level checks already
|
|
243
|
+
* establish; reads refuse symlinked files at open time with `O_NOFOLLOW`, so
|
|
244
|
+
* a path swapped to a symlink mid-scan is refused rather than followed.
|
|
239
245
|
* Paths only — no frontmatter parse.
|
|
240
246
|
*/
|
|
241
247
|
private async collectContainedMarkdownPaths(
|
|
@@ -243,12 +249,12 @@ export class MemoryReadStore {
|
|
|
243
249
|
propagateReadErrors = false,
|
|
244
250
|
options?: CorpusReadOptions,
|
|
245
251
|
): Promise<string[]> {
|
|
246
|
-
|
|
252
|
+
const filePaths: string[] = [];
|
|
247
253
|
|
|
248
|
-
// Resolve the memory root once
|
|
249
|
-
|
|
254
|
+
// Resolve the memory root once: a missing root is an empty corpus and an
|
|
255
|
+
// unreadable root is a backend failure the strict census must surface.
|
|
250
256
|
try {
|
|
251
|
-
|
|
257
|
+
await realpath(this.deps.baseDir);
|
|
252
258
|
} catch (err) {
|
|
253
259
|
// ENOENT: a not-yet-created root ⇒ empty. Any other errno is a backend
|
|
254
260
|
// read failure — propagate for strict census callers (never publish an
|
|
@@ -260,8 +266,7 @@ export class MemoryReadStore {
|
|
|
260
266
|
const collectPaths = async (dir: string): Promise<void> => {
|
|
261
267
|
checkCorpusReadAbort(options);
|
|
262
268
|
// Directory-level guard, isolated from per-entry handling: skip symlinked
|
|
263
|
-
// or non-directory category dirs
|
|
264
|
-
// the memory root before reading. A failure here means the whole subtree
|
|
269
|
+
// or non-directory category dirs. A failure here means the whole subtree
|
|
265
270
|
// does not exist or escaped the store — fail closed by skipping it.
|
|
266
271
|
let dirStat: Stats;
|
|
267
272
|
try {
|
|
@@ -285,19 +290,18 @@ export class MemoryReadStore {
|
|
|
285
290
|
}
|
|
286
291
|
let entries: Dirent[];
|
|
287
292
|
try {
|
|
288
|
-
assertPathInsideRoot(memoryRootReal, await realpath(dir), dir);
|
|
289
293
|
entries = await readdir(dir, { withFileTypes: true });
|
|
290
294
|
} catch (err) {
|
|
291
|
-
// A
|
|
292
|
-
//
|
|
293
|
-
//
|
|
295
|
+
// A backend read error (EACCES …) propagates in strict census mode so a
|
|
296
|
+
// partial subtree is not silently counted. ENOENT (vanished mid-scan)
|
|
297
|
+
// and other non-propagatable failures skip the directory.
|
|
294
298
|
if (propagateReadErrors && isPropagatableReadError(err)) throw err;
|
|
295
299
|
return;
|
|
296
300
|
}
|
|
297
301
|
|
|
298
302
|
const subdirs: string[] = [];
|
|
299
303
|
for (const entry of entries) {
|
|
300
|
-
// Outside the per-entry
|
|
304
|
+
// Outside the per-entry handling below, which deliberately swallows
|
|
301
305
|
// non-propagatable errors — a cancellation must never be swallowed with
|
|
302
306
|
// them (issue #2307).
|
|
303
307
|
checkCorpusReadAbort(options);
|
|
@@ -308,21 +312,7 @@ export class MemoryReadStore {
|
|
|
308
312
|
if (entry.isDirectory()) {
|
|
309
313
|
subdirs.push(fullPath);
|
|
310
314
|
} else if (entry.name.endsWith(".md")) {
|
|
311
|
-
|
|
312
|
-
// realpath failure on ONE .md entry must not drop sibling files or,
|
|
313
|
-
// crucially, the deferred subdir recursion below (Cursor Bugbot:
|
|
314
|
-
// "Poisoned md skips sibling subdirs"). Mirrors the per-file try/catch
|
|
315
|
-
// in search/document-scanner.ts scanDir and
|
|
316
|
-
// consolidation-provenance-check.ts walkMarkdownFiles.
|
|
317
|
-
try {
|
|
318
|
-
assertPathInsideRoot(memoryRootReal, await realpath(fullPath), fullPath);
|
|
319
|
-
filePaths.push(fullPath);
|
|
320
|
-
} catch (err) {
|
|
321
|
-
// ENOENT (vanished mid-scan) or a code-less containment/symlink
|
|
322
|
-
// rejection ⇒ skip just this file. A backend read error propagates
|
|
323
|
-
// in strict census mode.
|
|
324
|
-
if (propagateReadErrors && isPropagatableReadError(err)) throw err;
|
|
325
|
-
}
|
|
315
|
+
filePaths.push(fullPath);
|
|
326
316
|
}
|
|
327
317
|
}
|
|
328
318
|
// Recurse into real subdirectories regardless of any single poisoned entry
|