@hasna/domains 0.0.46 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +58 -34
  2. package/dist/cli/commands/dns.d.ts.map +1 -1
  3. package/dist/cli/commands/doctor.d.ts.map +1 -1
  4. package/dist/cli/commands/serve.d.ts +1 -0
  5. package/dist/cli/commands/serve.d.ts.map +1 -1
  6. package/dist/cli/index.js +4946 -2042
  7. package/dist/db/database.d.ts +6 -21
  8. package/dist/db/database.d.ts.map +1 -1
  9. package/dist/db/domains.d.ts +3 -14
  10. package/dist/db/domains.d.ts.map +1 -1
  11. package/dist/db/store.d.ts +36 -32
  12. package/dist/db/store.d.ts.map +1 -1
  13. package/dist/generated/storage-kit/backend.d.ts +4 -4
  14. package/dist/generated/storage-kit/backend.d.ts.map +1 -1
  15. package/dist/generated/storage-kit/index.d.ts +1 -1
  16. package/dist/generated/storage-kit/index.d.ts.map +1 -1
  17. package/dist/generated/storage-kit/migrations.d.ts.map +1 -1
  18. package/dist/generated/storage-kit/pool.d.ts +2 -5
  19. package/dist/generated/storage-kit/pool.d.ts.map +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1268 -1639
  23. package/dist/lib/app-home.d.ts +48 -0
  24. package/dist/lib/app-home.d.ts.map +1 -0
  25. package/dist/lib/client-storage-policy.d.ts +10 -0
  26. package/dist/lib/client-storage-policy.d.ts.map +1 -0
  27. package/dist/lib/client-types.d.ts +184 -0
  28. package/dist/lib/client-types.d.ts.map +1 -0
  29. package/dist/lib/cloudflare.d.ts.map +1 -1
  30. package/dist/lib/cloudflare.js +23 -0
  31. package/dist/lib/config.d.ts +8 -17
  32. package/dist/lib/config.d.ts.map +1 -1
  33. package/dist/lib/dns-plan.d.ts +1 -1
  34. package/dist/lib/dns-plan.d.ts.map +1 -1
  35. package/dist/lib/domains-resolver.d.ts +96 -0
  36. package/dist/lib/domains-resolver.d.ts.map +1 -0
  37. package/dist/lib/registrar.d.ts +8 -0
  38. package/dist/lib/registrar.d.ts.map +1 -1
  39. package/dist/lib/registrar.js +23 -0
  40. package/dist/mcp/harness.d.ts +46 -0
  41. package/dist/mcp/harness.d.ts.map +1 -0
  42. package/dist/mcp/http.d.ts +3 -2
  43. package/dist/mcp/http.d.ts.map +1 -1
  44. package/dist/mcp/index.d.ts.map +1 -1
  45. package/dist/mcp/index.js +23611 -24591
  46. package/dist/mcp/tool-filter.d.ts +6 -0
  47. package/dist/mcp/tool-filter.d.ts.map +1 -1
  48. package/dist/sdk/index.d.ts +21 -10
  49. package/dist/sdk/index.d.ts.map +1 -1
  50. package/dist/sdk/index.js +861 -245
  51. package/dist/server/index.d.ts +6 -0
  52. package/dist/server/index.d.ts.map +1 -1
  53. package/dist/server/index.js +84 -29
  54. package/dist/server/migrations.d.ts +35 -0
  55. package/dist/server/migrations.d.ts.map +1 -1
  56. package/package.json +8 -8
  57. package/postinstall.js +41 -0
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @hasna/domains LOCAL data home resolution — the on-box SQLite store's root.
3
+ *
4
+ * This is NOT a credential chain. Credentials and the service authority come
5
+ * from the ONE shared resolver in @hasna/contracts (see
6
+ * `../lib/domains-resolver.ts`); this module only answers where the local
7
+ * store lives when the operator explicitly opted into it.
8
+ *
9
+ * The default is the legacy `~/.hasna/domains` root, which IS the shared
10
+ * `~/.hasna` root the resolver's disk tier already reads
11
+ * (`~/.hasna/domains/config/credentials`), so the local data and the
12
+ * credential file stay under one operator-known namespace. When `HASNA_HOME`
13
+ * (the shared root override @hasna/contracts honours) is set, the local data
14
+ * root follows it: `$HASNA_HOME/domains`.
15
+ *
16
+ * STRIPPED (2026-09-06, hasna/apps#1720 class B): the in-package reimplementation
17
+ * of the deleted @hasna/paths resolver, the XDG data/config home layout,
18
+ * `~/.config/hasna` / `$XDG_CONFIG_HOME` / `$XDG_DATA_HOME` consultation, and
19
+ * the one-time migrations from the pre-XDG layout. Nothing in this package
20
+ * consults those locations any more. An exact-app override
21
+ * (`HASNA_DOMAINS_HOME` / `HASNA_DOMAINS_DIR` win over their legacy unprefixed
22
+ * aliases) still names a concrete local store root and keeps the legacy layout
23
+ * under it.
24
+ *
25
+ * Everything accepts an explicit env object (default `process.env`) so the
26
+ * resolver is deterministic in tests.
27
+ */
28
+ export declare const APP: "domains";
29
+ /** The effective user home, mirroring the pre-existing domains resolution (`HOME` || `USERPROFILE` || os.homedir()). */
30
+ export declare function effectiveHome(env?: NodeJS.ProcessEnv): string;
31
+ /**
32
+ * The exact-app override root, when set: `HASNA_DOMAINS_HOME` /
33
+ * `HASNA_DOMAINS_DIR` (the canonical names) win over the legacy unprefixed
34
+ * `DOMAINS_HOME` / `DOMAINS_DIR` aliases. Wins unconditionally and keeps the
35
+ * legacy layout under the override root.
36
+ */
37
+ export declare function exactAppOverride(env?: NodeJS.ProcessEnv): string | undefined;
38
+ /**
39
+ * The effective local data home: the exact-app override wins unconditionally;
40
+ * otherwise `$HASNA_HOME/domains` (the shared-root override) or the legacy
41
+ * `~/.hasna/domains` default.
42
+ */
43
+ export declare function appDataHome(env?: NodeJS.ProcessEnv): string;
44
+ /** The default SQLite db path, at the root of the effective data home. */
45
+ export declare function getDefaultDbPath(env?: NodeJS.ProcessEnv): string;
46
+ /** The default config path, at the root of the effective data home. */
47
+ export declare function getDefaultConfigPath(env?: NodeJS.ProcessEnv): string;
48
+ //# sourceMappingURL=app-home.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-home.d.ts","sourceRoot":"","sources":["../../src/lib/app-home.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,eAAO,MAAM,GAAG,EAAG,SAAkB,CAAC;AAEtC,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAOzF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAMxE;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE7E;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAEjF"}
@@ -0,0 +1,10 @@
1
+ /** Legacy variables that must no longer select a client database. */
2
+ export declare const LOCAL_PATH_VARS: readonly ["HASNA_DOMAINS_DB_PATH", "DOMAINS_DB_PATH", "HASNA_DOMAINS_DIR", "DOMAINS_DIR"];
3
+ export type LocalOptInEnv = Record<string, string | undefined>;
4
+ /** The first local-path var this env sets, or undefined when none is set. */
5
+ export declare function explicitLocalPathVar(env?: LocalOptInEnv): string | undefined;
6
+ /** Every env name that can configure a domains authority or credential, resolver-derived. */
7
+ export declare function domainsAuthorityEnvKeys(): string[];
8
+ /** Refuse obsolete local database configuration without exposing its value. */
9
+ export declare function assertDomainsClientStorage(env?: LocalOptInEnv): void;
10
+ //# sourceMappingURL=client-storage-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-storage-policy.d.ts","sourceRoot":"","sources":["../../src/lib/client-storage-policy.ts"],"names":[],"mappings":"AASA,qEAAqE;AACrE,eAAO,MAAM,eAAe,2FAKlB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE/D,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,aAA2B,GAAG,MAAM,GAAG,SAAS,CAEzF;AAED,6FAA6F;AAC7F,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CASlD;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,aAA2B,GAAG,IAAI,CAKjF"}
@@ -0,0 +1,184 @@
1
+ /** An environment as the client resolver reads it. */
2
+ export type ClientEnv = Record<string, string | undefined>;
3
+ /** The env-key spec for one app, in precedence order. */
4
+ export interface ClientTransportEnvKeys {
5
+ /** API base-URL keys, in precedence order. */
6
+ apiUrlKeys: string[];
7
+ /** API-key keys, in precedence order. */
8
+ apiKeyKeys: string[];
9
+ }
10
+ /** Which tier of the credential chain supplied a key. */
11
+ export type CredentialTier = "argument" | "override" | "pointer" | "profile" | "keychain" | "disk" | "env";
12
+ /**
13
+ * A credential resolved from one tier of the chain.
14
+ *
15
+ * `apiKey` is non-enumerable and redacted by a custom-inspect hook in the
16
+ * resolver, so spreading or serializing a resolution drops it. That is a
17
+ * runtime property of the value, not something a type can carry.
18
+ */
19
+ export interface ResolvedCredential {
20
+ readonly apiKey: string;
21
+ readonly tier: CredentialTier;
22
+ /** An env key NAME, an absolute file path, or `keychain:<service>@<account>`. Never a value. */
23
+ readonly source: string;
24
+ /** True for tiers an operator sets on purpose. These never fall through. */
25
+ readonly deliberate: boolean;
26
+ /** For `tier === "pointer"`, the vault ITEM KEY to resolve at request time. Never a value. */
27
+ readonly pointerVaultKey?: string;
28
+ /** The disk paths consulted before this credential was chosen. */
29
+ readonly diskCandidates: readonly string[];
30
+ /** Human-readable advisory. Never contains key material. */
31
+ readonly warning: string | null;
32
+ }
33
+ /**
34
+ * A per-request credential source.
35
+ *
36
+ * Prefer this over a bare string for a long-lived client: the transport calls
37
+ * it fresh for every request, so a key rotation heals without a rebuild.
38
+ */
39
+ export type CredentialProvider = () => ResolvedCredential;
40
+ /** The captured outcome of one `security` invocation. `stdout` IS the secret. */
41
+ export interface KeychainCommandResult {
42
+ /** Exit status; null when the tool could not be started or was killed. */
43
+ status: number | null;
44
+ stdout: string;
45
+ stderr: string;
46
+ }
47
+ /** Runs `/usr/bin/security` with the given argv — no shell. Injected by tests. */
48
+ export type KeychainCommandRunner = (argv: readonly string[]) => KeychainCommandResult;
49
+ /** Keychain-tier controls. Every field is optional; production callers pass nothing. */
50
+ export interface KeychainTierOptions {
51
+ /**
52
+ * Whether the Keychain is consulted for a caller-built env object. The tier is
53
+ * AMBIENT: by default it runs only for the live `process.env`. Injecting `run`
54
+ * implies `true`.
55
+ */
56
+ enabled?: boolean;
57
+ /** Defaults to `process.platform`; the tier exists only on `"darwin"`. */
58
+ platform?: string;
59
+ /** The machine's host name (label before the first dot), used when `HASNA_STATION` is unset. */
60
+ hostname?: () => string;
61
+ /** The `security` runner. Defaults to spawning `/usr/bin/security` by argv. */
62
+ run?: KeychainCommandRunner;
63
+ }
64
+ /** Tier-1 credential inputs (`--api-key` / `--profile`) plus the Keychain-tier seam. */
65
+ export interface CredentialChainOptions {
66
+ /** Tier 1: an explicit key, e.g. from `--api-key`. */
67
+ apiKey?: string;
68
+ /** Tier 1: an explicit profile name, e.g. from `--profile`. Beats `HASNA_PROFILE`. */
69
+ profile?: string;
70
+ /** Tier 3: Keychain controls — a fake `security` runner in tests, an opt-out on CI. */
71
+ keychain?: KeychainTierOptions;
72
+ }
73
+ /** Where a client reads and writes. There is one: the authenticated service API. */
74
+ export type ClientTransportKind = "http";
75
+ /** The transport decision, with every source named and no key value in it. */
76
+ export interface ClientTransportResolution {
77
+ /** Where the client should read/write from. */
78
+ transport: ClientTransportKind;
79
+ /** What selected the transport: an env key NAME, a Keychain item reference, a file PATH, or `"default"`. */
80
+ transportSource: string;
81
+ /** `<origin>/v1` base for the server API. */
82
+ baseUrl: string;
83
+ /** WHERE the API URL came from: an env key NAME, a Keychain item reference, a file PATH, `"default"`, or null. */
84
+ apiUrlSource: string | null;
85
+ /** Whether an API key is present (value never exposed). */
86
+ apiKeyPresent: boolean;
87
+ /** WHERE the API key came from: an env key NAME or an absolute file path. Never the value. */
88
+ apiKeySource: string | null;
89
+ /** Which tier of the credential chain supplied the key. */
90
+ apiKeyTier: CredentialTier;
91
+ /** Kept for diagnostic shape compatibility; a successful resolution is never misconfigured. */
92
+ misconfigured: boolean;
93
+ /** Human-readable warning, or null. Never contains secret values. */
94
+ warning: string | null;
95
+ }
96
+ /** Query string params appended to a request URL. */
97
+ export type QueryParams = URLSearchParams | Record<string, string | number | boolean | null | undefined | ReadonlyArray<string | number | boolean>>;
98
+ /** Retry policy for transient failures (network errors, timeouts, 5xx, 429). */
99
+ export interface HasnaRetryOptions {
100
+ /** Max RETRY attempts after the first try. Default 2 (=> up to 3 total tries). */
101
+ retries?: number;
102
+ /** Base backoff in ms for exponential backoff. Default 200. */
103
+ baseDelayMs?: number;
104
+ /** Backoff ceiling in ms. Default 2000. */
105
+ maxDelayMs?: number;
106
+ /** HTTP statuses that trigger a retry. Default 408, 425, 429, 500, 502, 503, 504. */
107
+ retryStatuses?: number[];
108
+ }
109
+ /** Per-call request options: query, idempotency, timeout, retry, extra headers. */
110
+ export interface HasnaRequestOptions {
111
+ /** Query string params appended to the URL. */
112
+ query?: QueryParams;
113
+ /** Idempotency key sent as `Idempotency-Key`, making an unsafe method safe to retry. */
114
+ idempotencyKey?: string;
115
+ /** Override the transport timeout for this call (ms). */
116
+ timeoutMs?: number;
117
+ /** Extra headers merged into this call (override transport headers). */
118
+ headers?: Record<string, string>;
119
+ /** Override or disable retry for this call. `false` disables retries. */
120
+ retry?: HasnaRetryOptions | false;
121
+ /** Caller abort signal, combined with the internal timeout. */
122
+ signal?: AbortSignal;
123
+ }
124
+ /** The authenticated HTTP transport. The API key lives inside it and is never returned. */
125
+ export interface HasnaHttpTransport {
126
+ readonly baseUrl: string;
127
+ request<T = unknown>(method: string, path: string, body?: unknown, opts?: HasnaRequestOptions): Promise<T>;
128
+ get<T = unknown>(path: string, opts?: HasnaRequestOptions): Promise<T>;
129
+ post<T = unknown>(path: string, body?: unknown, opts?: HasnaRequestOptions): Promise<T>;
130
+ put<T = unknown>(path: string, body?: unknown, opts?: HasnaRequestOptions): Promise<T>;
131
+ patch<T = unknown>(path: string, body?: unknown, opts?: HasnaRequestOptions): Promise<T>;
132
+ del<T = unknown>(path: string, body?: unknown, opts?: HasnaRequestOptions): Promise<T>;
133
+ }
134
+ /** Options for a `list()` call: filters/pagination as query params. */
135
+ export interface StorageListOptions extends Pick<HasnaRequestOptions, "timeoutMs" | "headers" | "retry" | "signal"> {
136
+ /** Query params (limit, offset, cursor, filters, ...). */
137
+ query?: QueryParams;
138
+ }
139
+ /** Options for a `get()` call. */
140
+ export type StorageGetOptions = Pick<HasnaRequestOptions, "timeoutMs" | "headers" | "retry" | "signal" | "query">;
141
+ /** Options for a `create()` call. */
142
+ export interface StorageCreateOptions extends Pick<HasnaRequestOptions, "timeoutMs" | "headers" | "retry" | "signal" | "query"> {
143
+ /** Defaults to a fresh UUID so a retried POST is deduped rather than duplicated. */
144
+ idempotencyKey?: string;
145
+ }
146
+ /** Options for an `update()` call. */
147
+ export interface StorageUpdateOptions extends Pick<HasnaRequestOptions, "timeoutMs" | "headers" | "retry" | "signal" | "query"> {
148
+ /** HTTP verb for the update. Default `PATCH` (partial); use `PUT` for replace. */
149
+ method?: "PATCH" | "PUT";
150
+ /** Idempotency key. Set this to make a PATCH retry-safe too. */
151
+ idempotencyKey?: string;
152
+ }
153
+ /** Options for a `delete()` call. */
154
+ export type StorageDeleteOptions = Pick<HasnaRequestOptions, "timeoutMs" | "headers" | "retry" | "signal" | "query">;
155
+ /** Result of a `list()` call. `items` is the extracted array; `raw` is the full envelope. */
156
+ export interface StorageListResult<T> {
157
+ items: T[];
158
+ /** Total count when the server reports one (`total`/`count`), else null. */
159
+ total: number | null;
160
+ /** Opaque pagination cursor when the server reports one, else null. */
161
+ cursor: string | null;
162
+ /** The full parsed response body (envelope preserved). */
163
+ raw: unknown;
164
+ }
165
+ /** The app storage interface exposed by the authenticated service API. */
166
+ export interface HasnaStorageClient {
167
+ /** App slug this client targets. */
168
+ readonly name: string;
169
+ /** `<origin>/v1` base URL. */
170
+ readonly baseUrl: string;
171
+ /** The underlying HTTP transport (escape hatch for non-CRUD routes). */
172
+ readonly transport: HasnaHttpTransport;
173
+ /** List a collection. Returns extracted `items` plus the raw envelope. */
174
+ list<T = unknown>(resource: string, options?: StorageListOptions): Promise<StorageListResult<T>>;
175
+ /** Fetch one entity by id. Returns `null` on 404. */
176
+ get<T = unknown>(resource: string, id: string, options?: StorageGetOptions): Promise<T | null>;
177
+ /** Create one entity. Retry-safe via an auto `Idempotency-Key`. */
178
+ create<T = unknown>(resource: string, body: unknown, options?: StorageCreateOptions): Promise<T>;
179
+ /** Update one entity by id (PATCH by default). */
180
+ update<T = unknown>(resource: string, id: string, patch: unknown, options?: StorageUpdateOptions): Promise<T>;
181
+ /** Delete one entity by id. Resolves for 2xx and 404 (already gone). */
182
+ delete(resource: string, id: string, options?: StorageDeleteOptions): Promise<void>;
183
+ }
184
+ //# sourceMappingURL=client-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-types.d.ts","sourceRoot":"","sources":["../../src/lib/client-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/lib/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,uBAAuB,EAIxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAIjC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,SAAS,IAAI,gBAAgB,CAE5C;AAqCD,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAkBpF;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQvG;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAUnG;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,gBAAgB,EACzB,IAAI,CAAC,EAAE;IACL,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7E,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1E,GACA,OAAO,CAAC,cAAc,CAAC,CASzB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAID,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkBxG;AAkBD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrH;AA+FD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7G;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjI;AA4BD,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,WAAW,GAAG,uBAAuB,CA6FzG"}
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/lib/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,uBAAuB,EAIxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAIjC,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,SAAS,IAAI,gBAAgB,CAE5C;AAqCD,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAkBpF;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQvG;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAUnG;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,gBAAgB,EACzB,IAAI,CAAC,EAAE;IACL,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7E,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1E,GACA,OAAO,CAAC,cAAc,CAAC,CASzB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAID,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkBxG;AAkBD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBrH;AA+FD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7G;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjI;AA4BD,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,WAAW,GAAG,uBAAuB,CAuHzG"}
@@ -426,6 +426,29 @@ function createCloudflareProvider(config) {
426
426
  await replaceRecordsByNameType(zone.id, replacement, cfg);
427
427
  }
428
428
  return true;
429
+ },
430
+ async deleteDnsRecords(domain, records) {
431
+ const zone = await getZone(domain, cfg);
432
+ if (!zone)
433
+ throw new Error(`No Cloudflare zone found for ${domain}`);
434
+ const grouped = new Map;
435
+ for (const record of records) {
436
+ const key = `${record.type}|${record.name}`;
437
+ const group = grouped.get(key) ?? [];
438
+ group.push(record);
439
+ grouped.set(key, group);
440
+ }
441
+ for (const group of grouped.values()) {
442
+ const { type, name } = group[0];
443
+ const existing = await listRecordsByNameType(zone.id, type, name, cfg);
444
+ for (const record of group) {
445
+ const match = existing.find((candidate) => candidate.content === record.value && (candidate.priority ?? undefined) === (record.priority ?? undefined));
446
+ if (match?.id) {
447
+ await deleteRecord(zone.id, match.id, cfg);
448
+ }
449
+ }
450
+ }
451
+ return true;
429
452
  }
