@hasna/mementos 0.14.88 → 0.16.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 +119 -30
- package/bun.lock +4 -65
- package/dist/audit-contract.d.ts +87 -0
- package/dist/audit-contract.d.ts.map +1 -0
- package/dist/cli/commands/info-context.d.ts.map +1 -1
- package/dist/cli/commands/info-history.d.ts.map +1 -1
- package/dist/cli/commands/info-stale.d.ts.map +1 -1
- package/dist/cli/commands/io-backup.d.ts.map +1 -1
- package/dist/cli/commands/io-export.d.ts.map +1 -1
- package/dist/cli/commands/io-restore.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-chain.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-crud.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-list.d.ts +25 -0
- package/dist/cli/commands/memory-cmd-list.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-recall.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-search.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-tail.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-view.d.ts.map +1 -1
- package/dist/cli/commands/memory-cmd-when-to-use.d.ts.map +1 -1
- package/dist/cli/commands/project.d.ts.map +1 -1
- package/dist/cli/commands/storage.d.ts.map +1 -1
- package/dist/cli/commands/system-doctor.d.ts.map +1 -1
- package/dist/cli/commands/system-session.d.ts.map +1 -1
- package/dist/cli/commands/system-status.d.ts +43 -0
- package/dist/cli/commands/system-status.d.ts.map +1 -0
- package/dist/cli/commands/system-synthesized-profile.d.ts.map +1 -1
- package/dist/cli/commands/system.d.ts.map +1 -1
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/index.js +4964 -2168
- package/dist/cli/register-all.d.ts +1 -1
- package/dist/cli/register-all.d.ts.map +1 -1
- package/dist/db/api-mode.d.ts +145 -37
- package/dist/db/api-mode.d.ts.map +1 -1
- package/dist/db/api-response-contract.d.ts +23 -0
- package/dist/db/api-response-contract.d.ts.map +1 -0
- package/dist/db/audit.d.ts +34 -45
- package/dist/db/audit.d.ts.map +1 -1
- package/dist/db/database.d.ts +1 -0
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/locks.d.ts.map +1 -1
- package/dist/db/machines.d.ts +50 -13
- package/dist/db/machines.d.ts.map +1 -1
- package/dist/db/memories.d.ts.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/pg-migrate.d.ts.map +1 -1
- package/dist/db/pg-migrations.d.ts.map +1 -1
- package/dist/db/session-jobs.d.ts +2 -0
- package/dist/db/session-jobs.d.ts.map +1 -1
- package/dist/db/store-backend.d.ts +8 -2
- package/dist/db/store-backend.d.ts.map +1 -1
- package/dist/diagnostics/historical-project-registration-receipt.js +299 -50
- package/dist/generated/storage-kit/backend.d.ts +12 -2
- package/dist/generated/storage-kit/backend.d.ts.map +1 -1
- package/dist/generated/storage-kit/index.d.ts +1 -1
- package/dist/generated/storage-kit/index.d.ts.map +1 -1
- package/dist/generated/storage-kit/migrations.d.ts +21 -0
- package/dist/generated/storage-kit/migrations.d.ts.map +1 -1
- package/dist/generated/storage-kit/pool.d.ts +2 -5
- package/dist/generated/storage-kit/pool.d.ts.map +1 -1
- package/dist/generated/storage-kit/query.d.ts +1 -1
- package/dist/generated/storage-kit/query.d.ts.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4328 -1485
- package/dist/lib/built-in-hooks.d.ts.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/env.d.ts +10 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/gatherer.d.ts.map +1 -1
- package/dist/lib/injection-project.d.ts +10 -0
- package/dist/lib/injection-project.d.ts.map +1 -0
- package/dist/lib/injector.d.ts +1 -0
- package/dist/lib/injector.d.ts.map +1 -1
- package/dist/lib/local-opt-in.d.ts +114 -0
- package/dist/lib/local-opt-in.d.ts.map +1 -0
- package/dist/lib/machine-visibility.d.ts.map +1 -1
- package/dist/lib/memory-lock.d.ts.map +1 -1
- package/dist/lib/paths.d.ts +9 -0
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/profile-synthesizer.d.ts +13 -2
- package/dist/lib/profile-synthesizer.d.ts.map +1 -1
- package/dist/lib/redact.d.ts +70 -10
- package/dist/lib/redact.d.ts.map +1 -1
- package/dist/lib/reflection.d.ts.map +1 -1
- package/dist/lib/session-queue.d.ts.map +1 -1
- package/dist/lib/session-registry.d.ts +38 -1
- package/dist/lib/session-registry.d.ts.map +1 -1
- package/dist/lib/storage-sync.d.ts +5 -0
- package/dist/lib/storage-sync.d.ts.map +1 -1
- package/dist/lib/synthesis/index.d.ts.map +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +6215 -2598
- package/dist/mcp/profile.d.ts +23 -0
- package/dist/mcp/profile.d.ts.map +1 -0
- package/dist/mcp/tools/lock-tools.d.ts.map +1 -1
- package/dist/mcp/tools/memory-audit.d.ts +1 -1
- package/dist/mcp/tools/memory-audit.d.ts.map +1 -1
- package/dist/mcp/tools/memory-crud.d.ts.map +1 -1
- package/dist/mcp/tools/memory-inject.d.ts.map +1 -1
- package/dist/mcp/tools/project-tools.d.ts.map +1 -1
- package/dist/mcp/tools/session-tools.d.ts.map +1 -1
- package/dist/mcp/tools/tool-registry.d.ts +22 -19
- package/dist/mcp/tools/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tools/utility-tools.d.ts +2 -1
- package/dist/mcp/tools/utility-tools.d.ts.map +1 -1
- package/dist/project-registration.js +549 -205
- package/dist/sdk/index.d.ts +282 -14
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +1691 -35
- package/dist/server/auth.d.ts +2 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/helpers.d.ts +21 -7
- package/dist/server/helpers.d.ts.map +1 -1
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +6040 -2475
- package/dist/server/openapi.d.ts.map +1 -1
- package/dist/server/routes/audit.d.ts +2 -0
- package/dist/server/routes/audit.d.ts.map +1 -0
- package/dist/server/routes/machines.d.ts +2 -0
- package/dist/server/routes/machines.d.ts.map +1 -0
- package/dist/server/routes/system-sessions.d.ts.map +1 -1
- package/dist/server/routes/system-synthesis.d.ts.map +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +78 -129
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/docker-entrypoint.sh +7 -0
- package/hasna.contract.json +19 -7
- package/package.json +12 -11
- package/postinstall.mjs +52 -1
- package/dashboard/bun.lock +0 -519
- package/dist/cli/__fixtures__/clean-fallback-stub-server.d.ts +0 -2
- package/dist/cli/__fixtures__/clean-fallback-stub-server.d.ts.map +0 -1
- package/dist/cli/__fixtures__/io-restore-stub-server.d.ts +0 -2
- package/dist/cli/__fixtures__/io-restore-stub-server.d.ts.map +0 -1
- package/dist/cli/brains.d.ts +0 -3
- package/dist/cli/brains.d.ts.map +0 -1
- package/dist/db/__fixtures__/fail-closed-stub-server.d.ts +0 -2
- package/dist/db/__fixtures__/fail-closed-stub-server.d.ts.map +0 -1
- package/dist/db/__fixtures__/list-filter-capture-server.d.ts +0 -2
- package/dist/db/__fixtures__/list-filter-capture-server.d.ts.map +0 -1
- package/dist/db/__fixtures__/list-filter-client-runner.d.ts +0 -2
- package/dist/db/__fixtures__/list-filter-client-runner.d.ts.map +0 -1
- package/dist/lib/retired-storage-mode.d.ts +0 -11
- package/dist/lib/retired-storage-mode.d.ts.map +0 -1
- package/dist/test-support/memories-page-stub-server.d.ts +0 -2
- package/dist/test-support/memories-page-stub-server.d.ts.map +0 -1
- package/dist/test-support/memories-page-stub.d.ts +0 -28
- package/dist/test-support/memories-page-stub.d.ts.map +0 -1
- package/dist/test-support/pg-sync-stub-worker.d.ts +0 -2
- package/dist/test-support/pg-sync-stub-worker.d.ts.map +0 -1
- package/dist/test-support/preload-local-store.d.ts +0 -2
- package/dist/test-support/preload-local-store.d.ts.map +0 -1
- package/dist/test-support/project-authority-identity.d.ts +0 -8
- package/dist/test-support/project-authority-identity.d.ts.map +0 -1
- package/dist/test-support/store-isolation.d.ts +0 -108
- package/dist/test-support/store-isolation.d.ts.map +0 -1
- package/dist/test-support/strip-ansi.d.ts +0 -3
- package/dist/test-support/strip-ansi.d.ts.map +0 -1
|
@@ -8,87 +8,76 @@ import { createHash } from "crypto";
|
|
|
8
8
|
|
|
9
9
|
// src/storage.ts
|
|
10
10
|
import { existsSync as existsSync2, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
11
|
-
import { join as
|
|
11
|
+
import { join as join2 } from "path";
|
|
12
12
|
import { fileURLToPath } from "url";
|
|
13
13
|
import { Worker } from "worker_threads";
|
|
14
14
|
import pg from "pg";
|
|
15
15
|
|
|
16
16
|
// src/lib/paths.ts
|
|
17
17
|
import { existsSync } from "fs";
|
|
18
|
-
import { homedir as homedir2 } from "os";
|
|
19
|
-
import { join as join2, resolve } from "path";
|
|
20
|
-
|
|
21
|
-
// ../../node_modules/.bun/@hasna+paths@0.1.0/node_modules/@hasna/paths/dist/index.js
|
|
22
18
|
import { homedir } from "os";
|
|
23
|
-
import { join } from "path";
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
import { join, resolve } from "path";
|
|
20
|
+
import { homedir as pathsResolverHomedir } from "os";
|
|
21
|
+
import { join as pathsResolverJoin } from "path";
|
|
22
|
+
var PATHS_RESOLVER_KIND_ENV = {
|
|
26
23
|
data: "HASNA_DATA_HOME",
|
|
27
24
|
state: "HASNA_STATE_HOME",
|
|
28
25
|
cache: "HASNA_CACHE_HOME"
|
|
29
26
|
};
|
|
30
|
-
var
|
|
31
|
-
function
|
|
27
|
+
var PATHS_RESOLVER_APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
28
|
+
function pathsResolverAssertApp(app) {
|
|
32
29
|
if (typeof app !== "string" || app.length === 0) {
|
|
33
30
|
throw new TypeError("paths: app must be a non-empty string");
|
|
34
31
|
}
|
|
35
|
-
if (!
|
|
32
|
+
if (!PATHS_RESOLVER_APP_SLUG_RE.test(app)) {
|
|
36
33
|
throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const value = envOf(options)[KIND_ENV[kind]];
|
|
44
|
-
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
45
|
-
}
|
|
46
|
-
function isMacOS(platform) {
|
|
47
|
-
return platform === "darwin";
|
|
36
|
+
function pathsResolverAssertKind(kind) {
|
|
37
|
+
if (!Object.keys(PATHS_RESOLVER_KIND_ENV).includes(kind)) {
|
|
38
|
+
throw new TypeError(`paths: invalid path kind "${kind}" \u2014 expected one of ${Object.keys(PATHS_RESOLVER_KIND_ENV).join(", ")}`);
|
|
39
|
+
}
|
|
48
40
|
}
|
|
49
|
-
function
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
function pathsResolverBaseDir(kind, options) {
|
|
42
|
+
pathsResolverAssertKind(kind);
|
|
43
|
+
const env = options.env ?? process.env;
|
|
44
|
+
const override = env[PATHS_RESOLVER_KIND_ENV[kind]];
|
|
45
|
+
if (typeof override === "string" && override.length > 0)
|
|
52
46
|
return override;
|
|
53
|
-
const home = options.home ??
|
|
47
|
+
const home = options.home ?? pathsResolverHomedir();
|
|
54
48
|
const platform = options.platform ?? process.platform;
|
|
55
|
-
if (
|
|
49
|
+
if (platform === "darwin") {
|
|
56
50
|
switch (kind) {
|
|
57
|
-
case "config":
|
|
58
51
|
case "data":
|
|
59
|
-
return
|
|
52
|
+
return pathsResolverJoin(home, "Library", "Application Support", "Hasna");
|
|
60
53
|
case "cache":
|
|
61
|
-
return
|
|
54
|
+
return pathsResolverJoin(home, "Library", "Caches", "Hasna");
|
|
62
55
|
case "state":
|
|
63
|
-
return
|
|
56
|
+
return pathsResolverJoin(home, "Library", "Logs", "Hasna");
|
|
64
57
|
}
|
|
65
58
|
}
|
|
66
59
|
switch (kind) {
|
|
67
|
-
case "config":
|
|
68
|
-
return join(home, ".config", "hasna");
|
|
69
60
|
case "data":
|
|
70
|
-
return
|
|
61
|
+
return pathsResolverJoin(home, ".local", "share", "hasna");
|
|
71
62
|
case "state":
|
|
72
|
-
return
|
|
63
|
+
return pathsResolverJoin(home, ".local", "state", "hasna");
|
|
73
64
|
case "cache":
|
|
74
|
-
return
|
|
65
|
+
return pathsResolverJoin(home, ".cache", "hasna");
|
|
75
66
|
}
|
|
76
67
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
79
|
-
const appSegment = options.internal === true ?
|
|
80
|
-
return
|
|
68
|
+
function pathsResolverResolve(kind, options) {
|
|
69
|
+
pathsResolverAssertApp(options.app);
|
|
70
|
+
const appSegment = options.internal === true ? pathsResolverJoin("internal", options.app) : options.app;
|
|
71
|
+
return pathsResolverJoin(pathsResolverBaseDir(kind, options), appSegment);
|
|
81
72
|
}
|
|
82
73
|
function dataDir(options) {
|
|
83
|
-
return
|
|
74
|
+
return pathsResolverResolve("data", options);
|
|
84
75
|
}
|
|
85
|
-
|
|
86
|
-
// src/lib/paths.ts
|
|
87
76
|
function effectiveHome() {
|
|
88
|
-
return process.env["HOME"] || process.env["USERPROFILE"] ||
|
|
77
|
+
return process.env["HOME"] || process.env["USERPROFILE"] || homedir() || "/tmp";
|
|
89
78
|
}
|
|
90
79
|
function legacyDataRoot() {
|
|
91
|
-
return
|
|
80
|
+
return join(effectiveHome(), ".hasna", "mementos");
|
|
92
81
|
}
|
|
93
82
|
function resolverDataRoot() {
|
|
94
83
|
return dataDir({
|
|
@@ -100,7 +89,7 @@ function adoptResolverDataRoot(resolved, env = process.env) {
|
|
|
100
89
|
const dataOverride = env.HASNA_DATA_HOME;
|
|
101
90
|
if (typeof dataOverride === "string" && dataOverride.trim().length > 0)
|
|
102
91
|
return true;
|
|
103
|
-
return existsSync(
|
|
92
|
+
return existsSync(join(resolved, "mementos.db"));
|
|
104
93
|
}
|
|
105
94
|
function exactDataRoot() {
|
|
106
95
|
for (const key of ["HASNA_MEMENTOS_HOME", "MEMENTOS_HOME"]) {
|
|
@@ -118,6 +107,18 @@ function getDataRoot() {
|
|
|
118
107
|
return adoptResolverDataRoot(resolved) ? resolve(resolved) : resolve(legacyDataRoot());
|
|
119
108
|
}
|
|
120
109
|
|
|
110
|
+
// src/lib/env.ts
|
|
111
|
+
var alias = (canonical, legacy) => process.env[canonical] ?? process.env[legacy];
|
|
112
|
+
var env = {
|
|
113
|
+
apiKey: () => alias("HASNA_MEMENTOS_API_KEY", "MEMENTOS_API_KEY"),
|
|
114
|
+
defaultScope: () => alias("HASNA_MEMENTOS_DEFAULT_SCOPE", "MEMENTOS_DEFAULT_SCOPE"),
|
|
115
|
+
defaultCategory: () => alias("HASNA_MEMENTOS_DEFAULT_CATEGORY", "MEMENTOS_DEFAULT_CATEGORY"),
|
|
116
|
+
defaultImportance: () => alias("HASNA_MEMENTOS_DEFAULT_IMPORTANCE", "MEMENTOS_DEFAULT_IMPORTANCE"),
|
|
117
|
+
pgsyncQueryTimeoutMs: () => alias("HASNA_MEMENTOS_PGSYNC_QUERY_TIMEOUT_MS", "MEMENTOS_PGSYNC_QUERY_TIMEOUT_MS"),
|
|
118
|
+
reflectProvider: () => alias("HASNA_MEMENTOS_REFLECT_PROVIDER", "MEMENTOS_REFLECT_PROVIDER"),
|
|
119
|
+
reflectModel: () => alias("HASNA_MEMENTOS_REFLECT_MODEL", "MEMENTOS_REFLECT_MODEL")
|
|
120
|
+
};
|
|
121
|
+
|
|
121
122
|
// src/storage.ts
|
|
122
123
|
function shouldUsePgSsl(connectionString) {
|
|
123
124
|
let params;
|
|
@@ -163,7 +164,7 @@ class PgSyncPool {
|
|
|
163
164
|
generation = 0;
|
|
164
165
|
static DATA_BYTES = 128 * 1024 * 1024;
|
|
165
166
|
static queryTimeoutMs() {
|
|
166
|
-
const raw =
|
|
167
|
+
const raw = env.pgsyncQueryTimeoutMs()?.trim();
|
|
167
168
|
const parsed = raw ? Number(raw) : Number.NaN;
|
|
168
169
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : 60000;
|
|
169
170
|
}
|
|
@@ -171,9 +172,9 @@ class PgSyncPool {
|
|
|
171
172
|
const ext = import.meta.url.endsWith(".ts") ? ".ts" : ".js";
|
|
172
173
|
const here = fileURLToPath(new URL(".", import.meta.url));
|
|
173
174
|
const candidates = [
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
join2(here, `pg-sync-worker${ext}`),
|
|
176
|
+
join2(here, "..", `pg-sync-worker${ext}`),
|
|
177
|
+
join2(here, "..", "..", `pg-sync-worker${ext}`)
|
|
177
178
|
];
|
|
178
179
|
for (const candidate of candidates) {
|
|
179
180
|
if (existsSync2(candidate))
|
|
@@ -248,8 +249,8 @@ var MEMENTOS_STORAGE_FALLBACK_ENV = {
|
|
|
248
249
|
databaseUrl: "MEMENTOS_DATABASE_URL"
|
|
249
250
|
};
|
|
250
251
|
var LOCAL_DATA_DIR = getDataRoot();
|
|
251
|
-
var STORAGE_CONFIG_DIR =
|
|
252
|
-
var STORAGE_CONFIG_PATH =
|
|
252
|
+
var STORAGE_CONFIG_DIR = join2(LOCAL_DATA_DIR, "storage");
|
|
253
|
+
var STORAGE_CONFIG_PATH = join2(STORAGE_CONFIG_DIR, "config.json");
|
|
253
254
|
var DATABASE_ENV_NAMES = [
|
|
254
255
|
{ name: MEMENTOS_STORAGE_ENV.databaseUrl, deprecated: false },
|
|
255
256
|
{ name: MEMENTOS_STORAGE_FALLBACK_ENV.databaseUrl, deprecated: false }
|
|
@@ -264,6 +265,40 @@ var SECRET_QUERY_PARAMS = new Set([
|
|
|
264
265
|
"apikey"
|
|
265
266
|
]);
|
|
266
267
|
|
|
268
|
+
// ../../node_modules/.bun/@hasna+contracts@1.0.2+e8014c875821e0be/node_modules/@hasna/contracts/dist/client/transport.js
|
|
269
|
+
import { createRequire } from "module";
|
|
270
|
+
function envToken(name) {
|
|
271
|
+
return name.toUpperCase().replace(/-/g, "_");
|
|
272
|
+
}
|
|
273
|
+
function clientTransportEnvKeys(name) {
|
|
274
|
+
const envSegment = envToken(name);
|
|
275
|
+
return {
|
|
276
|
+
apiUrlKeys: [`HASNA_${envSegment}_API_URL`, `${envSegment}_API_URL`],
|
|
277
|
+
apiKeyKeys: [`HASNA_${envSegment}_API_KEY`, `${envSegment}_API_KEY`]
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
var MAX_CREDENTIAL_FILE_BYTES = 64 * 1024;
|
|
281
|
+
var INSPECT_CUSTOM = Symbol.for("nodejs.util.inspect.custom");
|
|
282
|
+
var CREDENTIAL_SEAL = Symbol.for("hasna:contracts:sealedCredential");
|
|
283
|
+
var AMBIENT_ENVIRONMENT = Symbol.for("hasna:contracts:ambientClientEnvironment");
|
|
284
|
+
var SECRETS_PACKAGE_SPECIFIER = "@hasna/" + "secrets";
|
|
285
|
+
var requireSecretsSdk = createRequire(import.meta.url);
|
|
286
|
+
var IDEMPOTENT_METHODS = new Set(["GET", "HEAD", "PUT", "DELETE", "OPTIONS"]);
|
|
287
|
+
var AUTHORITY_OVERRIDE_HEADERS = new Set([
|
|
288
|
+
"host",
|
|
289
|
+
":authority",
|
|
290
|
+
"forwarded",
|
|
291
|
+
"x-forwarded-host",
|
|
292
|
+
"x-original-host"
|
|
293
|
+
]);
|
|
294
|
+
|
|
295
|
+
// src/lib/local-opt-in.ts
|
|
296
|
+
var CONTRACTS_AMBIENT_ENVIRONMENT = Symbol.for("hasna:contracts:ambientClientEnvironment");
|
|
297
|
+
|
|
298
|
+
// src/db/api-mode.ts
|
|
299
|
+
var API_URL_ENV_KEYS = clientTransportEnvKeys("mementos").apiUrlKeys;
|
|
300
|
+
var API_KEY_ENV_KEYS = clientTransportEnvKeys("mementos").apiKeyKeys;
|
|
301
|
+
|
|
267
302
|
// src/project-registration/schema.ts
|
|
268
303
|
function sqliteMementosProjectRegistrationSchemaSql() {
|
|
269
304
|
return `
|
|
@@ -1421,6 +1456,220 @@ INSERT OR IGNORE INTO _migrations (id) VALUES (38);
|
|
|
1421
1456
|
`
|
|
1422
1457
|
${sqliteMementosMemoryProjectLinkSchemaSql()}
|
|
1423
1458
|
INSERT OR IGNORE INTO _migrations (id) VALUES (40);
|
|
1459
|
+
`,
|
|
1460
|
+
`
|
|
1461
|
+
DROP TABLE IF EXISTS temp.mementos_m41_machine_preflight;
|
|
1462
|
+
CREATE TEMP TABLE mementos_m41_machine_preflight (
|
|
1463
|
+
id TEXT PRIMARY KEY,
|
|
1464
|
+
name TEXT NOT NULL CHECK(
|
|
1465
|
+
length(name) BETWEEN 1 AND 128
|
|
1466
|
+
AND instr(name, char(0)) = 0
|
|
1467
|
+
AND instr(name, char(1)) = 0
|
|
1468
|
+
AND instr(name, char(2)) = 0
|
|
1469
|
+
AND instr(name, char(3)) = 0
|
|
1470
|
+
AND instr(name, char(4)) = 0
|
|
1471
|
+
AND instr(name, char(5)) = 0
|
|
1472
|
+
AND instr(name, char(6)) = 0
|
|
1473
|
+
AND instr(name, char(7)) = 0
|
|
1474
|
+
AND instr(name, char(8)) = 0
|
|
1475
|
+
AND instr(name, char(9)) = 0
|
|
1476
|
+
AND instr(name, char(10)) = 0
|
|
1477
|
+
AND instr(name, char(11)) = 0
|
|
1478
|
+
AND instr(name, char(12)) = 0
|
|
1479
|
+
AND instr(name, char(13)) = 0
|
|
1480
|
+
AND instr(name, char(14)) = 0
|
|
1481
|
+
AND instr(name, char(15)) = 0
|
|
1482
|
+
AND instr(name, char(16)) = 0
|
|
1483
|
+
AND instr(name, char(17)) = 0
|
|
1484
|
+
AND instr(name, char(18)) = 0
|
|
1485
|
+
AND instr(name, char(19)) = 0
|
|
1486
|
+
AND instr(name, char(20)) = 0
|
|
1487
|
+
AND instr(name, char(21)) = 0
|
|
1488
|
+
AND instr(name, char(22)) = 0
|
|
1489
|
+
AND instr(name, char(23)) = 0
|
|
1490
|
+
AND instr(name, char(24)) = 0
|
|
1491
|
+
AND instr(name, char(25)) = 0
|
|
1492
|
+
AND instr(name, char(26)) = 0
|
|
1493
|
+
AND instr(name, char(27)) = 0
|
|
1494
|
+
AND instr(name, char(28)) = 0
|
|
1495
|
+
AND instr(name, char(29)) = 0
|
|
1496
|
+
AND instr(name, char(30)) = 0
|
|
1497
|
+
AND instr(name, char(31)) = 0
|
|
1498
|
+
AND instr(name, char(127)) = 0
|
|
1499
|
+
),
|
|
1500
|
+
hostname TEXT NOT NULL UNIQUE CHECK(
|
|
1501
|
+
length(hostname) BETWEEN 1 AND 253
|
|
1502
|
+
AND hostname = lower(rtrim(trim(hostname), '.'))
|
|
1503
|
+
AND instr(hostname, ' ') = 0
|
|
1504
|
+
AND instr(hostname, char(9)) = 0
|
|
1505
|
+
AND instr(hostname, char(10)) = 0
|
|
1506
|
+
AND instr(hostname, char(13)) = 0
|
|
1507
|
+
AND instr(hostname, '/') = 0
|
|
1508
|
+
AND instr(hostname, char(92)) = 0
|
|
1509
|
+
),
|
|
1510
|
+
platform TEXT NOT NULL CHECK(
|
|
1511
|
+
length(platform) BETWEEN 1 AND 64
|
|
1512
|
+
AND platform = lower(trim(platform))
|
|
1513
|
+
AND platform NOT GLOB '*[^a-z0-9._-]*'
|
|
1514
|
+
),
|
|
1515
|
+
is_primary INTEGER NOT NULL CHECK(is_primary IN (0, 1)),
|
|
1516
|
+
created_at TEXT NOT NULL CHECK(julianday(created_at) IS NOT NULL),
|
|
1517
|
+
last_seen_at TEXT NOT NULL CHECK(
|
|
1518
|
+
julianday(last_seen_at) IS NOT NULL
|
|
1519
|
+
AND julianday(last_seen_at) >= julianday(created_at)
|
|
1520
|
+
)
|
|
1521
|
+
);
|
|
1522
|
+
INSERT INTO mementos_m41_machine_preflight
|
|
1523
|
+
(id, name, hostname, platform, is_primary, created_at, last_seen_at)
|
|
1524
|
+
SELECT
|
|
1525
|
+
id,
|
|
1526
|
+
name,
|
|
1527
|
+
lower(rtrim(trim(hostname), '.')),
|
|
1528
|
+
platform,
|
|
1529
|
+
is_primary,
|
|
1530
|
+
created_at,
|
|
1531
|
+
last_seen_at
|
|
1532
|
+
FROM machines;
|
|
1533
|
+
|
|
1534
|
+
UPDATE machines
|
|
1535
|
+
SET hostname = (
|
|
1536
|
+
SELECT preflight.hostname
|
|
1537
|
+
FROM mementos_m41_machine_preflight preflight
|
|
1538
|
+
WHERE preflight.id = machines.id
|
|
1539
|
+
);
|
|
1540
|
+
|
|
1541
|
+
DROP TABLE mementos_m41_machine_preflight;
|
|
1542
|
+
DROP TRIGGER IF EXISTS machines_single_primary_insert;
|
|
1543
|
+
DROP TRIGGER IF EXISTS machines_single_primary_update;
|
|
1544
|
+
DROP INDEX IF EXISTS idx_machines_hostname;
|
|
1545
|
+
CREATE UNIQUE INDEX idx_machines_hostname ON machines(hostname);
|
|
1546
|
+
DROP INDEX IF EXISTS idx_machines_single_primary;
|
|
1547
|
+
CREATE UNIQUE INDEX idx_machines_single_primary
|
|
1548
|
+
ON machines(is_primary) WHERE is_primary = 1;
|
|
1549
|
+
|
|
1550
|
+
CREATE TRIGGER IF NOT EXISTS machines_hostname_canonical_insert
|
|
1551
|
+
BEFORE INSERT ON machines
|
|
1552
|
+
WHEN NEW.hostname != lower(rtrim(trim(NEW.hostname), '.'))
|
|
1553
|
+
OR length(NEW.hostname) NOT BETWEEN 1 AND 253
|
|
1554
|
+
OR instr(NEW.hostname, ' ') > 0
|
|
1555
|
+
OR instr(NEW.hostname, char(9)) > 0
|
|
1556
|
+
OR instr(NEW.hostname, char(10)) > 0
|
|
1557
|
+
OR instr(NEW.hostname, char(13)) > 0
|
|
1558
|
+
OR instr(NEW.hostname, '/') > 0
|
|
1559
|
+
OR instr(NEW.hostname, char(92)) > 0
|
|
1560
|
+
BEGIN
|
|
1561
|
+
SELECT RAISE(ABORT, 'machines.hostname must be canonical');
|
|
1562
|
+
END;
|
|
1563
|
+
|
|
1564
|
+
CREATE TRIGGER IF NOT EXISTS machines_hostname_canonical_update
|
|
1565
|
+
BEFORE UPDATE OF hostname ON machines
|
|
1566
|
+
WHEN NEW.hostname != lower(rtrim(trim(NEW.hostname), '.'))
|
|
1567
|
+
OR length(NEW.hostname) NOT BETWEEN 1 AND 253
|
|
1568
|
+
OR instr(NEW.hostname, ' ') > 0
|
|
1569
|
+
OR instr(NEW.hostname, char(9)) > 0
|
|
1570
|
+
OR instr(NEW.hostname, char(10)) > 0
|
|
1571
|
+
OR instr(NEW.hostname, char(13)) > 0
|
|
1572
|
+
OR instr(NEW.hostname, '/') > 0
|
|
1573
|
+
OR instr(NEW.hostname, char(92)) > 0
|
|
1574
|
+
BEGIN
|
|
1575
|
+
SELECT RAISE(ABORT, 'machines.hostname must be canonical');
|
|
1576
|
+
END;
|
|
1577
|
+
|
|
1578
|
+
CREATE TRIGGER IF NOT EXISTS machines_runtime_contract_insert
|
|
1579
|
+
BEFORE INSERT ON machines
|
|
1580
|
+
WHEN length(NEW.name) NOT BETWEEN 1 AND 128
|
|
1581
|
+
OR instr(NEW.name, char(0)) > 0
|
|
1582
|
+
OR instr(NEW.name, char(1)) > 0
|
|
1583
|
+
OR instr(NEW.name, char(2)) > 0
|
|
1584
|
+
OR instr(NEW.name, char(3)) > 0
|
|
1585
|
+
OR instr(NEW.name, char(4)) > 0
|
|
1586
|
+
OR instr(NEW.name, char(5)) > 0
|
|
1587
|
+
OR instr(NEW.name, char(6)) > 0
|
|
1588
|
+
OR instr(NEW.name, char(7)) > 0
|
|
1589
|
+
OR instr(NEW.name, char(8)) > 0
|
|
1590
|
+
OR instr(NEW.name, char(9)) > 0
|
|
1591
|
+
OR instr(NEW.name, char(10)) > 0
|
|
1592
|
+
OR instr(NEW.name, char(11)) > 0
|
|
1593
|
+
OR instr(NEW.name, char(12)) > 0
|
|
1594
|
+
OR instr(NEW.name, char(13)) > 0
|
|
1595
|
+
OR instr(NEW.name, char(14)) > 0
|
|
1596
|
+
OR instr(NEW.name, char(15)) > 0
|
|
1597
|
+
OR instr(NEW.name, char(16)) > 0
|
|
1598
|
+
OR instr(NEW.name, char(17)) > 0
|
|
1599
|
+
OR instr(NEW.name, char(18)) > 0
|
|
1600
|
+
OR instr(NEW.name, char(19)) > 0
|
|
1601
|
+
OR instr(NEW.name, char(20)) > 0
|
|
1602
|
+
OR instr(NEW.name, char(21)) > 0
|
|
1603
|
+
OR instr(NEW.name, char(22)) > 0
|
|
1604
|
+
OR instr(NEW.name, char(23)) > 0
|
|
1605
|
+
OR instr(NEW.name, char(24)) > 0
|
|
1606
|
+
OR instr(NEW.name, char(25)) > 0
|
|
1607
|
+
OR instr(NEW.name, char(26)) > 0
|
|
1608
|
+
OR instr(NEW.name, char(27)) > 0
|
|
1609
|
+
OR instr(NEW.name, char(28)) > 0
|
|
1610
|
+
OR instr(NEW.name, char(29)) > 0
|
|
1611
|
+
OR instr(NEW.name, char(30)) > 0
|
|
1612
|
+
OR instr(NEW.name, char(31)) > 0
|
|
1613
|
+
OR instr(NEW.name, char(127)) > 0
|
|
1614
|
+
OR length(NEW.platform) NOT BETWEEN 1 AND 64
|
|
1615
|
+
OR NEW.platform != lower(trim(NEW.platform))
|
|
1616
|
+
OR NEW.platform GLOB '*[^a-z0-9._-]*'
|
|
1617
|
+
OR NEW.is_primary NOT IN (0, 1)
|
|
1618
|
+
OR julianday(NEW.created_at) IS NULL
|
|
1619
|
+
OR julianday(NEW.last_seen_at) IS NULL
|
|
1620
|
+
OR julianday(NEW.last_seen_at) < julianday(NEW.created_at)
|
|
1621
|
+
BEGIN
|
|
1622
|
+
SELECT RAISE(ABORT, 'machines row violates the persisted runtime contract');
|
|
1623
|
+
END;
|
|
1624
|
+
|
|
1625
|
+
CREATE TRIGGER IF NOT EXISTS machines_runtime_contract_update
|
|
1626
|
+
BEFORE UPDATE OF name, platform, is_primary, created_at, last_seen_at ON machines
|
|
1627
|
+
WHEN length(NEW.name) NOT BETWEEN 1 AND 128
|
|
1628
|
+
OR instr(NEW.name, char(0)) > 0
|
|
1629
|
+
OR instr(NEW.name, char(1)) > 0
|
|
1630
|
+
OR instr(NEW.name, char(2)) > 0
|
|
1631
|
+
OR instr(NEW.name, char(3)) > 0
|
|
1632
|
+
OR instr(NEW.name, char(4)) > 0
|
|
1633
|
+
OR instr(NEW.name, char(5)) > 0
|
|
1634
|
+
OR instr(NEW.name, char(6)) > 0
|
|
1635
|
+
OR instr(NEW.name, char(7)) > 0
|
|
1636
|
+
OR instr(NEW.name, char(8)) > 0
|
|
1637
|
+
OR instr(NEW.name, char(9)) > 0
|
|
1638
|
+
OR instr(NEW.name, char(10)) > 0
|
|
1639
|
+
OR instr(NEW.name, char(11)) > 0
|
|
1640
|
+
OR instr(NEW.name, char(12)) > 0
|
|
1641
|
+
OR instr(NEW.name, char(13)) > 0
|
|
1642
|
+
OR instr(NEW.name, char(14)) > 0
|
|
1643
|
+
OR instr(NEW.name, char(15)) > 0
|
|
1644
|
+
OR instr(NEW.name, char(16)) > 0
|
|
1645
|
+
OR instr(NEW.name, char(17)) > 0
|
|
1646
|
+
OR instr(NEW.name, char(18)) > 0
|
|
1647
|
+
OR instr(NEW.name, char(19)) > 0
|
|
1648
|
+
OR instr(NEW.name, char(20)) > 0
|
|
1649
|
+
OR instr(NEW.name, char(21)) > 0
|
|
1650
|
+
OR instr(NEW.name, char(22)) > 0
|
|
1651
|
+
OR instr(NEW.name, char(23)) > 0
|
|
1652
|
+
OR instr(NEW.name, char(24)) > 0
|
|
1653
|
+
OR instr(NEW.name, char(25)) > 0
|
|
1654
|
+
OR instr(NEW.name, char(26)) > 0
|
|
1655
|
+
OR instr(NEW.name, char(27)) > 0
|
|
1656
|
+
OR instr(NEW.name, char(28)) > 0
|
|
1657
|
+
OR instr(NEW.name, char(29)) > 0
|
|
1658
|
+
OR instr(NEW.name, char(30)) > 0
|
|
1659
|
+
OR instr(NEW.name, char(31)) > 0
|
|
1660
|
+
OR instr(NEW.name, char(127)) > 0
|
|
1661
|
+
OR length(NEW.platform) NOT BETWEEN 1 AND 64
|
|
1662
|
+
OR NEW.platform != lower(trim(NEW.platform))
|
|
1663
|
+
OR NEW.platform GLOB '*[^a-z0-9._-]*'
|
|
1664
|
+
OR NEW.is_primary NOT IN (0, 1)
|
|
1665
|
+
OR julianday(NEW.created_at) IS NULL
|
|
1666
|
+
OR julianday(NEW.last_seen_at) IS NULL
|
|
1667
|
+
OR julianday(NEW.last_seen_at) < julianday(NEW.created_at)
|
|
1668
|
+
BEGIN
|
|
1669
|
+
SELECT RAISE(ABORT, 'machines row violates the persisted runtime contract');
|
|
1670
|
+
END;
|
|
1671
|
+
|
|
1672
|
+
INSERT OR IGNORE INTO _migrations (id) VALUES (41);
|
|
1424
1673
|
`
|
|
1425
1674
|
];
|
|
1426
1675
|
|
|
@@ -7,14 +7,24 @@ export interface ServerDataBackendEnvKeys {
|
|
|
7
7
|
databaseUrlKeys: string[];
|
|
8
8
|
}
|
|
9
9
|
export declare function serverDataBackendEnvKeys(name: string): ServerDataBackendEnvKeys;
|
|
10
|
-
export declare function assertNoLegacyStorageMode(name: string, env?: Env): void;
|
|
11
10
|
export interface ServerDataBackendResolution {
|
|
12
11
|
backend: ServerDataBackend;
|
|
13
12
|
source: string;
|
|
14
13
|
databaseUrlPresent: boolean;
|
|
15
14
|
databaseUrlSource: string | null;
|
|
16
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the server data backend: `postgresql` when a (canonical-first, see
|
|
18
|
+
* `serverDataBackendEnvKeys`) DSN is configured, `sqlite` otherwise.
|
|
19
|
+
*
|
|
20
|
+
* LOCAL DEVIATION (see the header): the stock 1.0.2 generator requires a
|
|
21
|
+
* validated DSN in every case; mementos's server contract pairs `sqlite` with
|
|
22
|
+
* the ABSENCE of a DSN, so that absence resolves to `sqlite` (source
|
|
23
|
+
* "default"). Validation of the DSN's shape is mementos's own storage-status
|
|
24
|
+
* layer (src/storage.ts), which reports a fail-closed issue list instead of
|
|
25
|
+
* throwing. Retired mode variables are inert and never select anything.
|
|
26
|
+
*/
|
|
17
27
|
export declare function resolveServerDataBackend(name: string, env?: Env): ServerDataBackendResolution;
|
|
18
|
-
/** Resolve the database URL without logging it. Returns `null` when unset. */
|
|
28
|
+
/** Resolve the configured database URL without logging it. Returns `null` when unset. */
|
|
19
29
|
export declare function resolveDatabaseUrl(name: string, env?: Env): string | null;
|
|
20
30
|
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/backend.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,oBAAoB,mCAAoC,CAAC;AACtE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAErD,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,CAK/E;AAmBD,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,GAAiB,GACrB,2BAA2B,CAgB7B;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,GAAiB,GAAG,MAAM,GAAG,IAAI,CAEtF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/index.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/index.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
@@ -27,11 +27,32 @@ export declare function checksumSql(sql: string): string;
|
|
|
27
27
|
export declare function defineMigration(id: string, sql: string): Migration;
|
|
28
28
|
export interface MigrationRunnerOptions {
|
|
29
29
|
ledgerTable?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Applied-ledger rows whose ids the build ACKNOWLEDGES as non-reproducible
|
|
32
|
+
* history: a migration that was applied to the ledger by an out-of-band
|
|
33
|
+
* operation or by a build whose id scheme no longer exists, so no current
|
|
34
|
+
* source can reproduce its id or its SQL.
|
|
35
|
+
*
|
|
36
|
+
* An acknowledged id:
|
|
37
|
+
* - passes the downgrade guard (it IS recognized — as history),
|
|
38
|
+
* - is never checksum-compared (its SQL is gone, so no checksum can be
|
|
39
|
+
* computed for it; storing an arbitrary placeholder in `checksum` is
|
|
40
|
+
* what the prod ledger already holds for such rows),
|
|
41
|
+
* - is never re-applied and never re-inserted (it is already in the
|
|
42
|
+
* ledger; the plan covers declared migrations only).
|
|
43
|
+
*
|
|
44
|
+
* The list is EXPLICIT and OPT-IN: an acknowledged id may not also be a
|
|
45
|
+
* declared migration (enforced at construction), and any OTHER applied row
|
|
46
|
+
* unknown to the build still fails the downgrade guard. Every declared
|
|
47
|
+
* migration keeps its checksum bind unchanged.
|
|
48
|
+
*/
|
|
49
|
+
acknowledgedLegacyIds?: readonly string[];
|
|
30
50
|
}
|
|
31
51
|
export declare class MigrationLedger {
|
|
32
52
|
private readonly client;
|
|
33
53
|
private readonly migrations;
|
|
34
54
|
private readonly ledgerTable;
|
|
55
|
+
private readonly acknowledgedLegacyIds;
|
|
35
56
|
constructor(client: TypedQueryClient, migrations: readonly Migration[], options?: MigrationRunnerOptions);
|
|
36
57
|
ensureLedger(): Promise<void>;
|
|
37
58
|
listApplied(): Promise<AppliedMigration[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/migrations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/migrations.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuEnD,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAElE;AAQD,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C;AAED,qBAAa,eAAe;IAKxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;gBAGzC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,SAAS,SAAS,EAAE,EACjD,OAAO,GAAE,sBAA2B;IA2BhC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAKlC,WAAW;IAWzB,oEAAoE;IACpE,OAAO,CAAC,SAAS;IA0BjB,yEAAyE;IACnE,OAAO,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;CAqBzE;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAEjB"}
|
|
@@ -25,11 +25,8 @@ export interface ServerPoolFromEnv {
|
|
|
25
25
|
connectionSource: string;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* Resolve
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* Throws when no database URL selects the `postgresql` backend. Never logs the
|
|
32
|
-
* URL.
|
|
28
|
+
* Resolve the required database URL and build the server's PostgreSQL pool.
|
|
29
|
+
* Missing or invalid configuration throws without logging the URL.
|
|
33
30
|
*/
|
|
34
31
|
export declare function createServerPoolFromEnv(appName: string, options?: CreateServerPoolFromEnvOptions): ServerPoolFromEnv;
|
|
35
32
|
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/pool.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAE3C,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAgDrE,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAmC/D;AAED,MAAM,WAAW,8BAA+B,SAAQ,iBAAiB;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/pool.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAE3C,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAgDrE,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAmC/D;AAED,MAAM,WAAW,8BAA+B,SAAQ,iBAAiB;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,8BAAmC,GAC3C,iBAAiB,CAwBnB"}
|
|
@@ -17,7 +17,7 @@ export interface PgExecutor {
|
|
|
17
17
|
export interface TypedQueryClient {
|
|
18
18
|
query<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<QueryResult<T>>;
|
|
19
19
|
many<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<T[]>;
|
|
20
|
-
/** First row or `null`. Restored here after
|
|
20
|
+
/** First row or `null`. Restored here after knowledge dropped it. */
|
|
21
21
|
get<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<T | null>;
|
|
22
22
|
/** Exactly one row; throws if zero or more than one row is returned. */
|
|
23
23
|
one<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/query.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,IAAI,EAAc,cAAc,EAAE,MAAM,IAAI,CAAC;AAE3D,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,cAAc;IACnD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,CAAC,SAAS,cAAc,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,IAAI,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/query.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,IAAI,EAAc,cAAc,EAAE,MAAM,IAAI,CAAC;AAE3D,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,cAAc;IACnD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,CAAC,SAAS,cAAc,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,IAAI,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,qEAAqE;IACrE,GAAG,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3F,wEAAwE;IACxE,GAAG,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,gBAAgB,CAyBnE;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CA2B7D"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,12 +7,14 @@ export * from "./memory-project-link/index.js";
|
|
|
7
7
|
export { registerAgent, getAgent, listAgents, listAgentsByProject, updateAgent, touchAgent, } from "./db/agents.js";
|
|
8
8
|
export { acquireLock, releaseLock, releaseResourceLocks, releaseAllAgentLocks, checkLock, agentHoldsLock, listAgentLocks, cleanExpiredLocks, } from "./db/locks.js";
|
|
9
9
|
export type { ResourceLock, ResourceType, LockType } from "./db/locks.js";
|
|
10
|
+
export { getMemoryAuditTrail, getMemoryAuditTrailPage, exportAuditLog, exportAuditLogPage, getAuditStats, AUDIT_TRAIL_CONTRACT, AUDIT_EXPORT_CONTRACT, AUDIT_STATS_CONTRACT, AUDIT_OPERATIONS, } from "./db/audit.js";
|
|
11
|
+
export type { AuditEntry, AuditFilters, AuditOperation, AuditPage, AuditStats } from "./db/audit.js";
|
|
10
12
|
export { acquireMemoryWriteLock, releaseMemoryWriteLock, checkMemoryWriteLock, withMemoryLock, MemoryLockConflictError, memoryLockId, } from "./lib/memory-lock.js";
|
|
11
13
|
export { setFocus, getFocus, unfocus, resolveProjectId, buildFocusFilter, focusFilterSQL, } from "./lib/focus.js";
|
|
12
14
|
export { registerProject, getProject, listProjects, previewProjectUpdate, applyProjectUpdate, rollbackProjectUpdate, getProjectUpdateReceipt, ProjectGuardedUpdateError, ProjectCollisionError, } from "./db/projects.js";
|
|
13
15
|
export * from "./project-registration/index.js";
|
|
14
|
-
export { registerMachine, listMachines, getMachine, renameMachine, deleteMachine, touchMachine, getCurrentMachineId, getPrimaryMachine, getPrimaryMachineCandidate, setPrimaryMachine, getFallbackSyncTargetMachine, getPrimaryMachineStartupWarning, } from "./db/machines.js";
|
|
15
|
-
export type { Machine } from "./db/machines.js";
|
|
16
|
+
export { registerMachine, listMachines, getMachine, renameMachine, deleteMachine, touchMachine, getCurrentMachineId, getPrimaryMachine, getPrimaryMachineCandidate, setPrimaryMachine, getFallbackSyncTargetMachine, getPrimaryMachineStartupWarning, MACHINE_REGISTRATION_CONTRACT, MACHINE_LIST_CONTRACT, MACHINE_MUTATION_CONTRACT, MACHINE_TOUCH_CONTRACT, MachineRegistryError, } from "./db/machines.js";
|
|
17
|
+
export type { Machine, RegisterMachineInput, MachineRegistrationResult } from "./db/machines.js";
|
|
16
18
|
export { searchMemories } from "./lib/search.js";
|
|
17
19
|
export { createMementosProjectPanel, formatMementosProjectPanel, type MementosProjectPanelOptions, } from "./lib/project-panel.js";
|
|
18
20
|
export { loadConfig, DEFAULT_CONFIG, getActiveProfile, setActiveProfile, listProfiles, deleteProfile, } from "./lib/config.js";
|
|
@@ -22,7 +24,6 @@ export { enforceQuotas, archiveStale, archiveUnused, deprioritizeStale, runClean
|
|
|
22
24
|
export { syncMemories, defaultSyncAgents } from "./lib/sync.js";
|
|
23
25
|
export { pushStorageChanges, pullStorageChanges, getStorageSyncStatus, type MementosStorageStatus, type MementosStorageSyncResult, type MemoryStorageSyncMeta, type MemoryStorageSyncStats, } from "./lib/storage-sync.js";
|
|
24
26
|
export { SqliteAdapter, PgAdapter, PgAdapterAsync, MEMENTOS_STORAGE_ENV, MEMENTOS_STORAGE_FALLBACK_ENV, MEMENTOS_STORAGE_TABLES, STORAGE_TABLES, getStorageConfig, getStorageBackend, getStorageBackendDatabaseUrl, getStorageStatus, getMementosStorageStatus, saveStorageConfig, getStorageDatabaseEnv, getStorageDatabaseEnvName, getStorageDatabaseUrl, getStorageConnectionString, getStorageConnectionStringForOperator, listSqliteTables, type DbAdapter, type StorageConfig, type StorageEnv, type StorageEnvStatus, type NativeStorageStatus, type MementosStorageTable, type SyncMeta, type IncrementalSyncStats, } from "./storage.js";
|
|
25
|
-
export { assertNoLegacyStorageMode, LEGACY_STORAGE_MODE_KEYS } from "./lib/retired-storage-mode.js";
|
|
26
27
|
export { redactSecrets, containsSecrets } from "./lib/redact.js";
|
|
27
28
|
export { createEntity, getEntity, getEntityByName, listEntities, updateEntity, deleteEntity, mergeEntities, parseEntityRow, } from "./db/entities.js";
|
|
28
29
|
export { createRelation, getRelation, listRelations, deleteRelation, getRelatedEntities, getEntityGraph, findPath, parseRelationRow, } from "./db/relations.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,MAAM,EACN,mBAAmB,EACnB,WAAW,EACX,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,KAAK,EACL,OAAO,EACP,kBAAkB,EAClB,wBAAwB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,WAAW,EACX,UAAU,EACV,kBAAkB,EAElB,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,GAAG,EACH,IAAI,EACJ,SAAS,GACV,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,YAAY,EACZ,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAG/C,OAAO,EACL,aAAa,EACb,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,GACX,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG1E,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,EACvB,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAI1B,cAAc,iCAAiC,CAAC;AAGhD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,4BAA4B,EAC5B,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|