seatmesh 1.1.4 → 1.2.0

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 (320) hide show
  1. package/bin/seatmesh +20 -0
  2. package/bin/sm +3 -0
  3. package/dist/commands/ack-cli.d.ts.map +1 -1
  4. package/dist/commands/ack-cli.js +32 -14
  5. package/dist/commands/ack-cli.js.map +1 -1
  6. package/dist/commands/ack-reply.d.ts +29 -0
  7. package/dist/commands/ack-reply.d.ts.map +1 -0
  8. package/dist/commands/ack-reply.js +110 -0
  9. package/dist/commands/ack-reply.js.map +1 -0
  10. package/dist/commands/ack-reply.test.d.ts +2 -0
  11. package/dist/commands/ack-reply.test.d.ts.map +1 -0
  12. package/dist/commands/ack-reply.test.js +37 -0
  13. package/dist/commands/ack-reply.test.js.map +1 -0
  14. package/dist/commands/agent-shorthand.d.ts +27 -0
  15. package/dist/commands/agent-shorthand.d.ts.map +1 -0
  16. package/dist/commands/agent-shorthand.js +57 -0
  17. package/dist/commands/agent-shorthand.js.map +1 -0
  18. package/dist/commands/agent-shorthand.test.d.ts +2 -0
  19. package/dist/commands/agent-shorthand.test.d.ts.map +1 -0
  20. package/dist/commands/agent-shorthand.test.js +36 -0
  21. package/dist/commands/agent-shorthand.test.js.map +1 -0
  22. package/dist/commands/checkback-cli.d.ts.map +1 -1
  23. package/dist/commands/checkback-cli.js +18 -3
  24. package/dist/commands/checkback-cli.js.map +1 -1
  25. package/dist/commands/completion.d.ts +20 -0
  26. package/dist/commands/completion.d.ts.map +1 -0
  27. package/dist/commands/completion.js +416 -0
  28. package/dist/commands/completion.js.map +1 -0
  29. package/dist/commands/completion.test.d.ts +2 -0
  30. package/dist/commands/completion.test.d.ts.map +1 -0
  31. package/dist/commands/completion.test.js +40 -0
  32. package/dist/commands/completion.test.js.map +1 -0
  33. package/dist/commands/config-cli.d.ts +9 -0
  34. package/dist/commands/config-cli.d.ts.map +1 -0
  35. package/dist/commands/config-cli.js +74 -0
  36. package/dist/commands/config-cli.js.map +1 -0
  37. package/dist/commands/gen-commands-md.d.ts +3 -0
  38. package/dist/commands/gen-commands-md.d.ts.map +1 -0
  39. package/dist/commands/gen-commands-md.js +50 -0
  40. package/dist/commands/gen-commands-md.js.map +1 -0
  41. package/dist/commands/help-human-surface.test.d.ts +2 -0
  42. package/dist/commands/help-human-surface.test.d.ts.map +1 -0
  43. package/dist/commands/help-human-surface.test.js +32 -0
  44. package/dist/commands/help-human-surface.test.js.map +1 -0
  45. package/dist/commands/help-text.d.ts +25 -0
  46. package/dist/commands/help-text.d.ts.map +1 -0
  47. package/dist/commands/help-text.js +466 -0
  48. package/dist/commands/help-text.js.map +1 -0
  49. package/dist/commands/help-text.test.d.ts +2 -0
  50. package/dist/commands/help-text.test.d.ts.map +1 -0
  51. package/dist/commands/help-text.test.js +62 -0
  52. package/dist/commands/help-text.test.js.map +1 -0
  53. package/dist/commands/notify-cli.d.ts.map +1 -1
  54. package/dist/commands/notify-cli.js +16 -7
  55. package/dist/commands/notify-cli.js.map +1 -1
  56. package/dist/commands/notify-cli.test.d.ts +2 -0
  57. package/dist/commands/notify-cli.test.d.ts.map +1 -0
  58. package/dist/commands/notify-cli.test.js +33 -0
  59. package/dist/commands/notify-cli.test.js.map +1 -0
  60. package/dist/commands/room-cli.d.ts.map +1 -1
  61. package/dist/commands/room-cli.js +2 -1
  62. package/dist/commands/room-cli.js.map +1 -1
  63. package/dist/commands/seat-cli.d.ts.map +1 -1
  64. package/dist/commands/seat-cli.js +115 -7
  65. package/dist/commands/seat-cli.js.map +1 -1
  66. package/dist/commands/sessions-cli.d.ts +15 -1
  67. package/dist/commands/sessions-cli.d.ts.map +1 -1
  68. package/dist/commands/sessions-cli.js +90 -5
  69. package/dist/commands/sessions-cli.js.map +1 -1
  70. package/dist/commands/sessions-cli.test.d.ts +2 -0
  71. package/dist/commands/sessions-cli.test.d.ts.map +1 -0
  72. package/dist/commands/sessions-cli.test.js +21 -0
  73. package/dist/commands/sessions-cli.test.js.map +1 -0
  74. package/dist/commands/target-cli.js +1 -1
  75. package/dist/commands/todo-give.test.d.ts +2 -0
  76. package/dist/commands/todo-give.test.d.ts.map +1 -0
  77. package/dist/commands/todo-give.test.js +20 -0
  78. package/dist/commands/todo-give.test.js.map +1 -0
  79. package/dist/commands/tp-cli.d.ts +3 -0
  80. package/dist/commands/tp-cli.d.ts.map +1 -0
  81. package/dist/commands/tp-cli.js +95 -0
  82. package/dist/commands/tp-cli.js.map +1 -0
  83. package/dist/commands/web-cli.d.ts +11 -0
  84. package/dist/commands/web-cli.d.ts.map +1 -0
  85. package/dist/commands/web-cli.js +187 -0
  86. package/dist/commands/web-cli.js.map +1 -0
  87. package/dist/main.js +450 -34
  88. package/dist/main.js.map +1 -1
  89. package/dist/setup/install.d.ts +17 -0
  90. package/dist/setup/install.d.ts.map +1 -0
  91. package/dist/setup/install.js +69 -0
  92. package/dist/setup/install.js.map +1 -0
  93. package/dist/setup/install.test.d.ts +2 -0
  94. package/dist/setup/install.test.d.ts.map +1 -0
  95. package/dist/setup/install.test.js +32 -0
  96. package/dist/setup/install.test.js.map +1 -0
  97. package/dist/setup/merge-mesh-config.d.ts +13 -0
  98. package/dist/setup/merge-mesh-config.d.ts.map +1 -0
  99. package/dist/setup/merge-mesh-config.js +112 -0
  100. package/dist/setup/merge-mesh-config.js.map +1 -0
  101. package/dist/setup/merge-mesh-config.test.d.ts +2 -0
  102. package/dist/setup/merge-mesh-config.test.d.ts.map +1 -0
  103. package/dist/setup/merge-mesh-config.test.js +96 -0
  104. package/dist/setup/merge-mesh-config.test.js.map +1 -0
  105. package/dist/setup/session-health.d.ts +33 -0
  106. package/dist/setup/session-health.d.ts.map +1 -0
  107. package/dist/setup/session-health.js +418 -0
  108. package/dist/setup/session-health.js.map +1 -0
  109. package/dist/setup/session-health.test.d.ts +2 -0
  110. package/dist/setup/session-health.test.d.ts.map +1 -0
  111. package/dist/setup/session-health.test.js +46 -0
  112. package/dist/setup/session-health.test.js.map +1 -0
  113. package/dist/setup/update.d.ts +2 -0
  114. package/dist/setup/update.d.ts.map +1 -1
  115. package/dist/setup/update.js +27 -2
  116. package/dist/setup/update.js.map +1 -1
  117. package/dist/setup/update.test.js +45 -0
  118. package/dist/setup/update.test.js.map +1 -1
  119. package/package.json +7 -6
  120. package/templates/docs/COMMANDS.md +1078 -0
  121. package/templates/docs/ONE-PATH.md +136 -0
  122. package/templates/docs/RELEASE.md +32 -0
  123. package/templates/docs/cli/README.md +96 -0
  124. package/templates/docs/cli/ack.md +12 -0
  125. package/templates/docs/cli/ackmsg.md +12 -0
  126. package/templates/docs/cli/agent.md +13 -0
  127. package/templates/docs/cli/apply.md +11 -0
  128. package/templates/docs/cli/ask.md +12 -0
  129. package/templates/docs/cli/assign.md +11 -0
  130. package/templates/docs/cli/auto.md +10 -0
  131. package/templates/docs/cli/balance.md +10 -0
  132. package/templates/docs/cli/base.md +10 -0
  133. package/templates/docs/cli/cb.md +12 -0
  134. package/templates/docs/cli/chat.md +12 -0
  135. package/templates/docs/cli/cold-start.md +11 -0
  136. package/templates/docs/cli/completion.md +11 -0
  137. package/templates/docs/cli/config.md +15 -0
  138. package/templates/docs/cli/contexts.md +12 -0
  139. package/templates/docs/cli/continue.md +10 -0
  140. package/templates/docs/cli/contract.md +25 -0
  141. package/templates/docs/cli/flush.md +10 -0
  142. package/templates/docs/cli/forum.md +12 -0
  143. package/templates/docs/cli/func.md +10 -0
  144. package/templates/docs/cli/golf.md +10 -0
  145. package/templates/docs/cli/help.md +13 -0
  146. package/templates/docs/cli/hub.md +14 -0
  147. package/templates/docs/cli/human.md +35 -0
  148. package/templates/docs/cli/inbox.md +11 -0
  149. package/templates/docs/cli/index.md +10 -0
  150. package/templates/docs/cli/init.md +10 -0
  151. package/templates/docs/cli/kind.md +11 -0
  152. package/templates/docs/cli/labels.md +10 -0
  153. package/templates/docs/cli/launch.md +12 -0
  154. package/templates/docs/cli/layout.md +11 -0
  155. package/templates/docs/cli/limit.md +11 -0
  156. package/templates/docs/cli/migrate-runtime.md +10 -0
  157. package/templates/docs/cli/mini.md +11 -0
  158. package/templates/docs/cli/night.md +10 -0
  159. package/templates/docs/cli/notify.md +28 -0
  160. package/templates/docs/cli/oc-proxy.md +47 -0
  161. package/templates/docs/cli/ops.md +10 -0
  162. package/templates/docs/cli/pane-meta.md +10 -0
  163. package/templates/docs/cli/peek.md +10 -0
  164. package/templates/docs/cli/peer.md +14 -0
  165. package/templates/docs/cli/ppa.md +12 -0
  166. package/templates/docs/cli/preview.md +16 -0
  167. package/templates/docs/cli/profile.md +10 -0
  168. package/templates/docs/cli/prompt.md +14 -0
  169. package/templates/docs/cli/providers.md +10 -0
  170. package/templates/docs/cli/proxy.md +10 -0
  171. package/templates/docs/cli/read-history.md +12 -0
  172. package/templates/docs/cli/realign.md +10 -0
  173. package/templates/docs/cli/reload.md +10 -0
  174. package/templates/docs/cli/remind.md +10 -0
  175. package/templates/docs/cli/remote.md +19 -0
  176. package/templates/docs/cli/reply.md +11 -0
  177. package/templates/docs/cli/report.md +10 -0
  178. package/templates/docs/cli/roles.md +10 -0
  179. package/templates/docs/cli/room.md +15 -0
  180. package/templates/docs/cli/run.md +12 -0
  181. package/templates/docs/cli/save.md +10 -0
  182. package/templates/docs/cli/seat.md +11 -0
  183. package/templates/docs/cli/secretary.md +12 -0
  184. package/templates/docs/cli/session.md +10 -0
  185. package/templates/docs/cli/sessions.md +12 -0
  186. package/templates/docs/cli/set.md +10 -0
  187. package/templates/docs/cli/slot-advice.md +10 -0
  188. package/templates/docs/cli/stack.md +11 -0
  189. package/templates/docs/cli/start.md +10 -0
  190. package/templates/docs/cli/status.md +10 -0
  191. package/templates/docs/cli/swap.md +10 -0
  192. package/templates/docs/cli/switch.md +14 -0
  193. package/templates/docs/cli/tag.md +10 -0
  194. package/templates/docs/cli/target.md +12 -0
  195. package/templates/docs/cli/test.md +10 -0
  196. package/templates/docs/cli/title.md +10 -0
  197. package/templates/docs/cli/to-master.md +10 -0
  198. package/templates/docs/cli/to-mini.md +10 -0
  199. package/templates/docs/cli/to-slot.md +10 -0
  200. package/templates/docs/cli/todo.md +16 -0
  201. package/templates/docs/cli/update.md +23 -0
  202. package/templates/docs/cli/verify.md +10 -0
  203. package/templates/docs/cli/version.md +10 -0
  204. package/templates/docs/cli/whoami.md +12 -0
  205. package/templates/init/AGENTS.md +88 -26
  206. package/templates/init/contracts/_vendor/balance.yaml +11 -0
  207. package/templates/init/contracts/_vendor/supervise.yaml +14 -0
  208. package/templates/init/mesh.config.yaml +40 -0
  209. package/templates/init/roles/common.yaml +6 -2
  210. package/templates/init/roles/docs/common.md +3 -1
  211. package/templates/init/roles/docs/manager.md +4 -0
  212. package/templates/init/roles/docs/secretary.md +2 -0
  213. package/templates/init/roles/docs/worker.md +3 -0
  214. package/templates/init/roles/manager.yaml +2 -0
  215. package/templates/init/roles/secretary.yaml +3 -0
  216. package/templates/init/roles/worker.yaml +3 -1
  217. package/dist/agent-context-init.d.ts +0 -5
  218. package/dist/agent-context-init.d.ts.map +0 -1
  219. package/dist/agent-context-init.js +0 -41
  220. package/dist/agent-context-init.js.map +0 -1
  221. package/dist/banner.d.ts +0 -9
  222. package/dist/banner.d.ts.map +0 -1
  223. package/dist/banner.js +0 -113
  224. package/dist/banner.js.map +0 -1
  225. package/dist/chat-cli.d.ts +0 -4
  226. package/dist/chat-cli.d.ts.map +0 -1
  227. package/dist/chat-cli.js +0 -162
  228. package/dist/chat-cli.js.map +0 -1
  229. package/dist/checkback-cli.d.ts +0 -4
  230. package/dist/checkback-cli.d.ts.map +0 -1
  231. package/dist/checkback-cli.js +0 -203
  232. package/dist/checkback-cli.js.map +0 -1
  233. package/dist/contract-lock-cli.d.ts +0 -4
  234. package/dist/contract-lock-cli.d.ts.map +0 -1
  235. package/dist/contract-lock-cli.js +0 -180
  236. package/dist/contract-lock-cli.js.map +0 -1
  237. package/dist/coord-cli.d.ts +0 -3
  238. package/dist/coord-cli.d.ts.map +0 -1
  239. package/dist/coord-cli.js +0 -15
  240. package/dist/coord-cli.js.map +0 -1
  241. package/dist/discovery-report.d.ts +0 -15
  242. package/dist/discovery-report.d.ts.map +0 -1
  243. package/dist/discovery-report.js +0 -42
  244. package/dist/discovery-report.js.map +0 -1
  245. package/dist/init.d.ts +0 -23
  246. package/dist/init.d.ts.map +0 -1
  247. package/dist/init.js +0 -74
  248. package/dist/init.js.map +0 -1
  249. package/dist/init.test.d.ts +0 -2
  250. package/dist/init.test.d.ts.map +0 -1
  251. package/dist/init.test.js +0 -37
  252. package/dist/init.test.js.map +0 -1
  253. package/dist/logo-art.d.ts +0 -4
  254. package/dist/logo-art.d.ts.map +0 -1
  255. package/dist/logo-art.js +0 -134
  256. package/dist/logo-art.js.map +0 -1
  257. package/dist/logo-cli.d.ts +0 -3
  258. package/dist/logo-cli.d.ts.map +0 -1
  259. package/dist/logo-cli.js +0 -30
  260. package/dist/logo-cli.js.map +0 -1
  261. package/dist/logo-color.d.ts +0 -16
  262. package/dist/logo-color.d.ts.map +0 -1
  263. package/dist/logo-color.js +0 -65
  264. package/dist/logo-color.js.map +0 -1
  265. package/dist/migrate-runtime.d.ts +0 -15
  266. package/dist/migrate-runtime.d.ts.map +0 -1
  267. package/dist/migrate-runtime.js +0 -67
  268. package/dist/migrate-runtime.js.map +0 -1
  269. package/dist/notify-cli.d.ts +0 -4
  270. package/dist/notify-cli.d.ts.map +0 -1
  271. package/dist/notify-cli.js +0 -45
  272. package/dist/notify-cli.js.map +0 -1
  273. package/dist/preview-cli.d.ts +0 -4
  274. package/dist/preview-cli.d.ts.map +0 -1
  275. package/dist/preview-cli.js +0 -39
  276. package/dist/preview-cli.js.map +0 -1
  277. package/dist/program-help.d.ts +0 -3
  278. package/dist/program-help.d.ts.map +0 -1
  279. package/dist/program-help.js +0 -23
  280. package/dist/program-help.js.map +0 -1
  281. package/dist/room-cli.d.ts +0 -5
  282. package/dist/room-cli.d.ts.map +0 -1
  283. package/dist/room-cli.js +0 -316
  284. package/dist/room-cli.js.map +0 -1
  285. package/dist/room.d.ts +0 -4
  286. package/dist/room.d.ts.map +0 -1
  287. package/dist/room.js +0 -149
  288. package/dist/room.js.map +0 -1
  289. package/dist/seat-cli.d.ts +0 -3
  290. package/dist/seat-cli.d.ts.map +0 -1
  291. package/dist/seat-cli.js +0 -73
  292. package/dist/seat-cli.js.map +0 -1
  293. package/dist/sessions-cli.d.ts +0 -11
  294. package/dist/sessions-cli.d.ts.map +0 -1
  295. package/dist/sessions-cli.js +0 -178
  296. package/dist/sessions-cli.js.map +0 -1
  297. package/dist/status-report.d.ts +0 -22
  298. package/dist/status-report.d.ts.map +0 -1
  299. package/dist/status-report.js +0 -231
  300. package/dist/status-report.js.map +0 -1
  301. package/dist/update.d.ts +0 -15
  302. package/dist/update.d.ts.map +0 -1
  303. package/dist/update.js +0 -89
  304. package/dist/update.js.map +0 -1
  305. package/dist/version-nudge.d.ts +0 -20
  306. package/dist/version-nudge.d.ts.map +0 -1
  307. package/dist/version-nudge.js +0 -107
  308. package/dist/version-nudge.js.map +0 -1
  309. package/dist/version-nudge.test.d.ts +0 -2
  310. package/dist/version-nudge.test.d.ts.map +0 -1
  311. package/dist/version-nudge.test.js +0 -16
  312. package/dist/version-nudge.test.js.map +0 -1
  313. package/dist/watch-daemon.d.ts +0 -2
  314. package/dist/watch-daemon.d.ts.map +0 -1
  315. package/dist/watch-daemon.js +0 -41
  316. package/dist/watch-daemon.js.map +0 -1
  317. package/dist/work-daemon.d.ts +0 -2
  318. package/dist/work-daemon.d.ts.map +0 -1
  319. package/dist/work-daemon.js +0 -42
  320. package/dist/work-daemon.js.map +0 -1
