@seat-mesh/core 0.1.2

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 (289) hide show
  1. package/dist/chatfile/chatfile.test.d.ts +2 -0
  2. package/dist/chatfile/chatfile.test.d.ts.map +1 -0
  3. package/dist/chatfile/chatfile.test.js +86 -0
  4. package/dist/chatfile/chatfile.test.js.map +1 -0
  5. package/dist/chatfile/index.d.ts +5 -0
  6. package/dist/chatfile/index.d.ts.map +1 -0
  7. package/dist/chatfile/index.js +5 -0
  8. package/dist/chatfile/index.js.map +1 -0
  9. package/dist/chatfile/record.d.ts +12 -0
  10. package/dist/chatfile/record.d.ts.map +1 -0
  11. package/dist/chatfile/record.js +38 -0
  12. package/dist/chatfile/record.js.map +1 -0
  13. package/dist/chatfile/slot.d.ts +4 -0
  14. package/dist/chatfile/slot.d.ts.map +1 -0
  15. package/dist/chatfile/slot.js +14 -0
  16. package/dist/chatfile/slot.js.map +1 -0
  17. package/dist/chatfile/store.d.ts +23 -0
  18. package/dist/chatfile/store.d.ts.map +1 -0
  19. package/dist/chatfile/store.js +92 -0
  20. package/dist/chatfile/store.js.map +1 -0
  21. package/dist/chatfile/types.d.ts +47 -0
  22. package/dist/chatfile/types.d.ts.map +1 -0
  23. package/dist/chatfile/types.js +16 -0
  24. package/dist/chatfile/types.js.map +1 -0
  25. package/dist/chatroom/agent-id.d.ts +7 -0
  26. package/dist/chatroom/agent-id.d.ts.map +1 -0
  27. package/dist/chatroom/agent-id.js +18 -0
  28. package/dist/chatroom/agent-id.js.map +1 -0
  29. package/dist/chatroom/calls.d.ts +30 -0
  30. package/dist/chatroom/calls.d.ts.map +1 -0
  31. package/dist/chatroom/calls.js +75 -0
  32. package/dist/chatroom/calls.js.map +1 -0
  33. package/dist/chatroom/calls.test.d.ts +2 -0
  34. package/dist/chatroom/calls.test.d.ts.map +1 -0
  35. package/dist/chatroom/calls.test.js +54 -0
  36. package/dist/chatroom/calls.test.js.map +1 -0
  37. package/dist/chatroom/checkback-hint.d.ts +51 -0
  38. package/dist/chatroom/checkback-hint.d.ts.map +1 -0
  39. package/dist/chatroom/checkback-hint.js +140 -0
  40. package/dist/chatroom/checkback-hint.js.map +1 -0
  41. package/dist/chatroom/checkback-hint.test.d.ts +2 -0
  42. package/dist/chatroom/checkback-hint.test.d.ts.map +1 -0
  43. package/dist/chatroom/checkback-hint.test.js +9 -0
  44. package/dist/chatroom/checkback-hint.test.js.map +1 -0
  45. package/dist/chatroom/checkback.d.ts +21 -0
  46. package/dist/chatroom/checkback.d.ts.map +1 -0
  47. package/dist/chatroom/checkback.js +58 -0
  48. package/dist/chatroom/checkback.js.map +1 -0
  49. package/dist/chatroom/comms-checkback.d.ts +25 -0
  50. package/dist/chatroom/comms-checkback.d.ts.map +1 -0
  51. package/dist/chatroom/comms-checkback.js +41 -0
  52. package/dist/chatroom/comms-checkback.js.map +1 -0
  53. package/dist/chatroom/duration.d.ts +4 -0
  54. package/dist/chatroom/duration.d.ts.map +1 -0
  55. package/dist/chatroom/duration.js +18 -0
  56. package/dist/chatroom/duration.js.map +1 -0
  57. package/dist/chatroom/fanout-routing.d.ts +27 -0
  58. package/dist/chatroom/fanout-routing.d.ts.map +1 -0
  59. package/dist/chatroom/fanout-routing.js +131 -0
  60. package/dist/chatroom/fanout-routing.js.map +1 -0
  61. package/dist/chatroom/fanout-routing.test.d.ts +2 -0
  62. package/dist/chatroom/fanout-routing.test.d.ts.map +1 -0
  63. package/dist/chatroom/fanout-routing.test.js +125 -0
  64. package/dist/chatroom/fanout-routing.test.js.map +1 -0
  65. package/dist/chatroom/global.d.ts +6 -0
  66. package/dist/chatroom/global.d.ts.map +1 -0
  67. package/dist/chatroom/global.js +13 -0
  68. package/dist/chatroom/global.js.map +1 -0
  69. package/dist/chatroom/inbox-client.d.ts +49 -0
  70. package/dist/chatroom/inbox-client.d.ts.map +1 -0
  71. package/dist/chatroom/inbox-client.js +73 -0
  72. package/dist/chatroom/inbox-client.js.map +1 -0
  73. package/dist/chatroom/index.d.ts +13 -0
  74. package/dist/chatroom/index.d.ts.map +1 -0
  75. package/dist/chatroom/index.js +13 -0
  76. package/dist/chatroom/index.js.map +1 -0
  77. package/dist/chatroom/mentions.d.ts +4 -0
  78. package/dist/chatroom/mentions.d.ts.map +1 -0
  79. package/dist/chatroom/mentions.js +20 -0
  80. package/dist/chatroom/mentions.js.map +1 -0
  81. package/dist/chatroom/mentions.test.d.ts +2 -0
  82. package/dist/chatroom/mentions.test.d.ts.map +1 -0
  83. package/dist/chatroom/mentions.test.js +12 -0
  84. package/dist/chatroom/mentions.test.js.map +1 -0
  85. package/dist/chatroom/read-state.d.ts +17 -0
  86. package/dist/chatroom/read-state.d.ts.map +1 -0
  87. package/dist/chatroom/read-state.js +84 -0
  88. package/dist/chatroom/read-state.js.map +1 -0
  89. package/dist/chatroom/room.d.ts +66 -0
  90. package/dist/chatroom/room.d.ts.map +1 -0
  91. package/dist/chatroom/room.js +249 -0
  92. package/dist/chatroom/room.js.map +1 -0
  93. package/dist/chatroom/room.test.d.ts +2 -0
  94. package/dist/chatroom/room.test.d.ts.map +1 -0
  95. package/dist/chatroom/room.test.js +169 -0
  96. package/dist/chatroom/room.test.js.map +1 -0
  97. package/dist/chatroom/types.d.ts +71 -0
  98. package/dist/chatroom/types.d.ts.map +1 -0
  99. package/dist/chatroom/types.js +37 -0
  100. package/dist/chatroom/types.js.map +1 -0
  101. package/dist/comms/envelope.d.ts +134 -0
  102. package/dist/comms/envelope.d.ts.map +1 -0
  103. package/dist/comms/envelope.js +33 -0
  104. package/dist/comms/envelope.js.map +1 -0
  105. package/dist/contracts/index.d.ts +2 -0
  106. package/dist/contracts/index.d.ts.map +1 -0
  107. package/dist/contracts/index.js +2 -0
  108. package/dist/contracts/index.js.map +1 -0
  109. package/dist/contracts/supervise-contract.test.d.ts +2 -0
  110. package/dist/contracts/supervise-contract.test.d.ts.map +1 -0
  111. package/dist/contracts/supervise-contract.test.js +49 -0
  112. package/dist/contracts/supervise-contract.test.js.map +1 -0
  113. package/dist/contracts/supervise.d.ts +54 -0
  114. package/dist/contracts/supervise.d.ts.map +1 -0
  115. package/dist/contracts/supervise.js +86 -0
  116. package/dist/contracts/supervise.js.map +1 -0
  117. package/dist/dotdir.d.ts +11 -0
  118. package/dist/dotdir.d.ts.map +1 -0
  119. package/dist/dotdir.js +30 -0
  120. package/dist/dotdir.js.map +1 -0
  121. package/dist/dotdir.test.d.ts +2 -0
  122. package/dist/dotdir.test.d.ts.map +1 -0
  123. package/dist/dotdir.test.js +26 -0
  124. package/dist/dotdir.test.js.map +1 -0
  125. package/dist/index.d.ts +28 -0
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +28 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/jsonl/index.d.ts +2 -0
  130. package/dist/jsonl/index.d.ts.map +1 -0
  131. package/dist/jsonl/index.js +2 -0
  132. package/dist/jsonl/index.js.map +1 -0
  133. package/dist/jsonl/store.d.ts +7 -0
  134. package/dist/jsonl/store.d.ts.map +1 -0
  135. package/dist/jsonl/store.js +61 -0
  136. package/dist/jsonl/store.js.map +1 -0
  137. package/dist/layout/enabled.d.ts +6 -0
  138. package/dist/layout/enabled.d.ts.map +1 -0
  139. package/dist/layout/enabled.js +10 -0
  140. package/dist/layout/enabled.js.map +1 -0
  141. package/dist/layout/enabled.test.d.ts +2 -0
  142. package/dist/layout/enabled.test.d.ts.map +1 -0
  143. package/dist/layout/enabled.test.js +30 -0
  144. package/dist/layout/enabled.test.js.map +1 -0
  145. package/dist/layout/minis.d.ts +17 -0
  146. package/dist/layout/minis.d.ts.map +1 -0
  147. package/dist/layout/minis.js +55 -0
  148. package/dist/layout/minis.js.map +1 -0
  149. package/dist/layout/stack.d.ts +5 -0
  150. package/dist/layout/stack.d.ts.map +1 -0
  151. package/dist/layout/stack.js +8 -0
  152. package/dist/layout/stack.js.map +1 -0
  153. package/dist/layout/stack.test.d.ts +2 -0
  154. package/dist/layout/stack.test.d.ts.map +1 -0
  155. package/dist/layout/stack.test.js +20 -0
  156. package/dist/layout/stack.test.js.map +1 -0
  157. package/dist/mesh-state-merge.d.ts +7 -0
  158. package/dist/mesh-state-merge.d.ts.map +1 -0
  159. package/dist/mesh-state-merge.js +48 -0
  160. package/dist/mesh-state-merge.js.map +1 -0
  161. package/dist/mesh-state-merge.test.d.ts +2 -0
  162. package/dist/mesh-state-merge.test.d.ts.map +1 -0
  163. package/dist/mesh-state-merge.test.js +36 -0
  164. package/dist/mesh-state-merge.test.js.map +1 -0
  165. package/dist/pane-ops/types.d.ts +14 -0
  166. package/dist/pane-ops/types.d.ts.map +1 -0
  167. package/dist/pane-ops/types.js +2 -0
  168. package/dist/pane-ops/types.js.map +1 -0
  169. package/dist/paths-manifest.d.ts +34 -0
  170. package/dist/paths-manifest.d.ts.map +1 -0
  171. package/dist/paths-manifest.js +79 -0
  172. package/dist/paths-manifest.js.map +1 -0
  173. package/dist/paths-manifest.test.d.ts +2 -0
  174. package/dist/paths-manifest.test.d.ts.map +1 -0
  175. package/dist/paths-manifest.test.js +57 -0
  176. package/dist/paths-manifest.test.js.map +1 -0
  177. package/dist/paths.d.ts +5 -0
  178. package/dist/paths.d.ts.map +1 -0
  179. package/dist/paths.js +17 -0
  180. package/dist/paths.js.map +1 -0
  181. package/dist/profile.d.ts +54 -0
  182. package/dist/profile.d.ts.map +1 -0
  183. package/dist/profile.js +93 -0
  184. package/dist/profile.js.map +1 -0
  185. package/dist/profile.test.d.ts +2 -0
  186. package/dist/profile.test.d.ts.map +1 -0
  187. package/dist/profile.test.js +25 -0
  188. package/dist/profile.test.js.map +1 -0
  189. package/dist/providers/registry.d.ts +3 -0
  190. package/dist/providers/registry.d.ts.map +1 -0
  191. package/dist/providers/registry.js +24 -0
  192. package/dist/providers/registry.js.map +1 -0
  193. package/dist/providers/types.d.ts +82 -0
  194. package/dist/providers/types.d.ts.map +1 -0
  195. package/dist/providers/types.js +5 -0
  196. package/dist/providers/types.js.map +1 -0
  197. package/dist/queue/types.d.ts +38 -0
  198. package/dist/queue/types.d.ts.map +1 -0
  199. package/dist/queue/types.js +5 -0
  200. package/dist/queue/types.js.map +1 -0
  201. package/dist/role-index.d.ts +30 -0
  202. package/dist/role-index.d.ts.map +1 -0
  203. package/dist/role-index.js +97 -0
  204. package/dist/role-index.js.map +1 -0
  205. package/dist/runtime-paths.d.ts +43 -0
  206. package/dist/runtime-paths.d.ts.map +1 -0
  207. package/dist/runtime-paths.js +94 -0
  208. package/dist/runtime-paths.js.map +1 -0
  209. package/dist/runtime-paths.test.d.ts +2 -0
  210. package/dist/runtime-paths.test.d.ts.map +1 -0
  211. package/dist/runtime-paths.test.js +86 -0
  212. package/dist/runtime-paths.test.js.map +1 -0
  213. package/dist/schema/agents.d.ts +809 -0
  214. package/dist/schema/agents.d.ts.map +1 -0
  215. package/dist/schema/agents.js +133 -0
  216. package/dist/schema/agents.js.map +1 -0
  217. package/dist/schema/layout-manager2.test.d.ts +2 -0
  218. package/dist/schema/layout-manager2.test.d.ts.map +1 -0
  219. package/dist/schema/layout-manager2.test.js +19 -0
  220. package/dist/schema/layout-manager2.test.js.map +1 -0
  221. package/dist/schema/layout.d.ts +215 -0
  222. package/dist/schema/layout.d.ts.map +1 -0
  223. package/dist/schema/layout.js +96 -0
  224. package/dist/schema/layout.js.map +1 -0
  225. package/dist/schema/profile.d.ts +1148 -0
  226. package/dist/schema/profile.d.ts.map +1 -0
  227. package/dist/schema/profile.js +199 -0
  228. package/dist/schema/profile.js.map +1 -0
  229. package/dist/schema/ux.d.ts +359 -0
  230. package/dist/schema/ux.d.ts.map +1 -0
  231. package/dist/schema/ux.js +53 -0
  232. package/dist/schema/ux.js.map +1 -0
  233. package/dist/session/config.d.ts +3 -0
  234. package/dist/session/config.d.ts.map +1 -0
  235. package/dist/session/config.js +5 -0
  236. package/dist/session/config.js.map +1 -0
  237. package/dist/session/exec.d.ts +5 -0
  238. package/dist/session/exec.d.ts.map +1 -0
  239. package/dist/session/exec.js +29 -0
  240. package/dist/session/exec.js.map +1 -0
  241. package/dist/session/index.d.ts +3 -0
  242. package/dist/session/index.d.ts.map +1 -0
  243. package/dist/session/index.js +3 -0
  244. package/dist/session/index.js.map +1 -0
  245. package/dist/session/session.test.d.ts +2 -0
  246. package/dist/session/session.test.d.ts.map +1 -0
  247. package/dist/session/session.test.js +12 -0
  248. package/dist/session/session.test.js.map +1 -0
  249. package/dist/slot/guards.d.ts +5 -0
  250. package/dist/slot/guards.d.ts.map +1 -0
  251. package/dist/slot/guards.js +53 -0
  252. package/dist/slot/guards.js.map +1 -0
  253. package/dist/slot/types.d.ts +54 -0
  254. package/dist/slot/types.d.ts.map +1 -0
  255. package/dist/slot/types.js +38 -0
  256. package/dist/slot/types.js.map +1 -0
  257. package/dist/stack/config.d.ts +8 -0
  258. package/dist/stack/config.d.ts.map +1 -0
  259. package/dist/stack/config.js +8 -0
  260. package/dist/stack/config.js.map +1 -0
  261. package/dist/stack/exec.d.ts +6 -0
  262. package/dist/stack/exec.d.ts.map +1 -0
  263. package/dist/stack/exec.js +52 -0
  264. package/dist/stack/exec.js.map +1 -0
  265. package/dist/stack/index.d.ts +3 -0
  266. package/dist/stack/index.d.ts.map +1 -0
  267. package/dist/stack/index.js +3 -0
  268. package/dist/stack/index.js.map +1 -0
  269. package/dist/stack/stack.test.d.ts +2 -0
  270. package/dist/stack/stack.test.d.ts.map +1 -0
  271. package/dist/stack/stack.test.js +55 -0
  272. package/dist/stack/stack.test.js.map +1 -0
  273. package/dist/ux/defaults.d.ts +4 -0
  274. package/dist/ux/defaults.d.ts.map +1 -0
  275. package/dist/ux/defaults.js +98 -0
  276. package/dist/ux/defaults.js.map +1 -0
  277. package/dist/ux/evaluate.d.ts +22 -0
  278. package/dist/ux/evaluate.d.ts.map +1 -0
  279. package/dist/ux/evaluate.js +160 -0
  280. package/dist/ux/evaluate.js.map +1 -0
  281. package/dist/ux/evaluate.test.d.ts +2 -0
  282. package/dist/ux/evaluate.test.d.ts.map +1 -0
  283. package/dist/ux/evaluate.test.js +64 -0
  284. package/dist/ux/evaluate.test.js.map +1 -0
  285. package/dist/ux/index.d.ts +3 -0
  286. package/dist/ux/index.d.ts.map +1 -0
  287. package/dist/ux/index.js +3 -0
  288. package/dist/ux/index.js.map +1 -0
  289. package/package.json +38 -0
