@hasna/recordings 0.3.13 → 0.4.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 (105) hide show
  1. package/README.md +223 -37
  2. package/bun.lock +37 -38
  3. package/dist/cli/index.js +1884 -615
  4. package/dist/cli/macos-shortcut.d.ts +2 -2
  5. package/dist/db/database.d.ts.map +1 -1
  6. package/dist/db/pg-migrations.d.ts.map +1 -1
  7. package/dist/db/recordings.d.ts +6 -0
  8. package/dist/db/recordings.d.ts.map +1 -1
  9. package/dist/http/client.d.ts +183 -22
  10. package/dist/http/client.d.ts.map +1 -1
  11. package/dist/index.d.ts +3 -3
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +2858 -2288
  14. package/dist/lib/audio-artifact-storage.d.ts +98 -0
  15. package/dist/lib/audio-artifact-storage.d.ts.map +1 -0
  16. package/dist/lib/capture-probe.d.ts +3 -3
  17. package/dist/lib/capture-probe.d.ts.map +1 -1
  18. package/dist/lib/config.d.ts.map +1 -1
  19. package/dist/lib/local-opt-in.d.ts +132 -0
  20. package/dist/lib/local-opt-in.d.ts.map +1 -0
  21. package/dist/lib/macos-bundle.d.ts +1 -1
  22. package/dist/lib/persistence-probe.d.ts +56 -17
  23. package/dist/lib/persistence-probe.d.ts.map +1 -1
  24. package/dist/lib/transcriber.d.ts.map +1 -1
  25. package/dist/mcp/index.d.ts.map +1 -1
  26. package/dist/mcp/index.js +1689 -456
  27. package/dist/sdk/index.d.ts +13 -5
  28. package/dist/sdk/index.d.ts.map +1 -1
  29. package/dist/sdk/index.js +904 -1
  30. package/dist/sdk/resolve.d.ts +53 -0
  31. package/dist/sdk/resolve.d.ts.map +1 -0
  32. package/dist/sdk/v1.generated.d.ts +6 -0
  33. package/dist/sdk/v1.generated.d.ts.map +1 -1
  34. package/dist/server/client-ip.d.ts +39 -0
  35. package/dist/server/client-ip.d.ts.map +1 -0
  36. package/dist/server/cloud-config.d.ts +12 -0
  37. package/dist/server/cloud-config.d.ts.map +1 -1
  38. package/dist/server/cloud-readiness.d.ts.map +1 -1
  39. package/dist/server/cloud.d.ts +20 -2
  40. package/dist/server/cloud.d.ts.map +1 -1
  41. package/dist/server/index.js +566 -284
  42. package/dist/server/migrate-command.d.ts +1 -1
  43. package/dist/server/migrate-command.d.ts.map +1 -1
  44. package/dist/server/openapi.d.ts +21 -0
  45. package/dist/server/openapi.d.ts.map +1 -1
  46. package/dist/server/repo.d.ts.map +1 -1
  47. package/dist/server/serve.d.ts.map +1 -1
  48. package/dist/storage.d.ts +2 -2
  49. package/dist/storage.d.ts.map +1 -1
  50. package/dist/storage.js +1334 -871
  51. package/dist/store.d.ts +12 -3
  52. package/dist/store.d.ts.map +1 -1
  53. package/dist/types/index.d.ts +15 -0
  54. package/dist/types/index.d.ts.map +1 -1
  55. package/package.json +9 -8
  56. package/packaging/macos/build_release_pkg.sh +3 -3
  57. package/packaging/macos/managed_bootstrap.sh +4 -4
  58. package/packaging/macos/scripts/postinstall +2 -2
  59. package/packaging/macos/scripts/preinstall +2 -2
  60. package/scripts/build_companion_cli.sh +7 -1
  61. package/scripts/install_macos_app.sh +27 -24
  62. package/scripts/macos_artifact.ts +20 -16
  63. package/scripts/migrate.ts +4 -20
  64. package/scripts/smoke_macos_app.sh +21 -21
  65. package/src/native/Recordings/App/ContentView.swift +53 -68
  66. package/src/native/Recordings/App/MenuBarStatusView.swift +171 -61
  67. package/src/native/Recordings/App/RecordWorkspaceView.swift +47 -449
  68. package/src/native/Recordings/App/RecorderSettingsView.swift +75 -0
  69. package/src/native/Recordings/App/RecordingDetailView.swift +3 -4
  70. package/src/native/Recordings/App/RecordingsApp.swift +185 -9
  71. package/src/native/Recordings/App/RecordingsListView.swift +60 -112
  72. package/src/native/Recordings/App/RecordingsStore.swift +124 -109
  73. package/src/native/Recordings/App/Theme.swift +73 -61
  74. package/src/native/Recordings/Package.swift +1 -0
  75. package/src/native/Recordings/RecordingsLib/CaptureMonitor.swift +65 -0
  76. package/src/native/Recordings/RecordingsLib/Info.plist +3 -3
  77. package/src/native/Recordings/RecordingsLib/OpenAIAPIKeyStore.swift +75 -21
  78. package/src/native/Recordings/RecordingsLib/Recording.swift +14 -2
  79. package/src/native/Recordings/RecordingsLib/RecordingEngine.swift +316 -34
  80. package/src/native/Recordings/RecordingsLib/RecordingGlassBackground.swift +34 -0
  81. package/src/native/Recordings/RecordingsLib/RecordingProvider.swift +102 -0
  82. package/src/native/Recordings/RecordingsLib/RecordingsCLI.swift +17 -10
  83. package/src/native/Recordings/RecordingsLib/ServiceAPIConfiguration.swift +107 -0
  84. package/src/native/Recordings/RecordingsLib/ServiceConnectionView.swift +76 -0
  85. package/src/native/Recordings/RecordingsLib/SettingsView.swift +45 -149
  86. package/src/native/Recordings/RecordingsLib/SettingsWindowController.swift +48 -0
  87. package/src/native/Recordings/RecordingsTests/CLIRunnerTests.swift +13 -4
  88. package/src/native/Recordings/RecordingsTests/OpenAIAPIKeyStoreTests.swift +43 -38
  89. package/src/native/Recordings/RecordingsTests/RecorderSurfaceTests.swift +60 -0
  90. package/src/native/Recordings/RecordingsTests/RecordingDateTests.swift +26 -0
  91. package/src/native/Recordings/RecordingsTests/RecordingProviderTests.swift +195 -0
  92. package/src/native/Recordings/RecordingsTests/RecordingStartGateTests.swift +1 -1
  93. package/src/native/Recordings/RecordingsTests/RecordingStartTimingTests.swift +30 -0
  94. package/src/native/Recordings/RecordingsTests/ServiceAPIConfigurationTests.swift +75 -0
  95. package/src/native/Recordings/RecordingsTests/SettingsWindowControllerTests.swift +28 -0
  96. package/src/native/Recordings/Updater/BootstrapPreflight/BootstrapPreflightMain.swift +1 -1
  97. package/src/native/Recordings/Updater/Broker/ApplicationNamespace.swift +2 -2
  98. package/src/native/Recordings/Updater/Broker/BrokerMain.swift +1 -1
  99. package/src/native/Recordings/Updater/Broker/CanonicalTreeCopy.swift +1 -1
  100. package/src/native/Recordings/Updater/Broker/InstallJournal.swift +1 -1
  101. package/src/native/Recordings/Updater/BrokerTests/ActivationRecoveryPolicyTests.swift +2 -2
  102. package/src/native/Recordings/Updater/Protocol/UpdateProtocol.swift +1 -1
  103. package/src/native/Recordings/Updater/VerifierLauncher/RecordingsVerifierLauncher.c +2 -2
  104. package/src/native/Recordings/build.sh +6 -6
  105. package/src/native/Recordings/App/SidebarView.swift +0 -212