@@ -0,0 +1,418 @@
1
+ /**
2
+ * session check / session repair — config, version stamp, and lost runtime files.
3
+ * Agents sometimes delete daemon/seat files; repair only recreates missing paths
4
+ * (never overwrites live FOCUS/TASKS or non-empty ledgers).
5
+ */
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+ import { buildResolvedPaths, meshRuntimePaths, seatDirSegment, writePathsManifest, } from "@seat-mesh/core";
10
+ import { ensureSeatFiles, ensureMeshInbox, sessionSync } from "@seat-mesh/tmux";
11
+ import { readInstalledCliVersion, readProfileSeatmeshVersion, semverLess, } from "../ui/version-nudge.js";
12
+ import { ensureAgentsCliDoc, ensureMissingRoleTemplates } from "./init.js";
13
+ import { mergeMeshConfigOnUpdate } from "./merge-mesh-config.js";
14
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
15
+ const TEMPLATE_ROOT = path.join(__dirname, "..", "..", "templates", "init");
16
+ function rel(workspace, abs) {
17
+ const r = path.relative(workspace, abs);
18
+ return r && !r.startsWith("..") ? r : abs;
19
+ }
20
+ function missing(abs) {
21
+ return !fs.existsSync(abs);
22
+ }
23
+ function isEmptyFile(abs) {
24
+ if (!fs.existsSync(abs))
25
+ return true;
26
+ try {
27
+ return fs.statSync(abs).size === 0;
28
+ }
29
+ catch {
30
+ return true;
31
+ }
32
+ }
33
+ /** Critical profile files that should always exist after init/update. */
34
+ function profileCriticalFiles(loaded) {
35
+ const d = loaded.profileDir;
36
+ const resolved = buildResolvedPaths(loaded);
37
+ return [
38
+ { id: "config", abs: loaded.profilePath, label: "mesh.config.yaml" },
39
+ { id: "mesh-agents", abs: resolved.meshAgentsJson, label: "mesh-agents.json" },
40
+ { id: "agents-md", abs: path.join(d, "AGENTS.md"), label: "AGENTS.md" },
41
+ { id: "paths-json", abs: path.join(d, "paths.json"), label: "paths.json" },
42
+ { id: "roles-dir", abs: resolved.rolesDir, label: "roles/" },
43
+ {
44
+ id: "role-pack",
45
+ abs: path.join(resolved.rolesDir, "_vendor", "ROLE_PACK.json"),
46
+ label: "roles/_vendor/ROLE_PACK.json",
47
+ },
48
+ ];
49
+ }
50
+ /** Runtime dirs that must exist for the daemon. */
51
+ function runtimeDirs(loaded) {
52
+ const p = buildResolvedPaths(loaded);
53
+ return [
54
+ { id: "dir-data", abs: p.dataRoot, label: "runtime/" },
55
+ { id: "dir-daemon", abs: p.daemonDir, label: "runtime/daemon/" },
56
+ { id: "dir-seats", abs: p.seatsRoot, label: "seats/" },
57
+ { id: "dir-chat", abs: p.chatRoomsRoot, label: "chat-rooms/" },
58
+ { id: "dir-contracts", abs: p.contractsDir, label: "contracts/" },
59
+ ];
60
+ }
61
+ /**
62
+ * Daemon ledgers — missing is OK for a fresh session (daemon recreates on write),
63
+ * but after agents delete them mid-flight we restore empty files so appends work
64
+ * and operators see what was lost.
65
+ */
66
+ function daemonLedgerFiles(loaded) {
67
+ const rt = meshRuntimePaths(loaded);
68
+ const daemonDir = rt.daemonDir;
69
+ return [
70
+ { id: "ledger-inbox", abs: rt.inboxJsonl, empty: "" },
71
+ { id: "ledger-peer", abs: rt.peerJsonl, empty: "" },
72
+ { id: "ledger-checkback", abs: rt.checkbackJsonl, empty: "" },
73
+ { id: "ledger-ack", abs: rt.ackJsonl, empty: "" },
74
+ { id: "ledger-target", abs: rt.targetJsonl, empty: "" },
75
+ { id: "ledger-pane-ops", abs: rt.paneOpsJsonl, empty: "" },
76
+ { id: "ledger-calls", abs: rt.callsJsonl, empty: "" },
77
+ { id: "ledger-peer-backlog", abs: path.join(daemonDir, "PEER-BACKLOG.jsonl"), empty: "" },
78
+ {
79
+ id: "ack-redirect",
80
+ abs: path.join(daemonDir, "ACK-REDIRECT-BLOCKS.json"),
81
+ empty: "[]\n",
82
+ },
83
+ { id: "cold-start", abs: rt.coldStartState, empty: "{}\n" },
84
+ { id: "ppa-state", abs: rt.ppaState, empty: "{}\n" },
85
+ ];
86
+ }
87
+ function seatTrioMissing(loaded) {
88
+ const root = buildResolvedPaths(loaded).seatsRoot;
89
+ const dirs = loaded.profile.seats.dirs;
90
+ const missingPaths = [];
91
+ const check = (dir) => {
92
+ for (const name of ["FOCUS.md", "TASKS.md", "REMINDER.md"]) {
93
+ const p = path.join(dir, name);
94
+ if (missing(p))
95
+ missingPaths.push(p);
96
+ }
97
+ };
98
+ for (const col of loaded.profile.layout?.base.columns ?? ["manager", "secretary"]) {
99
+ check(path.join(root, seatDirSegment(dirs, col)));
100
+ }
101
+ const workerPat = dirs?.worker ?? "slot-{n}";
102
+ for (let n = 1; n <= loaded.profile.session.workerCount; n++) {
103
+ check(path.join(root, workerPat.replace("{n}", String(n))));
104
+ }
105
+ return missingPaths;
106
+ }
107
+ export function runSessionCheck(loaded) {
108
+ const findings = [];
109
+ const ws = loaded.workspace;
110
+ const cliVersion = readInstalledCliVersion();
111
+ const profileVersion = readProfileSeatmeshVersion(loaded.profileDir);
112
+ // Config already loaded if we got here — still record ok.
113
+ findings.push({
114
+ id: "config-load",
115
+ severity: "ok",
116
+ path: rel(ws, loaded.profilePath),
117
+ message: `config loads (session=${loaded.sessionName})`,
118
+ repairable: false,
119
+ });
120
+ if (!profileVersion) {
121
+ findings.push({
122
+ id: "version-stamp",
123
+ severity: "warn",
124
+ path: rel(ws, path.join(loaded.profileDir, ".seatmesh-version")),
125
+ message: `profile has no .seatmesh-version (CLI ${cliVersion}) — run session repair or update`,
126
+ repairable: true,
127
+ });
128
+ }
129
+ else if (profileVersion !== cliVersion) {
130
+ const behind = semverLess(profileVersion, cliVersion);
131
+ findings.push({
132
+ id: "version-mismatch",
133
+ severity: behind ? "warn" : "ok",
134
+ path: rel(ws, path.join(loaded.profileDir, ".seatmesh-version")),
135
+ message: behind
136
+ ? `profile stamp ${profileVersion} behind CLI ${cliVersion} — run seatmesh update`
137
+ : `profile stamp ${profileVersion} (CLI ${cliVersion})`,
138
+ repairable: behind,
139
+ });
140
+ }
141
+ else {
142
+ findings.push({
143
+ id: "version",
144
+ severity: "ok",
145
+ message: `CLI ${cliVersion} matches profile stamp`,
146
+ repairable: false,
147
+ });
148
+ }
149
+ for (const f of profileCriticalFiles(loaded)) {
150
+ if (missing(f.abs)) {
151
+ findings.push({
152
+ id: f.id,
153
+ severity: f.id === "config" ? "fail" : "fail",
154
+ path: rel(ws, f.abs),
155
+ message: `missing ${f.label}`,
156
+ repairable: f.id !== "config",
157
+ });
158
+ }
159
+ else {
160
+ findings.push({
161
+ id: f.id,
162
+ severity: "ok",
163
+ path: rel(ws, f.abs),
164
+ message: `${f.label} present`,
165
+ repairable: false,
166
+ });
167
+ }
168
+ }
169
+ for (const d of runtimeDirs(loaded)) {
170
+ if (missing(d.abs) || !fs.statSync(d.abs).isDirectory()) {
171
+ findings.push({
172
+ id: d.id,
173
+ severity: "fail",
174
+ path: rel(ws, d.abs),
175
+ message: `missing dir ${d.label}`,
176
+ repairable: true,
177
+ });
178
+ }
179
+ }
180
+ const rt = meshRuntimePaths(loaded);
181
+ if (missing(rt.gateQueue)) {
182
+ findings.push({
183
+ id: "gate-queue",
184
+ severity: "fail",
185
+ path: rel(ws, rt.gateQueue),
186
+ message: "missing GATE-QUEUE.md",
187
+ repairable: true,
188
+ });
189
+ }
190
+ const seatMiss = seatTrioMissing(loaded);
191
+ if (seatMiss.length) {
192
+ findings.push({
193
+ id: "seats",
194
+ severity: "fail",
195
+ message: `${seatMiss.length} seat file(s) missing (FOCUS/TASKS/REMINDER)`,
196
+ repairable: true,
197
+ });
198
+ for (const p of seatMiss.slice(0, 12)) {
199
+ findings.push({
200
+ id: `seat:${rel(ws, p)}`,
201
+ severity: "fail",
202
+ path: rel(ws, p),
203
+ message: "missing seat file",
204
+ repairable: true,
205
+ });
206
+ }
207
+ if (seatMiss.length > 12) {
208
+ findings.push({
209
+ id: "seats-more",
210
+ severity: "fail",
211
+ message: `… and ${seatMiss.length - 12} more seat files`,
212
+ repairable: true,
213
+ });
214
+ }
215
+ }
216
+ else {
217
+ findings.push({
218
+ id: "seats",
219
+ severity: "ok",
220
+ message: "seat FOCUS/TASKS/REMINDER present for configured columns/slots",
221
+ repairable: false,
222
+ });
223
+ }
224
+ const ledgers = daemonLedgerFiles(loaded);
225
+ const daemonTouched = !missing(rt.meshInboxMeta) ||
226
+ !missing(rt.meshInboxLog) ||
227
+ ledgers.some((L) => !missing(L.abs));
228
+ let missingLedgers = 0;
229
+ if (daemonTouched) {
230
+ for (const L of ledgers) {
231
+ if (missing(L.abs)) {
232
+ missingLedgers++;
233
+ findings.push({
234
+ id: L.id,
235
+ severity: "warn",
236
+ path: rel(ws, L.abs),
237
+ message: "daemon file missing (likely deleted) — repair recreates empty",
238
+ repairable: true,
239
+ });
240
+ }
241
+ }
242
+ }
243
+ if (missingLedgers === 0) {
244
+ findings.push({
245
+ id: "daemon-ledgers",
246
+ severity: "ok",
247
+ message: daemonTouched
248
+ ? "daemon ledger files present"
249
+ : "daemon ledgers not started yet (ok)",
250
+ repairable: false,
251
+ });
252
+ }
253
+ if (rt.storageBackend === "sqlite" && missing(rt.sqlitePath)) {
254
+ findings.push({
255
+ id: "sqlite",
256
+ severity: "warn",
257
+ path: rel(ws, rt.sqlitePath),
258
+ message: "mesh.sqlite missing — inbox will recreate on next start",
259
+ repairable: true,
260
+ });
261
+ }
262
+ if (missing(rt.meshInboxMeta)) {
263
+ findings.push({
264
+ id: "inbox-meta",
265
+ severity: "warn",
266
+ path: rel(ws, rt.meshInboxMeta),
267
+ message: "mesh-inbox.json missing — repair ensures inbox",
268
+ repairable: true,
269
+ });
270
+ }
271
+ const ok = !findings.some((f) => f.severity === "fail");
272
+ return {
273
+ ok,
274
+ findings,
275
+ cliVersion,
276
+ profileVersion,
277
+ profileDir: loaded.profileDir,
278
+ sessionName: loaded.sessionName,
279
+ };
280
+ }
281
+ function writeIfMissing(abs, contents, repaired) {
282
+ if (fs.existsSync(abs))
283
+ return false;
284
+ fs.mkdirSync(path.dirname(abs), { recursive: true });
285
+ fs.writeFileSync(abs, contents, "utf8");
286
+ repaired.push(abs);
287
+ return true;
288
+ }
289
+ function restoreMeshAgents(loaded, repaired) {
290
+ const dest = buildResolvedPaths(loaded).meshAgentsJson;
291
+ if (fs.existsSync(dest))
292
+ return;
293
+ const src = path.join(TEMPLATE_ROOT, "mesh-agents.json");
294
+ if (!fs.existsSync(src))
295
+ return;
296
+ const workdir = loaded.workspace;
297
+ const body = fs
298
+ .readFileSync(src, "utf8")
299
+ .replace(/\{\{workdir\}\}/g, workdir)
300
+ .replace(/\{\{name\}\}/g, loaded.profile.name ?? path.basename(workdir));
301
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
302
+ fs.writeFileSync(dest, body, "utf8");
303
+ repaired.push(dest);
304
+ }
305
+ function ensureRuntimeDirsRepair(loaded, repaired) {
306
+ const paths = buildResolvedPaths(loaded);
307
+ for (const dir of [
308
+ paths.dataRoot,
309
+ paths.daemonDir,
310
+ paths.chatRoomsRoot,
311
+ paths.seatsRoot,
312
+ paths.contractsDir,
313
+ path.join(paths.contractsDir, "locks"),
314
+ ]) {
315
+ if (fs.existsSync(dir))
316
+ continue;
317
+ fs.mkdirSync(dir, { recursive: true });
318
+ repaired.push(dir);
319
+ }
320
+ }
321
+ export function runSessionRepair(loaded, opts = {}) {
322
+ const repaired = [];
323
+ const skipped = [];
324
+ ensureRuntimeDirsRepair(loaded, repaired);
325
+ const agents = ensureAgentsCliDoc(loaded.profileDir, {
326
+ workspace: loaded.workspace,
327
+ forceRefresh: false,
328
+ });
329
+ for (const p of [...agents.created, ...agents.refreshed])
330
+ repaired.push(p);
331
+ const roles = ensureMissingRoleTemplates(loaded.profileDir);
332
+ for (const p of roles.created)
333
+ repaired.push(p);
334
+ restoreMeshAgents(loaded, repaired);
335
+ const pathsJson = path.join(loaded.profileDir, "paths.json");
336
+ const pathsWasMissing = missing(pathsJson);
337
+ writePathsManifest(loaded);
338
+ if (pathsWasMissing)
339
+ repaired.push(pathsJson);
340
+ const seats = ensureSeatFiles(loaded);
341
+ for (const p of seats.created)
342
+ repaired.push(p);
343
+ for (const L of daemonLedgerFiles(loaded)) {
344
+ writeIfMissing(L.abs, L.empty, repaired);
345
+ }
346
+ const rt = meshRuntimePaths(loaded);
347
+ // sqlite: touch empty is useless; leave for inbox. Ensure parent dir only.
348
+ if (rt.storageBackend === "sqlite" && missing(rt.sqlitePath)) {
349
+ skipped.push(`${rt.sqlitePath} (recreated by inbox on start)`);
350
+ }
351
+ const stampPath = path.join(loaded.profileDir, ".seatmesh-version");
352
+ if (missing(stampPath) || isEmptyFile(stampPath)) {
353
+ fs.writeFileSync(stampPath, `${readInstalledCliVersion()}\n`, "utf8");
354
+ repaired.push(stampPath);
355
+ }
356
+ const merge = mergeMeshConfigOnUpdate(loaded, false);
357
+ for (const key of merge.added) {
358
+ repaired.push(`${loaded.profilePath}#${key}`);
359
+ }
360
+ let inboxEnsured = false;
361
+ if (!opts.skipInbox) {
362
+ inboxEnsured = Boolean(ensureMeshInbox(loaded, { quiet: true }));
363
+ }
364
+ if (opts.sync !== false) {
365
+ try {
366
+ sessionSync(loaded);
367
+ repaired.push("session-sync");
368
+ }
369
+ catch {
370
+ skipped.push("session-sync (failed — session may be down)");
371
+ }
372
+ }
373
+ const check = runSessionCheck(loaded);
374
+ return { check, repaired: [...new Set(repaired)], skipped, inboxEnsured };
375
+ }
376
+ export function printSessionCheck(result) {
377
+ const fails = result.findings.filter((f) => f.severity === "fail");
378
+ const warns = result.findings.filter((f) => f.severity === "warn");
379
+ const oks = result.findings.filter((f) => f.severity === "ok");
380
+ console.log(`session check ${result.ok ? "OK" : "FAIL"} session=${result.sessionName} cli=${result.cliVersion} profile=${result.profileVersion ?? "(none)"}`);
381
+ console.log(` profile: ${result.profileDir}`);
382
+ for (const f of [...fails, ...warns]) {
383
+ const tag = f.severity.toUpperCase();
384
+ const loc = f.path ? ` ${f.path}` : "";
385
+ console.log(` [${tag}] ${f.message}${loc}`);
386
+ }
387
+ if (fails.length === 0 && warns.length === 0) {
388
+ console.log(` ${oks.length} checks passed`);
389
+ }
390
+ else {
391
+ console.log(` summary: fail=${fails.length} warn=${warns.length} ok=${oks.length}`);
392
+ if (fails.length || warns.some((w) => w.repairable)) {
393
+ console.log(` fix: seatmesh session repair`);
394
+ }
395
+ }
396
+ }
397
+ export function printSessionRepair(result) {
398
+ const { repaired, skipped, inboxEnsured, check } = result;
399
+ console.log(`session repair session=${check.sessionName}`);
400
+ if (repaired.length) {
401
+ console.log(` restored ${repaired.length}:`);
402
+ for (const p of repaired.slice(0, 40)) {
403
+ console.log(` + ${p}`);
404
+ }
405
+ if (repaired.length > 40)
406
+ console.log(` … +${repaired.length - 40} more`);
407
+ }
408
+ else {
409
+ console.log(` nothing to restore`);
410
+ }
411
+ if (skipped.length) {
412
+ for (const s of skipped)
413
+ console.log(` skip: ${s}`);
414
+ }
415
+ console.log(` inbox: ${inboxEnsured ? "up" : "not ensured / down"}`);
416
+ printSessionCheck(check);
417
+ }
418
+ //# sourceMappingURL=session-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-health.js","sourceRoot":"","sources":["../../src/setup/session-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session-health.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-health.test.d.ts","sourceRoot":"","sources":["../../src/setup/session-health.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, describe, expect, it } from "vitest";
5
+ import { loadProfile, meshRuntimePaths } from "@seat-mesh/core";
6
+ import { runInit } from "./init.js";
7
+ import { runSessionCheck, runSessionRepair } from "./session-health.js";
8
+ describe("session-health", () => {
9
+ let tmp = "";
10
+ afterEach(() => {
11
+ if (tmp)
12
+ fs.rmSync(tmp, { recursive: true, force: true });
13
+ });
14
+ it("check passes on fresh init + repair; detects deleted daemon ledger", () => {
15
+ tmp = fs.mkdtempSync(path.join(os.tmpdir(), "sm-health-"));
16
+ runInit({ workspace: tmp, name: "health" });
17
+ const loaded = loadProfile(path.join(tmp, ".sm"));
18
+ // Seats + version not always present right after init — repair first.
19
+ const repaired = runSessionRepair(loaded, { sync: false, skipInbox: true });
20
+ expect(repaired.check.ok).toBe(true);
21
+ const peer = meshRuntimePaths(loaded).peerJsonl;
22
+ expect(fs.existsSync(peer)).toBe(true);
23
+ fs.unlinkSync(peer);
24
+ const afterDelete = runSessionCheck(loaded);
25
+ expect(afterDelete.ok).toBe(true); // ledger missing = warn, not fail
26
+ expect(afterDelete.findings.some((f) => f.id === "ledger-peer" && f.severity === "warn")).toBe(true);
27
+ const again = runSessionRepair(loaded, { sync: false, skipInbox: true });
28
+ expect(fs.existsSync(peer)).toBe(true);
29
+ expect(again.check.findings.some((f) => f.id === "ledger-peer" && f.severity === "warn")).toBe(false);
30
+ });
31
+ it("check fails when GATE-QUEUE deleted; repair restores", () => {
32
+ tmp = fs.mkdtempSync(path.join(os.tmpdir(), "sm-health-gq-"));
33
+ runInit({ workspace: tmp, name: "gq" });
34
+ const loaded = loadProfile(path.join(tmp, ".sm"));
35
+ runSessionRepair(loaded, { sync: false, skipInbox: true });
36
+ const gq = meshRuntimePaths(loaded).gateQueue;
37
+ fs.unlinkSync(gq);
38
+ const bad = runSessionCheck(loaded);
39
+ expect(bad.ok).toBe(false);
40
+ expect(bad.findings.some((f) => f.id === "gate-queue" && f.severity === "fail")).toBe(true);
41
+ const fixed = runSessionRepair(loaded, { sync: false, skipInbox: true });
42
+ expect(fs.existsSync(gq)).toBe(true);
43
+ expect(fixed.check.ok).toBe(true);
44
+ });
45
+ });
46
+ //# sourceMappingURL=session-health.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-health.test.js","sourceRoot":"","sources":["../../src/setup/session-health.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { runRolePackMigrate } from "@seat-mesh/core";
2
2
  import { type MigrateRuntimeResult } from "./migrate-runtime.js";
