@hasna/recordings 0.2.7 → 0.2.9
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/dist/cli/index.js +6 -3
- package/dist/db/errors.d.ts +9 -0
- package/dist/db/errors.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/mcp/index.js +6 -3
- package/dist/server/index.js +22 -9
- package/dist/server/repo.d.ts +2 -2
- package/dist/server/repo.d.ts.map +1 -1
- package/dist/server/v1.d.ts.map +1 -1
- package/dist/storage.js +6 -3
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -940,14 +940,17 @@ var DEFAULT_CONFIG = {
|
|
|
940
940
|
function loadConfig(configPath) {
|
|
941
941
|
const config = { ...DEFAULT_CONFIG };
|
|
942
942
|
const filePath = configPath || findConfigFile() || join2(getDataDir(), "config.json");
|
|
943
|
+
let fileProvidedOpenAIKey = false;
|
|
943
944
|
if (existsSync2(filePath)) {
|
|
944
945
|
try {
|
|
945
946
|
const raw = readFileSync(filePath, "utf-8");
|
|
946
947
|
const fileConfig = JSON.parse(raw);
|
|
947
|
-
|
|
948
|
+
const expanded = expandEnvBackedConfig(fileConfig);
|
|
949
|
+
Object.assign(config, expanded);
|
|
950
|
+
fileProvidedOpenAIKey = typeof expanded.openai_api_key === "string" && expanded.openai_api_key.length > 0;
|
|
948
951
|
} catch {}
|
|
949
952
|
}
|
|
950
|
-
if (process.env.OPENAI_API_KEY) {
|
|
953
|
+
if (process.env.OPENAI_API_KEY && !fileProvidedOpenAIKey) {
|
|
951
954
|
config.openai_api_key = process.env.OPENAI_API_KEY;
|
|
952
955
|
}
|
|
953
956
|
if (process.env.RECORDINGS_API_KEY) {
|
|
@@ -1515,7 +1518,7 @@ function setAgentFocus(idOrName, projectId, db) {
|
|
|
1515
1518
|
}
|
|
1516
1519
|
|
|
1517
1520
|
// src/version.ts
|
|
1518
|
-
var VERSION = "0.2.
|
|
1521
|
+
var VERSION = "0.2.9";
|
|
1519
1522
|
|
|
1520
1523
|
// src/db/feedback.ts
|
|
1521
1524
|
function saveFeedback(input) {
|
package/dist/db/errors.d.ts
CHANGED
|
@@ -12,4 +12,13 @@ export declare class ProjectNotFoundError extends Error {
|
|
|
12
12
|
readonly ref: string;
|
|
13
13
|
constructor(ref: string);
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Thrown for invalid client input (missing/blank required fields). Its message
|
|
17
|
+
* is safe to surface to the caller as a clean 400. This is distinct from an
|
|
18
|
+
* unexpected internal/DB error, whose raw text (e.g. a Postgres constraint name)
|
|
19
|
+
* must NEVER be returned to the client.
|
|
20
|
+
*/
|
|
21
|
+
export declare class ValidationError extends Error {
|
|
22
|
+
constructor(message: string);
|
|
23
|
+
}
|
|
15
24
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/db/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,GAAG,EAAE,MAAM;CAKxB"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,GAAG,EAAE,MAAM;CAKxB;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/index.js
CHANGED
|
@@ -232,14 +232,17 @@ var DEFAULT_CONFIG = {
|
|
|
232
232
|
function loadConfig(configPath) {
|
|
233
233
|
const config = { ...DEFAULT_CONFIG };
|
|
234
234
|
const filePath = configPath || findConfigFile() || join(getDataDir(), "config.json");
|
|
235
|
+
let fileProvidedOpenAIKey = false;
|
|
235
236
|
if (existsSync(filePath)) {
|
|
236
237
|
try {
|
|
237
238
|
const raw = readFileSync(filePath, "utf-8");
|
|
238
239
|
const fileConfig = JSON.parse(raw);
|
|
239
|
-
|
|
240
|
+
const expanded = expandEnvBackedConfig(fileConfig);
|
|
241
|
+
Object.assign(config, expanded);
|
|
242
|
+
fileProvidedOpenAIKey = typeof expanded.openai_api_key === "string" && expanded.openai_api_key.length > 0;
|
|
240
243
|
} catch {}
|
|
241
244
|
}
|
|
242
|
-
if (process.env.OPENAI_API_KEY) {
|
|
245
|
+
if (process.env.OPENAI_API_KEY && !fileProvidedOpenAIKey) {
|
|
243
246
|
config.openai_api_key = process.env.OPENAI_API_KEY;
|
|
244
247
|
}
|
|
245
248
|
if (process.env.RECORDINGS_API_KEY) {
|
|
@@ -774,7 +777,7 @@ function setAgentFocus(idOrName, projectId, db) {
|
|
|
774
777
|
}
|
|
775
778
|
|
|
776
779
|
// src/version.ts
|
|
777
|
-
var VERSION = "0.2.
|
|
780
|
+
var VERSION = "0.2.9";
|
|
778
781
|
|
|
779
782
|
// src/db/feedback.ts
|
|
780
783
|
function saveFeedback(input) {
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,cAAc,EAAE,gBA2B5B,CAAC;AAEF,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,eAAO,MAAM,cAAc,EAAE,gBA2B5B,CAAC;AAEF,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAmFhE;AAmBD,wBAAgB,UAAU,IAAI,MAAM,CAoBnC;AAwFD,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAU5D"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -4073,14 +4073,17 @@ var DEFAULT_CONFIG = {
|
|
|
4073
4073
|
function loadConfig(configPath) {
|
|
4074
4074
|
const config = { ...DEFAULT_CONFIG };
|
|
4075
4075
|
const filePath = configPath || findConfigFile() || join(getDataDir(), "config.json");
|
|
4076
|
+
let fileProvidedOpenAIKey = false;
|
|
4076
4077
|
if (existsSync(filePath)) {
|
|
4077
4078
|
try {
|
|
4078
4079
|
const raw = readFileSync(filePath, "utf-8");
|
|
4079
4080
|
const fileConfig = JSON.parse(raw);
|
|
4080
|
-
|
|
4081
|
+
const expanded = expandEnvBackedConfig(fileConfig);
|
|
4082
|
+
Object.assign(config, expanded);
|
|
4083
|
+
fileProvidedOpenAIKey = typeof expanded.openai_api_key === "string" && expanded.openai_api_key.length > 0;
|
|
4081
4084
|
} catch {}
|
|
4082
4085
|
}
|
|
4083
|
-
if (process.env.OPENAI_API_KEY) {
|
|
4086
|
+
if (process.env.OPENAI_API_KEY && !fileProvidedOpenAIKey) {
|
|
4084
4087
|
config.openai_api_key = process.env.OPENAI_API_KEY;
|
|
4085
4088
|
}
|
|
4086
4089
|
if (process.env.RECORDINGS_API_KEY) {
|
|
@@ -4648,7 +4651,7 @@ function setAgentFocus(idOrName, projectId, db) {
|
|
|
4648
4651
|
}
|
|
4649
4652
|
|
|
4650
4653
|
// src/version.ts
|
|
4651
|
-
var VERSION = "0.2.
|
|
4654
|
+
var VERSION = "0.2.9";
|
|
4652
4655
|
|
|
4653
4656
|
// src/db/feedback.ts
|
|
4654
4657
|
function saveFeedback(input) {
|
package/dist/server/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
|
18
18
|
var __require = import.meta.require;
|
|
19
19
|
|
|
20
20
|
// src/version.ts
|
|
21
|
-
var VERSION = "0.2.
|
|
21
|
+
var VERSION = "0.2.9";
|
|
22
22
|
|
|
23
23
|
// src/db/remote-storage.ts
|
|
24
24
|
import pg from "pg";
|
|
@@ -262,7 +262,7 @@ var init_cloud = __esm(() => {
|
|
|
262
262
|
});
|
|
263
263
|
|
|
264
264
|
// src/db/errors.ts
|
|
265
|
-
var ProjectNotFoundError;
|
|
265
|
+
var ProjectNotFoundError, ValidationError;
|
|
266
266
|
var init_errors = __esm(() => {
|
|
267
267
|
ProjectNotFoundError = class ProjectNotFoundError extends Error {
|
|
268
268
|
ref;
|
|
@@ -272,6 +272,12 @@ var init_errors = __esm(() => {
|
|
|
272
272
|
this.ref = ref;
|
|
273
273
|
}
|
|
274
274
|
};
|
|
275
|
+
ValidationError = class ValidationError extends Error {
|
|
276
|
+
constructor(message) {
|
|
277
|
+
super(message);
|
|
278
|
+
this.name = "ValidationError";
|
|
279
|
+
}
|
|
280
|
+
};
|
|
275
281
|
});
|
|
276
282
|
|
|
277
283
|
// src/server/repo.ts
|
|
@@ -335,7 +341,7 @@ function parseProject(row) {
|
|
|
335
341
|
}
|
|
336
342
|
async function createRecording(pg2, input) {
|
|
337
343
|
if (typeof input.raw_text !== "string" || !input.raw_text) {
|
|
338
|
-
throw new
|
|
344
|
+
throw new ValidationError("raw_text is required");
|
|
339
345
|
}
|
|
340
346
|
const id = shortUuid();
|
|
341
347
|
await pg2.run(`INSERT INTO recordings (id, audio_path, raw_text, processed_text, processing_mode, model_used, enhancement_model, duration_ms, language, tags, agent_id, project_id, session_id, goal, role, task_list_id, machine_id, metadata)
|
|
@@ -423,7 +429,7 @@ async function getRecordingStats(pg2) {
|
|
|
423
429
|
}
|
|
424
430
|
async function registerAgent(pg2, name, description, role) {
|
|
425
431
|
if (!name)
|
|
426
|
-
throw new
|
|
432
|
+
throw new ValidationError("name is required");
|
|
427
433
|
const now = new Date().toISOString();
|
|
428
434
|
const existing = await pg2.get("SELECT * FROM agents WHERE name = ?", name);
|
|
429
435
|
if (existing) {
|
|
@@ -471,7 +477,7 @@ async function setAgentFocus(pg2, idOrName, projectId) {
|
|
|
471
477
|
}
|
|
472
478
|
async function registerProject(pg2, name, path, description) {
|
|
473
479
|
if (!name || !path)
|
|
474
|
-
throw new
|
|
480
|
+
throw new ValidationError("name and path are required");
|
|
475
481
|
const now = new Date().toISOString();
|
|
476
482
|
const existing = await pg2.get("SELECT * FROM projects WHERE path = ?", path);
|
|
477
483
|
if (existing) {
|
|
@@ -501,7 +507,7 @@ async function listProjects(pg2) {
|
|
|
501
507
|
}
|
|
502
508
|
async function saveFeedback(pg2, input) {
|
|
503
509
|
if (typeof input.message !== "string" || !input.message.trim()) {
|
|
504
|
-
throw new
|
|
510
|
+
throw new ValidationError("message is required");
|
|
505
511
|
}
|
|
506
512
|
await pg2.run("INSERT INTO feedback (message, email, category, version) VALUES (?, ?, ?, ?)", input.message, input.email || null, input.category || "general", input.version || null);
|
|
507
513
|
return { saved: true };
|
|
@@ -679,7 +685,11 @@ async function handleV1Request(req, url) {
|
|
|
679
685
|
}
|
|
680
686
|
return error(404, `unknown /v1 resource: ${resource ?? ""}`);
|
|
681
687
|
} catch (e) {
|
|
682
|
-
|
|
688
|
+
if (e instanceof ProjectNotFoundError || e instanceof ValidationError) {
|
|
689
|
+
return error(400, e.message);
|
|
690
|
+
}
|
|
691
|
+
console.error(`[recordings-serve] unhandled ${method} ${path} error:`, e);
|
|
692
|
+
return error(500, "internal server error");
|
|
683
693
|
}
|
|
684
694
|
}
|
|
685
695
|
var JSON_HEADERS;
|
|
@@ -5072,14 +5082,17 @@ import { homedir } from "os";
|
|
|
5072
5082
|
function loadConfig(configPath) {
|
|
5073
5083
|
const config = { ...DEFAULT_CONFIG };
|
|
5074
5084
|
const filePath = configPath || findConfigFile() || join(getDataDir(), "config.json");
|
|
5085
|
+
let fileProvidedOpenAIKey = false;
|
|
5075
5086
|
if (existsSync(filePath)) {
|
|
5076
5087
|
try {
|
|
5077
5088
|
const raw = readFileSync(filePath, "utf-8");
|
|
5078
5089
|
const fileConfig = JSON.parse(raw);
|
|
5079
|
-
|
|
5090
|
+
const expanded = expandEnvBackedConfig(fileConfig);
|
|
5091
|
+
Object.assign(config, expanded);
|
|
5092
|
+
fileProvidedOpenAIKey = typeof expanded.openai_api_key === "string" && expanded.openai_api_key.length > 0;
|
|
5080
5093
|
} catch {}
|
|
5081
5094
|
}
|
|
5082
|
-
if (process.env.OPENAI_API_KEY) {
|
|
5095
|
+
if (process.env.OPENAI_API_KEY && !fileProvidedOpenAIKey) {
|
|
5083
5096
|
config.openai_api_key = process.env.OPENAI_API_KEY;
|
|
5084
5097
|
}
|
|
5085
5098
|
if (process.env.RECORDINGS_API_KEY) {
|
package/dist/server/repo.d.ts
CHANGED
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
* stubs — every operation executes real SQL.
|
|
13
13
|
*/
|
|
14
14
|
import type { PgAdapterAsync } from "../db/remote-storage.js";
|
|
15
|
-
import { ProjectNotFoundError } from "../db/errors.js";
|
|
15
|
+
import { ProjectNotFoundError, ValidationError } from "../db/errors.js";
|
|
16
16
|
import type { Recording, CreateRecordingInput, RecordingFilter, Agent, Project } from "../types/index.js";
|
|
17
|
-
export { ProjectNotFoundError };
|
|
17
|
+
export { ProjectNotFoundError, ValidationError };
|
|
18
18
|
export declare function createRecording(pg: PgAdapterAsync, input: CreateRecordingInput): Promise<Recording>;
|
|
19
19
|
export declare function getRecording(pg: PgAdapterAsync, id: string): Promise<Recording | null>;
|
|
20
20
|
export declare function listRecordings(pg: PgAdapterAsync, filter?: RecordingFilter): Promise<Recording[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/server/repo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/server/repo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,KAAK,EACL,OAAO,EACR,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAC;AAiEjD,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,SAAS,CAAC,CAyCpB;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,cAAc,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAU3B;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,SAAS,EAAE,CAAC,CAgDtB;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,eAAe,GACvB,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IACnE,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,CAAC,CA0BD;AAID,wBAAsB,aAAa,CACjC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,EAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GACnB,OAAO,CAAC,KAAK,CAAC,CAqBhB;AAED,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAevB;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAKrE;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CASvB;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAoBvB;AAID,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAC1B,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAuBzB;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAKzE;AAID,wBAAsB,YAAY,CAChC,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnG,OAAO,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAC,CAY1B"}
|
package/dist/server/v1.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v1.d.ts","sourceRoot":"","sources":["../../src/server/v1.ts"],"names":[],"mappings":"AAkCA;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"v1.d.ts","sourceRoot":"","sources":["../../src/server/v1.ts"],"names":[],"mappings":"AAkCA;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAsLtF"}
|
package/dist/storage.js
CHANGED
|
@@ -71,14 +71,17 @@ var DEFAULT_CONFIG = {
|
|
|
71
71
|
function loadConfig(configPath) {
|
|
72
72
|
const config = { ...DEFAULT_CONFIG };
|
|
73
73
|
const filePath = configPath || findConfigFile() || join(getDataDir(), "config.json");
|
|
74
|
+
let fileProvidedOpenAIKey = false;
|
|
74
75
|
if (existsSync(filePath)) {
|
|
75
76
|
try {
|
|
76
77
|
const raw = readFileSync(filePath, "utf-8");
|
|
77
78
|
const fileConfig = JSON.parse(raw);
|
|
78
|
-
|
|
79
|
+
const expanded = expandEnvBackedConfig(fileConfig);
|
|
80
|
+
Object.assign(config, expanded);
|
|
81
|
+
fileProvidedOpenAIKey = typeof expanded.openai_api_key === "string" && expanded.openai_api_key.length > 0;
|
|
79
82
|
} catch {}
|
|
80
83
|
}
|
|
81
|
-
if (process.env.OPENAI_API_KEY) {
|
|
84
|
+
if (process.env.OPENAI_API_KEY && !fileProvidedOpenAIKey) {
|
|
82
85
|
config.openai_api_key = process.env.OPENAI_API_KEY;
|
|
83
86
|
}
|
|
84
87
|
if (process.env.RECORDINGS_API_KEY) {
|
|
@@ -613,7 +616,7 @@ function setAgentFocus(idOrName, projectId, db) {
|
|
|
613
616
|
}
|
|
614
617
|
|
|
615
618
|
// src/version.ts
|
|
616
|
-
var VERSION = "0.2.
|
|
619
|
+
var VERSION = "0.2.9";
|
|
617
620
|
|
|
618
621
|
// src/db/feedback.ts
|
|
619
622
|
function saveFeedback(input) {
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.2.
|
|
1
|
+
export declare const VERSION = "0.2.9";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED