@hasna/mementos 0.14.87 → 0.15.2
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 +44 -9
- package/bun.lock +4 -62
- 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-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/storage.d.ts.map +1 -1
- package/dist/cli/commands/system-doctor.d.ts.map +1 -1
- package/dist/cli/commands/system-profile.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.d.ts.map +1 -1
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/index.js +3735 -2021
- 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 +135 -37
- package/dist/db/api-mode.d.ts.map +1 -1
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/memories.d.ts.map +1 -1
- package/dist/db/pg-migrate.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 +152 -11
- 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 +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3057 -1266
- 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/local-opt-in.d.ts +114 -0
- package/dist/lib/local-opt-in.d.ts.map +1 -0
- package/dist/lib/model-config.d.ts +1 -1
- package/dist/lib/paths.d.ts +60 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/profile-sync.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/search.d.ts.map +1 -1
- package/dist/lib/storage-sync.d.ts.map +1 -1
- package/dist/lib/sync.d.ts.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +3108 -1276
- package/dist/project-registration.js +378 -153
- package/dist/sdk/index.d.ts +173 -8
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +953 -12
- package/dist/server/auth.d.ts +2 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/helpers.d.ts +48 -3
- package/dist/server/helpers.d.ts.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3146 -1324
- package/dist/server/routes/system-synthesis.d.ts.map +1 -1
- package/dist/storage.d.ts +18 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +149 -83
- package/dist/test-support/store-isolation.d.ts +50 -11
- package/dist/test-support/store-isolation.d.ts.map +1 -1
- package/docker-entrypoint.sh +7 -0
- package/hasna.contract.json +17 -5
- package/package.json +8 -8
- package/postinstall.mjs +85 -0
- package/dashboard/bun.lock +0 -519
- package/dist/cli/brains.d.ts +0 -3
- package/dist/cli/brains.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
|
@@ -8,7 +8,7 @@ import type { Command } from "commander";
|
|
|
8
8
|
* one that ships.
|
|
9
9
|
*
|
|
10
10
|
* That drift was real: the guard originally re-listed 11 groups by hand while
|
|
11
|
-
* the CLI wired 15 sources, leaving `init`, `project-panel
|
|
11
|
+
* the CLI wired 15 sources, leaving `init`, `project-panel` and the
|
|
12
12
|
* `@hasna/events` groups (`events`, `webhooks`) unwalked. Seven live `-j`
|
|
13
13
|
* collisions sat in that blind spot while the guard reported clean. Adding a
|
|
14
14
|
* command group here is now the only step required for it to be covered.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-all.d.ts","sourceRoot":"","sources":["../../src/cli/register-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"register-all.d.ts","sourceRoot":"","sources":["../../src/cli/register-all.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAgB7D"}
|
package/dist/db/api-mode.d.ts
CHANGED
|
@@ -2,15 +2,26 @@ export interface ApiConfig {
|
|
|
2
2
|
baseUrl: string;
|
|
3
3
|
apiKey: string;
|
|
4
4
|
}
|
|
5
|
-
|
|
6
|
-
export
|
|
5
|
+
/** Tier-1 credential inputs (explicit key/profile, keychain runner for tests). */
|
|
6
|
+
export interface MementosClientResolveOptions {
|
|
7
|
+
credentials?: import("@hasna/contracts/client").CredentialChainOptions;
|
|
8
|
+
}
|
|
9
|
+
/** The env keys that select the API transport, resolver-derived, canonical first. */
|
|
10
|
+
export declare const API_URL_ENV_KEYS: readonly [string, string];
|
|
11
|
+
export declare const API_KEY_ENV_KEYS: readonly [string, string];
|
|
12
|
+
/** The env keys that select the server postgresql backend (and disable client API mode). */
|
|
7
13
|
export declare const DATABASE_URL_ENV_KEYS: readonly ["HASNA_MEMENTOS_DATABASE_URL", "MEMENTOS_DATABASE_URL"];
|
|
14
|
+
/** The explicit local SQLite path — the precedence-1 local opt-in. */
|
|
15
|
+
export declare const DB_PATH_ENV_KEYS: readonly ["HASNA_MEMENTOS_DB_PATH", "MEMENTOS_DB_PATH"];
|
|
16
|
+
type Env = Record<string, string | undefined>;
|
|
8
17
|
/**
|
|
9
18
|
* Which env keys currently select API mode, by name only — never the values.
|
|
10
19
|
* Used by the operator-facing mode report so a human can see *why* the client
|
|
11
|
-
* is pointed at the cloud without reading source or echoing a credential.
|
|
20
|
+
* is pointed at the cloud without reading source or echoing a credential. The
|
|
21
|
+
* API key is read from the resolver's own key list, so a tier that moves
|
|
22
|
+
* cannot drift out of this report.
|
|
12
23
|
*/
|
|
13
|
-
export declare function getApiModeEnvSources(): {
|
|
24
|
+
export declare function getApiModeEnvSources(env?: Env): {
|
|
14
25
|
urlKey: string | null;
|
|
15
26
|
keyKey: string | null;
|
|
16
27
|
databaseUrlKey: string | null;
|
|
@@ -25,9 +36,16 @@ export declare function getApiModeEnvSources(): {
|
|
|
25
36
|
* merely outranked, which points them at a credential problem they do not have.
|
|
26
37
|
*
|
|
27
38
|
* Never returns a credential value — the endpoint is not secret, the key is
|
|
28
|
-
* reported only as a boolean.
|
|
39
|
+
* reported only as a boolean. `apiKeyPresent` is answered through the resolver
|
|
40
|
+
* chain (any tier: env, Keychain, credentials file), because the Keychain and
|
|
41
|
+
* disk tiers are ambient and an env-only read would report "absent" on the
|
|
42
|
+
* very stations the resolver serves most.
|
|
43
|
+
*
|
|
44
|
+
* A malformed configured base THROWS (fail closed: a misconfigured endpoint
|
|
45
|
+
* must fail closed, exactly like a half-configured credential pair does), with
|
|
46
|
+
* the resolver's own message and never the raw value.
|
|
29
47
|
*/
|
|
30
|
-
export declare function getConfiguredApiEnv(): {
|
|
48
|
+
export declare function getConfiguredApiEnv(env?: Env, options?: MementosClientResolveOptions): {
|
|
31
49
|
baseUrl: string | null;
|
|
32
50
|
apiKeyPresent: boolean;
|
|
33
51
|
dbPathKey: string | null;
|
|
@@ -38,14 +56,61 @@ export declare function getConfiguredApiEnv(): {
|
|
|
38
56
|
* is silent and lands in a shared store.
|
|
39
57
|
*/
|
|
40
58
|
export declare const ALLOW_REMOTE_API_IN_TESTS_ENV = "MEMENTOS_ALLOW_REMOTE_API_IN_TESTS";
|
|
41
|
-
/** Resolve the API client config from env, or `null` when not configured. */
|
|
42
|
-
/** The env keys that explicitly select the local SQLite store. */
|
|
43
|
-
export declare const DB_PATH_ENV_KEYS: readonly ["HASNA_MEMENTOS_DB_PATH", "MEMENTOS_DB_PATH"];
|
|
44
59
|
/** Raised when the environment does not unambiguously select one store. */
|
|
45
60
|
export declare class MementosStoreConfigError extends Error {
|
|
46
61
|
readonly code = "MEMENTOS_STORE_CONFIG";
|
|
47
62
|
constructor(message: string);
|
|
48
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Resolve the API client configuration through the @hasna/contracts chain, or
|
|
66
|
+
* return `null` when the environment selects the on-box store or configures
|
|
67
|
+
* nothing at all.
|
|
68
|
+
*
|
|
69
|
+
* EVERY CALL RESOLVES FRESH: the Keychain and the credentials file are
|
|
70
|
+
* re-read per request, so a key rotation heals a long-lived shell or MCP
|
|
71
|
+
* server without a restart. Deliberately a single pass down the chain (one
|
|
72
|
+
* credential resolution, once), with the resolved value handed back to the
|
|
73
|
+
* transport as its tier-1 argument so the authority pass never re-reads the
|
|
74
|
+
* tiers — and so the key that validated the authority is the key the request
|
|
75
|
+
* sends (no TOCTOU between two reads).
|
|
76
|
+
*
|
|
77
|
+
* Refusals — a URL without a credential, blank or disagreeing aliases, an
|
|
78
|
+
* unusable credential file, an invalid authority — THROW as
|
|
79
|
+
* {@link MementosStoreConfigError}. Only "nothing configured anywhere" (no
|
|
80
|
+
* env pointer, no Keychain item, no credentials file) returns null, and the
|
|
81
|
+
* fail-closed gate {@link assertClientStoreConfigured} refuses THAT at every
|
|
82
|
+
* store entry point: a null here is never permission to open the on-box
|
|
83
|
+
* default file.
|
|
84
|
+
*/
|
|
85
|
+
export declare function getApiConfig(env?: Env, options?: MementosClientResolveOptions): ApiConfig | null;
|
|
86
|
+
/**
|
|
87
|
+
* True when the client should route memory operations to the cloud API.
|
|
88
|
+
* Fail-closed against a client-side DSN: if DATABASE_URL is present, API mode
|
|
89
|
+
* refuses to engage so the two transports never mix.
|
|
90
|
+
*/
|
|
91
|
+
export declare function isApiMode(): boolean;
|
|
92
|
+
/** WHERE the API transport came from, for operator reports. Never a value. */
|
|
93
|
+
export interface ResolvedApiModeReport {
|
|
94
|
+
/** The resolved `<origin>/v1` authority this client would send to. */
|
|
95
|
+
baseUrl: string;
|
|
96
|
+
/** An env key NAME, a Keychain item reference, a file PATH, or `"default"`. */
|
|
97
|
+
apiUrlSource: string | null;
|
|
98
|
+
/** An env key NAME, a Keychain item reference, or a file PATH. Never a value. */
|
|
99
|
+
apiKeySource: string | null;
|
|
100
|
+
/** The tier of the credential chain that supplied the key. */
|
|
101
|
+
apiKeyTier: string | null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Resolve WHERE the client transport came from, without exposing the key.
|
|
105
|
+
*
|
|
106
|
+
* One pass down the @hasna/contracts chain, used by the operator-facing mode
|
|
107
|
+
* report (`storage mode`) so a human can see *why* the client is pointed at
|
|
108
|
+
* the cloud — an env key name, a Keychain item reference, a credentials-file
|
|
109
|
+
* path, or the fleet gateway default. `null` when the environment selects the
|
|
110
|
+
* on-box store or configures nothing at all; refusals throw exactly as
|
|
111
|
+
* {@link getApiConfig} does.
|
|
112
|
+
*/
|
|
113
|
+
export declare function getResolvedApiModeReport(env?: Env, options?: MementosClientResolveOptions): ResolvedApiModeReport | null;
|
|
49
114
|
/**
|
|
50
115
|
* Throw unless the environment unambiguously selects one store.
|
|
51
116
|
*
|
|
@@ -58,41 +123,73 @@ export declare class MementosStoreConfigError extends Error {
|
|
|
58
123
|
* THIS FUNCTION ONLY ASSERTS. It returns `void`, so it cannot select anything —
|
|
59
124
|
* the precedence table below describes the RESOLVER, which is `getApiConfig()`
|
|
60
125
|
* immediately after it, and each early `return` here only suppresses the
|
|
61
|
-
* ambiguity error for a case that is already unambiguous.
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* Keeping the table honest about that is not cosmetic. Until 2026-08-03 step 1
|
|
66
|
-
* was implemented NOWHERE: the `return` below reads as a selection, and an
|
|
67
|
-
* operator who read it concluded that a scratch DB_PATH made them safe while a
|
|
68
|
-
* fully-configured environment still routed every read and write to the shared
|
|
69
|
-
* production store.
|
|
126
|
+
* ambiguity error for a case that is already unambiguous. The SELECTION is
|
|
127
|
+
* implemented in `getApiConfig()` / `isApiMode()`; the table is documented here
|
|
128
|
+
* because this is where the error text lives.
|
|
70
129
|
*
|
|
71
130
|
* Precedence, highest first:
|
|
72
|
-
* 0. A retired storage-mode variable (HASNA_MEMENTOS_STORAGE_MODE or any of
|
|
73
|
-
* its aliases) throws via `assertNoLegacyStorageMode`, even when blank.
|
|
74
|
-
* Deployment modes no longer exist; a stale variable is an error, never a
|
|
75
|
-
* selector. ENFORCED HERE, before anything else.
|
|
76
131
|
* 1. An explicit SQLite path (`HASNA_MEMENTOS_DB_PATH` / `MEMENTOS_DB_PATH`) is
|
|
77
|
-
* the narrowest, most specific signal and selects LOCAL
|
|
78
|
-
* tooling and import/export keep working
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
132
|
+
* the narrowest, most specific signal and selects LOCAL before the resolver
|
|
133
|
+
* is even consulted, so local dev, tooling and import/export keep working
|
|
134
|
+
* when a credential is exported globally. (`MEMENTOS_DB_PATH`'s precedence
|
|
135
|
+
* over a COMPLETE API pair is the package's documented precedence-1 rule
|
|
136
|
+
* since 2026-08-03.)
|
|
137
|
+
* 2. A client DSN present disables API mode. A DSN on a client is forbidden
|
|
138
|
+
* and is tracked separately in database.ts.
|
|
139
|
+
* 3. The @hasna/contracts resolve — everything else. A URL without a
|
|
140
|
+
* resolvable credential, a blank or disagreeing pair, an unusable
|
|
141
|
+
* credential file, or an invalid authority THROWS here; a credential with
|
|
142
|
+
* no URL resolves to the fleet gateway (complete configuration).
|
|
143
|
+
* 4. Nothing configured anywhere -> no transport selected. This used to
|
|
144
|
+
* resolve to LOCAL (the "documented single-operator default"); since the
|
|
145
|
+
* 2026-09-04 fail-closed ruling a client that needs the store REFUSES
|
|
146
|
+
* instead — an explicit opt-in (`HASNA_MEMENTOS_DB_PATH` or
|
|
147
|
+
* `HASNA_MEMENTOS_LOCAL=1`) is now the only way into the on-box SQLite
|
|
148
|
+
* store, and `assertClientStoreConfigured()` (below) enforces that at
|
|
149
|
+
* every entry point that would otherwise open the default local file.
|
|
85
150
|
*
|
|
86
|
-
* Never reads, logs, or embeds a credential value — only variable NAMES
|
|
151
|
+
* Never reads, logs, or embeds a credential value — only variable NAMES and
|
|
152
|
+
* tier descriptions.
|
|
87
153
|
*/
|
|
88
|
-
export declare function assertUnambiguousStoreEnv(env?:
|
|
89
|
-
export declare function getApiConfig(): ApiConfig | null;
|
|
154
|
+
export declare function assertUnambiguousStoreEnv(env?: Env, options?: MementosClientResolveOptions): void;
|
|
90
155
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
156
|
+
* FAIL-CLOSED store gate (owner ruling 2026-09-04, fleet fail-closed wave).
|
|
157
|
+
*
|
|
158
|
+
* The transport rules above answer "which store is configured?" and treat
|
|
159
|
+
* "none" as a question, not an answer: `isApiMode()` returns false and
|
|
160
|
+
* `getApiConfig()` returns null, and every domain call site reads that as
|
|
161
|
+
* "open the local store". That was the defect: a fleet CLI run WITHOUT a
|
|
162
|
+
* credential silently opened the default on-box SQLite store
|
|
163
|
+
* (~/.hasna/mementos/mementos.db), served it as if it were the memory store,
|
|
164
|
+
* and exited 0 — a false green against a different dataset.
|
|
165
|
+
*
|
|
166
|
+
* This function is the guard every store-access entry point calls BEFORE it
|
|
167
|
+
* may open the default local file (CLI command startup, `getDatabase()`
|
|
168
|
+
* default-path fallthrough, ...). It throws unless one of these is true:
|
|
169
|
+
*
|
|
170
|
+
* - an explicit SQLite path is set (`HASNA_MEMENTOS_DB_PATH` /
|
|
171
|
+
* `MEMENTOS_DB_PATH`) — the documented EXPLICIT LOCAL OPT-IN, or
|
|
172
|
+
* - the deliberate flag opt-in (`HASNA_MEMENTOS_LOCAL=1` / `MEMENTOS_LOCAL=1`)
|
|
173
|
+
* with no authority or credential configured — answered BEFORE the
|
|
174
|
+
* resolver runs, so a local run reads no Keychain item and no credential
|
|
175
|
+
* file, or
|
|
176
|
+
* - a client DSN is present (its own server-only guard already fails closed
|
|
177
|
+
* in getDatabase; the DSN tier is untouched here), or
|
|
178
|
+
* - the @hasna/contracts chain resolves a credential (fleet API mode —
|
|
179
|
+
* authority included, defaulting to the fleet gateway).
|
|
180
|
+
*
|
|
181
|
+
* Anything else — no credential, no opt-in — is a REFUSAL, never a local
|
|
182
|
+
* default. Never reads, logs, or embeds a credential value — only variable
|
|
183
|
+
* NAMES and tier descriptions.
|
|
94
184
|
*/
|
|
95
|
-
export declare function
|
|
185
|
+
export declare function assertClientStoreConfigured(env?: Env, options?: MementosClientResolveOptions): void;
|
|
186
|
+
/**
|
|
187
|
+
* The one-line refusal every surface prints when NOTHING resolves — the tiers
|
|
188
|
+
* consulted and the explicit opt-ins, names only, never a value. Shared with
|
|
189
|
+
* the `storage mode` probe so its `unconfigured` answer and the data verbs'
|
|
190
|
+
* refusal read as one message.
|
|
191
|
+
*/
|
|
192
|
+
export declare function unconfiguredStoreMessage(): string;
|
|
96
193
|
export declare class ApiRequestError extends Error {
|
|
97
194
|
readonly status: number;
|
|
98
195
|
readonly body: string;
|
|
@@ -124,4 +221,5 @@ export declare function apiJson<T = unknown>(method: string, path: string, body?
|
|
|
124
221
|
};
|
|
125
222
|
/** Build a query string from a filter object (skips undefined/null/empty). */
|
|
126
223
|
export declare function toQuery(params: Record<string, unknown>): string;
|
|
224
|
+
export {};
|
|
127
225
|
//# sourceMappingURL=api-mode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-mode.d.ts","sourceRoot":"","sources":["../../src/db/api-mode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-mode.d.ts","sourceRoot":"","sources":["../../src/db/api-mode.ts"],"names":[],"mappings":"AAiGA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,MAAM,WAAW,4BAA4B;IAC3C,WAAW,CAAC,EAAE,OAAO,yBAAyB,EAAE,sBAAsB,CAAC;CACxE;AAED,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CACtB,CAAC;AAClC,eAAO,MAAM,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CACtB,CAAC;AAElC,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,mEAAoE,CAAC;AAEvG,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,yDAA4B,CAAC;AAE1D,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAsB9C;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,GAAiB,GAAG;IAC5D,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAMA;AAgBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,GAAiB,EACtB,OAAO,GAAE,4BAAiC,GACzC;IACD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAqBA;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,uCAAuC,CAAC;AAkDlF,2EAA2E;AAC3E,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,2BAA2B;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAgBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAC1B,GAAG,GAAE,GAAiB,EACtB,OAAO,GAAE,4BAAiC,GACzC,SAAS,GAAG,IAAI,CA+BlB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAGnC;AAED,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iFAAiF;IACjF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8DAA8D;IAC9D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,GAAiB,EACtB,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,GAAG,IAAI,CAuC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,GAAiB,EACtB,OAAO,GAAE,4BAAiC,GACzC,IAAI,CASN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,GAAE,GAAiB,EACtB,OAAO,GAAE,4BAAiC,GACzC,IAAI,CAgBN;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAajD;AAED,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;gBAF5B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;CAK/B;AA+GD,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,CAAC,GAAG,OAAO,EACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,cAAc,GACvB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,CAkC7B;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAe/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,QAAQ,EAK1B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,IAAI,QAAQ,EAK1B,MAAM,eAAe,CAAC;AAiEvB,wBAAgB,SAAS,IAAI,MAAM,CA6BlC;AAqDD,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CA+GrD;AAgDD,wBAAgB,aAAa,IAAI,IAAI,CASpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AASD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAuBf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memories.d.ts","sourceRoot":"","sources":["../../src/db/memories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,YAAY,EACZ,aAAa,EACb,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"memories.d.ts","sourceRoot":"","sources":["../../src/db/memories.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-migrate.d.ts","sourceRoot":"","sources":["../../src/db/pg-migrate.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,yBAAyB,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,IAAI,CAAC;IAC9B,8BAA8B,EAAE,IAAI,CAAC;IACrC,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CACvC,gBAAgB,CAAC,EAAE,MAAM,GACxB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"pg-migrate.d.ts","sourceRoot":"","sources":["../../src/db/pg-migrate.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,yBAAyB,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,IAAI,CAAC;IAC9B,8BAA8B,EAAE,IAAI,CAAC;IACrC,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CACvC,gBAAgB,CAAC,EAAE,MAAM,GACxB,sBAAsB,CAsCxB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,iBAAiB,CAAC,CA8D5B"}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The transport that reads and writes will actually use.
|
|
3
3
|
*
|
|
4
|
-
* - `local-sqlite` — the on-disk SQLite file at `db_path` is authoritative
|
|
4
|
+
* - `local-sqlite` — the on-disk SQLite file at `db_path` is authoritative
|
|
5
|
+
* (reached ONLY through the explicit local opt-in).
|
|
5
6
|
* - `cloud-api` — authed HTTPS to the server (the shared store).
|
|
6
7
|
* - `cloud-postgres` — a direct Postgres DSN; server-only, never a client.
|
|
8
|
+
* - `unconfigured` — nothing resolves and nothing opted in: every data verb
|
|
9
|
+
* REFUSES (fail closed, owner ruling 2026-09-04). Reported
|
|
10
|
+
* as its own answer so the probe an operator runs to find
|
|
11
|
+
* out which store they are on never claims the on-box
|
|
12
|
+
* file "by default" while every read and write refuses it.
|
|
7
13
|
*/
|
|
8
|
-
export type StoreBackend = "local-sqlite" | "cloud-api" | "cloud-postgres";
|
|
14
|
+
export type StoreBackend = "local-sqlite" | "cloud-api" | "cloud-postgres" | "unconfigured";
|
|
9
15
|
export interface StoreBackendReport {
|
|
10
16
|
/** Machine-readable contract for scripts and test guards. */
|
|
11
17
|
schema: "mementos.store_backend.v1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-backend.d.ts","sourceRoot":"","sources":["../../src/db/store-backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store-backend.d.ts","sourceRoot":"","sources":["../../src/db/store-backend.ts"],"names":[],"mappings":"AA2CA;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAE5F,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,EAAE,2BAA2B,CAAC;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;IAClB,qGAAqG;IACrG,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,kBAAkB,CAiExD"}
|
|
@@ -7,12 +7,119 @@ import pg2 from "pg";
|
|
|
7
7
|
import { createHash } from "crypto";
|
|
8
8
|
|
|
9
9
|
// src/storage.ts
|
|
10
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
11
|
-
import {
|
|
12
|
-
import { join } from "path";
|
|
10
|
+
import { existsSync as existsSync2, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
11
|
+
import { join as join2 } from "path";
|
|
13
12
|
import { fileURLToPath } from "url";
|
|
14
13
|
import { Worker } from "worker_threads";
|
|
15
14
|
import pg from "pg";
|
|
15
|
+
|
|
16
|
+
// src/lib/paths.ts
|
|
17
|
+
import { existsSync } from "fs";
|
|
18
|
+
import { homedir } from "os";
|
|
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 = {
|
|
23
|
+
data: "HASNA_DATA_HOME",
|
|
24
|
+
state: "HASNA_STATE_HOME",
|
|
25
|
+
cache: "HASNA_CACHE_HOME"
|
|
26
|
+
};
|
|
27
|
+
var PATHS_RESOLVER_APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
28
|
+
function pathsResolverAssertApp(app) {
|
|
29
|
+
if (typeof app !== "string" || app.length === 0) {
|
|
30
|
+
throw new TypeError("paths: app must be a non-empty string");
|
|
31
|
+
}
|
|
32
|
+
if (!PATHS_RESOLVER_APP_SLUG_RE.test(app)) {
|
|
33
|
+
throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
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
|
+
}
|
|
40
|
+
}
|
|
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)
|
|
46
|
+
return override;
|
|
47
|
+
const home = options.home ?? pathsResolverHomedir();
|
|
48
|
+
const platform = options.platform ?? process.platform;
|
|
49
|
+
if (platform === "darwin") {
|
|
50
|
+
switch (kind) {
|
|
51
|
+
case "data":
|
|
52
|
+
return pathsResolverJoin(home, "Library", "Application Support", "Hasna");
|
|
53
|
+
case "cache":
|
|
54
|
+
return pathsResolverJoin(home, "Library", "Caches", "Hasna");
|
|
55
|
+
case "state":
|
|
56
|
+
return pathsResolverJoin(home, "Library", "Logs", "Hasna");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
switch (kind) {
|
|
60
|
+
case "data":
|
|
61
|
+
return pathsResolverJoin(home, ".local", "share", "hasna");
|
|
62
|
+
case "state":
|
|
63
|
+
return pathsResolverJoin(home, ".local", "state", "hasna");
|
|
64
|
+
case "cache":
|
|
65
|
+
return pathsResolverJoin(home, ".cache", "hasna");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
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);
|
|
72
|
+
}
|
|
73
|
+
function dataDir(options) {
|
|
74
|
+
return pathsResolverResolve("data", options);
|
|
75
|
+
}
|
|
76
|
+
function effectiveHome() {
|
|
77
|
+
return process.env["HOME"] || process.env["USERPROFILE"] || homedir() || "/tmp";
|
|
78
|
+
}
|
|
79
|
+
function legacyDataRoot() {
|
|
80
|
+
return join(effectiveHome(), ".hasna", "mementos");
|
|
81
|
+
}
|
|
82
|
+
function resolverDataRoot() {
|
|
83
|
+
return dataDir({
|
|
84
|
+
app: "mementos",
|
|
85
|
+
home: process.env["HOME"] || process.env["USERPROFILE"] || undefined
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function adoptResolverDataRoot(resolved, env = process.env) {
|
|
89
|
+
const dataOverride = env.HASNA_DATA_HOME;
|
|
90
|
+
if (typeof dataOverride === "string" && dataOverride.trim().length > 0)
|
|
91
|
+
return true;
|
|
92
|
+
return existsSync(join(resolved, "mementos.db"));
|
|
93
|
+
}
|
|
94
|
+
function exactDataRoot() {
|
|
95
|
+
for (const key of ["HASNA_MEMENTOS_HOME", "MEMENTOS_HOME"]) {
|
|
96
|
+
const dir = process.env[key]?.trim();
|
|
97
|
+
if (dir)
|
|
98
|
+
return resolve(dir);
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
function getDataRoot() {
|
|
103
|
+
const exact = exactDataRoot();
|
|
104
|
+
if (exact)
|
|
105
|
+
return exact;
|
|
106
|
+
const resolved = resolverDataRoot();
|
|
107
|
+
return adoptResolverDataRoot(resolved) ? resolve(resolved) : resolve(legacyDataRoot());
|
|
108
|
+
}
|
|
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
|
+
|
|
122
|
+
// src/storage.ts
|
|
16
123
|
function shouldUsePgSsl(connectionString) {
|
|
17
124
|
let params;
|
|
18
125
|
try {
|
|
@@ -57,7 +164,7 @@ class PgSyncPool {
|
|
|
57
164
|
generation = 0;
|
|
58
165
|
static DATA_BYTES = 128 * 1024 * 1024;
|
|
59
166
|
static queryTimeoutMs() {
|
|
60
|
-
const raw =
|
|
167
|
+
const raw = env.pgsyncQueryTimeoutMs()?.trim();
|
|
61
168
|
const parsed = raw ? Number(raw) : Number.NaN;
|
|
62
169
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : 60000;
|
|
63
170
|
}
|
|
@@ -65,12 +172,12 @@ class PgSyncPool {
|
|
|
65
172
|
const ext = import.meta.url.endsWith(".ts") ? ".ts" : ".js";
|
|
66
173
|
const here = fileURLToPath(new URL(".", import.meta.url));
|
|
67
174
|
const candidates = [
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
175
|
+
join2(here, `pg-sync-worker${ext}`),
|
|
176
|
+
join2(here, "..", `pg-sync-worker${ext}`),
|
|
177
|
+
join2(here, "..", "..", `pg-sync-worker${ext}`)
|
|
71
178
|
];
|
|
72
179
|
for (const candidate of candidates) {
|
|
73
|
-
if (
|
|
180
|
+
if (existsSync2(candidate))
|
|
74
181
|
return candidate;
|
|
75
182
|
}
|
|
76
183
|
return candidates[0];
|
|
@@ -141,9 +248,9 @@ var MEMENTOS_STORAGE_ENV = {
|
|
|
141
248
|
var MEMENTOS_STORAGE_FALLBACK_ENV = {
|
|
142
249
|
databaseUrl: "MEMENTOS_DATABASE_URL"
|
|
143
250
|
};
|
|
144
|
-
var LOCAL_DATA_DIR =
|
|
145
|
-
var STORAGE_CONFIG_DIR =
|
|
146
|
-
var STORAGE_CONFIG_PATH =
|
|
251
|
+
var LOCAL_DATA_DIR = getDataRoot();
|
|
252
|
+
var STORAGE_CONFIG_DIR = join2(LOCAL_DATA_DIR, "storage");
|
|
253
|
+
var STORAGE_CONFIG_PATH = join2(STORAGE_CONFIG_DIR, "config.json");
|
|
147
254
|
var DATABASE_ENV_NAMES = [
|
|
148
255
|
{ name: MEMENTOS_STORAGE_ENV.databaseUrl, deprecated: false },
|
|
149
256
|
{ name: MEMENTOS_STORAGE_FALLBACK_ENV.databaseUrl, deprecated: false }
|
|
@@ -158,6 +265,40 @@ var SECRET_QUERY_PARAMS = new Set([
|
|
|
158
265
|
"apikey"
|
|
159
266
|
]);
|
|
160
267
|
|
|
268
|
+
// ../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
|
+
|
|
161
302
|
// src/project-registration/schema.ts
|
|
162
303
|
function sqliteMementosProjectRegistrationSchemaSql() {
|
|
163
304
|
return `
|
|
@@ -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"}
|