3
+ import { type MeshConfigMergeResult } from "./merge-mesh-config.js";
3
4
  export interface UpdateOptions {
4
5
  profileArg?: string;
5
6
  dryRun?: boolean;
@@ -11,6 +12,7 @@ export interface UpdateResult {
11
12
  pathsManifest: string;
12
13
  migrate?: MigrateRuntimeResult;
13
14
  rolePack?: ReturnType<typeof runRolePackMigrate>;
15
+ configMerge?: MeshConfigMergeResult;
14
16
  packageVersion: string;
15
17
  previousVersion: string | null;
16
18
  /** Any _vendor file or paths.json actually changed (or would change in dry-run). */
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,kBAAkB,EAGnB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAqB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;CAClB;AAyDD,4FAA4F;AAC5F,wBAAgB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,YAAY,CAuHhE"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,kBAAkB,EAGnB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAqB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAI7F,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oFAAoF;IACpF,OAAO,EAAE,OAAO,CAAC;CAClB;AAyDD,4FAA4F;AAC5F,wBAAgB,SAAS,CAAC,IAAI,GAAE,aAAkB,GAAG,YAAY,CA+IhE"}
@@ -4,7 +4,9 @@ import { fileURLToPath } from "node:url";
4
4
  import { buildResolvedPaths, contractsDirFor, loadProfile, runRolePackMigrate, writePathsManifest, } from "@seat-mesh/core";
5
5
  import { readInstalledCliVersion, readProfileSeatmeshVersion, } from "../ui/version-nudge.js";
6
6
  import { runMigrateRuntime } from "./migrate-runtime.js";
7
+ import { mergeMeshConfigOnUpdate } from "./merge-mesh-config.js";
7
8
  import { roleTemplatesDir } from "./init.js";
9
+ import { ensureSeatFiles } from "@seat-mesh/tmux";
8
10
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
11
  // update.ts lives in src/setup/ (dist/setup/), templates sit at packages/cli/templates/
10
12
  const VENDOR_ROOT = path.join(__dirname, "..", "..", "templates", "init");
@@ -138,11 +140,33 @@ export function runUpdate(opts = {}) {
138
140
  refreshed.push(t);
139
141
  }
140
142
  ensureRuntimeDirs(loaded, refreshed, skipped, dryRun);
143
+ const configMerge = mergeMeshConfigOnUpdate(loaded, dryRun);
144
+ for (const key of configMerge.added) {
145
+ refreshed.push(`${configMerge.profilePath}#${key}`);
146
+ }
147
+ // Seed seats/_shared (+ missing FOCUS/TASKS trios) — never overwrite live seat MDs.
148
+ if (!dryRun) {
149
+ const seats = ensureSeatFiles(loaded);
150
+ for (const p of seats.created) {
151
+ if (!refreshed.includes(p))
152
+ refreshed.push(p);
153
+ }
154
+ }
155
+ else {
156
+ const sharedNotes = path.join(buildResolvedPaths(loaded).seatsRoot, "_shared", "NOTES.md");
157
+ if (!fs.existsSync(sharedNotes))
158
+ refreshed.push(sharedNotes);
159
+ }
141
160
  const vendorTouched = refreshed.some((p) => p.includes(`${path.sep}_vendor${path.sep}`));
142
161
  const changed = refreshed.length > 0 ||
143
162
  previousVersion !== packageVersion ||
144
- rolePack.direction !== "noop";
145
- if (!dryRun && (vendorTouched || previousVersion !== packageVersion || rolePack.direction !== "noop")) {
163
+ rolePack.direction !== "noop" ||
164
+ (configMerge.added.length > 0);
165
+ if (!dryRun &&
166
+ (vendorTouched ||
167
+ previousVersion !== packageVersion ||
168
+ rolePack.direction !== "noop" ||
169
+ configMerge.wrote)) {
146
170
  writeProfileVersion(loaded.profileDir, packageVersion, false);
147
171
  }
148
172
  return {
@@ -151,6 +175,7 @@ export function runUpdate(opts = {}) {
151
175
  pathsManifest,
152
176
  migrate,
153
177
  rolePack,
178
+ configMerge,
154
179
  packageVersion,
155
180
  previousVersion,
156
181
  changed,
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/setup/update.ts"],"names":[],"mappings":"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"}