@aionis/substrate 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.
- package/CHANGELOG.md +29 -0
- package/LICENSE +201 -0
- package/README.md +222 -0
- package/dist/backup.d.ts +38 -0
- package/dist/backup.d.ts.map +1 -0
- package/dist/backup.js +203 -0
- package/dist/backup.js.map +1 -0
- package/dist/event-log.d.ts +18 -0
- package/dist/event-log.d.ts.map +1 -0
- package/dist/event-log.js +157 -0
- package/dist/event-log.js.map +1 -0
- package/dist/file-substrate.d.ts +7 -0
- package/dist/file-substrate.d.ts.map +1 -0
- package/dist/file-substrate.js +409 -0
- package/dist/file-substrate.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime-reference-corpus.d.ts +76 -0
- package/dist/runtime-reference-corpus.d.ts.map +1 -0
- package/dist/runtime-reference-corpus.js +308 -0
- package/dist/runtime-reference-corpus.js.map +1 -0
- package/dist/runtime-snapshot-corpus.d.ts +53 -0
- package/dist/runtime-snapshot-corpus.d.ts.map +1 -0
- package/dist/runtime-snapshot-corpus.js +176 -0
- package/dist/runtime-snapshot-corpus.js.map +1 -0
- package/dist/runtime-snapshot-importer.d.ts +27 -0
- package/dist/runtime-snapshot-importer.d.ts.map +1 -0
- package/dist/runtime-snapshot-importer.js +571 -0
- package/dist/runtime-snapshot-importer.js.map +1 -0
- package/dist/runtime-snapshot-parity.d.ts +40 -0
- package/dist/runtime-snapshot-parity.d.ts.map +1 -0
- package/dist/runtime-snapshot-parity.js +217 -0
- package/dist/runtime-snapshot-parity.js.map +1 -0
- package/dist/search.d.ts +3 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +157 -0
- package/dist/search.js.map +1 -0
- package/dist/sqlite-substrate.d.ts +7 -0
- package/dist/sqlite-substrate.d.ts.map +1 -0
- package/dist/sqlite-substrate.js +666 -0
- package/dist/sqlite-substrate.js.map +1 -0
- package/dist/types.d.ts +253 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/ADAPTER_CONTRACT.md +155 -0
- package/docs/API_USAGE.md +225 -0
- package/docs/BACKUP_RESTORE.md +108 -0
- package/docs/CHECKPOINT_COMPACTION.md +75 -0
- package/docs/EXTERNAL_ADMISSION_PARITY.md +98 -0
- package/docs/RUNTIME_DUAL_WRITE_EXPERIMENT.md +132 -0
- package/docs/RUNTIME_MAPPING.md +69 -0
- package/docs/RUNTIME_REFERENCE_CORPUS.md +129 -0
- package/docs/RUNTIME_SNAPSHOT_CORPUS.md +81 -0
- package/docs/RUNTIME_SNAPSHOT_IMPORT.md +120 -0
- package/docs/STORE_CONTRACT.md +181 -0
- package/examples/basic/README.md +19 -0
- package/examples/basic/index.mjs +112 -0
- package/package.json +65 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import { mkdtemp, rm } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import {
|
|
6
|
+
exportAionisSubstrateBackup,
|
|
7
|
+
openFileAionisSubstrate,
|
|
8
|
+
openSqliteAionisSubstrate,
|
|
9
|
+
verifyAionisSubstrateBackup,
|
|
10
|
+
} from "../../dist/index.js";
|
|
11
|
+
|
|
12
|
+
const workspace = await mkdtemp(join(tmpdir(), "aionis-substrate-basic-"));
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
const file = await openFileAionisSubstrate({ dir: join(workspace, "file-store") });
|
|
16
|
+
|
|
17
|
+
await file.putNode({
|
|
18
|
+
id: "current-route",
|
|
19
|
+
scope: "repo-a",
|
|
20
|
+
kind: "procedure",
|
|
21
|
+
title: "Current route",
|
|
22
|
+
summary: "Use src/runtime.ts after the verifier passed.",
|
|
23
|
+
lifecycle: "active",
|
|
24
|
+
authority: "trusted",
|
|
25
|
+
confidence: 0.95,
|
|
26
|
+
targetFiles: ["src/runtime.ts"],
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
await file.putNode({
|
|
30
|
+
id: "old-route",
|
|
31
|
+
scope: "repo-a",
|
|
32
|
+
kind: "procedure",
|
|
33
|
+
title: "Old route",
|
|
34
|
+
summary: "Old src/legacy.ts route is retained as evidence but replaced by the current route.",
|
|
35
|
+
lifecycle: "active",
|
|
36
|
+
authority: "trusted",
|
|
37
|
+
confidence: 0.7,
|
|
38
|
+
targetFiles: ["src/legacy.ts"],
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
await file.putRelation({
|
|
42
|
+
scope: "repo-a",
|
|
43
|
+
kind: "supersedes",
|
|
44
|
+
sourceId: "current-route",
|
|
45
|
+
targetId: "old-route",
|
|
46
|
+
confidence: 0.9,
|
|
47
|
+
reasons: ["newer verifier evidence replaced the old route"],
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const eventsBeforePreview = await file.listEvents();
|
|
51
|
+
const preview = await file.previewContext({ scope: "repo-a", query: "continue the runtime route" });
|
|
52
|
+
assert.deepEqual(preview.use_now.map((node) => node.id), ["current-route"]);
|
|
53
|
+
assert.deepEqual(preview.do_not_use.map((node) => node.id), ["old-route"]);
|
|
54
|
+
assert.equal((await file.listEvents()).length, eventsBeforePreview.length);
|
|
55
|
+
|
|
56
|
+
const compiled = await file.compileContext({ scope: "repo-a", query: "continue the runtime route" });
|
|
57
|
+
assert.deepEqual(compiled.use_now.map((node) => node.id), ["current-route"]);
|
|
58
|
+
assert.deepEqual(compiled.do_not_use.map((node) => node.id), ["old-route"]);
|
|
59
|
+
assert.equal((await file.listEvents()).at(-1)?.type, "memory.decision.recorded");
|
|
60
|
+
|
|
61
|
+
await file.recordFeedback({
|
|
62
|
+
scope: "repo-a",
|
|
63
|
+
memoryId: "current-route",
|
|
64
|
+
outcome: "positive",
|
|
65
|
+
strength: "strong",
|
|
66
|
+
runId: "run-1",
|
|
67
|
+
evidenceRef: "trace://run-1/verifier",
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
const search = await file.searchNodes({
|
|
71
|
+
scope: "repo-a",
|
|
72
|
+
query: "runtime verifier",
|
|
73
|
+
lifecycle: ["active"],
|
|
74
|
+
authority: ["trusted"],
|
|
75
|
+
limit: 5,
|
|
76
|
+
});
|
|
77
|
+
assert.deepEqual(search.map((result) => result.node.id), ["current-route"]);
|
|
78
|
+
|
|
79
|
+
const backup = await exportAionisSubstrateBackup(file);
|
|
80
|
+
assert.equal(verifyAionisSubstrateBackup(backup).ok, true);
|
|
81
|
+
await file.close();
|
|
82
|
+
|
|
83
|
+
const sqlite = await openSqliteAionisSubstrate({ path: join(workspace, "substrate.sqlite") });
|
|
84
|
+
await sqlite.putNode({
|
|
85
|
+
id: "raw-trace",
|
|
86
|
+
scope: "repo-a",
|
|
87
|
+
kind: "trace_pointer",
|
|
88
|
+
title: "Raw run trace",
|
|
89
|
+
summary: "Raw terminal trace is available on demand.",
|
|
90
|
+
lifecycle: "archived",
|
|
91
|
+
authority: "trusted",
|
|
92
|
+
confidence: 0.88,
|
|
93
|
+
payloadRef: "file://trace.log",
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
const sqliteContext = await sqlite.compileContext({ scope: "repo-a" });
|
|
97
|
+
assert.deepEqual(sqliteContext.rehydrate.map((node) => node.id), ["raw-trace"]);
|
|
98
|
+
await sqlite.close();
|
|
99
|
+
|
|
100
|
+
console.log(JSON.stringify({
|
|
101
|
+
ok: true,
|
|
102
|
+
file_context: {
|
|
103
|
+
use_now: compiled.use_now.map((node) => node.id),
|
|
104
|
+
do_not_use: compiled.do_not_use.map((node) => node.id),
|
|
105
|
+
},
|
|
106
|
+
sqlite_context: {
|
|
107
|
+
rehydrate: sqliteContext.rehydrate.map((node) => node.id),
|
|
108
|
+
},
|
|
109
|
+
}, null, 2));
|
|
110
|
+
} finally {
|
|
111
|
+
await rm(workspace, { recursive: true, force: true });
|
|
112
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aionis/substrate",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Aionis-native memory and execution-state substrate experiment.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist/",
|
|
18
|
+
"docs/",
|
|
19
|
+
"examples/",
|
|
20
|
+
"CHANGELOG.md",
|
|
21
|
+
"LICENSE",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc -p tsconfig.build.json",
|
|
26
|
+
"prepack": "npm run build",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"test": "node --test test/*.test.ts",
|
|
29
|
+
"bench:contract": "node scripts/substrate-contract-benchmark.ts",
|
|
30
|
+
"check:runtime-snapshot": "node scripts/runtime-snapshot-parity.ts",
|
|
31
|
+
"check:runtime-corpus": "node scripts/runtime-snapshot-corpus.ts",
|
|
32
|
+
"check:runtime-reference-corpus": "node scripts/runtime-reference-corpus.ts",
|
|
33
|
+
"make:runtime-product-reference": "node scripts/runtime-product-reference-fixture.ts",
|
|
34
|
+
"check:external-admission-parity": "node scripts/external-admission-parity.ts",
|
|
35
|
+
"check:runtime-dual-write": "node scripts/runtime-dual-write-experiment.ts",
|
|
36
|
+
"check:pack": "npm run build && node scripts/verify-package.ts",
|
|
37
|
+
"check:install-smoke": "npm run build && node scripts/install-smoke.ts",
|
|
38
|
+
"check:scale": "node scripts/scale-test.ts",
|
|
39
|
+
"example:basic": "npm run build && node examples/basic/index.mjs",
|
|
40
|
+
"check:release": "npm run typecheck && npm test && npm run bench:contract && npm run example:basic && npm run check:pack && npm run check:install-smoke"
|
|
41
|
+
},
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "git+https://github.com/ostinatocc/AionisSubstrate.git"
|
|
45
|
+
},
|
|
46
|
+
"bugs": {
|
|
47
|
+
"url": "https://github.com/ostinatocc/AionisSubstrate/issues"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/ostinatocc/AionisSubstrate#readme",
|
|
50
|
+
"packageManager": "npm@11.6.2",
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=24"
|
|
53
|
+
},
|
|
54
|
+
"keywords": [
|
|
55
|
+
"aionis",
|
|
56
|
+
"memory",
|
|
57
|
+
"execution-state",
|
|
58
|
+
"substrate"
|
|
59
|
+
],
|
|
60
|
+
"license": "Apache-2.0",
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@types/node": "^26.0.1",
|
|
63
|
+
"typescript": "^6.0.3"
|
|
64
|
+
}
|
|
65
|
+
}
|