@hasna/recordings 0.3.13 → 0.5.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 (148) hide show
  1. package/README.md +279 -43
  2. package/bun.lock +37 -38
  3. package/contracts/v1/fixtures.json +1206 -0
  4. package/dist/cli/index.js +1909 -619
  5. package/dist/cli/macos-shortcut.d.ts +2 -2
  6. package/dist/contracts/hosted-v1.d.ts +105 -0
  7. package/dist/contracts/hosted-v1.d.ts.map +1 -0
  8. package/dist/contracts/hosted-v1.js +41 -0
  9. package/dist/contracts/stream-v1.d.ts +117 -0
  10. package/dist/contracts/stream-v1.d.ts.map +1 -0
  11. package/dist/contracts/stream-v1.js +35 -0
  12. package/dist/db/database.d.ts.map +1 -1
  13. package/dist/db/pg-migrations.d.ts.map +1 -1
  14. package/dist/db/recordings.d.ts +6 -0
  15. package/dist/db/recordings.d.ts.map +1 -1
  16. package/dist/hosted/index.d.ts +58 -0
  17. package/dist/hosted/index.d.ts.map +1 -0
  18. package/dist/hosted/index.js +266 -0
  19. package/dist/hosted/transport.d.ts +36 -0
  20. package/dist/hosted/transport.d.ts.map +1 -0
  21. package/dist/hosted-v1-aavn7ktb.js +4114 -0
  22. package/dist/hosted-v1-gdr9extc.js +84 -0
  23. package/dist/http/client.d.ts +183 -22
  24. package/dist/http/client.d.ts.map +1 -1
  25. package/dist/index.d.ts +3 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2879 -2288
  28. package/dist/lib/audio-artifact-storage.d.ts +98 -0
  29. package/dist/lib/audio-artifact-storage.d.ts.map +1 -0
  30. package/dist/lib/capture-probe.d.ts +3 -3
  31. package/dist/lib/capture-probe.d.ts.map +1 -1
  32. package/dist/lib/config.d.ts.map +1 -1
  33. package/dist/lib/local-opt-in.d.ts +132 -0
  34. package/dist/lib/local-opt-in.d.ts.map +1 -0
  35. package/dist/lib/macos-bundle.d.ts +1 -1
  36. package/dist/lib/persistence-probe.d.ts +56 -17
  37. package/dist/lib/persistence-probe.d.ts.map +1 -1
  38. package/dist/lib/transcriber.d.ts.map +1 -1
  39. package/dist/mcp/index.d.ts.map +1 -1
  40. package/dist/mcp/index.js +1713 -459
  41. package/dist/sdk/index.d.ts +13 -5
  42. package/dist/sdk/index.d.ts.map +1 -1
  43. package/dist/sdk/index.js +904 -1
  44. package/dist/sdk/resolve.d.ts +53 -0
  45. package/dist/sdk/resolve.d.ts.map +1 -0
  46. package/dist/sdk/v1.generated.d.ts +6 -0
  47. package/dist/sdk/v1.generated.d.ts.map +1 -1
  48. package/dist/server/client-ip.d.ts +39 -0
  49. package/dist/server/client-ip.d.ts.map +1 -0
  50. package/dist/server/cloud-config.d.ts +12 -0
  51. package/dist/server/cloud-config.d.ts.map +1 -1
  52. package/dist/server/cloud-readiness.d.ts.map +1 -1
  53. package/dist/server/cloud.d.ts +20 -2
  54. package/dist/server/cloud.d.ts.map +1 -1
  55. package/dist/server/index.js +590 -287
  56. package/dist/server/migrate-command.d.ts +1 -1
  57. package/dist/server/migrate-command.d.ts.map +1 -1
  58. package/dist/server/openapi.d.ts +21 -0
  59. package/dist/server/openapi.d.ts.map +1 -1
  60. package/dist/server/repo.d.ts.map +1 -1
  61. package/dist/server/serve.d.ts.map +1 -1
  62. package/dist/storage.d.ts +2 -2
  63. package/dist/storage.d.ts.map +1 -1
  64. package/dist/storage.js +1358 -874
  65. package/dist/store.d.ts +12 -3
  66. package/dist/store.d.ts.map +1 -1
  67. package/dist/types/index.d.ts +15 -0
  68. package/dist/types/index.d.ts.map +1 -1
  69. package/docs/hosted-sdk.md +71 -0
  70. package/docs/wire-contracts.md +24 -0
  71. package/package.json +33 -11
  72. package/packaging/macos/build_release_pkg.sh +3 -3
  73. package/packaging/macos/managed_bootstrap.sh +4 -4
  74. package/packaging/macos/scripts/postinstall +2 -2
  75. package/packaging/macos/scripts/preinstall +2 -2
  76. package/scripts/build_companion_cli.sh +7 -1
  77. package/scripts/ci-linux-suite.ts +23 -13
  78. package/scripts/install_macos_app.sh +27 -24
  79. package/scripts/macos_artifact.ts +60 -49
  80. package/scripts/migrate.ts +4 -20
  81. package/scripts/native/prebuilds/darwin-universal/recordings_fs_guard.node +0 -0
  82. package/scripts/native/recordings_fs_guard.c +36 -4
  83. package/scripts/native-core-receipt.py +171 -0
  84. package/scripts/native_fs_guard.ts +2 -0
  85. package/scripts/release-suite-gate.ts +227 -150
  86. package/scripts/resolve_tailscale_cli.sh +24 -3
  87. package/scripts/smoke_macos_app.sh +21 -21
  88. package/src/native/Recordings/App/ContentView.swift +53 -68
  89. package/src/native/Recordings/App/MenuBarStatusView.swift +171 -61
  90. package/src/native/Recordings/App/RecordWorkspaceView.swift +47 -449
  91. package/src/native/Recordings/App/RecorderSettingsView.swift +75 -0
  92. package/src/native/Recordings/App/RecordingDetailView.swift +3 -4
  93. package/src/native/Recordings/App/RecordingsApp.swift +185 -9
  94. package/src/native/Recordings/App/RecordingsListView.swift +60 -112
  95. package/src/native/Recordings/App/RecordingsStore.swift +124 -109
  96. package/src/native/Recordings/App/Theme.swift +73 -61
  97. package/src/native/Recordings/Package.swift +1 -0
  98. package/src/native/Recordings/RecordingsLib/BlockingOperation.swift +29 -0
  99. package/src/native/Recordings/RecordingsLib/CaptureMonitor.swift +65 -0
  100. package/src/native/Recordings/RecordingsLib/Info.plist +3 -3
  101. package/src/native/Recordings/RecordingsLib/OpenAIAPIKeyStore.swift +75 -21
  102. package/src/native/Recordings/RecordingsLib/ProjectStore.swift +4 -4
  103. package/src/native/Recordings/RecordingsLib/Recording.swift +14 -2
  104. package/src/native/Recordings/RecordingsLib/RecordingEngine.swift +539 -89
  105. package/src/native/Recordings/RecordingsLib/RecordingGlassBackground.swift +34 -0
  106. package/src/native/Recordings/RecordingsLib/RecordingPasteTarget.swift +114 -0
  107. package/src/native/Recordings/RecordingsLib/RecordingProvider.swift +112 -0
  108. package/src/native/Recordings/RecordingsLib/RecordingsCLI.swift +17 -10
  109. package/src/native/Recordings/RecordingsLib/ServiceAPIConfiguration.swift +107 -0
  110. package/src/native/Recordings/RecordingsLib/ServiceConnectionView.swift +76 -0
  111. package/src/native/Recordings/RecordingsLib/SettingsView.swift +45 -149
  112. package/src/native/Recordings/RecordingsLib/SettingsWindowController.swift +48 -0
  113. package/src/native/Recordings/RecordingsTests/BlockingOperationTests.swift +85 -0
  114. package/src/native/Recordings/RecordingsTests/CLIRunnerTests.swift +454 -76
  115. package/src/native/Recordings/RecordingsTests/OpenAIAPIKeyStoreTests.swift +43 -38
  116. package/src/native/Recordings/RecordingsTests/PipeClosureFixture.swift +215 -0
  117. package/src/native/Recordings/RecordingsTests/ProjectStoreTests.swift +10 -10
  118. package/src/native/Recordings/RecordingsTests/RecorderSurfaceTests.swift +60 -0
  119. package/src/native/Recordings/RecordingsTests/RecordingDateTests.swift +26 -0
  120. package/src/native/Recordings/RecordingsTests/RecordingEngineDeliveryTests.swift +1 -1
  121. package/src/native/Recordings/RecordingsTests/RecordingFrozenPasteTargetTests.swift +50 -0
  122. package/src/native/Recordings/RecordingsTests/RecordingPasteTargetTrackerTests.swift +48 -0
  123. package/src/native/Recordings/RecordingsTests/RecordingProviderTests.swift +308 -0
  124. package/src/native/Recordings/RecordingsTests/RecordingStartGateTests.swift +1 -1
  125. package/src/native/Recordings/RecordingsTests/RecordingStartTimingTests.swift +123 -21
  126. package/src/native/Recordings/RecordingsTests/ServiceAPIConfigurationTests.swift +75 -0
  127. package/src/native/Recordings/RecordingsTests/SettingsWindowControllerTests.swift +28 -0
  128. package/src/native/Recordings/RecordingsTests/TestHomeDirectory.swift +5 -1
  129. package/src/native/Recordings/Updater/BootstrapPreflight/BootstrapPreflightMain.swift +1 -1
  130. package/src/native/Recordings/Updater/Broker/ApplicationNamespace.swift +2 -2
  131. package/src/native/Recordings/Updater/Broker/BrokerMain.swift +1 -1
  132. package/src/native/Recordings/Updater/Broker/CanonicalTreeCopy.swift +1 -1
  133. package/src/native/Recordings/Updater/Broker/InstallJournal.swift +1 -1
  134. package/src/native/Recordings/Updater/BrokerTests/ActivationRecoveryPolicyTests.swift +2 -2
  135. package/src/native/Recordings/Updater/Protocol/UpdateProtocol.swift +1 -1
  136. package/src/native/Recordings/Updater/VerifierLauncher/RecordingsVerifierLauncher.c +2 -2
  137. package/src/native/Recordings/build.sh +8 -7
  138. package/dist/__tests__/helpers/installer-guard-execution.d.ts +0 -22
  139. package/dist/__tests__/helpers/installer-guard-execution.d.ts.map +0 -1
  140. package/dist/__tests__/helpers/installer-preflight.d.ts +0 -22
  141. package/dist/__tests__/helpers/installer-preflight.d.ts.map +0 -1
  142. package/dist/__tests__/helpers/native-fs-guard.d.ts +0 -2
  143. package/dist/__tests__/helpers/native-fs-guard.d.ts.map +0 -1
  144. package/dist/__tests__/helpers/source-assertions.d.ts +0 -171
  145. package/dist/__tests__/helpers/source-assertions.d.ts.map +0 -1
  146. package/dist/__tests__/preload.d.ts +0 -2
  147. package/dist/__tests__/preload.d.ts.map +0 -1
  148. package/src/native/Recordings/App/SidebarView.swift +0 -212