@@ -0,0 +1,79 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ export const PATHS_MANIFEST = "paths.json";
4
+ /** Resolve a harness path from mesh.config (profileDir-relative by default). */
5
+ export function resolveHarnessPath(loaded, rel) {
6
+ const scope = loaded.profile.paths?.scope ?? "profile";
7
+ const raw = rel.trim();
8
+ if (path.isAbsolute(raw))
9
+ return path.normalize(raw);
10
+ if (scope === "workspace") {
11
+ return path.normalize(path.resolve(loaded.workspace, raw));
12
+ }
13
+ return path.normalize(path.resolve(loaded.profileDir, raw));
14
+ }
15
+ export function pathsScope(loaded) {
16
+ return loaded.profile.paths?.scope ?? "profile";
17
+ }
18
+ export function storageBackend(loaded) {
19
+ return loaded.profile.storage?.backend ?? "sqlite";
20
+ }
21
+ export function buildResolvedPaths(loaded) {
22
+ const { profile } = loaded;
23
+ const dataRoot = resolveHarnessPath(loaded, profile.data?.root ?? "runtime");
24
+ const sqliteRel = profile.storage?.sqlite?.path ?? "runtime/mesh.sqlite";
25
+ return {
26
+ dataRoot,
27
+ daemonDir: path.join(dataRoot, "daemon"),
28
+ seatsRoot: resolveHarnessPath(loaded, profile.seats.root),
29
+ meshAgentsJson: resolveHarnessPath(loaded, profile.state.meshAgentsJson),
30
+ agentsJson: resolveHarnessPath(loaded, profile.state.agentsJson),
31
+ chatRoomsRoot: resolveHarnessPath(loaded, profile.chatRooms?.root ?? "chat-rooms"),
32
+ chatFilesRoot: resolveHarnessPath(loaded, profile.chatFiles?.root ?? "chat-files"),
33
+ rolesDir: path.resolve(loaded.profileDir, profile.roles.dir),
34
+ contractsDir: path.resolve(loaded.profileDir, "contracts"),
35
+ sqlitePath: resolveHarnessPath(loaded, sqliteRel),
36
+ storageBackend: storageBackend(loaded),
37
+ };
38
+ }
39
+ function workspaceRelativeHint(workspace, abs) {
40
+ const rel = path.relative(workspace, abs);
41
+ return rel && !rel.startsWith("..") ? rel : abs;
42
+ }
43
+ /** Write `.sm/paths.json` (workspace-relative path hints for agents). */
44
+ export function writePathsManifest(loaded) {
45
+ const resolved = buildResolvedPaths(loaded);
46
+ const outPath = path.join(loaded.profileDir, PATHS_MANIFEST);
47
+ const doc = {
48
+ version: 1,
49
+ profileDir: loaded.profileDir,
50
+ workspace: loaded.workspace,
51
+ pathsScope: pathsScope(loaded),
52
+ paths: {
53
+ dataRoot: workspaceRelativeHint(loaded.workspace, resolved.dataRoot),
54
+ daemonDir: workspaceRelativeHint(loaded.workspace, resolved.daemonDir),
55
+ seatsRoot: workspaceRelativeHint(loaded.workspace, resolved.seatsRoot),
56
+ meshAgentsJson: workspaceRelativeHint(loaded.workspace, resolved.meshAgentsJson),
57
+ agentsJson: workspaceRelativeHint(loaded.workspace, resolved.agentsJson),
58
+ chatRoomsRoot: workspaceRelativeHint(loaded.workspace, resolved.chatRoomsRoot),
59
+ chatFilesRoot: workspaceRelativeHint(loaded.workspace, resolved.chatFilesRoot),
60
+ rolesDir: workspaceRelativeHint(loaded.workspace, resolved.rolesDir),
61
+ contractsDir: workspaceRelativeHint(loaded.workspace, resolved.contractsDir),
62
+ sqlitePath: workspaceRelativeHint(loaded.workspace, resolved.sqlitePath),
63
+ storageBackend: resolved.storageBackend,
64
+ },
65
+ };
66
+ fs.mkdirSync(loaded.profileDir, { recursive: true });
67
+ fs.writeFileSync(outPath, JSON.stringify(doc, null, 2) + "\n");
68
+ return outPath;
69
+ }
70
+ /** Refuse harness paths outside profileDir when scope=profile (safety guard). */
71
+ export function assertHarnessUnderDotdir(loaded, absPath, label) {
72
+ if (pathsScope(loaded) !== "profile")
73
+ return;
74
+ const rel = path.relative(loaded.profileDir, absPath);
75
+ if (rel.startsWith("..") || path.isAbsolute(rel)) {
76
+ throw new Error(`harness path ${label} must live under profile dir ${loaded.profileDir} (got ${absPath})`);
77
+ }
78
+ }
79
+ //# sourceMappingURL=paths-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths-manifest.js","sourceRoot":"","sources":["../src/paths-manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=paths-manifest.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths-manifest.test.d.ts","sourceRoot":"","sources":["../src/paths-manifest.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { describe, expect, it } from "vitest";
5
+ import { buildResolvedPaths, PATHS_MANIFEST, resolveHarnessPath, writePathsManifest, } from "./paths-manifest.js";
6
+ function stubLoaded(profileDir, workspace) {
7
+ const profile = {
8
+ name: "ci",
9
+ workspace: "..",
10
+ paths: { scope: "profile" },
11
+ storage: { backend: "sqlite", sqlite: { path: "runtime/mesh.sqlite" } },
12
+ session: {
13
+ name: "mesh",
14
+ scope: "workspace",
15
+ idLength: 6,
16
+ workerCount: 4,
17
+ miniMax: 4,
18
+ },
19
+ seats: { root: "seats", templates: ["FOCUS"], dirs: {} },
20
+ state: { agentsJson: "tmux-main-agents.json", meshAgentsJson: "mesh-agents.json" },
21
+ roles: { dir: "roles" },
22
+ data: { root: "runtime" },
23
+ providers: ["empty"],
24
+ };
25
+ return {
26
+ profile,
27
+ profileDir,
28
+ profilePath: path.join(profileDir, "mesh.config.yaml"),
29
+ workspace,
30
+ workspaceId: "abc123",
31
+ sessionName: "mesh-abc123",
32
+ };
33
+ }
34
+ describe("paths-manifest", () => {
35
+ it("resolves harness paths under profileDir", () => {
36
+ const ws = fs.mkdtempSync(path.join(os.tmpdir(), "sm-paths-"));
37
+ const sm = path.join(ws, ".sm");
38
+ fs.mkdirSync(sm, { recursive: true });
39
+ const loaded = stubLoaded(sm, ws);
40
+ const p = buildResolvedPaths(loaded);
41
+ expect(p.daemonDir).toBe(path.join(sm, "runtime", "daemon"));
42
+ expect(p.sqlitePath).toBe(path.join(sm, "runtime", "mesh.sqlite"));
43
+ expect(p.chatRoomsRoot).toBe(path.join(sm, "chat-rooms"));
44
+ expect(resolveHarnessPath(loaded, "seats")).toBe(path.join(sm, "seats"));
45
+ });
46
+ it("writes paths.json", () => {
47
+ const ws = fs.mkdtempSync(path.join(os.tmpdir(), "sm-paths-"));
48
+ const sm = path.join(ws, ".sm");
49
+ fs.mkdirSync(sm, { recursive: true });
50
+ const loaded = stubLoaded(sm, ws);
51
+ const out = writePathsManifest(loaded);
52
+ expect(out).toBe(path.join(sm, PATHS_MANIFEST));
53
+ const doc = JSON.parse(fs.readFileSync(out, "utf8"));
54
+ expect(doc.pathsScope).toBe("profile");
55
+ });
56
+ });
57
+ //# sourceMappingURL=paths-manifest.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths-manifest.test.js","sourceRoot":"","sources":["../src/paths-manifest.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function resolveWorkspace(profileWorkspace: string, profileDir: string): string;
2
+ export declare function resolveFromWorkspace(workspace: string, rel: string): string;
3
+ export declare function resolveFromProfile(profileDir: string, rel: string): string;
4
+ export declare function portsForSlot(formula: string, slot: number): string;
5
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAIrF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE"}
package/dist/paths.js ADDED
@@ -0,0 +1,17 @@
1
+ import path from "node:path";
2
+ export function resolveWorkspace(profileWorkspace, profileDir) {
3
+ const raw = profileWorkspace.trim();
4
+ if (path.isAbsolute(raw))
5
+ return path.normalize(raw);
6
+ return path.normalize(path.resolve(profileDir, raw));
7
+ }
8
+ export function resolveFromWorkspace(workspace, rel) {
9
+ return path.normalize(path.resolve(workspace, rel));
10
+ }
11
+ export function resolveFromProfile(profileDir, rel) {
12
+ return path.normalize(path.resolve(profileDir, rel));
13
+ }
14
+ export function portsForSlot(formula, slot) {
15
+ return formula.replace(/\{n\}/g, String(slot));
16
+ }
17
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,gBAAgB,CAAC,gBAAwB,EAAE,UAAkB;IAC3E,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,GAAW;IACjE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,GAAW;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,IAAY;IACxD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { type MeshProfile } from "./schema/profile.js";
2
+ import { type MeshRuntimePaths } from "./runtime-paths.js";
3
+ export interface LoadedProfile {
4
+ profile: MeshProfile;
5
+ profileDir: string;
6
+ profilePath: string;
7
+ workspace: string;
8
+ /** Short hash of resolved workspace path. */
9
+ workspaceId: string;
10
+ /** Resolved tmux session name (may include workspace suffix). */
11
+ sessionName: string;
12
+ }
13
+ export type { MeshRuntimePaths };
14
+ export { meshRuntimePaths, resolveDaemonPort, resolveSessionName, workspaceScopeId, resolveConnectivityHooks, runtimePathHint, } from "./runtime-paths.js";
15
+ /** seat-mesh package root (profiles/ lives here). */
16
+ export declare function seatMeshPackageRoot(): string;
17
+ /** Default profile: workspace `.sm/` when present, else bundled minimal. No flags required. */
18
+ export declare function defaultProfilePath(): string;
19
+ export declare function findProfilePath(explicit?: string, searchFrom?: string): string;
20
+ export declare function loadProfile(explicit?: string): LoadedProfile;
21
+ export declare function profilePaths(loaded: LoadedProfile): {
22
+ dataRoot: string;
23
+ daemonDir: string;
24
+ sqlitePath: string;
25
+ storageBackend: import("./paths-manifest.js").StorageBackend;
26
+ inboxJsonl: string;
27
+ peerJsonl: string;
28
+ checkbackJsonl: string;
29
+ paneOpsJsonl: string;
30
+ callsJsonl: string;
31
+ meshInboxMeta: string;
32
+ meshInboxStop: string;
33
+ meshInboxLog: string;
34
+ coldStartState: string;
35
+ ppaState: string;
36
+ wifiProbeLock: string;
37
+ minisJson: string;
38
+ miniDone: string;
39
+ miniManifest: string;
40
+ gateQueue: string;
41
+ seatsRoot: string;
42
+ agentsJson: string;
43
+ meshAgentsJson: string;
44
+ chatRoomsRoot: string;
45
+ chatFilesRoot: string;
46
+ rolesDir: string;
47
+ contractsDir: string;
48
+ managerDir: string;
49
+ manager2Dir: string;
50
+ secretaryDir: string;
51
+ daemonPort: number;
52
+ pathsManifest: string;
53
+ };
54
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAO1E,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,qDAAqD;AACrD,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,SAAgB,GAAG,MAAM,CAqBrF;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,CAgB5D;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCjD"}
@@ -0,0 +1,93 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import YAML from "yaml";
4
+ import { findDotSmConfig } from "./dotdir.js";
5
+ import { MeshProfileSchema } from "./schema/profile.js";
6
+ import { resolveWorkspace } from "./paths.js";
7
+ import { buildResolvedPaths, writePathsManifest, assertHarnessUnderDotdir, } from "./paths-manifest.js";
8
+ import { meshRuntimePaths, resolveDaemonPort, resolveSessionName, workspaceScopeId, } from "./runtime-paths.js";
9
+ export { meshRuntimePaths, resolveDaemonPort, resolveSessionName, workspaceScopeId, resolveConnectivityHooks, runtimePathHint, } from "./runtime-paths.js";
10
+ /** seat-mesh package root (profiles/ lives here). */
11
+ export function seatMeshPackageRoot() {
12
+ return path.resolve(import.meta.dirname, "../../..");
13
+ }
14
+ /** Default profile: workspace `.sm/` when present, else bundled minimal. No flags required. */
15
+ export function defaultProfilePath() {
16
+ const root = seatMeshPackageRoot();
17
+ const candidates = [path.join(root, "profiles/minimal/mesh.config.yaml")];
18
+ for (const cfg of candidates) {
19
+ if (fs.existsSync(cfg))
20
+ return cfg;
21
+ }
22
+ throw new Error(`no default profile under ${root}/profiles/`);
23
+ }
24
+ export function findProfilePath(explicit, searchFrom = process.cwd()) {
25
+ if (explicit) {
26
+ const p = path.resolve(explicit);
27
+ if (fs.statSync(p).isDirectory()) {
28
+ const dotCfg = path.join(p, ".sm", "mesh.config.yaml");
29
+ const cfg = fs.existsSync(dotCfg) ? dotCfg : path.join(p, "mesh.config.yaml");
30
+ if (!fs.existsSync(cfg)) {
31
+ throw new Error(`profile directory missing mesh.config.yaml (or .sm/mesh.config.yaml): ${p}`);
32
+ }
33
+ return cfg;
34
+ }
35
+ if (!fs.existsSync(p))
36
+ throw new Error(`profile not found: ${p}`);
37
+ return p;
38
+ }
39
+ const dotCfg = findDotSmConfig(searchFrom);
40
+ if (dotCfg)
41
+ return dotCfg;
42
+ return defaultProfilePath();
43
+ }
44
+ export function loadProfile(explicit) {
45
+ const profilePath = findProfilePath(explicit);
46
+ const profileDir = path.dirname(profilePath);
47
+ const raw = YAML.parse(fs.readFileSync(profilePath, "utf8"));
48
+ const profile = MeshProfileSchema.parse(raw);
49
+ const workspace = resolveWorkspace(profile.workspace, profileDir);
50
+ const workspaceId = workspaceScopeId(workspace);
51
+ const sessionName = resolveSessionName(profile, workspace);
52
+ const loaded = { profile, profileDir, profilePath, workspace, workspaceId, sessionName };
53
+ try {
54
+ writePathsManifest(loaded);
55
+ }
56
+ catch {
57
+ /* non-fatal on read-only profile dir */
58
+ }
59
+ return loaded;
60
+ }
61
+ export function profilePaths(loaded) {
62
+ const { profile } = loaded;
63
+ const resolved = buildResolvedPaths(loaded);
64
+ const rt = meshRuntimePaths(loaded);
65
+ const secretaryDir = profile.seats.dirs?.secretary ?? "secretary";
66
+ for (const [label, abs] of [
67
+ ["dataRoot", resolved.dataRoot],
68
+ ["daemonDir", resolved.daemonDir],
69
+ ["seatsRoot", resolved.seatsRoot],
70
+ ["meshAgentsJson", resolved.meshAgentsJson],
71
+ ["chatRoomsRoot", resolved.chatRoomsRoot],
72
+ ["chatFilesRoot", resolved.chatFilesRoot],
73
+ ["sqlitePath", resolved.sqlitePath],
74
+ ]) {
75
+ assertHarnessUnderDotdir(loaded, abs, label);
76
+ }
77
+ return {
78
+ seatsRoot: resolved.seatsRoot,
79
+ agentsJson: resolved.agentsJson,
80
+ meshAgentsJson: resolved.meshAgentsJson,
81
+ chatRoomsRoot: resolved.chatRoomsRoot,
82
+ chatFilesRoot: resolved.chatFilesRoot,
83
+ rolesDir: resolved.rolesDir,
84
+ contractsDir: resolved.contractsDir,
85
+ managerDir: path.join(resolved.seatsRoot, profile.seats.dirs?.manager ?? "manager"),
86
+ manager2Dir: path.join(resolved.seatsRoot, profile.seats.dirs?.["manager-2"] ?? "manager-2"),
87
+ secretaryDir: path.join(resolved.seatsRoot, secretaryDir),
88
+ daemonPort: resolveDaemonPort(profile, loaded.workspace),
89
+ pathsManifest: path.join(loaded.profileDir, "paths.json"),
90
+ ...rt,
91
+ };
92
+ }
93
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=profile.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.test.d.ts","sourceRoot":"","sources":["../src/profile.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import path from "node:path";
3
+ import { defaultProfilePath, loadProfile, portsForSlot } from "./index.js";
4
+ describe("loadProfile", () => {
5
+ it("loads default profile without --profile", () => {
6
+ const loaded = loadProfile();
7
+ expect(["consumer", "minimal"]).toContain(loaded.profile.name);
8
+ expect(loaded.workspace).toBeTruthy();
9
+ });
10
+ it("default profile resolves bundled minimal mesh.config.yaml", () => {
11
+ const cfg = defaultProfilePath();
12
+ expect(cfg).toContain("profiles");
13
+ expect(cfg.endsWith("mesh.config.yaml")).toBe(true);
14
+ });
15
+ it("loads bundled minimal profile", () => {
16
+ const minimalDir = path.resolve(import.meta.dirname, "../../../profiles/minimal");
17
+ const loaded = loadProfile(minimalDir);
18
+ expect(loaded.profile.name).toBe("minimal");
19
+ expect(loaded.workspace).toBeTruthy();
20
+ });
21
+ it("formats worker ports from formula", () => {
22
+ expect(portsForSlot("30{n}0/30{n}1", 3)).toBe("3030/3031");
23
+ });
24
+ });
25
+ //# sourceMappingURL=profile.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.test.js","sourceRoot":"","sources":["../src/profile.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAC7B,MAAM,CAAC,IAAI,CAAC,OAAO,EACnB,2BAA2B,CAC5B,CAAC;QACF,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AgentProvider, ProviderRegistry } from "./types.js";
2
+ export declare function createProviderRegistry(providers?: AgentProvider[]): ProviderRegistry;
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAgB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhF,wBAAgB,sBAAsB,CACpC,SAAS,GAAE,aAAa,EAAO,GAC9B,gBAAgB,CAqBlB"}
@@ -0,0 +1,24 @@
1
+ export function createProviderRegistry(providers = []) {
2
+ const byId = new Map();
3
+ for (const p of providers)
4
+ byId.set(p.id, p);
5
+ return {
6
+ register(provider) {
7
+ byId.set(provider.id, provider);
8
+ },
9
+ detect(pane) {
10
+ for (const p of byId.values()) {
11
+ if (p.detect(pane))
12
+ return p;
13
+ }
14
+ return null;
15
+ },
16
+ get(id) {
17
+ return byId.get(id);
18
+ },
19
+ all() {
20
+ return [...byId.values()];
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,YAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,SAAS;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAE7C,OAAO;QACL,QAAQ,CAAC,QAAuB;YAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,CAAC,IAAkB;YACvB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9B,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,GAAG;YACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Agent provider contract — orchestrator uses registry only (no CLI if/else).
3
+ */
4
+ export interface PaneSnapshot {
5
+ paneId: string;
6
+ windowName: string;
7
+ cwd: string;
8
+ currentCommand: string;
9
+ captureTail: string;
10
+ options: Record<string, string>;
11
+ }
12
+ export type ComposerPhase = "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
13
+ export interface ComposerState {
14
+ phase: ComposerPhase;
15
+ limitKind?: string;
16
+ draftFingerprint?: string;
17
+ busyLabel?: string;
18
+ }
19
+ export interface Detection {
20
+ providerId: string;
21
+ resumeId?: string;
22
+ }
23
+ export interface InjectPlan {
24
+ /** Prefix before message body (empty for OpenCode mesh text). */
25
+ prefix: string;
26
+ useBracketedPaste: boolean;
27
+ enterDelayMs: number;
28
+ flushEscFirst: boolean;
29
+ }
30
+ export interface LimitContext {
31
+ pane: PaneSnapshot;
32
+ providerId: string;
33
+ state: ComposerState;
34
+ profileName: string;
35
+ enqueue: (job: LimitJob) => Promise<void>;
36
+ }
37
+ export interface LimitJob {
38
+ type: string;
39
+ paneId?: string;
40
+ payload?: Record<string, unknown>;
41
+ }
42
+ export interface LimitDetector {
43
+ id: string;
44
+ match(state: ComposerState, pane: PaneSnapshot): boolean;
45
+ onRisingEdge(ctx: LimitContext): Promise<void>;
46
+ }
47
+ /** One human prompt + agent reply pair (queryable; not pane scrollback). */
48
+ export interface PromptCapture {
49
+ humanPrompt: string;
50
+ agentResponse: string;
51
+ }
52
+ /**
53
+ * Per-slot prompt log (CHAT.jsonl) — required on every AgentProvider.
54
+ * Lets manager/secretary query session/model/prompt/response without scraping panes.
55
+ */
56
+ export interface PromptRecording {
57
+ /** CLI session / resume id for grouping turns (may be undefined for stateless CLIs). */
58
+ sessionId(pane: PaneSnapshot, detection: Detection): string | undefined;
59
+ /** Model label when known (cmdline flag, footer, or provider default). */
60
+ modelId(pane: PaneSnapshot): string | undefined;
61
+ /**
62
+ * Scrape latest completed exchange from pane capture.
63
+ * Return null when not parseable — use explicit `chat append` or inject-time record.
64
+ */
65
+ scrapePromptTurn(pane: PaneSnapshot): PromptCapture | null;
66
+ }
67
+ export interface AgentProvider extends PromptRecording {
68
+ id: string;
69
+ detect(pane: PaneSnapshot): Detection | null;
70
+ composerState(pane: PaneSnapshot): ComposerState;
71
+ /** True when the CLI composer accepts a paste (splash done, not generating). */
72
+ composerReady(pane: PaneSnapshot): boolean;
73
+ injectPlan(pane: PaneSnapshot): InjectPlan;
74
+ limits?: LimitDetector[];
75
+ }
76
+ export interface ProviderRegistry {
77
+ register(provider: AgentProvider): void;
78
+ detect(pane: PaneSnapshot): AgentProvider | null;
79
+ get(id: string): AgentProvider | undefined;
80
+ all(): AgentProvider[];
81
+ }
82
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Agent provider contract — orchestrator uses registry only (no CLI if/else).
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Durable queue rows — producers append; inbox daemon (BullMQ workers) drains.
3
+ */
4
+ export type QueueChannel = "inbox" | "peer" | "checkback" | "schedule" | "limits" | "connectivity" | "inject";
5
+ export type QueueJobStatus = "pending" | "active" | "done" | "failed" | "held";
6
+ export interface QueueJobBase {
7
+ id: string;
8
+ channel: QueueChannel;
9
+ status: QueueJobStatus;
10
+ createdAt: string;
11
+ targetPaneId?: string;
12
+ targetSlot?: number;
13
+ priority: number;
14
+ }
15
+ export interface InjectJob extends QueueJobBase {
16
+ channel: "inject" | "inbox" | "peer";
17
+ body: string;
18
+ prefix?: string;
19
+ meta?: {
20
+ from?: string;
21
+ expectReply?: boolean;
22
+ checkbackId?: string;
23
+ };
24
+ }
25
+ export interface LimitQueueJob extends QueueJobBase {
26
+ channel: "limits";
27
+ limitId: string;
28
+ providerId: string;
29
+ handler: string;
30
+ }
31
+ /** Orchestrator goal: best-effort empty all pending jobs fairly. */
32
+ export interface QueueDrainPolicy {
33
+ maxInjectPerTick: number;
34
+ digestCooldownMs: number;
35
+ idleSettleMs: number;
36
+ neverInjectWhileTyping: boolean;
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/queue/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,MAAM,GACN,WAAW,GACX,UAAU,GACV,QAAQ,GACR,cAAc,GACd,QAAQ,CAAC;AAEb,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;CACjC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Durable queue rows — producers append; inbox daemon (BullMQ workers) drains.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/queue/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,30 @@
1
+ export interface RoleIndexEntry {
2
+ path: string;
3
+ note?: string;
4
+ }
5
+ export interface RolePolicy {
6
+ id: string;
7
+ text?: string;
8
+ path?: string;
9
+ rule?: string;
10
+ cmd?: string;
11
+ }
12
+ export interface RoleIndex {
13
+ kind: string;
14
+ /** Printed first on ./sm.sh whoami (patterns.md / ONE-PATH). */
15
+ banner?: string[];
16
+ read_first?: RoleIndexEntry[];
17
+ policies?: RolePolicy[];
18
+ files?: string[];
19
+ inject?: string[];
20
+ vars?: Record<string, string>;
21
+ }
22
+ export declare function loadRoleIndex(rolesDir: string, kind: string): RoleIndex;
23
+ export declare function renderRoleIndex(index: RoleIndex, vars?: Record<string, string>, opts?: {
24
+ skipBanner?: boolean;
25
+ }): string;
26
+ export declare function validateRoleIndex(index: RoleIndex, workspace: string): {
27
+ ok: boolean;
28
+ missing: string[];
29
+ };
30
+ //# sourceMappingURL=role-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role-index.d.ts","sourceRoot":"","sources":["../src/role-index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AA0BD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAcvE;AAMD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACjC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,CAwCR;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,GAChB;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAcpC"}