430
453
  };
431
454
  }
@@ -1,5 +1,10 @@
1
1
  /**
2
2
  * Persistent config stored in the domains config directory.
3
+ *
4
+ * This is a SETTINGS store — registrant contact defaults, registrar/DNS
5
+ * defaults, the purchase AWS profile. It never holds an API key: credentials
6
+ * come from the shared @hasna/contracts resolver only (see
7
+ * `../lib/domains-resolver.ts`).
3
8
  */
4
9
  export interface DomainContact {
5
10
  first_name?: string;
@@ -28,24 +33,10 @@ export interface DomainsConfig {
28
33
  export declare function getPurchaseProfile(): string | undefined;
29
34
  /** Set AWS_PROFILE from config for purchase ops if no explicit creds are set. */
30
35
  export declare function applyPurchaseProfile(): string | undefined;
31
- export interface LegacyConfigMigrationReport {
32
- dryRun: boolean;
33
- wouldCopy: boolean;
34
- copied: boolean;
35
- }
36
- /**
37
- * One-time migration from the previous XDG config default
38
- * ($XDG_CONFIG_HOME/open-domains/config.json) into the canonical
39
- * ~/.hasna/domains/config.json. Copies, verifies by size and sha256, records a
40
- * receipt, never deletes the source, never overwrites existing canonical data,
41
- * and is idempotent (receipt + canonical file both skip it). dryRun reports
42
- * whether the config would be copied and writes nothing.
43
- */
44
- export declare function migrateLegacyConfig(env?: NodeJS.ProcessEnv, dryRun?: boolean): LegacyConfigMigrationReport;
45
36
  /**
46
- * The default config location: ~/.hasna/domains/config.json. Env overrides
47
- * (DOMAINS_CONFIG_PATH / DOMAINS_CONFIG_DIR) are honored unchanged and win
48
- * over the default.
37
+ * The default config location — `config.json` at the root of the effective
38
+ * local data home (see `app-home.ts`). Env overrides (DOMAINS_CONFIG_PATH /
39
+ * DOMAINS_CONFIG_DIR) are honored unchanged and win over the default.
49
40
  */
50
41
  export declare function getConfigPath(env?: NodeJS.ProcessEnv): string;
51
42
  export declare function loadConfig(env?: NodeJS.ProcessEnv): DomainsConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAIvD;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAKzD;AAMD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,UAAQ,GACb,2BAA2B,CAuC7B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAO1E;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAQ9E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAK5F;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAehH;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CAC9C,GAAG;IACF,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IACpE,cAAc,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAC1E,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9C,CA2BA;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUhE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAIvD;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAKzD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAM1E;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAQ9E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAK5F;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,aAAa,CAehH;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CAC9C,GAAG;IACF,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IACpE,cAAc,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAC1E,QAAQ,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9C,CA2BA;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUhE"}
@@ -26,5 +26,5 @@ export declare function selectChangedDnsRecords(plan: DnsPlan, desired: Provider
26
26
  export declare function getDnsApplyBlockReason(plan: DnsPlan, opts: {
27
27
  yes?: boolean;
28
28
  allowDelete?: boolean;
29
- }): DnsApplyBlockReason | undefined;
29
+ }, deleteSupported?: boolean): DnsApplyBlockReason | undefined;
30
30
  //# sourceMappingURL=dns-plan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dns-plan.d.ts","sourceRoot":"","sources":["../../src/lib/dns-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,oBAAoB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,8BAA8B,GAAG,0BAA0B,CAAC;AAMxH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAmB/F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CA8BxF;AAUD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAgCjH;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAErD;AAMD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CASxG;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,mBAAmB,GAAG,SAAS,CAMrI"}
1
+ {"version":3,"file":"dns-plan.d.ts","sourceRoot":"","sources":["../../src/lib/dns-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,oBAAoB,CAAC;IACzB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,8BAA8B,GAAG,0BAA0B,CAAC;AAMxH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAmB/F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CA8BxF;AAUD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAgCjH;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAErD;AAMD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CASxG;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EAC9C,eAAe,UAAQ,GACtB,mBAAmB,GAAG,SAAS,CAMjC"}
@@ -0,0 +1,96 @@
1
+ import type { ClientEnv, ClientTransportResolution, CredentialChainOptions, CredentialTier, HasnaStorageClient, ResolvedCredential } from "./client-types.js";
2
+ /** The app slug the shared client seam resolves credentials and authority for. */
3
+ export declare const DOMAINS_APP_NAME: "domains";
4
+ export { domainsAuthorityEnvKeys } from "./client-storage-policy.js";
5
+ /**
6
+ * The environment as the resolver should see it: every authority/credential
7
+ * variable that is DECLARED BUT BLANK removed.
8
+ *
9
+ * A blank has always been this package's spelling for "not configured" — it is
10
+ * how fixtures scrub an inherited environment and how wrappers spell
11
+ * `HASNA_DOMAINS_API_URL="${MAYBE_UNSET}"`. @hasna/contracts takes the
12
+ * opposite and, for its purposes, correct view: a declared-but-blank credential
13
+ * is a misconfiguration it refuses loudly rather than resolving around.
14
+ *
15
+ * Both are right at their own layer, and the mismatch is not hypothetical: an
16
+ * environment carrying a real `HASNA_DOMAINS_API_KEY` alongside a blank legacy
17
+ * alias — the exact shape a scrubbed-then-overridden fixture produces — is a
18
+ * complete, unambiguous configuration that would otherwise be refused for the
19
+ * alias nobody set. Normalising here keeps "blank means unset" true at the
20
+ * domains seam while leaving the resolver's stricter rule intact for
21
+ * everything it does receive: a value that is present is still policed, and
22
+ * two aliases that actually disagree still refuse.
23
+ */
24
+ export declare function domainsResolverEnv<T extends ClientEnv>(env: T): T;
25
+ /** The env object and credential options a domains surface hands @hasna/contracts. */
26
+ export interface DomainsResolverInputs<T extends ClientEnv> {
27
+ /** The environment with every declared-but-blank authority variable removed. */
28
+ env: T;
29
+ /** The chain options, with the Keychain tier's ambient gate already decided. */
30
+ credentials: CredentialChainOptions;
31
+ }
32
+ /**
33
+ * Build the resolver's inputs: the normalised environment AND the credential
34
+ * options that keep the machine's Keychain tier reachable across it. See the
35
+ * module header for why the gate has to travel with the copy.
36
+ *
37
+ * An explicit `enabled` from the caller still wins, and an injected `run`
38
+ * (which @hasna/contracts already treats as "enabled") is left alone, so the
39
+ * hermetic seam tests rely on is untouched. When there is no blank to remove
40
+ * the inputs pass through by identity, exactly as before — the CLI hands the
41
+ * resolver `process.env` itself, never a copy.
42
+ */
43
+ export declare function domainsResolverInputs<T extends ClientEnv>(env: T, credentials?: CredentialChainOptions): DomainsResolverInputs<T>;
44
+ /**
45
+ * Options a domains surface forwards to the shared resolver: tier-1 credential
46
+ * inputs and the Keychain-tier seam.
47
+ */
48
+ export interface DomainsResolverOptions {
49
+ /** Tier-1 credential inputs (`--api-key` / `--profile`) and Keychain controls. */
50
+ credentials?: CredentialChainOptions;
51
+ }
52
+ /**
53
+ * The transport report a caller can see — sources, tier, authority — with no
54
+ * key value in it. `baseUrl` is the `<origin>/v1` base the resolver produced.
55
+ */
56
+ export interface DomainsTransportReport {
57
+ transport: "http";
58
+ /** `<origin>/v1` base for the server API. */
59
+ baseUrl: string;
60
+ /** WHERE the API URL came from: env key NAME, Keychain reference, file PATH, or `"default"`. */
61
+ apiUrlSource: string;
62
+ /** WHERE the API key came from: env key NAME, Keychain reference, or file PATH. Never a value. */
63
+ apiKeySource: string;
64
+ /** Which tier of the credential chain supplied the key. */
65
+ apiKeyTier: CredentialTier;
66
+ }
67
+ /**
68
+ * Resolve the domains authority and credential through the shared chain,
69
+ * FRESH, and return both the report and the credential VALUE.
70
+ *
71
+ * Throws a fail-closed `Error` (prefixed `domains fails closed: …`) that names
72
+ * the canonical env pair when no credential resolves from any tier, when a
73
+ * deliberate tier cannot be honoured, or when the configured authorities
74
+ * disagree — never a quiet fall-through to local data.
75
+ */
76
+ export declare function resolveDomainsTransport(env?: ClientEnv, options?: DomainsResolverOptions): {
77
+ report: DomainsTransportReport;
78
+ credential: ResolvedCredential;
79
+ };
80
+ /** A resolved HTTP storage client plus the decision that produced it. */
81
+ export interface ResolvedDomainsHttpClient {
82
+ transport: "http";
83
+ client: HasnaStorageClient;
84
+ resolution: ClientTransportResolution;
85
+ }
86
+ /**
87
+ * Resolve the authenticated domains HTTP client for this environment.
88
+ *
89
+ * The returned client resolves its credential FRESH on every request (the
90
+ * transport's per-request binding provider), so a key rotation heals a
91
+ * long-lived MCP server or daemon without a rebuild. Throws a fail-closed
92
+ * `Error` when no credential resolves from any tier — never a quiet
93
+ * fall-through to local data.
94
+ */
95
+ export declare function resolveDomainsHttpClient(env?: ClientEnv, options?: DomainsResolverOptions): ResolvedDomainsHttpClient;
96
+ //# sourceMappingURL=domains-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domains-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/domains-resolver.ts"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EACV,SAAS,EACT,yBAAyB,EACzB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAG,SAAkB,CAAC;AAEnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAsBrE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAQjE;AAED,sFAAsF;AACtF,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,SAAS;IACxD,gFAAgF;IAChF,GAAG,EAAE,CAAC,CAAC;IACP,gFAAgF;IAChF,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,SAAS,EACvD,GAAG,EAAE,CAAC,EACN,WAAW,GAAE,sBAA2B,GACvC,qBAAqB,CAAC,CAAC,CAAC,CAS1B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,kFAAkF;IAClF,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,YAAY,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,YAAY,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,UAAU,EAAE,cAAc,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,SAAuB,EAC5B,OAAO,GAAE,sBAA2B,GACnC;IAAE,MAAM,EAAE,sBAAsB,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAA;CAAE,CAGpE;AAoCD,yEAAyE;AACzE,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,yBAAyB,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,SAAuB,EAC5B,OAAO,GAAE,sBAA2B,GACnC,yBAAyB,CAiB3B"}
@@ -100,6 +100,14 @@ export interface DnsProvider {
100
100
  dnsWriteScope?: DnsWriteScope;
101
101
  getDnsRecords(domain: string): Promise<ProviderDnsRecord[]>;
102
102
  setDnsRecords(domain: string, records: ProviderDnsRecord[]): Promise<boolean>;
103
+ /**
104
+ * Delete the EXACT live records matching the given records.
105
+ *
106
+ * Omission is conservative: `dns apply` refuses a delete plan
107
+ * (`delete-apply-unsupported`) unless the provider can converge on deletes through
108
+ * this route, so a non-deletable provider is never written into a partial state.
109
+ */
110
+ deleteDnsRecords?(domain: string, records: ProviderDnsRecord[]): Promise<boolean>;
103
111
  }
104
112
  /** A provider that does both — e.g. Route 53 */
105
113
  export type FullProvider = RegistrarProvider & DnsProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/lib/registrar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYrF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,YAAY,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAChF,CAAC;AAEF,4EAA4E;AAC5E,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7C,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAChE;AAED,oEAAoE;AACpE,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC1E,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACjE,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAClJ,iBAAiB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;CACpG;AAED,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC5D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,aAAa,CAAC;IACnD,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,EAAE,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAmND,UAAU,aAAa;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,uBAAuB,CAAC;IAChD,eAAe,CAAC,EAAE,MAAM,iBAAiB,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,WAAW,CAAC;CAC/B;AAiED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED,wBAAgB,qBAAqB,IAAI,YAAY,EAAE,CAMtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAIjE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAIhF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAIpE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAIxD;AAED,6CAA6C;AAC7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAE3D;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAsBxE;AAED,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GACxD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYxB"}
1
+ {"version":3,"file":"registrar.d.ts","sourceRoot":"","sources":["../../src/lib/registrar.ts"],"names":[],"mappings":"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"}
@@ -426,6 +426,29 @@ function createCloudflareProvider(config) {
426
426
  await replaceRecordsByNameType(zone.id, replacement, cfg);
427
427
  }
428
428
  return true;
429
+ },
430
+ async deleteDnsRecords(domain, records) {
431
+ const zone = await getZone(domain, cfg);
432
+ if (!zone)
433
+ throw new Error(`No Cloudflare zone found for ${domain}`);
434
+ const grouped = new Map;
435
+ for (const record of records) {
436
+ const key = `${record.type}|${record.name}`;
437
+ const group = grouped.get(key) ?? [];
438
+ group.push(record);
439
+ grouped.set(key, group);
440
+ }
441
+ for (const group of grouped.values()) {
442
+ const { type, name } = group[0];
443
+ const existing = await listRecordsByNameType(zone.id, type, name, cfg);
444
+ for (const record of group) {
445
+ const match = existing.find((candidate) => candidate.content === record.value && (candidate.priority ?? undefined) === (record.priority ?? undefined));
446
+ if (match?.id) {
447
+ await deleteRecord(zone.id, match.id, cfg);
448
+ }
449
+ }
450
+ }
451
+ return true;
429
452
  }
430
453
  };
