@folterung/project-memory 0.1.1 → 0.1.3

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 (34) hide show
  1. package/docker-compose.yml +4 -3
  2. package/package.json +1 -1
  3. package/packages/cli/coverage/lcov-report/chunking/chunker.ts.html +1 -1
  4. package/packages/cli/coverage/lcov-report/chunking/hash.ts.html +1 -1
  5. package/packages/cli/coverage/lcov-report/chunking/index.html +1 -1
  6. package/packages/cli/coverage/lcov-report/chunking/types.ts.html +1 -1
  7. package/packages/cli/coverage/lcov-report/config/index.html +1 -1
  8. package/packages/cli/coverage/lcov-report/config/load.ts.html +1 -1
  9. package/packages/cli/coverage/lcov-report/config/types.ts.html +1 -1
  10. package/packages/cli/coverage/lcov-report/embedding/index.html +1 -1
  11. package/packages/cli/coverage/lcov-report/embedding/stub.ts.html +1 -1
  12. package/packages/cli/coverage/lcov-report/index.html +1 -1
  13. package/packages/cli/coverage/lcov-report/scope/allowlist.ts.html +1 -1
  14. package/packages/cli/coverage/lcov-report/scope/ignore.ts.html +1 -1
  15. package/packages/cli/coverage/lcov-report/scope/index.html +1 -1
  16. package/packages/cli/coverage/tmp/{coverage-25917-1770055893226-0.json → coverage-39958-1770057203458-0.json} +1 -1
  17. package/packages/cli/coverage/tmp/{coverage-25918-1770055893272-0.json → coverage-39959-1770057203507-0.json} +1 -1
  18. package/packages/cli/coverage/tmp/{coverage-25919-1770055893273-0.json → coverage-39960-1770057203507-0.json} +1 -1
  19. package/packages/cli/coverage/tmp/{coverage-25920-1770055893271-0.json → coverage-39961-1770057203505-0.json} +1 -1
  20. package/packages/cli/coverage/tmp/{coverage-25921-1770055893279-0.json → coverage-39962-1770057203512-0.json} +1 -1
  21. package/packages/cli/coverage/tmp/{coverage-25922-1770055893272-0.json → coverage-39963-1770057203506-0.json} +1 -1
  22. package/packages/cli/coverage/tmp/{coverage-25923-1770055893275-0.json → coverage-39964-1770057203507-0.json} +1 -1
  23. package/packages/cli/coverage/tmp/{coverage-25924-1770055893294-0.json → coverage-39965-1770057203526-0.json} +1 -1
  24. package/packages/cli/coverage/tmp/{coverage-25925-1770055893290-0.json → coverage-39966-1770057203522-0.json} +1 -1
  25. package/packages/cli/dist/commands/init.js +10 -1
  26. package/packages/cli/dist/commands/init.js.map +1 -1
  27. package/packages/cli/dist/docker/compose.js +10 -9
  28. package/packages/cli/dist/docker/compose.js.map +1 -1
  29. package/packages/cli/src/commands/init.ts +12 -1
  30. package/packages/cli/src/docker/compose.ts +9 -8
  31. package/packages/server/coverage/lcov-report/index.html +1 -1
  32. package/packages/server/coverage/lcov-report/stub.ts.html +1 -1
  33. package/packages/server/coverage/tmp/{coverage-26012-1770055894042-0.json → coverage-40050-1770057204321-0.json} +1 -1
  34. package/packages/server/coverage/tmp/{coverage-26013-1770055894077-0.json → coverage-40051-1770057204356-0.json} +1 -1
