@shahmilsaari/memory-core 0.2.4 → 0.2.5

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 (2) hide show
  1. package/dist/cli.js +38 -8
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -699,6 +699,20 @@ import { execSync } from "child_process";
699
699
  import { writeFileSync as writeFileSync2, existsSync as existsSync4, unlinkSync, readFileSync as readFileSync3, chmodSync } from "fs";
700
700
  import { join as join4 } from "path";
701
701
  import chalk from "chalk";
702
+ async function resolveModel(ollamaUrl, chatModel) {
703
+ try {
704
+ const res = await fetch(`${ollamaUrl}/api/tags`, { signal: AbortSignal.timeout(3e3) });
705
+ if (!res.ok) return chatModel;
706
+ const data = await res.json();
707
+ const models = data.models ?? [];
708
+ const exact = models.find((m) => m.name === chatModel);
709
+ if (exact) return exact.name;
710
+ const prefixed = models.find((m) => m.name.startsWith(`${chatModel}:`));
711
+ if (prefixed) return prefixed.name;
712
+ } catch {
713
+ }
714
+ return chatModel;
715
+ }
702
716
  var reasonMap = new Map(
703
717
  seeds.filter((s) => s.reason).map((s) => [s.content, s.reason])
704
718
  );
@@ -794,7 +808,7 @@ async function checkStaged(options = {}) {
794
808
  }
795
809
  if (rules.length === 0) return;
796
810
  const ollamaUrl = process.env.OLLAMA_URL ?? "http://localhost:11434";
797
- const chatModel = process.env.OLLAMA_CHAT_MODEL ?? "llama3.2";
811
+ const chatModel = await resolveModel(ollamaUrl, process.env.OLLAMA_CHAT_MODEL ?? "llama3.2");
798
812
  const MAX_DIFF = 8e3;
799
813
  const truncated = diff.length > MAX_DIFF;
800
814
  const diffToSend = truncated ? diff.slice(0, MAX_DIFF) + "\n\n[diff truncated]" : diff;
@@ -918,6 +932,20 @@ import { execSync as execSync2 } from "child_process";
918
932
  import { existsSync as existsSync5, readFileSync as readFileSync4 } from "fs";
919
933
  import { join as join5, relative } from "path";
920
934
  import chalk2 from "chalk";
935
+ async function resolveModel2(ollamaUrl, chatModel) {
936
+ try {
937
+ const res = await fetch(`${ollamaUrl}/api/tags`, { signal: AbortSignal.timeout(3e3) });
938
+ if (!res.ok) return chatModel;
939
+ const data = await res.json();
940
+ const models = data.models ?? [];
941
+ const exact = models.find((m) => m.name === chatModel);
942
+ if (exact) return exact.name;
943
+ const prefixed = models.find((m) => m.name.startsWith(`${chatModel}:`));
944
+ if (prefixed) return prefixed.name;
945
+ } catch {
946
+ }
947
+ return chatModel;
948
+ }
921
949
  function getFileLines(filePath) {
922
950
  try {
923
951
  return readFileSync4(filePath, "utf-8").split("\n");
@@ -993,7 +1021,7 @@ async function checkFile(filePath, cwd, config2, verbose) {
993
1021
  const { rules, avoids } = getProfileRules(config2);
994
1022
  if (rules.length === 0) return;
995
1023
  const ollamaUrl = process.env.OLLAMA_URL ?? "http://localhost:11434";
996
- const chatModel = process.env.OLLAMA_CHAT_MODEL ?? "llama3.2";
1024
+ const chatModel = await resolveModel2(ollamaUrl, process.env.OLLAMA_CHAT_MODEL ?? "llama3.2");
997
1025
  const MAX_DIFF = 6e3;
998
1026
  const truncated = diff.length > MAX_DIFF;
999
1027
  const diffToSend = truncated ? diff.slice(0, MAX_DIFF) + "\n\n[diff truncated]" : diff;
@@ -1092,7 +1120,7 @@ ${diffToSend}` }
1092
1120
  }
1093
1121
  }
1094
1122
  }
1095
- function startWatch(options = {}) {
1123
+ async function startWatch(options = {}) {
1096
1124
  const cwd = process.cwd();
1097
1125
  const config2 = loadConfig(cwd);
1098
1126
  if (!config2) {
@@ -1106,7 +1134,7 @@ function startWatch(options = {}) {
1106
1134
  }
1107
1135
  const watchPath = options.path ?? cwd;
1108
1136
  const ollamaUrl = process.env.OLLAMA_URL ?? "http://localhost:11434";
1109
- const chatModel = process.env.OLLAMA_CHAT_MODEL ?? "llama3.2";
1137
+ const chatModel = await resolveModel2(ollamaUrl, process.env.OLLAMA_CHAT_MODEL ?? "llama3.2");
1110
1138
  console.log(chalk2.cyan("\n archmind watch \u2014 real-time rule enforcement\n"));
1111
1139
  console.log(chalk2.dim(` watching: ${watchPath}`));
1112
1140
  console.log(chalk2.dim(` model: ${chatModel}`));
@@ -1304,10 +1332,12 @@ program.command("init").description("Initialize memory-core in the current proje
1304
1332
  try {
1305
1333
  const res = await fetch(`${ollamaUrl}/api/tags`, { signal: AbortSignal.timeout(5e3) });
1306
1334
  const data = await res.json();
1307
- const installed = (data.models ?? []).some(
1308
- (m) => m.name === chatModel || m.name.startsWith(`${chatModel}:`)
1309
- );
1310
- if (installed) {
1335
+ const models = data.models ?? [];
1336
+ const exact = models.find((m) => m.name === chatModel);
1337
+ const prefixed = models.find((m) => m.name.startsWith(`${chatModel}:`));
1338
+ const match = exact ?? prefixed;
1339
+ if (match) {
1340
+ chatModel = match.name;
1311
1341
  modelSpinner.succeed(chalk3.green(`${chatModel} is installed and ready`));
1312
1342
  break;
1313
1343
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shahmilsaari/memory-core",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "Universal AI memory core — generate AI context files from architecture profiles with RAG support",
5
5
  "type": "module",
6
6
  "bin": {