431
454
  }
@@ -0,0 +1,46 @@
1
+ export declare function isStdioMode(argv?: readonly string[], env?: NodeJS.ProcessEnv): boolean;
2
+ export declare function isHttpMode(argv?: readonly string[], env?: NodeJS.ProcessEnv): boolean;
3
+ export declare function resolveMcpHttpPort(opts?: {
4
+ explicit?: number;
5
+ argv?: readonly string[];
6
+ env?: NodeJS.ProcessEnv;
7
+ default?: number;
8
+ }): number;
9
+ export declare function healthPayload(name: string): {
10
+ status: string;
11
+ name: string;
12
+ };
13
+ /** Minimal structural shape the HTTP adapters need from a built MCP server. */
14
+ export interface ConnectableMcpServer {
15
+ connect(transport: unknown): Promise<void>;
16
+ close(): Promise<void>;
17
+ }
18
+ export type BuildServer = () => ConnectableMcpServer | Promise<ConnectableMcpServer>;
19
+ /** Handle returned by the Bun HTTP adapter. */
20
+ export interface BunHttpServerHandle {
21
+ port: number;
22
+ stop: () => void;
23
+ }
24
+ /**
25
+ * Handle one MCP request using Web-standard `Request` / `Response`. Emits a
26
+ * JSON-RPC `-32603` 500 on failure.
27
+ */
28
+ export declare function handleMcpHttpRequest(req: Request, buildServer: BuildServer, options?: {
29
+ enableJsonResponse?: boolean;
30
+ }): Promise<Response>;
31
+ /**
32
+ * Start a `Bun.serve` HTTP server exposing `GET /health` and `POST /mcp`.
33
+ * Returns the bound port and a `stop()`.
34
+ */
35
+ export declare function startBunHttpServer(buildServer: BuildServer, options: {
36
+ port: number;
37
+ host?: string;
38
+ serviceName: string;
39
+ enableJsonResponse?: boolean;
40
+ }): BunHttpServerHandle;
41
+ /**
42
+ * Test helper — kept for API stability. The harness is stateless per-request,
43
+ * so there is no shared transport state to reset.
44
+ */
45
+ export declare function resetMcpHttpStateForTests(): void;
46
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/mcp/harness.ts"],"names":[],"mappings":"AAgCA,wBAAgB,WAAW,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEjH;AAED,wBAAgB,UAAU,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEhH;AAuBD,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAiBT;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAE5E;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAErF,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,QAAQ,CAAC,CAgBnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1F,mBAAmB,CAoBrB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAAG"}
@@ -1,7 +1,8 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  /**
3
- * open-domains MCP transport/port boilerplate — thin shim over @hasna/mcp-harness.
4
- * Public API preserved; hand-rolled transport/port/health removed.
3
+ * open-domains MCP transport/port boilerplate — thin shim over the vendored
4
+ * harness (./harness.js). Public API preserved; hand-rolled
5
+ * transport/port/health removed.
5
6
  * Generated by open-mcp/scripts/adopt-harness.ts.
6
7
  */
7
8
  export declare const MCP_HTTP_HOST = "127.0.0.1";
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/mcp/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE;;;;GAIG;AAEH,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,wBAAgB,UAAU,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAE1E;AACD,wBAAgB,WAAW,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAE3E;AACD,wBAAgB,kBAAkB,CAChC,IAAI,GAAE,SAAS,MAAM,EAAiB,EACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAER;AACD,wBAAgB,aAAa,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEhE;AACD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,MAAM,SAAS,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAEnB;AACD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,SAAS,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAM7C;AACD,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/mcp/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE;;;;;GAKG;AAEH,eAAO,MAAM,aAAa,cAAc,CAAC;AACzC,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,wBAAgB,UAAU,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAE1E;AACD,wBAAgB,WAAW,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAE3E;AACD,wBAAgB,kBAAkB,CAChC,IAAI,GAAE,SAAS,MAAM,EAAiB,EACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAER;AACD,wBAAgB,aAAa,IAAI;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEhE;AACD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,MAAM,SAAS,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAEnB;AACD,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,SAAS,EAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAM7C;AACD,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiWpE,wBAAgB,WAAW,IAAI,SAAS,CAqiDvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkWpE,wBAAgB,WAAW,IAAI,SAAS,CAqiDvC"}