@@ -1,13 +1,18 @@
1
- import { mkdirSync, writeFileSync, existsSync } from "node:fs";
1
+ import { mkdirSync, writeFileSync, existsSync, copyFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
3
4
  import chalk from "chalk";
4
5
  import { getDefaultConfigYaml, getDefaultMemignore } from "../config/defaults.js";
5
6
  import { CONFIG_DIR, CONFIG_FILE, MEMIGNORE_FILE } from "../config/types.js";
7
+ const __dirname = fileURLToPath(new URL(".", import.meta.url));
8
+ const PACKAGE_ROOT = join(__dirname, "..", "..", "..", "..");
9
+ const PACKAGE_COMPOSE = join(PACKAGE_ROOT, "docker-compose.yml");
6
10
  export function runInit(cwd) {
7
11
  const configPath = join(cwd, CONFIG_FILE);
8
12
  const memignorePath = join(cwd, MEMIGNORE_FILE);
9
13
  const memDir = join(cwd, CONFIG_DIR);
10
14
  const stateDir = join(memDir, "state");
15
+ const memComposePath = join(memDir, "docker-compose.yml");
11
16
  if (!existsSync(memDir)) {
12
17
  mkdirSync(memDir, { recursive: true });
13
18
  console.log(chalk.green("Created"), CONFIG_DIR + "/");
@@ -16,6 +21,10 @@ export function runInit(cwd) {
16
21
  mkdirSync(stateDir, { recursive: true });
17
22
  console.log(chalk.green("Created"), CONFIG_DIR + "/state/");
18
23
  }
24
+ if (!existsSync(memComposePath) && existsSync(PACKAGE_COMPOSE)) {
25
+ copyFileSync(PACKAGE_COMPOSE, memComposePath);
26
+ console.log(chalk.green("Created"), CONFIG_DIR + "/docker-compose.yml");
27
+ }
19
28
  if (!existsSync(configPath)) {
20
29
  writeFileSync(configPath, getDefaultConfigYaml(), "utf8");
21
30
  console.log(chalk.green("Created"), CONFIG_FILE);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEvC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,aAAa,EAAE,mBAAmB,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,cAAc,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAChI,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,17 @@
1
1
  import { execSync } from "node:child_process";
2
2
  import { existsSync } from "node:fs";
3
3
  import { join } from "node:path";
4
- const QDRANT_HEALTH_URL = "http://127.0.0.1:6333/health";
5
- const HEALTH_POLL_MS = 1000;
6
- const HEALTH_TIMEOUT_MS = 60_000;
4
+ const QDRANT_READYZ_URL = "http://127.0.0.1:6333/readyz";
5
+ const HEALTH_POLL_MS = 2000;
6
+ const HEALTH_INITIAL_DELAY_MS = 8000;
7
+ const HEALTH_TIMEOUT_MS = 120_000;
7
8
  function getComposeDir(cwd) {
8
- const atRoot = join(cwd, "docker-compose.yml");
9
9
  const atMem = join(cwd, ".mem", "docker-compose.yml");
10
- if (existsSync(atRoot))
11
- return cwd;
10
+ const atRoot = join(cwd, "docker-compose.yml");
12
11
  if (existsSync(atMem))
13
12
  return join(cwd, ".mem");
13
+ if (existsSync(atRoot))
14
+ return cwd;
14
15
  return cwd;
15
16
  }
16
17
  function composeCmd(cwd) {
@@ -46,7 +47,7 @@ export function waitForQdrantHealth(timeoutMs = HEALTH_TIMEOUT_MS) {
46
47
  reject(new Error("Qdrant health check timed out"));
47
48
  return;
48
49
  }
49
- fetch(QDRANT_HEALTH_URL)
50
+ fetch(QDRANT_READYZ_URL)
50
51
  .then((r) => {
51
52
  if (r.ok)
52
53
  resolve();
@@ -55,7 +56,7 @@ export function waitForQdrantHealth(timeoutMs = HEALTH_TIMEOUT_MS) {
55
56
  })
56
57
  .catch(() => setTimeout(poll, HEALTH_POLL_MS));
57
58
  }
58
- poll();
59
+ setTimeout(poll, HEALTH_INITIAL_DELAY_MS);
59
60
  });
60
61
  }
61
62
  export function checkDockerAvailable(cwd) {
@@ -68,7 +69,7 @@ export function checkDockerAvailable(cwd) {
68
69
  }
69
70
  }
70
71
  export function checkQdrantHealthy() {
71
- return fetch(QDRANT_HEALTH_URL)
72
+ return fetch(QDRANT_READYZ_URL)
72
73
  .then((r) => r.ok)
73
74
  .catch(() => false);
74
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/docker/compose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AACzD,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,QAAQ,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,QAAQ,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,GAAG,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB,iBAAiB;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,SAAS,IAAI;YACX,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,KAAK,CAAC,iBAAiB,CAAC;iBACrB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;gBACV,IAAI,CAAC,CAAC,EAAE;oBAAE,OAAO,EAAE,CAAC;;oBACf,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACxC,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,IAAI,CAAC;QACH,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,CAAC,iBAAiB,CAAC;SAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjB,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/docker/compose.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,20 @@
1
- import { mkdirSync, writeFileSync, existsSync } from "node:fs";
1
+ import { mkdirSync, writeFileSync, existsSync, copyFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
3
4
  import chalk from "chalk";
4
5
  import { getDefaultConfigYaml, getDefaultMemignore } from "../config/defaults.js";
5
6
  import { CONFIG_DIR, CONFIG_FILE, MEMIGNORE_FILE } from "../config/types.js";
6
7
 
8
+ const __dirname = fileURLToPath(new URL(".", import.meta.url));
9
+ const PACKAGE_ROOT = join(__dirname, "..", "..", "..", "..");
10
+ const PACKAGE_COMPOSE = join(PACKAGE_ROOT, "docker-compose.yml");
11
+
7
12
  export function runInit(cwd: string): void {
8
13
  const configPath = join(cwd, CONFIG_FILE);
9
14
  const memignorePath = join(cwd, MEMIGNORE_FILE);
10
15
  const memDir = join(cwd, CONFIG_DIR);
11
16
  const stateDir = join(memDir, "state");
17
+ const memComposePath = join(memDir, "docker-compose.yml");
12
18
 
13
19
  if (!existsSync(memDir)) {
14
20
  mkdirSync(memDir, { recursive: true });
@@ -19,6 +25,11 @@ export function runInit(cwd: string): void {
19
25
  console.log(chalk.green("Created"), CONFIG_DIR + "/state/");
20
26
  }
21
27
 
28
+ if (!existsSync(memComposePath) && existsSync(PACKAGE_COMPOSE)) {
29
+ copyFileSync(PACKAGE_COMPOSE, memComposePath);
30
+ console.log(chalk.green("Created"), CONFIG_DIR + "/docker-compose.yml");
31
+ }
32
+
22
33
  if (!existsSync(configPath)) {
23
34
  writeFileSync(configPath, getDefaultConfigYaml(), "utf8");
24
35
  console.log(chalk.green("Created"), CONFIG_FILE);
@@ -2,15 +2,16 @@ import { execSync, spawn } from "node:child_process";
2
2
  import { existsSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
 
5
- const QDRANT_HEALTH_URL = "http://127.0.0.1:6333/health";
6
- const HEALTH_POLL_MS = 1000;
7
- const HEALTH_TIMEOUT_MS = 60_000;
5
+ const QDRANT_READYZ_URL = "http://127.0.0.1:6333/readyz";
6
+ const HEALTH_POLL_MS = 2000;
7
+ const HEALTH_INITIAL_DELAY_MS = 8000;
8
+ const HEALTH_TIMEOUT_MS = 120_000;
8
9
 
9
10
  function getComposeDir(cwd: string): string {
10
- const atRoot = join(cwd, "docker-compose.yml");
11
11
  const atMem = join(cwd, ".mem", "docker-compose.yml");
12
- if (existsSync(atRoot)) return cwd;
12
+ const atRoot = join(cwd, "docker-compose.yml");
13
13
  if (existsSync(atMem)) return join(cwd, ".mem");
14
+ if (existsSync(atRoot)) return cwd;
14
15
  return cwd;
15
16
  }
16
17
 
@@ -48,14 +49,14 @@ export function waitForQdrantHealth(timeoutMs: number = HEALTH_TIMEOUT_MS): Prom
48
49
  reject(new Error("Qdrant health check timed out"));
49
50
  return;
50
51
  }
51
- fetch(QDRANT_HEALTH_URL)
52
+ fetch(QDRANT_READYZ_URL)
52
53
  .then((r) => {
53
54
  if (r.ok) resolve();
54
55
  else setTimeout(poll, HEALTH_POLL_MS);
55
56
  })
56
57
  .catch(() => setTimeout(poll, HEALTH_POLL_MS));
57
58
  }
58
- poll();
59
+ setTimeout(poll, HEALTH_INITIAL_DELAY_MS);
59
60
  });
60
61
  }
61
62
 
@@ -69,7 +70,7 @@ export function checkDockerAvailable(cwd: string): boolean {
69
70
  }
70
71
 
71
72
  export function checkQdrantHealthy(): Promise<boolean> {
72
- return fetch(QDRANT_HEALTH_URL)
73
+ return fetch(QDRANT_READYZ_URL)
73
74
  .then((r) => r.ok)
74
75
  .catch(() => false);
75
76
  }
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2026-02-02T18:11:34.092Z
104
+ at 2026-02-02T18:33:24.371Z
105
105
  </div>
106
106
  <script src="prettify.js"></script>
107
107
  <script>
@@ -169,7 +169,7 @@ export function getVectorSize(): number {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
172
- at 2026-02-02T18:11:34.092Z
172
+ at 2026-02-02T18:33:24.371Z
173
173
  </div>
174
174
  <script src="prettify.js"></script>
175
175
  <script>