@monoes/monomindcli 2.16.11 → 2.16.13

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 (225) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/engineering/engineering-devops-automator.md +1 -1
  3. package/.claude/agents/github/repo-architect.md +1 -1
  4. package/.claude/agents/testing/production-validator.md +1 -1
  5. package/.claude/agents/testing/testing-tool-evaluator.md +1 -1
  6. package/.claude/commands/github/pr-manager.md +1 -1
  7. package/.claude/helpers/pick-rank.cjs +34 -4
  8. package/.claude/skills/monolean-audit/SKILL.md +1 -1
  9. package/dist/src/commands/cleanup-data.d.ts +30 -0
  10. package/dist/src/commands/cleanup-data.d.ts.map +1 -0
  11. package/dist/src/commands/cleanup-data.js +138 -0
  12. package/dist/src/commands/cleanup-data.js.map +1 -0
  13. package/dist/src/commands/cleanup-origin.d.ts +24 -0
  14. package/dist/src/commands/cleanup-origin.d.ts.map +1 -0
  15. package/dist/src/commands/cleanup-origin.js +67 -0
  16. package/dist/src/commands/cleanup-origin.js.map +1 -0
  17. package/dist/src/commands/cleanup-scratch.d.ts +43 -0
  18. package/dist/src/commands/cleanup-scratch.d.ts.map +1 -0
  19. package/dist/src/commands/cleanup-scratch.js +125 -0
  20. package/dist/src/commands/cleanup-scratch.js.map +1 -0
  21. package/dist/src/commands/cleanup.d.ts +2 -39
  22. package/dist/src/commands/cleanup.d.ts.map +1 -1
  23. package/dist/src/commands/cleanup.js +9 -296
  24. package/dist/src/commands/cleanup.js.map +1 -1
  25. package/dist/src/commands/doctor-gitignore-checks.d.ts +10 -0
  26. package/dist/src/commands/doctor-gitignore-checks.d.ts.map +1 -0
  27. package/dist/src/commands/doctor-gitignore-checks.js +141 -0
  28. package/dist/src/commands/doctor-gitignore-checks.js.map +1 -0
  29. package/dist/src/commands/doctor-helpers-checks.d.ts +10 -0
  30. package/dist/src/commands/doctor-helpers-checks.d.ts.map +1 -0
  31. package/dist/src/commands/doctor-helpers-checks.js +292 -0
  32. package/dist/src/commands/doctor-helpers-checks.js.map +1 -0
  33. package/dist/src/commands/doctor-memory-checks.d.ts +47 -0
  34. package/dist/src/commands/doctor-memory-checks.d.ts.map +1 -0
  35. package/dist/src/commands/doctor-memory-checks.js +298 -0
  36. package/dist/src/commands/doctor-memory-checks.js.map +1 -0
  37. package/dist/src/commands/doctor-monograph-checks.d.ts +9 -0
  38. package/dist/src/commands/doctor-monograph-checks.d.ts.map +1 -0
  39. package/dist/src/commands/doctor-monograph-checks.js +331 -0
  40. package/dist/src/commands/doctor-monograph-checks.js.map +1 -0
  41. package/dist/src/commands/doctor-project-checks.d.ts +7 -66
  42. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  43. package/dist/src/commands/doctor-project-checks.js +10 -1331
  44. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  45. package/dist/src/commands/doctor-routing-checks.d.ts +10 -0
  46. package/dist/src/commands/doctor-routing-checks.d.ts.map +1 -0
  47. package/dist/src/commands/doctor-routing-checks.js +194 -0
  48. package/dist/src/commands/doctor-routing-checks.js.map +1 -0
  49. package/dist/src/commands/doctor-worker-checks.d.ts +17 -0
  50. package/dist/src/commands/doctor-worker-checks.d.ts.map +1 -0
  51. package/dist/src/commands/doctor-worker-checks.js +122 -0
  52. package/dist/src/commands/doctor-worker-checks.js.map +1 -0
  53. package/dist/src/commands/hooks-routing-commands.js +1 -1
  54. package/dist/src/commands/hooks-routing-commands.js.map +1 -1
  55. package/dist/src/commands/init.d.ts.map +1 -1
  56. package/dist/src/commands/init.js +6 -15
  57. package/dist/src/commands/init.js.map +1 -1
  58. package/dist/src/index.js +2 -2
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/src/init/never-commit.d.ts +3 -3
  61. package/dist/src/init/types.d.ts +1 -1
  62. package/dist/src/init/types.js +1 -1
  63. package/dist/src/knowledge/document-store.js +1 -1
  64. package/dist/src/knowledge/document-store.js.map +1 -1
  65. package/dist/src/mcp-tools/hooks-edit-command.d.ts +10 -0
  66. package/dist/src/mcp-tools/hooks-edit-command.d.ts.map +1 -0
  67. package/dist/src/mcp-tools/hooks-edit-command.js +247 -0
  68. package/dist/src/mcp-tools/hooks-edit-command.js.map +1 -0
  69. package/dist/src/mcp-tools/hooks-learning.d.ts +9 -0
  70. package/dist/src/mcp-tools/hooks-learning.d.ts.map +1 -0
  71. package/dist/src/mcp-tools/hooks-learning.js +408 -0
  72. package/dist/src/mcp-tools/hooks-learning.js.map +1 -0
  73. package/dist/src/mcp-tools/hooks-metrics-list.d.ts +8 -0
  74. package/dist/src/mcp-tools/hooks-metrics-list.d.ts.map +1 -0
  75. package/dist/src/mcp-tools/hooks-metrics-list.js +205 -0
  76. package/dist/src/mcp-tools/hooks-metrics-list.js.map +1 -0
  77. package/dist/src/mcp-tools/hooks-route.d.ts +12 -0
  78. package/dist/src/mcp-tools/hooks-route.d.ts.map +1 -0
  79. package/dist/src/mcp-tools/hooks-route.js +251 -0
  80. package/dist/src/mcp-tools/hooks-route.js.map +1 -0
  81. package/dist/src/mcp-tools/hooks-routing.d.ts +6 -27
  82. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  83. package/dist/src/mcp-tools/hooks-routing.js +6 -1727
  84. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  85. package/dist/src/mcp-tools/hooks-session.d.ts +9 -0
  86. package/dist/src/mcp-tools/hooks-session.d.ts.map +1 -0
  87. package/dist/src/mcp-tools/hooks-session.js +243 -0
  88. package/dist/src/mcp-tools/hooks-session.js.map +1 -0
  89. package/dist/src/mcp-tools/hooks-task.d.ts +17 -0
  90. package/dist/src/mcp-tools/hooks-task.d.ts.map +1 -0
  91. package/dist/src/mcp-tools/hooks-task.js +427 -0
  92. package/dist/src/mcp-tools/hooks-task.js.map +1 -0
  93. package/dist/src/mcp-tools/hooks-tools.d.ts +2 -1
  94. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  95. package/dist/src/mcp-tools/hooks-tools.js +2 -1
  96. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  97. package/dist/src/mcp-tools/memory-tools.js +1 -1
  98. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  99. package/dist/src/memory/bm25-index.d.ts +2 -2
  100. package/dist/src/memory/bm25-index.js +2 -2
  101. package/dist/src/memory/embedding-operations.js +2 -2
  102. package/dist/src/memory/embedding-operations.js.map +1 -1
  103. package/dist/src/memory/entity-name-key.d.ts +1 -1
  104. package/dist/src/memory/entity-name-key.js +1 -1
  105. package/dist/src/memory/hnsw-operations.d.ts +1 -1
  106. package/dist/src/memory/hnsw-operations.js +1 -1
  107. package/dist/src/memory/memory-bridge-backend.d.ts +43 -0
  108. package/dist/src/memory/memory-bridge-backend.d.ts.map +1 -0
  109. package/dist/src/memory/memory-bridge-backend.js +363 -0
  110. package/dist/src/memory/memory-bridge-backend.js.map +1 -0
  111. package/dist/src/memory/memory-bridge-core.d.ts +42 -0
  112. package/dist/src/memory/memory-bridge-core.d.ts.map +1 -0
  113. package/dist/src/memory/memory-bridge-core.js +126 -0
  114. package/dist/src/memory/memory-bridge-core.js.map +1 -0
  115. package/dist/src/memory/memory-bridge-entries.d.ts +131 -0
  116. package/dist/src/memory/memory-bridge-entries.d.ts.map +1 -0
  117. package/dist/src/memory/memory-bridge-entries.js +227 -0
  118. package/dist/src/memory/memory-bridge-entries.js.map +1 -0
  119. package/dist/src/memory/memory-bridge-feedback.d.ts +60 -0
  120. package/dist/src/memory/memory-bridge-feedback.d.ts.map +1 -0
  121. package/dist/src/memory/memory-bridge-feedback.js +118 -0
  122. package/dist/src/memory/memory-bridge-feedback.js.map +1 -0
  123. package/dist/src/memory/memory-bridge-paths.d.ts +123 -0
  124. package/dist/src/memory/memory-bridge-paths.d.ts.map +1 -0
  125. package/dist/src/memory/memory-bridge-paths.js +335 -0
  126. package/dist/src/memory/memory-bridge-paths.js.map +1 -0
  127. package/dist/src/memory/memory-bridge-search.d.ts +48 -0
  128. package/dist/src/memory/memory-bridge-search.d.ts.map +1 -0
  129. package/dist/src/memory/memory-bridge-search.js +383 -0
  130. package/dist/src/memory/memory-bridge-search.js.map +1 -0
  131. package/dist/src/memory/memory-bridge-sessions.d.ts +38 -0
  132. package/dist/src/memory/memory-bridge-sessions.d.ts.map +1 -0
  133. package/dist/src/memory/memory-bridge-sessions.js +109 -0
  134. package/dist/src/memory/memory-bridge-sessions.js.map +1 -0
  135. package/dist/src/memory/memory-bridge-store.d.ts +58 -0
  136. package/dist/src/memory/memory-bridge-store.d.ts.map +1 -0
  137. package/dist/src/memory/memory-bridge-store.js +201 -0
  138. package/dist/src/memory/memory-bridge-store.js.map +1 -0
  139. package/dist/src/memory/memory-bridge.d.ts +10 -438
  140. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  141. package/dist/src/memory/memory-bridge.js +14 -1787
  142. package/dist/src/memory/memory-bridge.js.map +1 -1
  143. package/dist/src/memory/memory-kg-claims.d.ts +52 -0
  144. package/dist/src/memory/memory-kg-claims.d.ts.map +1 -0
  145. package/dist/src/memory/memory-kg-claims.js +99 -0
  146. package/dist/src/memory/memory-kg-claims.js.map +1 -0
  147. package/dist/src/memory/memory-kg-index.d.ts +86 -0
  148. package/dist/src/memory/memory-kg-index.d.ts.map +1 -0
  149. package/dist/src/memory/memory-kg-index.js +256 -0
  150. package/dist/src/memory/memory-kg-index.js.map +1 -0
  151. package/dist/src/memory/memory-kg-ingest.d.ts +44 -0
  152. package/dist/src/memory/memory-kg-ingest.d.ts.map +1 -0
  153. package/dist/src/memory/memory-kg-ingest.js +361 -0
  154. package/dist/src/memory/memory-kg-ingest.js.map +1 -0
  155. package/dist/src/memory/memory-kg-model.d.ts +168 -0
  156. package/dist/src/memory/memory-kg-model.d.ts.map +1 -0
  157. package/dist/src/memory/memory-kg-model.js +158 -0
  158. package/dist/src/memory/memory-kg-model.js.map +1 -0
  159. package/dist/src/memory/memory-kg-names.d.ts +64 -0
  160. package/dist/src/memory/memory-kg-names.d.ts.map +1 -0
  161. package/dist/src/memory/memory-kg-names.js +187 -0
  162. package/dist/src/memory/memory-kg-names.js.map +1 -0
  163. package/dist/src/memory/memory-kg-promote.d.ts +79 -0
  164. package/dist/src/memory/memory-kg-promote.d.ts.map +1 -0
  165. package/dist/src/memory/memory-kg-promote.js +248 -0
  166. package/dist/src/memory/memory-kg-promote.js.map +1 -0
  167. package/dist/src/memory/memory-kg-rebuild.d.ts +77 -0
  168. package/dist/src/memory/memory-kg-rebuild.d.ts.map +1 -0
  169. package/dist/src/memory/memory-kg-rebuild.js +299 -0
  170. package/dist/src/memory/memory-kg-rebuild.js.map +1 -0
  171. package/dist/src/memory/memory-kg-rollback.d.ts +47 -0
  172. package/dist/src/memory/memory-kg-rollback.d.ts.map +1 -0
  173. package/dist/src/memory/memory-kg-rollback.js +193 -0
  174. package/dist/src/memory/memory-kg-rollback.js.map +1 -0
  175. package/dist/src/memory/memory-kg-rules.d.ts +64 -0
  176. package/dist/src/memory/memory-kg-rules.d.ts.map +1 -0
  177. package/dist/src/memory/memory-kg-rules.js +251 -0
  178. package/dist/src/memory/memory-kg-rules.js.map +1 -0
  179. package/dist/src/memory/memory-kg-scan.d.ts +118 -0
  180. package/dist/src/memory/memory-kg-scan.d.ts.map +1 -0
  181. package/dist/src/memory/memory-kg-scan.js +209 -0
  182. package/dist/src/memory/memory-kg-scan.js.map +1 -0
  183. package/dist/src/memory/memory-kg-search.d.ts +80 -0
  184. package/dist/src/memory/memory-kg-search.d.ts.map +1 -0
  185. package/dist/src/memory/memory-kg-search.js +239 -0
  186. package/dist/src/memory/memory-kg-search.js.map +1 -0
  187. package/dist/src/memory/memory-kg.d.ts +19 -547
  188. package/dist/src/memory/memory-kg.d.ts.map +1 -1
  189. package/dist/src/memory/memory-kg.js +10 -2389
  190. package/dist/src/memory/memory-kg.js.map +1 -1
  191. package/dist/src/orgrt/sandbox-stubs.d.ts +4 -0
  192. package/dist/src/orgrt/sandbox-stubs.d.ts.map +1 -1
  193. package/dist/src/orgrt/sandbox-stubs.js +12 -2
  194. package/dist/src/orgrt/sandbox-stubs.js.map +1 -1
  195. package/dist/src/ui/org-hil.mjs +1 -1
  196. package/dist/src/ui/routes-org-agents.mjs +318 -0
  197. package/dist/src/ui/routes-org-approvals.mjs +133 -0
  198. package/dist/src/ui/routes-org-config.mjs +459 -0
  199. package/dist/src/ui/routes-org-control.mjs +300 -0
  200. package/dist/src/ui/routes-org-files.mjs +172 -0
  201. package/dist/src/ui/routes-org-helpers.mjs +84 -0
  202. package/dist/src/ui/routes-org-knowledge.mjs +262 -0
  203. package/dist/src/ui/routes-org-lifecycle.mjs +224 -0
  204. package/dist/src/ui/routes-org-live.mjs +278 -0
  205. package/dist/src/ui/routes-org-mastermind.mjs +346 -0
  206. package/dist/src/ui/routes-org-planning.mjs +398 -0
  207. package/dist/src/ui/routes-org-runs.mjs +430 -0
  208. package/dist/src/ui/routes-org-status.mjs +342 -0
  209. package/dist/src/ui/routes-org-workflows.mjs +212 -0
  210. package/dist/src/ui/routes-org.mjs +26 -3847
  211. package/dist/src/ui/server.mjs +1 -1
  212. package/dist/src/utils/native-error.d.ts +1 -1
  213. package/dist/src/utils/native-error.js +1 -1
  214. package/dist/src/utils/paths.d.ts +2 -1
  215. package/dist/src/utils/paths.d.ts.map +1 -1
  216. package/dist/src/utils/paths.js +2 -1
  217. package/dist/src/utils/paths.js.map +1 -1
  218. package/dist/tsconfig.tsbuildinfo +1 -1
  219. package/org-skills/adversarial-reviewer/SKILL.md +1 -1
  220. package/org-skills/board-deck-builder/SKILL.md +1 -1
  221. package/org-skills/code-reviewer/SKILL.md +1 -1
  222. package/org-skills/debugging-wizard/SKILL.md +1 -1
  223. package/org-skills/scientific-thinking-literature-review/SKILL.md +1 -1
  224. package/org-skills/scientific-thinking-scholar-evaluation/SKILL.md +1 -1
  225. package/package.json +8 -8
