@hasna/recordings 0.3.2 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -34
- package/bun.lock +96 -36
- package/dist/__tests__/helpers/source-assertions.d.ts +6 -4
- package/dist/__tests__/helpers/source-assertions.d.ts.map +1 -1
- package/dist/cli/index.js +182 -93
- package/dist/cli/macos-shortcut.d.ts +2 -2
- package/dist/db/pg-migrations.d.ts +1 -1
- package/dist/http/client.d.ts +0 -10
- package/dist/http/client.d.ts.map +1 -1
- package/dist/index.js +162 -73
- package/dist/lib/capture-probe.d.ts +3 -3
- package/dist/lib/capture-probe.d.ts.map +1 -1
- package/dist/lib/macos-bundle.d.ts +1 -1
- package/dist/lib/release-install-policy.d.ts +21 -0
- package/dist/lib/release-install-policy.d.ts.map +1 -1
- package/dist/mcp/index.js +144 -59
- package/dist/sdk/index.d.ts +2 -2
- package/dist/sdk/index.js +7 -3
- package/dist/sdk/v1.generated.d.ts.map +1 -1
- package/dist/server/cloud-config.d.ts +4 -19
- package/dist/server/cloud-config.d.ts.map +1 -1
- package/dist/server/cloud.d.ts +1 -1
- package/dist/server/cloud.d.ts.map +1 -1
- package/dist/server/index.js +168 -110
- package/dist/server/serve.d.ts.map +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +144 -60
- package/dist/store.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/package.json +4 -3
- package/packaging/macos/build_release_pkg.sh +10 -4
- package/packaging/macos/managed_bootstrap.sh +4 -4
- package/packaging/macos/scripts/postinstall +2 -2
- package/packaging/macos/scripts/preinstall +2 -0
- package/scripts/generate-sdk.ts +17 -16
- package/scripts/install_macos_app.sh +22 -22
- package/scripts/macos_artifact.ts +48 -39
- package/scripts/migrate.ts +2 -2
- package/scripts/release-suite-gate.ts +181 -0
- package/scripts/set-version.ts +5 -5
- package/scripts/smoke_macos_app.sh +21 -21
- package/scripts/vacuity-manifests/version-sites.tsv +8 -4
- package/src/native/Recordings/RecordingsLib/Info.plist +3 -3
- package/src/native/Recordings/RecordingsTests/CLIRunnerTests.swift +2 -2
- package/src/native/Recordings/RecordingsTests/RecordingStartGateTests.swift +1 -1
- package/src/native/Recordings/Updater/BootstrapPreflight/BootstrapPreflightMain.swift +1 -1
- package/src/native/Recordings/Updater/Broker/ApplicationNamespace.swift +2 -2
- package/src/native/Recordings/Updater/Broker/BrokerMain.swift +1 -1
- package/src/native/Recordings/Updater/Broker/CanonicalTreeCopy.swift +1 -1
- package/src/native/Recordings/Updater/Broker/InstallJournal.swift +1 -1
- package/src/native/Recordings/Updater/BrokerTests/ActivationRecoveryPolicyTests.swift +2 -2
- package/src/native/Recordings/Updater/Protocol/UpdateProtocol.swift +1 -1
- package/src/native/Recordings/Updater/VerifierLauncher/RecordingsVerifierLauncher.c +2 -2
- package/src/native/Recordings/build.sh +14 -20
- package/dist/lib/retired-deployment-modes.d.ts +0 -24
- package/dist/lib/retired-deployment-modes.d.ts.map +0 -1
package/dist/mcp/index.js
CHANGED
|
@@ -5054,9 +5054,118 @@ function setAgentFocus(idOrName, projectId, db) {
|
|
|
5054
5054
|
d.query("UPDATE agents SET active_project_id = ?, last_seen_at = ? WHERE id = ?").run(resolvedProjectId, new Date().toISOString(), agent.id);
|
|
5055
5055
|
return getAgent(agent.id, d);
|
|
5056
5056
|
}
|
|
5057
|
+
// package.json
|
|
5058
|
+
var package_default = {
|
|
5059
|
+
name: "@hasna/recordings",
|
|
5060
|
+
version: "0.3.8",
|
|
5061
|
+
type: "module",
|
|
5062
|
+
description: "Speech-to-text recording tool with MCP and CLI \u2014 records, transcribes, and optionally enhances text using AI",
|
|
5063
|
+
repository: {
|
|
5064
|
+
type: "git",
|
|
5065
|
+
url: "git+https://github.com/hasna/apps"
|
|
5066
|
+
},
|
|
5067
|
+
main: "dist/index.js",
|
|
5068
|
+
types: "dist/index.d.ts",
|
|
5069
|
+
bin: {
|
|
5070
|
+
recordings: "dist/cli/index.js",
|
|
5071
|
+
"recordings-mcp": "dist/mcp/index.js",
|
|
5072
|
+
"recordings-serve": "dist/server/index.js"
|
|
5073
|
+
},
|
|
5074
|
+
exports: {
|
|
5075
|
+
".": {
|
|
5076
|
+
import: "./dist/index.js",
|
|
5077
|
+
types: "./dist/index.d.ts"
|
|
5078
|
+
},
|
|
5079
|
+
"./storage": {
|
|
5080
|
+
import: "./dist/storage.js",
|
|
5081
|
+
types: "./dist/storage.d.ts"
|
|
5082
|
+
},
|
|
5083
|
+
"./sdk": {
|
|
5084
|
+
import: "./dist/sdk/index.js",
|
|
5085
|
+
types: "./dist/sdk/index.d.ts"
|
|
5086
|
+
}
|
|
5087
|
+
},
|
|
5088
|
+
engines: {
|
|
5089
|
+
bun: ">=1.0.0"
|
|
5090
|
+
},
|
|
5091
|
+
scripts: {
|
|
5092
|
+
clean: "rm -rf dist",
|
|
5093
|
+
build: "bun run clean && bun run build:cli && bun run build:mcp && bun run build:serve && bun run build:lib && tsc --emitDeclarationOnly --outDir dist",
|
|
5094
|
+
"build:cli": "bun build src/cli/index.ts --target=bun --outfile=dist/cli/index.js --external=commander --external=chalk --external=openai",
|
|
5095
|
+
"build:mcp": "bun build src/mcp/index.ts --target=bun --outfile=dist/mcp/index.js --external=@modelcontextprotocol/sdk --external=openai",
|
|
5096
|
+
"build:serve": "bun build src/server/index.ts --target=bun --outfile=dist/server/index.js --external=@modelcontextprotocol/sdk --external=@hasna/contracts --external=openai --external=pg",
|
|
5097
|
+
"build:lib": "bun build src/index.ts src/storage.ts src/sdk/index.ts --target=bun --outdir=dist --external=openai",
|
|
5098
|
+
"build:native-fs-guard": "/bin/bash scripts/build_native_fs_guard.sh",
|
|
5099
|
+
"generate:sdk": "bun run scripts/generate-sdk.ts",
|
|
5100
|
+
migrate: "bun run scripts/migrate.ts",
|
|
5101
|
+
typecheck: "tsc --noEmit",
|
|
5102
|
+
"typecheck:tcc-contract": "tsc --noEmit -p tsconfig.tcc-contract.json",
|
|
5103
|
+
test: "bun test",
|
|
5104
|
+
"verify:ci-suite": "bun scripts/ci-linux-suite.ts --check",
|
|
5105
|
+
"verify:ci-suite:run": "bun scripts/ci-linux-suite.ts --verify-run",
|
|
5106
|
+
"verify:ci-native": "bun scripts/ci-native-build.ts",
|
|
5107
|
+
"test:gated": 'bun scripts/ci-linux-suite.ts --check && RECORDINGS_TEST_TIMEOUT_MS="${RECORDINGS_TEST_TIMEOUT_MS:-120000}" bun test --timeout "$RECORDINGS_TEST_TIMEOUT_MS" $(bun scripts/ci-linux-suite.ts --gated)',
|
|
5108
|
+
"test:vacuity-battery": 'bun scripts/vacuity-manifest-gen.ts > "${TMPDIR:-/tmp}/vacuity-corrupt-sites.tsv" && bun scripts/vacuity-mutation-battery.ts "${TMPDIR:-/tmp}/vacuity-corrupt-sites.tsv"',
|
|
5109
|
+
"test:vacuity-battery:source": "bun scripts/vacuity-mutation-battery.ts scripts/vacuity-manifests/source-side.tsv",
|
|
5110
|
+
"test:vacuity-battery:chain": "bun scripts/vacuity-mutation-battery.ts scripts/vacuity-manifests/install-chain.tsv",
|
|
5111
|
+
"test:vacuity-battery:vars": "bun scripts/vacuity-mutation-battery.ts scripts/vacuity-manifests/variable-operands.tsv",
|
|
5112
|
+
"test:vacuity-battery:reorder": "bun scripts/vacuity-mutation-battery.ts scripts/vacuity-manifests/reorder.tsv",
|
|
5113
|
+
"test:coverage": "bun test --coverage",
|
|
5114
|
+
"dev:cli": "bun run src/cli/index.ts",
|
|
5115
|
+
"desktop:snapshot": "bun run src/cli/index.ts app snapshot",
|
|
5116
|
+
"dev:mcp": "bun run src/mcp/index.ts",
|
|
5117
|
+
"verify:release": "bun run scripts/release-guard.ts",
|
|
5118
|
+
"scan:artifact": "bun run scripts/scan-artifact.ts",
|
|
5119
|
+
"version:set": "bun run scripts/set-version.ts",
|
|
5120
|
+
"version:check": "bun run scripts/set-version.ts --check",
|
|
5121
|
+
prepack: "bun run prepack:platform-gate && bun run version:check && bun run build && bun run verify:release && bun run scan:artifact",
|
|
5122
|
+
"prepack:platform-gate": `bash -c 'if [ "$(uname -s)" = Darwin ]; then bun run build:native-fs-guard; else echo "WARN: native fs-guard build skipped on $(uname -s) \u2014 dry-run/CI pack; publish recordings from macOS"; fi'`,
|
|
5123
|
+
prepublishOnly: "bun run typecheck && bun run release-suite-gate",
|
|
5124
|
+
"release-suite-gate": "bun run scripts/release-suite-gate.ts",
|
|
5125
|
+
"typecheck:shortcut-contract": "tsc --noEmit -p tsconfig.test.json"
|
|
5126
|
+
},
|
|
5127
|
+
files: [
|
|
5128
|
+
"dist/",
|
|
5129
|
+
"scripts/",
|
|
5130
|
+
"Dockerfile.package",
|
|
5131
|
+
"bun.lock",
|
|
5132
|
+
"src/native/Recordings/App/",
|
|
5133
|
+
"src/native/Recordings/RecordingsLib/",
|
|
5134
|
+
"src/native/Recordings/RecordingsTests/",
|
|
5135
|
+
"src/native/Recordings/Updater/",
|
|
5136
|
+
"src/native/Recordings/Package.swift",
|
|
5137
|
+
"src/native/Recordings/Package.resolved",
|
|
5138
|
+
"src/native/Recordings/build.sh",
|
|
5139
|
+
"packaging/macos/",
|
|
5140
|
+
"README.md",
|
|
5141
|
+
"LICENSE"
|
|
5142
|
+
],
|
|
5143
|
+
dependencies: {
|
|
5144
|
+
"@hasna/contracts": "0.13.3",
|
|
5145
|
+
"@hasna/events": "0.1.11",
|
|
5146
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
5147
|
+
chalk: "^5.4.1",
|
|
5148
|
+
commander: "^13.1.0",
|
|
5149
|
+
openai: "^5.1.0",
|
|
5150
|
+
pg: "^8.13.3",
|
|
5151
|
+
zod: "^3.24.2"
|
|
5152
|
+
},
|
|
5153
|
+
devDependencies: {
|
|
5154
|
+
"@types/bun": "^1.2.5",
|
|
5155
|
+
"@types/pg": "^8.11.11",
|
|
5156
|
+
"node-api-headers": "1.9.0",
|
|
5157
|
+
typescript: "^5.8.2"
|
|
5158
|
+
},
|
|
5159
|
+
publishConfig: {
|
|
5160
|
+
registry: "https://registry.npmjs.org",
|
|
5161
|
+
access: "public"
|
|
5162
|
+
},
|
|
5163
|
+
license: "Apache-2.0",
|
|
5164
|
+
author: "Hasna <andrei@hasna.com>"
|
|
5165
|
+
};
|
|
5057
5166
|
|
|
5058
5167
|
// src/version.ts
|
|
5059
|
-
var VERSION =
|
|
5168
|
+
var VERSION = package_default.version;
|
|
5060
5169
|
|
|
5061
5170
|
// src/db/feedback.ts
|
|
5062
5171
|
function saveFeedback(input) {
|
|
@@ -5064,58 +5173,26 @@ function saveFeedback(input) {
|
|
|
5064
5173
|
db.query("INSERT INTO feedback (message, email, category, version) VALUES (?, ?, ?, ?)").run(input.message, input.email ?? null, input.category ?? "general", input.version ?? VERSION);
|
|
5065
5174
|
}
|
|
5066
5175
|
|
|
5067
|
-
// src/lib/retired-deployment-modes.ts
|
|
5068
|
-
var RETIRED_DEPLOYMENT_MODES = [
|
|
5069
|
-
"local",
|
|
5070
|
-
"self_hosted",
|
|
5071
|
-
"cloud",
|
|
5072
|
-
"remote",
|
|
5073
|
-
"hybrid"
|
|
5074
|
-
];
|
|
5075
|
-
function normalizeModeToken(value) {
|
|
5076
|
-
return value.trim().toLowerCase().replace(/-/g, "_");
|
|
5077
|
-
}
|
|
5078
|
-
function asRetiredDeploymentMode(value) {
|
|
5079
|
-
const token = normalizeModeToken(value);
|
|
5080
|
-
return RETIRED_DEPLOYMENT_MODES.includes(token) ? token : null;
|
|
5081
|
-
}
|
|
5082
|
-
function retiredDeploymentModeError(rawValue, sourceEnvKey, replacement) {
|
|
5083
|
-
const mode = asRetiredDeploymentMode(rawValue);
|
|
5084
|
-
const value = mode === "local" ? replacement.onBox : replacement.offBox;
|
|
5085
|
-
return new Error(`${sourceEnvKey}=${rawValue} names a deployment mode, and deployment modes are removed: ` + `${RETIRED_DEPLOYMENT_MODES.join(" | ")} no longer select anything. ` + `Set ${replacement.envKey}=${value} instead ` + `(${replacement.envKey} takes ${replacement.onBox} or ${replacement.offBox}).`);
|
|
5086
|
-
}
|
|
5087
|
-
|
|
5088
5176
|
// src/http/client.ts
|
|
5089
|
-
var SERVER_BACKEND_VALUES = ["sqlite", "postgresql", "postgres"];
|
|
5090
5177
|
function envToken(name) {
|
|
5091
5178
|
return name.toUpperCase().replace(/-/g, "_");
|
|
5092
5179
|
}
|
|
5093
|
-
function
|
|
5094
|
-
|
|
5180
|
+
function envKeys(name) {
|
|
5181
|
+
const token = envToken(name);
|
|
5182
|
+
return {
|
|
5183
|
+
storeKeys: [`HASNA_${token}_CLIENT_STORE`, `${token}_CLIENT_STORE`],
|
|
5184
|
+
apiUrlKeys: [`HASNA_${token}_API_URL`],
|
|
5185
|
+
apiKeyKeys: [`HASNA_${token}_API_KEY`]
|
|
5186
|
+
};
|
|
5095
5187
|
}
|
|
5096
|
-
function normalizeClientStore(value
|
|
5097
|
-
const normalized =
|
|
5188
|
+
function normalizeClientStore(value) {
|
|
5189
|
+
const normalized = value.trim().toLowerCase();
|
|
5098
5190
|
if (normalized === "sqlite")
|
|
5099
5191
|
return "sqlite";
|
|
5100
5192
|
if (normalized === "http" || normalized === "https")
|
|
5101
5193
|
return "http";
|
|
5102
|
-
if (asRetiredDeploymentMode(value)) {
|
|
5103
|
-
throw retiredDeploymentModeError(value, sourceEnvKey, clientStoreReplacement(replacementEnvKey));
|
|
5104
|
-
}
|
|
5105
5194
|
throw new Error(`Unknown client store: ${value}. Use sqlite or http.`);
|
|
5106
5195
|
}
|
|
5107
|
-
function defaultApiBaseUrl(name) {
|
|
5108
|
-
return `http://localhost:8874`;
|
|
5109
|
-
}
|
|
5110
|
-
function envKeys(name) {
|
|
5111
|
-
const token = envToken(name);
|
|
5112
|
-
return {
|
|
5113
|
-
storeKeys: [`HASNA_${token}_CLIENT_STORE`, `${token}_CLIENT_STORE`],
|
|
5114
|
-
retiredModeKeys: [`HASNA_${token}_STORAGE_MODE`, `HASNA_${token}_MODE`, `${token}_STORAGE_MODE`, `${token}_MODE`],
|
|
5115
|
-
apiUrlKeys: [`HASNA_${token}_API_URL`, `${token}_API_URL`],
|
|
5116
|
-
apiKeyKeys: [`HASNA_${token}_API_KEY`, `${token}_API_KEY`]
|
|
5117
|
-
};
|
|
5118
|
-
}
|
|
5119
5196
|
function firstEnv(env, keys) {
|
|
5120
5197
|
for (const key of keys) {
|
|
5121
5198
|
const value = env[key]?.trim();
|
|
@@ -5124,20 +5201,6 @@ function firstEnv(env, keys) {
|
|
|
5124
5201
|
}
|
|
5125
5202
|
return null;
|
|
5126
5203
|
}
|
|
5127
|
-
function assertNoRetiredMode(env, keys) {
|
|
5128
|
-
for (const key of keys.retiredModeKeys) {
|
|
5129
|
-
const value = env[key]?.trim();
|
|
5130
|
-
if (!value)
|
|
5131
|
-
continue;
|
|
5132
|
-
const normalized = normalizeModeToken(value);
|
|
5133
|
-
if (SERVER_BACKEND_VALUES.includes(normalized))
|
|
5134
|
-
continue;
|
|
5135
|
-
if (asRetiredDeploymentMode(value)) {
|
|
5136
|
-
throw retiredDeploymentModeError(value, key, clientStoreReplacement(keys.storeKeys[0]));
|
|
5137
|
-
}
|
|
5138
|
-
throw new Error(`${key}=${value} is not a client store. ${key} no longer selects one; ` + `set ${keys.storeKeys[0]}=sqlite or ${keys.storeKeys[0]}=http instead.`);
|
|
5139
|
-
}
|
|
5140
|
-
}
|
|
5141
5204
|
function toV1BaseUrl(apiUrl) {
|
|
5142
5205
|
const url = new URL(apiUrl);
|
|
5143
5206
|
if (url.protocol !== "http:" && url.protocol !== "https:") {
|
|
@@ -5153,22 +5216,44 @@ function toV1BaseUrl(apiUrl) {
|
|
|
5153
5216
|
}
|
|
5154
5217
|
function resolveTransport(name, env = process.env) {
|
|
5155
5218
|
const keys = envKeys(name);
|
|
5156
|
-
assertNoRetiredMode(env, keys);
|
|
5157
5219
|
const storeHit = firstEnv(env, keys.storeKeys);
|
|
5158
5220
|
const urlHit = firstEnv(env, keys.apiUrlKeys);
|
|
5159
5221
|
const keyHit = firstEnv(env, keys.apiKeyKeys);
|
|
5160
5222
|
let requested = "sqlite";
|
|
5161
5223
|
let modeSource = "default";
|
|
5162
5224
|
if (storeHit) {
|
|
5163
|
-
requested = normalizeClientStore(storeHit.value
|
|
5225
|
+
requested = normalizeClientStore(storeHit.value);
|
|
5164
5226
|
modeSource = storeHit.key;
|
|
5165
5227
|
} else if (urlHit && keyHit) {
|
|
5166
5228
|
requested = "http";
|
|
5167
5229
|
modeSource = "auto:api-url+api-key";
|
|
5230
|
+
} else if (urlHit || keyHit) {
|
|
5231
|
+
const missing = urlHit ? keys.apiKeyKeys[0] : keys.apiUrlKeys[0];
|
|
5232
|
+
const present = urlHit ? keys.apiUrlKeys[0] : keys.apiKeyKeys[0];
|
|
5233
|
+
return {
|
|
5234
|
+
transport: "sqlite",
|
|
5235
|
+
requested,
|
|
5236
|
+
modeSource,
|
|
5237
|
+
baseUrl: null,
|
|
5238
|
+
apiKeyPresent: Boolean(keyHit),
|
|
5239
|
+
misconfigured: true,
|
|
5240
|
+
warning: `${present} is set but ${missing} is not: the hosted API is only ` + `selected when BOTH are present. Set ${missing}, or unset ${present} to ` + `use the on-box store.`
|
|
5241
|
+
};
|
|
5168
5242
|
}
|
|
5169
5243
|
if (requested === "sqlite") {
|
|
5170
5244
|
return { transport: "sqlite", requested, modeSource, baseUrl: null, apiKeyPresent: Boolean(keyHit), misconfigured: false, warning: null };
|
|
5171
5245
|
}
|
|
5246
|
+
if (!urlHit) {
|
|
5247
|
+
return {
|
|
5248
|
+
transport: "sqlite",
|
|
5249
|
+
requested,
|
|
5250
|
+
modeSource,
|
|
5251
|
+
baseUrl: null,
|
|
5252
|
+
apiKeyPresent: Boolean(keyHit),
|
|
5253
|
+
misconfigured: true,
|
|
5254
|
+
warning: `${modeSource}=http but no API URL is set (${keys.apiUrlKeys[0]}). Refusing to route to the API.`
|
|
5255
|
+
};
|
|
5256
|
+
}
|
|
5172
5257
|
if (!keyHit) {
|
|
5173
5258
|
return {
|
|
5174
5259
|
transport: "sqlite",
|
|
@@ -5180,7 +5265,7 @@ function resolveTransport(name, env = process.env) {
|
|
|
5180
5265
|
warning: `${modeSource}=http but no API key is set (${keys.apiKeyKeys[0]}). Refusing to route to the API.`
|
|
5181
5266
|
};
|
|
5182
5267
|
}
|
|
5183
|
-
const rawUrl = urlHit
|
|
5268
|
+
const rawUrl = urlHit.value;
|
|
5184
5269
|
let baseUrl;
|
|
5185
5270
|
try {
|
|
5186
5271
|
baseUrl = toV1BaseUrl(rawUrl);
|
package/dist/sdk/index.d.ts
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* import { RecordingsV1Client } from "@hasna/recordings/sdk";
|
|
8
8
|
* const client = new RecordingsV1Client({
|
|
9
|
-
* baseUrl: process.env.
|
|
10
|
-
* apiKey: process.env.
|
|
9
|
+
* baseUrl: process.env.HASNA_RECORDINGS_API_URL!,
|
|
10
|
+
* apiKey: process.env.HASNA_RECORDINGS_API_KEY!,
|
|
11
11
|
* });
|
|
12
12
|
* const { recordings } = await client.listRecordings({ limit: 20 });
|
|
13
13
|
*/
|
package/dist/sdk/index.js
CHANGED
|
@@ -30,10 +30,14 @@ class RecordingsV1Client {
|
|
|
30
30
|
const url = new URL(this.baseUrl + path);
|
|
31
31
|
if (opts.query) {
|
|
32
32
|
for (const [key, value] of Object.entries(opts.query)) {
|
|
33
|
+
if (value === undefined || value === null)
|
|
34
|
+
continue;
|
|
33
35
|
if (Array.isArray(value)) {
|
|
34
|
-
for (const item of value)
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
for (const item of value) {
|
|
37
|
+
if (item !== undefined && item !== null)
|
|
38
|
+
url.searchParams.append(key, String(item));
|
|
39
|
+
}
|
|
40
|
+
} else {
|
|
37
41
|
url.searchParams.set(key, String(value));
|
|
38
42
|
}
|
|
39
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v1.generated.d.ts","sourceRoot":"","sources":["../../src/sdk/v1.generated.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"v1.generated.d.ts","sourceRoot":"","sources":["../../src/sdk/v1.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
/** The server's internal storage engine. Two arms, no third. */
|
|
2
2
|
export type DataBackend = "sqlite" | "postgresql";
|
|
3
|
-
/**
|
|
4
|
-
export declare
|
|
5
|
-
/** Resolve the Postgres DSN from the supported env vars (priority order). */
|
|
6
|
-
export declare function resolveCloudDatabaseUrl(env?: NodeJS.ProcessEnv): string | undefined;
|
|
3
|
+
/** Resolve the PostgreSQL DSN from the supported env vars (priority order). */
|
|
4
|
+
export declare function resolveDatabaseUrl(env?: NodeJS.ProcessEnv): string | undefined;
|
|
7
5
|
/**
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
* Throws — never normalizes — on a retired deployment word or an unrecognized
|
|
11
|
-
* value. Before this change, ONLY `remote` and `hybrid` were recognized here and
|
|
12
|
-
* every other value (including `self_hosted`, including a typo) fell silently
|
|
13
|
-
* through to "is a DATABASE_URL set?", so the operator's stated intent was
|
|
14
|
-
* discarded without a word.
|
|
15
|
-
*/
|
|
16
|
-
export declare function configuredDataBackend(env?: NodeJS.ProcessEnv): {
|
|
17
|
-
backend: DataBackend;
|
|
18
|
-
source: string;
|
|
19
|
-
} | null;
|
|
20
|
-
/**
|
|
21
|
-
* The backend this process will use. An explicit setting wins; otherwise the
|
|
22
|
-
* presence of a DSN is taken as the request for `postgresql`.
|
|
6
|
+
* The backend this process will use: `postgresql` when a DSN is present,
|
|
7
|
+
* `sqlite` otherwise.
|
|
23
8
|
*/
|
|
24
9
|
export declare function resolveDataBackend(env?: NodeJS.ProcessEnv): DataBackend;
|
|
25
10
|
/** True when this process serves `/v1` out of PostgreSQL. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-config.d.ts","sourceRoot":"","sources":["../../src/server/cloud-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cloud-config.d.ts","sourceRoot":"","sources":["../../src/server/cloud-config.ts"],"names":[],"mappings":"AASA,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,YAAY,CAAC;AAElD,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAO3F;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,CAEpF;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEtF;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAO7F;AAED,gGAAgG;AAChG,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAWjF"}
|
package/dist/server/cloud.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { type ApiKeyVerifier } from "@hasna/contracts/auth";
|
|
|
14
14
|
import { ApiKeyStore } from "@hasna/contracts/auth";
|
|
15
15
|
import { PgAdapterAsync } from "../db/remote-storage.js";
|
|
16
16
|
export declare const RECORDINGS_APP_SLUG = "recordings";
|
|
17
|
-
export { isPostgresBackendEnabled, resolveDataBackend,
|
|
17
|
+
export { isPostgresBackendEnabled, resolveDataBackend, requireSigningSecret, resolveDatabaseUrl, resolveSigningSecret, } from "./cloud-config.js";
|
|
18
18
|
export type { DataBackend } from "./cloud-config.js";
|
|
19
19
|
/** The pure-remote Postgres adapter backing every `/v1` handler. */
|
|
20
20
|
export declare function getCloudPg(): PgAdapterAsync;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/server/cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAwB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAYzD,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/server/cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAwB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAYzD,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,oEAAoE;AACpE,wBAAgB,UAAU,IAAI,cAAc,CAU3C;AAsBD,wBAAgB,cAAc,IAAI,WAAW,CAI5C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAUjD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAExD;AAED,mFAAmF;AACnF,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOvD;AAED,wBAAsB,qBAAqB,CACzC,EAAE,GAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAgB,GAC7C,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wEAAwE;AACxE,wBAAsB,SAAS,CAC7B,EAAE,GAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,CAAgB,GACrD,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,4BAA4B;AAC5B,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAMhD"}
|