@hasna/brains 0.0.17 → 0.0.19

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 CHANGED
@@ -14976,7 +14976,7 @@ function mapRelationalRow(tablesConfig, tableConfig, row, buildQueryResultSelect
14976
14976
  }
14977
14977
 
14978
14978
  // src/cli/index.ts
14979
- import { readFileSync as readFileSync7 } from "fs";
14979
+ import { readFileSync as readFileSync8 } from "fs";
14980
14980
  import { join as join14 } from "path";
14981
14981
 
14982
14982
  // node_modules/drizzle-orm/bun-sqlite/driver.js
@@ -23788,8 +23788,8 @@ async function listCollections(json = false) {
23788
23788
  }
23789
23789
  function registerCollectionsCommands(program2) {
23790
23790
  const collectionsCmd = program2.command("collections").description("Manage model collections");
23791
- collectionsCmd.option("--json", "Output as JSON").action(async (opts) => {
23792
- await listCollections(opts.json);
23791
+ collectionsCmd.action(async () => {
23792
+ await listCollections(false);
23793
23793
  });
23794
23794
  collectionsCmd.command("list").description("List all collections with model counts").option("--json", "Output as JSON").action(async (opts) => {
23795
23795
  await listCollections(opts.json);
@@ -23991,9 +23991,36 @@ function registerCloudCommands2(program2) {
23991
23991
  });
23992
23992
  }
23993
23993
 
23994
+ // src/lib/package-metadata.ts
23995
+ import { existsSync as existsSync12, readFileSync as readFileSync7 } from "fs";
23996
+ import { dirname as dirname3, resolve as resolve2 } from "path";
23997
+ import { fileURLToPath } from "url";
23998
+ var DEFAULT_VERSION = "0.0.0";
23999
+ var cachedVersion;
24000
+ function getPackageJsonPath() {
24001
+ return resolve2(dirname3(fileURLToPath(import.meta.url)), "../../package.json");
24002
+ }
24003
+ function getPackageVersion() {
24004
+ if (cachedVersion) {
24005
+ return cachedVersion;
24006
+ }
24007
+ const packageJsonPath = getPackageJsonPath();
24008
+ if (!existsSync12(packageJsonPath)) {
24009
+ cachedVersion = DEFAULT_VERSION;
24010
+ return cachedVersion;
24011
+ }
24012
+ try {
24013
+ const packageJson = JSON.parse(readFileSync7(packageJsonPath, "utf-8"));
24014
+ cachedVersion = typeof packageJson.version === "string" ? packageJson.version : DEFAULT_VERSION;
24015
+ } catch {
24016
+ cachedVersion = DEFAULT_VERSION;
24017
+ }
24018
+ return cachedVersion;
24019
+ }
24020
+
23994
24021
  // src/cli/index.ts
23995
24022
  var program2 = new Command;
23996
- program2.name("brains").description("Fine-tuned model tracker and trainer").version("0.0.1");
24023
+ program2.name("brains").description("Fine-tuned model tracker and trainer").version(getPackageVersion());
23997
24024
  registerModelsCommands(program2);
23998
24025
  registerFinetuneCommands(program2);
23999
24026
  registerDataCommands(program2);
@@ -24072,7 +24099,7 @@ var feedbackCmd = program2.command("feedback").description("Feedback commands");
24072
24099
  feedbackCmd.command("send <message>").description("Send feedback about brains").option("--email <email>", "Contact email").action(async (message, opts) => {
24073
24100
  const { sendFeedback: sendFeedback2 } = await Promise.resolve().then(() => (init_dist(), exports_dist));
24074
24101
  const rawDb = getRawDb();
24075
- const pkg = JSON.parse(readFileSync7(join14(import.meta.dir, "../../package.json"), "utf8"));
24102
+ const pkg = JSON.parse(readFileSync8(join14(import.meta.dir, "../../package.json"), "utf8"));
24076
24103
  const result = await sendFeedback2({ service: "brains", message, email: opts.email, version: pkg.version }, rawDb);
24077
24104
  rawDb.close();
24078
24105
  if (result.sent) {
@@ -1,3 +1,8 @@
1
1
  #!/usr/bin/env bun
2
2
  export declare function createServerFetchHandler(): (req: Request) => Response | Promise<Response>;
3
+ export declare function resolveServerPort(argv: string[], envPort: string | undefined): {
4
+ port?: number;
5
+ showHelp: boolean;
6
+ error?: string;
7
+ };
3
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AAwBA,wBAAgB,wBAAwB,KAChB,KAAK,OAAO,KAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8ClE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";AAwBA,wBAAgB,wBAAwB,KAChB,KAAK,OAAO,KAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8ClE;AAyHD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBnI"}
@@ -14187,11 +14187,50 @@ async function handleGather(req) {
14187
14187
  }
14188
14188
  return json({ datasets: saved, total_examples: saved.reduce((s, d) => s + d.count, 0) });
14189
14189
  }
14190
- var port = Number(process.env["PORT"] ?? 7020);
14190
+ var USAGE = `Usage: brains-serve [options]
14191
+
14192
+ Options:
14193
+ -p, --port <number> Port to bind (default: PORT env or 7020)
14194
+ -h, --help Show this help message`;
14195
+ function resolveServerPort(argv, envPort) {
14196
+ let port = Number(envPort ?? 7020);
14197
+ for (let i = 0;i < argv.length; i += 1) {
14198
+ const arg = argv[i];
14199
+ if (!arg)
14200
+ continue;
14201
+ if (arg === "-h" || arg === "--help") {
14202
+ return { showHelp: true };
14203
+ }
14204
+ if (arg === "-p" || arg === "--port") {
14205
+ const value = argv[i + 1];
14206
+ if (!value) {
14207
+ return { showHelp: false, error: "Missing value for --port" };
14208
+ }
14209
+ port = Number(value);
14210
+ i += 1;
14211
+ continue;
14212
+ }
14213
+ }
14214
+ if (!Number.isInteger(port) || port < 1 || port > 65535) {
14215
+ return { showHelp: false, error: `Invalid port: ${String(port)}` };
14216
+ }
14217
+ return { showHelp: false, port };
14218
+ }
14191
14219
  if (import.meta.main) {
14192
- console.log(`brains server starting on port ${port}`);
14193
- Bun.serve({ port, fetch: createServerFetchHandler() });
14220
+ const resolved = resolveServerPort(process.argv.slice(2), process.env["PORT"]);
14221
+ if (resolved.showHelp) {
14222
+ console.log(USAGE);
14223
+ process.exit(0);
14224
+ }
14225
+ if (resolved.error || !resolved.port) {
14226
+ console.error(resolved.error ?? "Failed to resolve server port");
14227
+ console.error(USAGE);
14228
+ process.exit(1);
14229
+ }
14230
+ console.log(`brains server starting on port ${resolved.port}`);
14231
+ Bun.serve({ port: resolved.port, fetch: createServerFetchHandler() });
14194
14232
  }
14195
14233
  export {
14234
+ resolveServerPort,
14196
14235
  createServerFetchHandler
14197
14236
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/brains",
3
- "version": "0.0.17",
3
+ "version": "0.0.19",
4
4
  "description": "Fine-tuned model tracker and trainer — wraps OpenAI + Thinker Labs, gathers training data from todos/mementos/conversations/sessions",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",