@@ -0,0 +1,84 @@
1
+ // @bun
2
+ import {
3
+ ContractValidationError,
4
+ exports_external,
5
+ optionalWireMetadata,
6
+ recordingIDParser
7
+ } from "./hosted-v1-aavn7ktb.js";
8
+
9
+ // src/contracts/hosted-v1.ts
10
+ function parser(schema) {
11
+ return {
12
+ parse(value) {
13
+ try {
14
+ return schema.parse(value);
15
+ } catch {
16
+ throw new ContractValidationError;
17
+ }
18
+ },
19
+ safeParse(value) {
20
+ try {
21
+ return { success: true, data: schema.parse(value) };
22
+ } catch {
23
+ return { success: false, error: { code: "invalid_contract" } };
24
+ }
25
+ }
26
+ };
27
+ }
28
+ var json = exports_external.lazy(() => exports_external.union([exports_external.null(), exports_external.boolean(), exports_external.number().finite(), exports_external.string(), exports_external.array(json), exports_external.record(json)]));
29
+ var object = (shape) => exports_external.object(shape).catchall(json);
30
+ var id = exports_external.string().refine((value) => recordingIDParser.safeParse(value).success);
31
+ var timestamp = exports_external.string().datetime({ offset: true }).regex(/T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-](?:[01]\d|2[0-3]):[0-5]\d)$(?![\s\S])/);
32
+ var utcTimestamp = exports_external.string().datetime().regex(/T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$(?![\s\S])/);
33
+ var title = exports_external.string().trim().min(1).max(200);
34
+ var recordingInput = exports_external.object({ id, sessionId: id.optional(), title, transcript: exports_external.string().max(256000), durationMs: exports_external.number().finite().min(0).max(1800000) }).strict();
35
+ var recording = object({ ...recordingInput.shape, createdAt: timestamp, updatedAt: timestamp, provenance: exports_external.record(json).optional() });
36
+ var pasteInput = exports_external.object({
37
+ id,
38
+ recordingId: id.nullable().optional(),
39
+ text: exports_external.string().max(256000),
40
+ destinationAppId: exports_external.string().min(1).max(255).optional(),
41
+ destinationAppName: exports_external.string().min(1).max(200).optional(),
42
+ status: exports_external.enum(["attempted", "confirmed", "failed"]),
43
+ occurredAt: utcTimestamp.optional()
44
+ }).strict();
45
+ var receipt = object({
46
+ ...pasteInput.shape,
47
+ recordingId: id.nullable(),
48
+ occurredAt: timestamp,
49
+ createdAt: timestamp,
50
+ updatedAt: timestamp,
51
+ evidenceSource: exports_external.literal("client_reported")
52
+ });
53
+ var account = object({ id, displayName: exports_external.string(), email: exports_external.string(), createdAt: timestamp });
54
+ var advertised = { wireVersion: exports_external.string().optional(), capabilities: exports_external.array(exports_external.string()).max(32).optional() };
55
+ var compatible = (value) => {
56
+ try {
57
+ optionalWireMetadata(value);
58
+ return true;
59
+ } catch {
60
+ return false;
61
+ }
62
+ };
63
+ var recordingInputParser = parser(recordingInput);
64
+ var recordingParser = parser(recording);
65
+ var pasteInputParser = parser(pasteInput);
66
+ var pasteReceiptParser = parser(receipt);
67
+ var pageOptionsParser = parser(exports_external.object({
68
+ limit: exports_external.number().int().min(1).max(100).optional(),
69
+ before: timestamp.optional(),
70
+ beforeId: id.optional()
71
+ }).strict().refine((value) => value.beforeId === undefined === (value.before === undefined)));
72
+ var bootstrapInputParser = parser(exports_external.object({}).strict());
73
+ var renameInputParser = parser(exports_external.object({ title }).strict());
74
+ var accountResponseParser = parser(object({ account, ...advertised }).refine(compatible));
75
+ var versionResponseParser = parser(object({ name: exports_external.literal("recordings"), version: exports_external.string(), apiVersion: exports_external.literal("v1"), ...advertised }).refine(compatible));
76
+ var healthResponseParser = parser(object({ status: exports_external.literal("ok") }));
77
+ var readyResponseParser = parser(object({ status: exports_external.literal("ready") }));
78
+ var recordingResponseParser = parser(object({ recording }));
79
+ var recordingListParser = parser(object({ recordings: exports_external.array(recording).max(100) }));
80
+ var pasteResponseParser = parser(object({ receipt }));
81
+ var pasteListParser = parser(object({ receipts: exports_external.array(receipt).max(100) }));
82
+ var pendingDeletionParser = parser(object({ audioCleanup: object({ state: exports_external.literal("pending") }) }));
83
+
84
+ export { recordingInputParser, recordingParser, pasteInputParser, pasteReceiptParser, pageOptionsParser, bootstrapInputParser, renameInputParser, accountResponseParser, versionResponseParser, healthResponseParser, readyResponseParser, recordingResponseParser, recordingListParser, pasteResponseParser, pasteListParser, pendingDeletionParser };
@@ -1,22 +1,136 @@
1
1
  import { resolveStorageClient, type HasnaStorageClient } from "@hasna/contracts/client/storage";
2
+ import { RECORDINGS_LOCAL_OPT_IN_ENV_KEYS, isRecordingsLocalOptIn } from "../lib/local-opt-in.js";
3
+ export { RECORDINGS_LOCAL_OPT_IN_ENV_KEYS, isRecordingsLocalOptIn };
2
4
  export type Env = Record<string, string | undefined>;
3
- /** Where a client reads and writes. Two arms, no third. */
4
- export type ClientStore = "sqlite" | "http";
5
5
  export declare function toV1BaseUrl(apiUrl: string): string;
6
- export type TransportKind = ClientStore;
7
- export interface TransportResolution {
8
- /** The store actually in use. `sqlite` whenever routing to `http` was refused. */
9
- transport: TransportKind;
10
- /** The store that was asked for. Differs from `transport` only when misconfigured. */
11
- requested: ClientStore;
12
- /** What decided it: an env var NAME, `auto:api-url+api-key`, or `default`. Never a value. */
13
- modeSource: string;
14
- baseUrl: string | null;
6
+ /** An account/host selection for the Keychain tier; injected by tests. */
7
+ export interface RecordsKeychainCommandResult {
8
+ /** Exit status; null when the tool could not be started or was killed. */
9
+ status: number | null;
10
+ stdout: string;
11
+ stderr: string;
12
+ }
13
+ /** Runs `/usr/bin/security` with the given argv — no shell. Injected by tests. */
14
+ export type RecordsKeychainCommandRunner = (argv: readonly string[]) => RecordsKeychainCommandResult;
15
+ /** Keychain-tier controls. Every field is optional; production callers pass nothing. */
16
+ export interface RecordsKeychainTierOptions {
17
+ /** Whether the Keychain is consulted for a caller-built env object. The tier is AMBIENT. */
18
+ enabled?: boolean;
19
+ /** Defaults to `process.platform`; the tier exists only on `"darwin"`. */
20
+ platform?: string;
21
+ /** The machine's host name (label before the first dot), used when `HASNA_STATION` is unset. */
22
+ hostname?: () => string;
23
+ /** The `security` runner. Defaults to spawning `/usr/bin/security` by argv. */
24
+ run?: RecordsKeychainCommandRunner;
25
+ }
26
+ /** Tier-1 credential inputs (`--api-key` / `--profile`) plus the Keychain-tier seam. */
27
+ export interface RecordsCredentialChainOptions {
28
+ /** Tier 1: an explicit key, e.g. from `--api-key`. */
29
+ apiKey?: string;
30
+ /** Tier 1: an explicit profile name, e.g. from `--profile`. Beats `HASNA_PROFILE`. */
31
+ profile?: string;
32
+ /** Tier 3: Keychain controls — a fake `security` runner in tests, an opt-out on CI. */
33
+ keychain?: RecordsKeychainTierOptions;
34
+ }
35
+ /** Which tier of the credential chain supplied a key. */
36
+ export type RecordsCredentialTier = "argument" | "override" | "pointer" | "profile" | "keychain" | "disk" | "env";
37
+ /** The transport decision, with every source named and no key value in it. */
38
+ export interface RecordsAuthorityResolution {
39
+ /** Where the client should read/write from. Always `"http"` in a resolution. */
40
+ transport: "http";
41
+ /** What selected the transport: an env key NAME, a Keychain item reference, a file PATH, or `"default"`. */
42
+ transportSource: string;
43
+ /** `<origin>/v1` base for the server API. */
44
+ baseUrl: string;
45
+ /** WHERE the API URL came from: an env key NAME, a Keychain item reference, a file PATH, `"default"`, or null. */
46
+ apiUrlSource: string | null;
47
+ /** Whether an API key is present (value never exposed). */
15
48
  apiKeyPresent: boolean;
49
+ /** WHERE the API key came from: an env key NAME or an absolute file path. Never the value. */
50
+ apiKeySource: string | null;
51
+ /** Which tier of the credential chain supplied the key. */
52
+ apiKeyTier: RecordsCredentialTier;
53
+ /** Kept for diagnostic shape compatibility; a successful resolution is never misconfigured. */
16
54
  misconfigured: boolean;
55
+ /** Human-readable warning, or null. Never contains secret values. */
17
56
  warning: string | null;
18
57
  }
19
- export declare function resolveTransport(name: string, env?: Env): TransportResolution;
58
+ /** Tier-1 credential inputs and Keychain-tier controls, forwarded verbatim. */
59
+ export interface RecordsClientResolveOptions {
60
+ /** `--api-key` / `--profile`, and the injectable `security` runner tests use. */
61
+ credentials?: RecordsCredentialChainOptions;
62
+ }
63
+ export type RecordsClientTransport = "sqlite" | "http";
64
+ export interface RecordsTransportResolution {
65
+ /** Canonical transport the environment resolved to (`sqlite` | `http`). */
66
+ transport: RecordsClientTransport;
67
+ /** False only for the deliberate unhosted opt-in. */
68
+ selected: boolean;
69
+ /**
70
+ * What selected the transport: `"local-opt-in"` for the deliberate unhosted
71
+ * store, else `"<api key source>+<api url source>"` as the contracts resolver
72
+ * reported them (env key NAMES, a Keychain item reference, a file path, or
73
+ * `"default"` for the fleet gateway). Never a credential value.
74
+ */
75
+ source: string;
76
+ /** The contracts resolution for the http transport; null for sqlite. It never carries the key. */
77
+ authority: RecordsAuthorityResolution | null;
78
+ }
79
+ /**
80
+ * The `{ items, total, cursor, raw }` shape the shared storage client returns
81
+ * from a `list()`.
82
+ */
83
+ export interface RecordsListResult<T> {
84
+ items: T[];
85
+ total: number | null;
86
+ cursor: string | null;
87
+ raw: unknown;
88
+ }
89
+ /** The hosted store client, spelled locally so the public surface stays boundary-clean. */
90
+ export interface RecordsCloudClient {
91
+ readonly name: string;
92
+ /** `<origin>/v1` base URL. */
93
+ readonly baseUrl: string;
94
+ /** The underlying HTTP transport (escape hatch for non-CRUD routes). */
95
+ readonly transport: HttpTransport;
96
+ list<T = unknown>(resource: string, options?: {
97
+ query?: QueryParams;
98
+ timeoutMs?: number;
99
+ headers?: Record<string, string>;
100
+ signal?: AbortSignal;
101
+ }): Promise<RecordsListResult<T>>;
102
+ /** Fetch one entity by id. Returns `null` on 404. */
103
+ get<T = unknown>(resource: string, id: string, options?: {
104
+ query?: QueryParams;
105
+ timeoutMs?: number;
106
+ headers?: Record<string, string>;
107
+ signal?: AbortSignal;
108
+ }): Promise<T | null>;
109
+ /** Create one entity. Retry-safe via an auto `Idempotency-Key`. */
110
+ create<T = unknown>(resource: string, body: unknown, options?: {
111
+ query?: QueryParams;
112
+ timeoutMs?: number;
113
+ headers?: Record<string, string>;
114
+ signal?: AbortSignal;
115
+ idempotencyKey?: string;
116
+ }): Promise<T>;
117
+ /** Update one entity by id (PATCH by default). */
118
+ update<T = unknown>(resource: string, id: string, patch: unknown, options?: {
119
+ query?: QueryParams;
120
+ timeoutMs?: number;
121
+ headers?: Record<string, string>;
122
+ signal?: AbortSignal;
123
+ method?: "PATCH" | "PUT";
124
+ idempotencyKey?: string;
125
+ }): Promise<T>;
126
+ /** Delete one entity by id. Resolves for 2xx and 404 (already gone). */
127
+ delete(resource: string, id: string, options?: {
128
+ query?: QueryParams;
129
+ timeoutMs?: number;
130
+ headers?: Record<string, string>;
131
+ signal?: AbortSignal;
132
+ }): Promise<void>;
133
+ }
20
134
  export declare class HasnaHttpError extends Error {
21
135
  readonly status: number;
22
136
  readonly method: string;
@@ -66,16 +180,63 @@ export interface StorageClient {
66
180
  delete(resource: string, id: string): Promise<void>;
67
181
  }
68
182
  export declare function createStorageClient(name: string, transport: HttpTransport): StorageClient;
69
- export type ResolveStoreClientResult = {
70
- transport: "sqlite";
71
- client: null;
72
- resolution: TransportResolution;
73
- } | {
74
- transport: "http";
75
- client: HasnaStorageClient;
76
- resolution: TransportResolution;
77
- };
78
- export declare function resolveStoreClient(name: string, env?: Env): ResolveStoreClientResult;
183
+ /**
184
+ * Re-throw a `@hasna/contracts` resolution failure as the recordings
185
+ * fail-closed diagnostic, preserving the resolver's message (which names every
186
+ * tier it consulted) behind the stable `REMOTE_API_*` code callers match on.
187
+ * Nothing here ever returns a client or a local store: every arm throws.
188
+ */
189
+ export declare function throwRecordingsAuthorityFailure(error: unknown): never;
190
+ /**
191
+ * Resolve the recordings transport. The deliberate unhosted opt-in is answered
192
+ * first and WITHOUT consulting the resolver; otherwise `@hasna/contracts`
193
+ * resolves the credential and the authority, and any failure to do so is a
194
+ * throw — the client never defaults to the on-box SQLite file (owner ruling
195
+ * 2026-09-04, hasna/apps#1720).
196
+ */
197
+ export declare function resolveRecordingsTransport(env?: Env, options?: RecordsClientResolveOptions): RecordsTransportResolution;
198
+ /** Non-throwing transport status for diagnostics. Never includes a key value. */
199
+ export interface RecordsTransportStatus {
200
+ selected: boolean;
201
+ ok: boolean;
202
+ transport: RecordsClientTransport | "invalid";
203
+ api_url_configured: boolean;
204
+ api_key_configured: boolean;
205
+ api_url_source: string | null;
206
+ api_key_source: string | null;
207
+ api_key_tier: RecordsCredentialTier | null;
208
+ v1_base_url: string | null;
209
+ issues: string[];
210
+ local_fallback: false;
211
+ }
212
+ /**
213
+ * The status surface `recordings check` renders: every refusal is reported as
214
+ * a status, never thrown. A refused configuration still says WHICH half it
215
+ * has: the flags are read from the environment alone, deliberately — the
216
+ * resolver already refused, so re-running its Keychain and filesystem tiers to
217
+ * decorate a failure would spend the machine's credential stores on a
218
+ * diagnostic, and the message already names every tier it consulted.
219
+ */
220
+ export declare function getRecordingsTransportStatus(env?: Env, options?: RecordsClientResolveOptions): RecordsTransportStatus;
221
+ /**
222
+ * Resolve the hosted storage client, or `null` for the on-box SQLite store,
223
+ * which is reachable ONLY under the deliberate unhosted opt-in. Every other
224
+ * outcome THROWS a `REMOTE_API_*` failure: no credential, an unusable
225
+ * credential file, or a malformed authority. There is no silent local default
226
+ * and no local-fallback event (fail closed, hasna/apps#1720).
227
+ *
228
+ * The returned client's transport re-resolves the credential on every request
229
+ * through the @hasna/contracts chain, so a rotation heals a long-lived MCP
230
+ * server without a restart; only the authority is fixed for the life of the
231
+ * client, so a credential written for one authority is never sent to another.
232
+ */
233
+ export declare function resolveRecordingsCloudClient(env?: Env, options?: RecordsClientResolveOptions): RecordsCloudClient | null;
234
+ /**
235
+ * The shared seam entry point, re-exported for consumers of the public storage
236
+ * surface. The seam's own resolution semantics apply (resolve or throw — the
237
+ * recordings surfaces add the local opt-in on top; see
238
+ * {@link resolveRecordingsCloudClient}).
239
+ */
79
240
  export { resolveStorageClient };
80
241
  export type { HasnaStorageClient };
81
242
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,14 +2,14 @@ export type { Recording, CreateRecordingInput, RecordingFilter, ProcessingMode,
2
2
  export { RecordingNotFoundError, RecordingError, TranscriptionError, EnhancementError, } from "./types/index.js";
3
3
  export { getStore, __resetStore, APP } from "./store.js";
4
4
  export type { Store, RecordingStats, FeedbackInput } from "./store.js";
5
- export { resolveStorageClient, resolveTransport, createHttpTransport, createStorageClient, HasnaHttpError, } from "./http/client.js";
6
- export type { StorageClient, ClientStore, TransportResolution, HttpTransport, } from "./http/client.js";
5
+ export { RECORDINGS_LOCAL_OPT_IN_ENV_KEYS, isRecordingsLocalOptIn, resolveRecordingsCloudClient, resolveRecordingsTransport, getRecordingsTransportStatus, createHttpTransport, createStorageClient, toV1BaseUrl, HasnaHttpError, } from "./http/client.js";
6
+ export type { RecordsClientResolveOptions, RecordsCredentialChainOptions, RecordsKeychainTierOptions, RecordsKeychainCommandResult, RecordsKeychainCommandRunner, RecordsAuthorityResolution, RecordsTransportResolution, RecordsTransportStatus, RecordsCloudClient, StorageClient, QueryParams, HttpTransport, } from "./http/client.js";
7
7
  export { loadConfig, getDataDir, ensureDataDir, DEFAULT_CONFIG, DEFAULT_TRANSCRIPTION_MODEL, DEFAULT_REALTIME_SESSION_MODEL, DEFAULT_REALTIME_TRANSCRIPTION_MODEL, normalizeModelSlots, normalizePostProcessingConfig, normalizePostProcessingMode, } from "./lib/config.js";
8
8
  export { transcribeAudio, transcribeBuffer, resetClient, } from "./lib/transcriber.js";
9
9
  export { needsEnhancement, enhanceText, processText, resetEnhancementClient, } from "./lib/enhancer.js";
10
10
  export { startRecording, stopRecording, isRecording, getCurrentFile, checkRecordingDeps, recordDuration, } from "./lib/recorder.js";
11
11
  export { probeMicrophoneCapture, captureProbePrecondition, captureProbeSubject, microphoneGrantInstruction, classifyPermissionState, readWavPeak, DEFAULT_PROBE_SECONDS, MAX_PROBE_SECONDS, SILENCE_PEAK_THRESHOLD, DEFAULT_RECORD_EXECUTABLE, RECORDINGS_BUNDLE_IDENTIFIER, TCC_UNREADABLE_STATE, type CaptureProbeResult, type CaptureProbeSubject, type MicrophoneGrantInstruction, type PermissionRequestState, type WavPeak, } from "./lib/capture-probe.js";
12
- export { describeActiveStore, probeRecordingPersistence, safeBaseUrl, AUTO_FLIP_MODE_SOURCE, PERSISTENCE_PROBE_TAG, PERSISTENCE_PROBE_MARKER_PREFIX, type ActiveStoreDescription, type PersistenceProbeResult, } from "./lib/persistence-probe.js";
12
+ export { describeActiveStore, probeRecordingPersistence, safeBaseUrl, ENV_CREDENTIAL_MODE_SOURCE, PERSISTENCE_PROBE_TAG, PERSISTENCE_PROBE_MARKER_PREFIX, type ActiveStoreDescription, type PersistenceProbeResult, } from "./lib/persistence-probe.js";
13
13
  export { RecordingsV1Client, RecordingsV1ApiError, } from "./sdk/index.js";
14
14
  export type { RecordingsV1ClientOptions, RecordingsV1Recording, RecordingsV1Agent, RecordingsV1Project, RecordingsV1CreateRecordingInput, RecordingsV1RegisterAgentInput, RecordingsV1RegisterProjectInput, } from "./sdk/index.js";
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,8BAA8B,EAC9B,oCAAoC,EACpC,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,OAAO,GACb,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,EACrB,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EACL,gCAAgC,EAChC,sBAAsB,EACtB,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,2BAA2B,EAC3B,8BAA8B,EAC9B,oCAAoC,EACpC,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACX,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,OAAO,GACb,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,WAAW,EACX,0BAA0B,EAC1B,qBAAqB,EACrB,+BAA+B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,gCAAgC,EAChC,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,gBAAgB,CAAC"}