@@ -5,45 +5,8 @@
5
5
  * github.com/monoes/monomind
6
6
  */
7
7
  import type { Command } from '../types.js';
8
- /** A single stale-scratch candidate returned by {@link findStaleScratch}. */
9
- interface StaleScratchItem {
10
- path: string;
11
- description: string;
12
- size: number;
13
- }
14
- /**
15
- * Entries of the project registry (~/.monomind-projects.json, written by
16
- * `init` for `init upgrade --all`) whose project was deleted, by the same rule
17
- * as project-data dirs. Exported for tests; unreadable registry → none.
18
- */
19
- export declare function findStaleRegistryEntries(registryPath: string): string[];
20
- /**
21
- * Find prunable entries under the per-project data base (default
22
- * ~/.monomind/projects). Exported for tests — `baseDir`/`now` injectable.
23
- *
24
- * Classification per dir:
25
- * - `origin.json` present and its recorded path still exists → keep the dir,
26
- * but flag a leftover `lancedb/` subdir (dead since the SQLite engine swap).
27
- * - `origin.json` present, recorded path provably deleted (not merely on an
28
- * unmounted volume, see {@link isProvablyDeleted}) → orphaned → prune.
29
- * - no `origin.json` (pre-2.3.1 dirs can't prove their origin) → prune only
30
- * when untouched for {@link UNKNOWN_DIR_MAX_AGE_MS} — or immediately with
31
- * `--aggressive`, which treats unprovable dirs as junk (safe: every live
32
- * project rewrites origin.json on its next memory access).
33
- */
34
- export declare function findOrphanedProjectData(baseDir: string, now: number, aggressive: boolean): StaleScratchItem[];
35
- /**
36
- * Find stale mastermind scratch under `.monomind/taskdev/` and `.monomind/loops/`.
37
- * Exported for tests. Never returns `progress.md` (the taskdev recovery ledger),
38
- * directories, or loop JSON it cannot parse — deleting the unclassifiable loses data.
39
- *
40
- * A loop JSON is only ever classified as abandoned when it has a real, positive,
41
- * numeric `nextRunAt` timestamp that is more than a day in the past. Live producers
42
- * write `nextRunAt: 0` (real /do loops) or `nextRunAt: null` (dashboard) — those,
43
- * along with missing/non-numeric values, are never eligible for deletion regardless
44
- * of `status`, since a crashed daemon can leave a stale `status: 'running'` behind.
45
- */
46
- export declare function findStaleScratch(cwd: string, now: number): StaleScratchItem[];
8
+ export { findOrphanedProjectData, findStaleRegistryEntries } from './cleanup-data.js';
9
+ export { findStaleScratch } from './cleanup-scratch.js';
47
10
  /**
48
11
  * Cleanup command definition
49
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAa1E,6EAA6E;AAC7E,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAiDD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAUvE;AAeD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,OAAO,GAClB,gBAAgB,EAAE,CA+EpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA6D7E;AAyDD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAmX5B,CAAC;eA0Ba,cAAc"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAc1E,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAwX5B,CAAC;eA0Ba,cAAc"}
@@ -8,303 +8,15 @@
8
8
  // here throws "require is not defined" in the built output even though it
9
9
  // typechecks and passes tests. Guarded by no-cjs-require-in-esm.test.ts.
10
10
  import { execSync } from 'node:child_process';
11
- import { existsSync, lstatSync, readdirSync, readFileSync, realpathSync, rmSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
12
- import { homedir, tmpdir } from 'node:os';
13
- import { dirname, join, resolve } from 'node:path';
11
+ import { existsSync, readFileSync, rmSync, statSync, unlinkSync } from 'node:fs';
12
+ import { homedir } from 'node:os';
13
+ import { join } from 'node:path';
14
14
  import { output } from '../output.js';
15
+ import { findOrphanedProjectData, findStaleRegistryEntries, pruneRegistryEntries, } from './cleanup-data.js';
15
16
  import { applyCleanupEntry, buildCleanupPlan, isMonomindSourceRepo, } from './cleanup-plan.js';
16
- /** Scratch pruning (--scratch): taskdev handoff files and loop state. */
17
- // monolean: manual flag only — upgrade path: invoke from the `cache` background worker so crashed-run scratch is pruned without anyone remembering the flag
18
- const SCRATCH_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // taskdev scratch older than this is stale
19
- const LOOP_STALE_GRACE_MS = 24 * 60 * 60 * 1000; // a live loop reschedules every <=1h; overdue by a day = abandoned
20
- /** Orphaned per-project data (--data): ~/.monomind/projects/<slug> dirs whose
21
- * source project is gone, plus dead lancedb/ dirs left by the pre-2.3.1 engine. */
22
- const UNKNOWN_DIR_MAX_AGE_MS = 30 * 24 * 60 * 60 * 1000;
23
- /** Where removable volumes appear; a missing path under one may just be unplugged. */
24
- const MEDIA_ROOTS = ['/Volumes', '/media', '/mnt', '/run/media'];
25
- function isMountPoint(dir) {
26
- const parent = dirname(dir);
27
- if (parent === dir)
28
- return true; // filesystem root
29
- try {
30
- return statSync(dir).dev !== statSync(parent).dev;
31
- }
32
- catch {
33
- return true; // cannot tell — stay cautious
34
- }
35
- }
36
- /**
37
- * True when a recorded project path is gone because it was deleted, not
38
- * because the volume holding it is unmounted. Walks up to the nearest existing
39
- * ancestor: when that is the path's own parent (the old rule), a well-known
40
- * local root (home, /tmp, /var/tmp, the OS temp dir) or an ordinary directory,
41
- * the path was deleted — this covers a whole deleted test root (#347). When it
42
- * is a mount point (`/`, a network share's mount) or a removable-media
43
- * directory, the missing piece may be a volume that is not attached right now.
44
- */
45
- function isProvablyDeleted(p) {
46
- const target = resolve(p);
47
- if (existsSync(target))
48
- return false;
49
- const parent = dirname(target);
50
- let nearest = parent;
51
- while (!existsSync(nearest) && dirname(nearest) !== nearest)
52
- nearest = dirname(nearest);
53
- if (nearest === parent)
54
- return true;
55
- const localRoots = new Set();
56
- for (const r of [homedir(), '/tmp', '/var/tmp', tmpdir()]) {
57
- localRoots.add(resolve(r));
58
- try {
59
- localRoots.add(realpathSync(r));
60
- }
61
- catch {
62
- /* missing root — nothing to add */
63
- }
64
- }
65
- if (localRoots.has(nearest))
66
- return true;
67
- if (MEDIA_ROOTS.includes(nearest) || MEDIA_ROOTS.includes(dirname(nearest)))
68
- return false;
69
- return !isMountPoint(nearest);
70
- }
71
- /**
72
- * Entries of the project registry (~/.monomind-projects.json, written by
73
- * `init` for `init upgrade --all`) whose project was deleted, by the same rule
74
- * as project-data dirs. Exported for tests; unreadable registry → none.
75
- */
76
- export function findStaleRegistryEntries(registryPath) {
77
- try {
78
- const reg = JSON.parse(readFileSync(registryPath, 'utf-8'));
79
- if (!Array.isArray(reg.projects))
80
- return [];
81
- return reg.projects.filter((p) => typeof p === 'string' && p.length > 0 && isProvablyDeleted(p));
82
- }
83
- catch {
84
- return [];
85
- }
86
- }
87
- /** Rewrite the registry without `stale`, re-read first so a concurrent `init` registration survives. */
88
- function pruneRegistryEntries(registryPath, stale) {
89
- const reg = JSON.parse(readFileSync(registryPath, 'utf-8'));
90
- const drop = new Set(stale);
91
- const kept = reg.projects.filter((p) => !(typeof p === 'string' && drop.has(p)));
92
- const removed = reg.projects.length - kept.length;
93
- if (removed > 0) {
94
- reg.projects = kept;
95
- writeFileSync(registryPath, JSON.stringify(reg, null, 2), 'utf-8');
96
- }
97
- return removed;
98
- }
99
- /**
100
- * Find prunable entries under the per-project data base (default
101
- * ~/.monomind/projects). Exported for tests — `baseDir`/`now` injectable.
102
- *
103
- * Classification per dir:
104
- * - `origin.json` present and its recorded path still exists → keep the dir,
105
- * but flag a leftover `lancedb/` subdir (dead since the SQLite engine swap).
106
- * - `origin.json` present, recorded path provably deleted (not merely on an
107
- * unmounted volume, see {@link isProvablyDeleted}) → orphaned → prune.
108
- * - no `origin.json` (pre-2.3.1 dirs can't prove their origin) → prune only
109
- * when untouched for {@link UNKNOWN_DIR_MAX_AGE_MS} — or immediately with
110
- * `--aggressive`, which treats unprovable dirs as junk (safe: every live
111
- * project rewrites origin.json on its next memory access).
112
- */
113
- export function findOrphanedProjectData(baseDir, now, aggressive) {
114
- const out = [];
115
- if (!existsSync(baseDir))
116
- return out;
117
- for (const name of readdirSync(baseDir)) {
118
- if (name.startsWith('.'))
119
- continue;
120
- const dir = join(baseDir, name);
121
- try {
122
- if (!lstatSync(dir).isDirectory())
123
- continue;
124
- }
125
- catch {
126
- continue;
127
- }
128
- // Staleness must consider the files writes actually touch: appends to
129
- // lancedb/memory.db and origin.json refreshes do NOT bump the slug dir's
130
- // own mtime, so an actively-used project would otherwise look 30d stale.
131
- const mtimeOf = (p) => {
132
- try {
133
- return lstatSync(p).mtimeMs;
134
- }
135
- catch {
136
- return 0;
137
- }
138
- };
139
- const mtime = Math.max(mtimeOf(dir), mtimeOf(join(dir, 'origin.json')), mtimeOf(join(dir, 'lancedb', 'memory.db')), mtimeOf(join(dir, 'memory.db')));
140
- const originFile = join(dir, 'origin.json');
141
- let originPath = null;
142
- let hasOrigin = false;
143
- try {
144
- originPath = String(JSON.parse(readFileSync(originFile, 'utf-8')).path ?? '');
145
- hasOrigin = originPath.length > 0;
146
- }
147
- catch {
148
- /* no/corrupt marker */
149
- }
150
- if (hasOrigin && originPath && existsSync(originPath)) {
151
- // NOTE: the directory is *named* lancedb for historical reasons, but the
152
- // current SQLite engine keeps its LIVE memory.db inside it. Only genuine
153
- // LanceDB leftovers (*.lance datasets, no memory.db) are dead weight.
154
- const lance = join(dir, 'lancedb');
155
- if (existsSync(lance) && !existsSync(join(lance, 'memory.db'))) {
156
- let hasLanceData = false;
157
- try {
158
- hasLanceData = readdirSync(lance).some((f) => f.endsWith('.lance') || f === '__manifest');
159
- }
160
- catch {
161
- /* unreadable — leave it */
162
- }
163
- if (hasLanceData)
164
- out.push({
165
- path: lance,
166
- description: `dead lancedb store (project: ${originPath})`,
167
- size: 0,
168
- });
169
- }
170
- continue;
171
- }
172
- if (hasOrigin && originPath) {
173
- // An unmounted volume / disconnected network share makes the whole
174
- // subtree vanish temporarily, and that must never count as "project
175
- // deleted" — see isProvablyDeleted.
176
- if (isProvablyDeleted(originPath)) {
177
- out.push({
178
- path: dir,
179
- description: `orphaned project data (origin gone: ${originPath})`,
180
- size: 0,
181
- });
182
- }
183
- }
184
- else if (aggressive || now - mtime > UNKNOWN_DIR_MAX_AGE_MS) {
185
- out.push({
186
- path: dir,
187
- description: aggressive
188
- ? 'unverifiable project data (no origin marker)'
189
- : 'unverifiable project data (untouched >30d)',
190
- size: 0,
191
- });
192
- }
193
- }
194
- return out;
195
- }
196
- /**
197
- * Find stale mastermind scratch under `.monomind/taskdev/` and `.monomind/loops/`.
198
- * Exported for tests. Never returns `progress.md` (the taskdev recovery ledger),
199
- * directories, or loop JSON it cannot parse — deleting the unclassifiable loses data.
200
- *
201
- * A loop JSON is only ever classified as abandoned when it has a real, positive,
202
- * numeric `nextRunAt` timestamp that is more than a day in the past. Live producers
203
- * write `nextRunAt: 0` (real /do loops) or `nextRunAt: null` (dashboard) — those,
204
- * along with missing/non-numeric values, are never eligible for deletion regardless
205
- * of `status`, since a crashed daemon can leave a stale `status: 'running'` behind.
206
- */
207
- export function findStaleScratch(cwd, now) {
208
- const out = [];
209
- const taskdevDir = join(cwd, '.monomind', 'taskdev');
210
- if (existsSync(taskdevDir)) {
211
- for (const f of readdirSync(taskdevDir)) {
212
- if (f === 'progress.md')
213
- continue; // the ledger is the recovery map — never auto-prune
214
- try {
215
- const st = lstatSync(join(taskdevDir, f));
216
- if (st.isFile() && now - st.mtimeMs > SCRATCH_MAX_AGE_MS) {
217
- out.push({
218
- path: join('.monomind', 'taskdev', f),
219
- description: 'stale taskdev scratch',
220
- size: st.size,
221
- });
222
- }
223
- }
224
- catch {
225
- /* raced away or unreadable — leave it */
226
- }
227
- }
228
- }
229
- const loopsDir = join(cwd, '.monomind', 'loops');
230
- if (existsSync(loopsDir)) {
231
- const entries = readdirSync(loopsDir);
232
- const jsonStems = new Set(entries.filter((f) => f.endsWith('.json')).map((f) => f.replace(/\.json$/, '')));
233
- for (const f of entries) {
234
- try {
235
- const st = lstatSync(join(loopsDir, f));
236
- if (!st.isFile())
237
- continue;
238
- if (f.endsWith('.json')) {
239
- const parsed = JSON.parse(readFileSync(join(loopsDir, f), 'utf8'));
240
- const { nextRunAt } = parsed;
241
- const isStale = typeof nextRunAt === 'number' &&
242
- Number.isFinite(nextRunAt) &&
243
- nextRunAt > 0 &&
244
- now - nextRunAt > LOOP_STALE_GRACE_MS;
245
- if (isStale) {
246
- out.push({
247
- path: join('.monomind', 'loops', f),
248
- description: 'abandoned loop state',
249
- size: st.size,
250
- });
251
- }
252
- }
253
- else if (f.endsWith('.stop') && !jsonStems.has(f.replace(/\.stop$/, ''))) {
254
- out.push({
255
- path: join('.monomind', 'loops', f),
256
- description: 'orphaned loop stopfile',
257
- size: st.size,
258
- });
259
- }
260
- }
261
- catch {
262
- /* unparseable or unreadable — never delete what we cannot classify */
263
- }
264
- }
265
- }
266
- return out;
267
- }
268
- /**
269
- * Report (dry run) or delete a batch of file/dir items, printing the same
270
- * `[would remove]` / `[removed]` / `[failed]` lines used across cleanup modes.
271
- * Shared by the scratch branch; the main artifact loop keeps its own copy
272
- * because of the `--keep-config` `.claude/settings.json` preservation special case.
273
- */
274
- function removeOrReport(cwd, items, dryRun) {
275
- let removed = 0;
276
- let removedSize = 0;
277
- for (const item of items) {
278
- const sizeStr = formatSize(item.size);
279
- const typeLabel = item.type === 'dir' ? 'dir ' : 'file';
280
- if (dryRun) {
281
- output.writeln(output.warning(` [would remove] ${typeLabel} ${item.path} (${sizeStr}) - ${item.description}`));
282
- }
283
- else {
284
- try {
285
- rmSync(join(cwd, item.path), { recursive: item.type === 'dir', force: true });
286
- output.writeln(output.success(` [removed] ${typeLabel} ${item.path} (${sizeStr}) - ${item.description}`));
287
- removed++;
288
- removedSize += item.size;
289
- }
290
- catch (err) {
291
- output.writeln(output.error(` [failed] ${typeLabel} ${item.path} - ${err instanceof Error ? err.message : String(err)}`));
292
- }
293
- }
294
- }
295
- return { removed, removedSize };
296
- }
297
- /**
298
- * Format bytes into a human-readable string
299
- */
300
- function formatSize(bytes) {
301
- if (bytes === 0)
302
- return '0 B';
303
- const units = ['B', 'KB', 'MB', 'GB'];
304
- const i = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
305
- const value = bytes / 1024 ** i;
306
- return `${value.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;
307
- }
17
+ import { findStaleScratch, formatSize, removeOrReport } from './cleanup-scratch.js';
18
+ export { findOrphanedProjectData, findStaleRegistryEntries } from './cleanup-data.js';
19
+ export { findStaleScratch } from './cleanup-scratch.js';
308
20
  /**
309
21
  * Cleanup command definition
310
22
  */
@@ -430,13 +142,14 @@ export const cleanupCommand = {
430
142
  const total = orphans.length + staleRegistryEntries.length;
431
143
  output.writeln();
432
144
  if (dryRun) {
433
- output.writeln(output.dim(` ${total} item(s). This was a dry run. Use --force to delete.`));
145
+ output.writeln(output.dim(` ${total} item(s): ${orphans.length} project-data item(s), ${staleRegistryEntries.length} registry entry(ies). This was a dry run. Use --force to delete.`));
434
146
  return {
435
147
  success: true,
436
148
  message: `Dry run: ${total} orphaned item(s) found`,
437
149
  data: { found: orphans, staleRegistryEntries, dryRun },
438
150
  };
439
151
  }
152
+ output.writeln(` Removed ${removed} project-data item(s), pruned ${registryRemoved} registry entry(ies)`);
440
153
  return {
441
154
  success: true,
442
155
  message: `Removed ${removed + registryRemoved} orphaned item(s)`,
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/commands/cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Doctor — .gitignore coverage check and its --fix.
3
+ * Extracted from doctor-project-checks.ts.
4
+ */
5
+ import { type HealthCheck } from './doctor-env-checks.js';
6
+ export declare function checkGitignoreCoverage(root?: string): Promise<HealthCheck>;
7
+ /** Creates or appends the missing gitignore entries. Returns true if it wrote.
8
+ * Append-only and idempotent: never rewrites lines the user already has. */
9
+ export declare function fixGitignoreCoverage(root?: string): Promise<boolean>;
10
+ //# sourceMappingURL=doctor-gitignore-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-gitignore-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor-gitignore-checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,KAAK,WAAW,EAA8B,MAAM,wBAAwB,CAAC;AAkDtF,wBAAsB,sBAAsB,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqCvF;AAyBD;6EAC6E;AAC7E,wBAAsB,oBAAoB,CAAC,IAAI,SAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BjF"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Doctor — .gitignore coverage check and its --fix.
3
+ * Extracted from doctor-project-checks.ts.
4
+ */
5
+ import { appendFileSync, existsSync, readFileSync, statSync, writeFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { MONOMIND_NEVER_COMMIT } from '../init/never-commit.js';
8
+ import { MAX_DOCTOR_GITIGNORE_BYTES } from './doctor-env-checks.js';
9
+ // i-052: derived from MONOMIND_NEVER_COMMIT (write-runtime-config.ts), the
10
+ // single source of truth for files that must never be committed — this was
11
+ // the THIRD independently-maintained list that omitted `dashboard-token`,
12
+ // and it is the one written specifically to catch gitignore gaps. Consuming
13
+ // the shared list here means `monomind doctor --fix` (fixGitignoreCoverage
14
+ // below) appends any missing entry for existing users for free.
15
+ const REQUIRED_GITIGNORE_PATTERNS = [
16
+ { pattern: '.monomind/sessions/', reason: 'session files contain cwd and machine paths' },
17
+ { pattern: '.monomind/data/', reason: 'intelligence data with edit file paths' },
18
+ { pattern: '.monomind/metrics/', reason: 'metrics with file path references' },
19
+ { pattern: '.monomind/knowledge/', reason: 'knowledge chunks with local file content' },
20
+ { pattern: '.monomind/*.json', reason: 'root-level runtime JSON (control, registry, routing)' },
21
+ { pattern: '.monomind/*.jsonl', reason: 'root-level event logs (decisions, routing-feedback)' },
22
+ { pattern: '**/.monomind/sessions/', reason: 'nested session files in sub-packages' },
23
+ { pattern: '**/.monomind/*.json', reason: 'nested runtime JSON in sub-packages' },
24
+ { pattern: 'data/sessions/', reason: 'session files with machine paths' },
25
+ { pattern: 'data/mastermind-*.json', reason: 'mastermind session data' },
26
+ { pattern: 'data/mastermind-*.jsonl', reason: 'mastermind event logs' },
27
+ { pattern: '**/.claude-flow/', reason: 'claude-flow runtime data with paths' },
28
+ { pattern: '.monomind/monoswarm/', reason: 'monoswarm state files' },
29
+ ...MONOMIND_NEVER_COMMIT.map(({ file, reason }) => ({ pattern: `.monomind/${file}`, reason })),
30
+ ];
31
+ /** Strip the parts that don't change what a pattern matches, so `**​/.monomind/`,
32
+ * `.monomind/` and `.monomind` all compare equal. A gitignore pattern with no
33
+ * leading slash already matches at every depth, so `**​/` is redundant. */
34
+ function normalizeGitignorePattern(p) {
35
+ return p
36
+ .replace(/^\/+/, '')
37
+ .replace(/^\*\*\//, '')
38
+ .replace(/\/+$/, '');
39
+ }
40
+ /** True when ignoring `line` already protects everything `required` covers.
41
+ * Beyond exact matches this understands directory containment: a repo with a
42
+ * blanket `.monomind/` is fully covered for `.monomind/sessions/`,
43
+ * `.monomind/*.json` and friends, and should not be nagged to add each one. */
44
+ function gitignoreLineCovers(line, required) {
45
+ const l = normalizeGitignorePattern(line);
46
+ const r = normalizeGitignorePattern(required);
47
+ if (!l)
48
+ return false;
49
+ if (l === r)
50
+ return true;
51
+ // A bare directory entry covers every path beneath it, but only when the
52
+ // entry itself is literal — `.monomind/*.json` must not be treated as an
53
+ // ancestor of `.monomind/sessions`.
54
+ return !l.includes('*') && r.startsWith(`${l}/`);
55
+ }
56
+ export async function checkGitignoreCoverage(root = process.cwd()) {
57
+ const gitignorePath = join(root, '.gitignore');
58
+ if (!existsSync(gitignorePath)) {
59
+ // The old hint was `echo ".monomind/\n**/.monomind/" >> .gitignore`, which
60
+ // writes a literal backslash-n (sh/bash echo does not interpret escapes
61
+ // without -e) — one junk line matching nothing. `--fix` now writes the file
62
+ // directly, so point at that rather than at a command to copy-paste.
63
+ return {
64
+ name: 'Gitignore Coverage',
65
+ status: 'warn',
66
+ message: 'No .gitignore found — all monomind runtime paths are unprotected',
67
+ fix: 'monomind doctor --fix (creates .gitignore covering .monomind/ and secrets)',
68
+ };
69
+ }
70
+ if (statSync(gitignorePath).size > MAX_DOCTOR_GITIGNORE_BYTES) {
71
+ return { name: 'Gitignore Coverage', status: 'warn', message: '.gitignore too large to parse' };
72
+ }
73
+ const lines = readFileSync(gitignorePath, 'utf-8')
74
+ .split('\n')
75
+ .map((l) => l.trim())
76
+ .filter((l) => l && !l.startsWith('#'));
77
+ const missing = REQUIRED_GITIGNORE_PATTERNS.filter(({ pattern }) => !lines.some((l) => gitignoreLineCovers(l, pattern)));
78
+ if (missing.length === 0)
79
+ return {
80
+ name: 'Gitignore Coverage',
81
+ status: 'pass',
82
+ message: 'All monomind runtime paths are gitignored',
83
+ };
84
+ const missingList = missing.map((m) => m.pattern).join(', ');
85
+ return {
86
+ name: 'Gitignore Coverage',
87
+ status: 'warn',
88
+ message: `${missing.length} runtime path(s) not in .gitignore: ${missingList}`,
89
+ fix: 'monomind doctor --fix (appends the missing entries)',
90
+ };
91
+ }
92
+ /** Patterns written by `doctor --fix` when there is no .gitignore at all.
93
+ * Covers monomind runtime state plus the standard secrets files, since a repo
94
+ * with no .gitignore has nothing protecting those either. The runtime paths
95
+ * are the specific ones the check requires, never a blanket `.monomind/`:
96
+ * git cannot re-include a file below an ignored directory, so a blanket line
97
+ * disables init's own `.monomind/.gitignore` allow-list (config.yaml,
98
+ * CAPABILITIES.md, org definitions). */
99
+ const GITIGNORE_FIX_PATTERNS = [
100
+ '# monomind runtime state',
101
+ ...REQUIRED_GITIGNORE_PATTERNS.map(({ pattern }) => pattern),
102
+ '',
103
+ '# secrets / local env',
104
+ '.env',
105
+ '.env.*',
106
+ '!.env.example',
107
+ '*.pem',
108
+ '*.key',
109
+ '',
110
+ '# dependencies / build output',
111
+ 'node_modules/',
112
+ 'dist/',
113
+ ];
114
+ /** Creates or appends the missing gitignore entries. Returns true if it wrote.
115
+ * Append-only and idempotent: never rewrites lines the user already has. */
116
+ export async function fixGitignoreCoverage(root = process.cwd()) {
117
+ const gitignorePath = join(root, '.gitignore');
118
+ try {
119
+ if (!existsSync(gitignorePath)) {
120
+ writeFileSync(gitignorePath, `${GITIGNORE_FIX_PATTERNS.join('\n')}\n`, 'utf-8');
121
+ return true;
122
+ }
123
+ if (statSync(gitignorePath).size > MAX_DOCTOR_GITIGNORE_BYTES)
124
+ return false;
125
+ const existing = readFileSync(gitignorePath, 'utf-8');
126
+ const lines = existing
127
+ .split('\n')
128
+ .map((l) => l.trim())
129
+ .filter((l) => l && !l.startsWith('#'));
130
+ const missing = REQUIRED_GITIGNORE_PATTERNS.map((m) => m.pattern).filter((pattern) => !lines.some((l) => gitignoreLineCovers(l, pattern)));
131
+ if (missing.length === 0)
132
+ return false;
133
+ const prefix = existing.endsWith('\n') || existing === '' ? '' : '\n';
134
+ appendFileSync(gitignorePath, `${prefix}\n# monomind runtime state\n${missing.join('\n')}\n`, 'utf-8');
135
+ return true;
136
+ }
137
+ catch {
138
+ return false;
139
+ }
140
+ }
141
+ //# sourceMappingURL=doctor-gitignore-checks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-gitignore-checks.js","sourceRoot":"","sources":["../../../src/commands/doctor-gitignore-checks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Doctor — hook helper checks: installed helpers vs the bundled copies
3
+ * (freshness and --fix) and guidance gate wiring.
4
+ * Extracted from doctor-project-checks.ts.
5
+ */
6
+ import { type HealthCheck } from './doctor-env-checks.js';
7
+ export declare function fixStaleHelpers(): Promise<boolean>;
8
+ export declare function checkHelpersFresh(): Promise<HealthCheck>;
9
+ export declare function checkGuidanceGates(): Promise<HealthCheck>;
10
+ //# sourceMappingURL=doctor-helpers-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-helpers-checks.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor-helpers-checks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EACL,KAAK,WAAW,EAIjB,MAAM,wBAAwB,CAAC;AAsIhC,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAyBxD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CA4C9D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAoF/D"}