@@ -80,7 +80,7 @@ export declare const TOGGLE_RECORDING_DEFAULTS_KEY = "KeyboardShortcuts_toggleRe
80
80
  * thing — and so the claim can be pinned against the Swift source that implements it.
81
81
  *
82
82
  * Verified against the shipped bundle on 2026-07-27 with `nm -u` on
83
- * HasnaRecordings.app/Contents/MacOS/Recordings, which lists `_RegisterEventHotKey` (the
83
+ * Hasna Recordings.app/Contents/MacOS/Recordings, which lists `_RegisterEventHotKey` (the
84
84
  * hotkey) and `_CGEventTapCreate` + `_AXIsProcessTrusted` (the fn monitor).
85
85
  */
86
86
  export interface TriggerGrantRequirement {
@@ -124,7 +124,7 @@ export interface BundleScanProbes {
124
124
  readBundleIdentifier?: BundleIdentifierReader;
125
125
  }
126
126
  /**
127
- * Bundle paths of the HasnaRecordings.app instances currently running.
127
+ * Bundle paths of the Hasna Recordings.app instances currently running.
128
128
  *
129
129
  * TCC grants key to a specific bundle (and, for an unstably-signed build, to its cdhash),
130
130
  * so "which bundle is running" is the only honest answer to "where does the Accessibility
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,eAAO,MAAM,UAAU,UAqFtB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAAwB,CAAC;AAE7D,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAiBrD;AA0ED,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,oEAAoE;AACpE,wBAAgB,UAAU,IAAI,aAAa,CAK1C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,eAAO,MAAM,UAAU,UA8FtB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAAwB,CAAC;AAE7D,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAiBrD;AA6ED,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,oEAAoE;AACpE,wBAAgB,UAAU,IAAI,aAAa,CAK1C;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pg-migrations.d.ts","sourceRoot":"","sources":["../../src/db/pg-migrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,aAAa,EAAE,MAAM,EAgGjC,CAAC"}
1
+ {"version":3,"file":"pg-migrations.d.ts","sourceRoot":"","sources":["../../src/db/pg-migrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,aAAa,EAAE,MAAM,EAuGjC,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import { type Database } from "bun:sqlite";
2
2
  import type { Recording, CreateRecordingInput, RecordingFilter } from "../types/index.js";
3
3
  export declare function createRecording(input: CreateRecordingInput, db?: Database, idempotencyKey?: string): Recording;
4
+ /**
5
+ * Link an uploaded audio object to an existing recording row: object key,
6
+ * content digest and byte size. Called after the artifact kit upload at
7
+ * creation; a no-op shape-wise when the row is missing.
8
+ */
9
+ export declare function updateRecordingAudio(id: string, audioObjectKey: string, audioSha256: string, audioBytes: number, db?: Database): Recording | null;
4
10
  export declare function getRecording(id: string, db?: Database): Recording | null;
5
11
  export declare function listRecordings(filter?: RecordingFilter, db?: Database): Recording[];
6
12
  export declare function countRecordings(filter?: RecordingFilter, db?: Database): number;
@@ -1 +1 @@
1
- {"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../../src/db/recordings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AA4B3B,wBAAgB,eAAe,CAC7B,KAAK,EAAE,oBAAoB,EAC3B,EAAE,CAAC,EAAE,QAAQ,EACb,cAAc,CAAC,EAAE,MAAM,GACtB,SAAS,CAsDX;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,GAAG,IAAI,CAgBlB;AAED,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,eAAe,EACxB,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,EAAE,CASb;AAED,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,eAAe,EACxB,EAAE,CAAC,EAAE,QAAQ,GACZ,MAAM,CAOR;AAsDD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAIT;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,eAAe,EACxB,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,EAAE,CAEb;AAED,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CA2CA"}
1
+ {"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../../src/db/recordings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AA+B3B,wBAAgB,eAAe,CAC7B,KAAK,EAAE,oBAAoB,EAC3B,EAAE,CAAC,EAAE,QAAQ,EACb,cAAc,CAAC,EAAE,MAAM,GACtB,SAAS,CAyDX;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,GAAG,IAAI,CAOlB;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,GAAG,IAAI,CAgBlB;AAED,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,eAAe,EACxB,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,EAAE,CASb;AAED,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,eAAe,EACxB,EAAE,CAAC,EAAE,QAAQ,GACZ,MAAM,CAOR;AAsDD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,MAAM,EACV,EAAE,CAAC,EAAE,QAAQ,GACZ,OAAO,CAIT;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,eAAe,EACxB,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,EAAE,CAEb;AAED,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CA2CA"}
@@ -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"}