@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 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/schema/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,QAAA,MAAM,wBAAwB;;;;;IAK5B,+FAA+F;;;;;;;;;;;;;;EAE/F,CAAC;AA0DH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAM1B,uFAAuF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA3BvF,gFAAgF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoEhF,kEAAkE;;QAElE,0DAA0D;;QAE1D,6EAA6E;;;;;;;;;;;;QAK3E,wCAAwC;;QAExC,6DAA6D;;;;QAI7D,qFAAqF;;QAErF,6FAA6F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA5F/F,wFAAwF;;;;;;;;;;QAoHtF,iEAAiE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YApJrE,+FAA+F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgK3F,2EAA2E;;;;;YAMvE,4EAA4E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiBpF,gFAAgF;;;;;;;;;;;IAOhF;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,199 @@
1
+ import { z } from "zod";
2
+ import { LayoutSchema } from "./layout.js";
3
+ import { UxSchema } from "./ux.js";
4
+ const ConnectivityPolicySchema = z.object({
5
+ rebootWifiBounce: z.boolean().default(false),
6
+ smartRestart: z.boolean().default(false),
7
+ rotateMaxAttempts: z.number().int().min(0).default(3),
8
+ cooldownMs: z.number().int().min(0).default(1_800_000),
9
+ /** Consecutive ipify probe failures before PROXY-DOWN recovery (wifi-probe / cpe-proxy-up). */
10
+ ipifyFailBeforeRecovery: z.number().int().min(1).default(3),
11
+ });
12
+ const ConnectivityDriversSchema = z
13
+ .object({
14
+ cpe: z
15
+ .object({
16
+ host: z.string().default("192.168.100.1"),
17
+ rebootPath: z.string().default("/api/system/fun"),
18
+ })
19
+ .optional(),
20
+ gost: z
21
+ .object({
22
+ container: z.string().optional(),
23
+ })
24
+ .optional(),
25
+ })
26
+ .optional();
27
+ /** User-supplied scripts when connectivity.driver === "script". See docs/PORTABILITY.md */
28
+ const ConnectivityHooksSchema = z
29
+ .object({
30
+ status: z.string().optional(),
31
+ up: z.string().optional(),
32
+ rotate: z.string().optional(),
33
+ smartRestart: z.string().optional(),
34
+ })
35
+ .optional();
36
+ const DataRootSchema = z
37
+ .object({
38
+ /** Runtime root — relative to profileDir when paths.scope=profile (default runtime). */
39
+ root: z.string().default("runtime"),
40
+ })
41
+ .optional();
42
+ const PathsScopeSchema = z
43
+ .object({
44
+ /** profile = harness paths under .sm/; workspace = legacy workspace-relative */
45
+ scope: z.enum(["profile", "workspace"]).default("profile"),
46
+ })
47
+ .optional();
48
+ const StorageSchema = z
49
+ .object({
50
+ backend: z.enum(["sqlite", "jsonl"]).default("sqlite"),
51
+ sqlite: z
52
+ .object({
53
+ path: z.string().default("runtime/mesh.sqlite"),
54
+ })
55
+ .default({}),
56
+ jsonl: z
57
+ .object({
58
+ dir: z.string().default("runtime/daemon"),
59
+ })
60
+ .default({}),
61
+ })
62
+ .default({});
63
+ export const MeshProfileSchema = z.object({
64
+ name: z.string().min(1),
65
+ workspace: z.string().min(1),
66
+ layout: LayoutSchema.optional(),
67
+ session: z.object({
68
+ name: z.string().default("mesh"),
69
+ /** workspace = suffix tmux session with hash of workspace path; global = fixed name */
70
+ scope: z.enum(["workspace", "global"]).default("workspace"),
71
+ idLength: z.number().int().min(4).max(12).default(6),
72
+ workerCount: z.number().int().min(1).max(32).default(6),
73
+ miniMax: z.number().int().min(1).max(16).default(8),
74
+ }),
75
+ orchestrator: z
76
+ .object({
77
+ drain: z
78
+ .object({
79
+ maxInjectPerTick: z.number().int().default(1),
80
+ digestCooldownMs: z.number().int().default(5000),
81
+ idleSettleMs: z.number().int().default(5000),
82
+ })
83
+ .default({}),
84
+ })
85
+ .optional(),
86
+ paths: PathsScopeSchema,
87
+ storage: StorageSchema,
88
+ providers: z
89
+ .array(z.enum(["cursor-agent", "kiro", "claude", "opencode", "empty"]))
90
+ .default(["cursor-agent", "kiro", "claude", "opencode", "empty"]),
91
+ seats: z.object({
92
+ root: z.string().default("seats"),
93
+ templates: z.array(z.string()).default(["FOCUS", "TASKS", "REMINDER"]),
94
+ dirs: z
95
+ .object({
96
+ manager: z.string().default("manager"),
97
+ "manager-2": z.string().optional(),
98
+ secretary: z.string().default("secretary"),
99
+ worker: z.string().default("slot-{n}"),
100
+ mini: z.string().default("mini-{n}"),
101
+ })
102
+ .default({
103
+ manager: "manager",
104
+ secretary: "secretary",
105
+ worker: "slot-{n}",
106
+ mini: "mini-{n}",
107
+ }),
108
+ }),
109
+ state: z.object({
110
+ /** Optional read-only seed file until mesh-agents.json exists. */
111
+ agentsJson: z.string().default("tmux-main-agents.json"),
112
+ /** Mesh-owned slot state (CLI type + resume per slot). */
113
+ meshAgentsJson: z.string().default("mesh-agents.json"),
114
+ /** Periodic scrape interval for `./sm.sh auto` (default 10 min). 0 = off. */
115
+ autoScrapeIntervalMs: z.number().int().min(0).default(600_000),
116
+ }),
117
+ daemon: z
118
+ .object({
119
+ /** Fixed port when portScope=profile */
120
+ port: z.number().int().default(31670),
121
+ /** workspace = portBase + hash offset; profile = use port */
122
+ portScope: z.enum(["workspace", "profile"]).default("workspace"),
123
+ portBase: z.number().int().default(31670),
124
+ portRange: z.number().int().min(1).max(500).default(90),
125
+ /** Start mesh inbox daemon with session/reload (engine — not manual inbox start). */
126
+ autoStart: z.boolean().default(true),
127
+ /** Supervisor: crash restart + reload when dist/mesh-inbox-server.js changes after build. */
128
+ watch: z.boolean().default(true),
129
+ restartDelayMs: z.number().int().default(1500),
130
+ hmrPollMs: z.number().int().default(2000),
131
+ pollMs: z.number().int().default(4000),
132
+ idleSettleSec: z.number().int().default(5),
133
+ managerPromptPrefix: z
134
+ .string()
135
+ .default("[agent-manager-kiro-cursor-claude]"),
136
+ })
137
+ .default({}),
138
+ ports: z
139
+ .object({
140
+ worker: z.string().default("30{n}0/30{n}1"),
141
+ })
142
+ .default({}),
143
+ roles: z.object({
144
+ dir: z.string().default("roles"),
145
+ }),
146
+ data: DataRootSchema,
147
+ connectivity: z
148
+ .object({
149
+ enabled: z.boolean().default(false),
150
+ proxyPort: z.number().int().default(18887),
151
+ /** none | http-proxy | script | cpe — see docs/PORTABILITY.md */
152
+ driver: z
153
+ .enum(["none", "http-proxy", "script", "cpe"])
154
+ .default("none"),
155
+ hooks: ConnectivityHooksSchema,
156
+ drivers: ConnectivityDriversSchema,
157
+ policy: ConnectivityPolicySchema.default({}),
158
+ })
159
+ .optional(),
160
+ chatRooms: z
161
+ .object({
162
+ root: z.string().default("chat-rooms"),
163
+ /** Default room for every tmux agent; manager/secretary broadcast here. */
164
+ globalSlug: z.string().default("global"),
165
+ checkback: z
166
+ .object({
167
+ duration: z.string().default("5m"),
168
+ renew: z.string().default("3m"),
169
+ /** Room call accept/decline wait — short so callers are not stuck on 5m. */
170
+ callPending: z
171
+ .object({
172
+ duration: z.string().default("1m"),
173
+ renew: z.string().default("1m"),
174
+ })
175
+ .default({}),
176
+ })
177
+ .default({}),
178
+ })
179
+ .optional(),
180
+ chatFiles: z
181
+ .object({
182
+ root: z.string().default("chat-files"),
183
+ filename: z.string().default("CHAT.jsonl"),
184
+ })
185
+ .optional(),
186
+ /** External stack driver invoked by the stack subcommand (omit when unused). */
187
+ stack: z
188
+ .object({
189
+ command: z.string(),
190
+ summary: z.string().optional(),
191
+ })
192
+ .optional(),
193
+ /**
194
+ * UX tool detection — regex rules on pane capture for border status + daemon triggers.
195
+ * Omit to use built-in provider heuristics (legacy). Set `useDefaults: true` for harness parity.
196
+ */
197
+ ux: UxSchema.optional(),
198
+ });
199
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/schema/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,359 @@
1
+ import { z } from "zod";
2
+ /** Where to read pane capture text for a rule match. */
3
+ export declare const UxScanSchema: z.ZodOptional<z.ZodObject<{
4
+ /** Last N lines of capture (default for most limit/busy rules). */
5
+ tailLines: z.ZodOptional<z.ZodNumber>;
6
+ /** Bottom N non-empty lines (OpenCode composer footer heuristics). */
7
+ bottomLines: z.ZodOptional<z.ZodNumber>;
8
+ /** Entire capture tail. */
9
+ full: z.ZodOptional<z.ZodBoolean>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ tailLines?: number | undefined;
12
+ bottomLines?: number | undefined;
13
+ full?: boolean | undefined;
14
+ }, {
15
+ tailLines?: number | undefined;
16
+ bottomLines?: number | undefined;
17
+ full?: boolean | undefined;
18
+ }>>;
19
+ export declare const UxWhenSchema: z.ZodObject<{
20
+ scan: z.ZodOptional<z.ZodObject<{
21
+ /** Last N lines of capture (default for most limit/busy rules). */
22
+ tailLines: z.ZodOptional<z.ZodNumber>;
23
+ /** Bottom N non-empty lines (OpenCode composer footer heuristics). */
24
+ bottomLines: z.ZodOptional<z.ZodNumber>;
25
+ /** Entire capture tail. */
26
+ full: z.ZodOptional<z.ZodBoolean>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ tailLines?: number | undefined;
29
+ bottomLines?: number | undefined;
30
+ full?: boolean | undefined;
31
+ }, {
32
+ tailLines?: number | undefined;
33
+ bottomLines?: number | undefined;
34
+ full?: boolean | undefined;
35
+ }>>;
36
+ /** Regex tested against the scanned region (case-insensitive). */
37
+ match: z.ZodString;
38
+ /** If this regex matches, rule is skipped (e.g. exclude rate-limit when testing connect). */
39
+ unless: z.ZodOptional<z.ZodString>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ match: string;
42
+ scan?: {
43
+ tailLines?: number | undefined;
44
+ bottomLines?: number | undefined;
45
+ full?: boolean | undefined;
46
+ } | undefined;
47
+ unless?: string | undefined;
48
+ }, {
49
+ match: string;
50
+ scan?: {
51
+ tailLines?: number | undefined;
52
+ bottomLines?: number | undefined;
53
+ full?: boolean | undefined;
54
+ } | undefined;
55
+ unless?: string | undefined;
56
+ }>;
57
+ export declare const UxStatusSchema: z.ZodObject<{
58
+ phase: z.ZodEnum<["empty", "typing", "busy", "afk", "limit", "plain_shell"]>;
59
+ /** limitKind when phase=limit; busyLabel when phase=busy (unless capture set). */
60
+ kind: z.ZodOptional<z.ZodString>;
61
+ /** Border strip label; {kind} expands to kind or busyLabel. */
62
+ border: z.ZodOptional<z.ZodString>;
63
+ busyLabel: z.ZodOptional<z.ZodString>;
64
+ /** Regex capture group index for kind/busyLabel when phase is limit/busy. */
65
+ capture: z.ZodOptional<z.ZodNumber>;
66
+ }, "strip", z.ZodTypeAny, {
67
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
68
+ kind?: string | undefined;
69
+ border?: string | undefined;
70
+ busyLabel?: string | undefined;
71
+ capture?: number | undefined;
72
+ }, {
73
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
74
+ kind?: string | undefined;
75
+ border?: string | undefined;
76
+ busyLabel?: string | undefined;
77
+ capture?: number | undefined;
78
+ }>;
79
+ export declare const UxTriggerSchema: z.ZodEnum<["none", "connectivity.rate-limit", "connectivity.proxy-down", "limits.oc-limit", "limits.cc-limit"]>;
80
+ export declare const UxRuleSchema: z.ZodObject<{
81
+ id: z.ZodString;
82
+ /** Provider ids, or "*" for any detected provider. */
83
+ for: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
84
+ /** Higher runs first; first match wins. */
85
+ priority: z.ZodDefault<z.ZodNumber>;
86
+ when: z.ZodObject<{
87
+ scan: z.ZodOptional<z.ZodObject<{
88
+ /** Last N lines of capture (default for most limit/busy rules). */
89
+ tailLines: z.ZodOptional<z.ZodNumber>;
90
+ /** Bottom N non-empty lines (OpenCode composer footer heuristics). */
91
+ bottomLines: z.ZodOptional<z.ZodNumber>;
92
+ /** Entire capture tail. */
93
+ full: z.ZodOptional<z.ZodBoolean>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ tailLines?: number | undefined;
96
+ bottomLines?: number | undefined;
97
+ full?: boolean | undefined;
98
+ }, {
99
+ tailLines?: number | undefined;
100
+ bottomLines?: number | undefined;
101
+ full?: boolean | undefined;
102
+ }>>;
103
+ /** Regex tested against the scanned region (case-insensitive). */
104
+ match: z.ZodString;
105
+ /** If this regex matches, rule is skipped (e.g. exclude rate-limit when testing connect). */
106
+ unless: z.ZodOptional<z.ZodString>;
107
+ }, "strip", z.ZodTypeAny, {
108
+ match: string;
109
+ scan?: {
110
+ tailLines?: number | undefined;
111
+ bottomLines?: number | undefined;
112
+ full?: boolean | undefined;
113
+ } | undefined;
114
+ unless?: string | undefined;
115
+ }, {
116
+ match: string;
117
+ scan?: {
118
+ tailLines?: number | undefined;
119
+ bottomLines?: number | undefined;
120
+ full?: boolean | undefined;
121
+ } | undefined;
122
+ unless?: string | undefined;
123
+ }>;
124
+ set: z.ZodObject<{
125
+ phase: z.ZodEnum<["empty", "typing", "busy", "afk", "limit", "plain_shell"]>;
126
+ /** limitKind when phase=limit; busyLabel when phase=busy (unless capture set). */
127
+ kind: z.ZodOptional<z.ZodString>;
128
+ /** Border strip label; {kind} expands to kind or busyLabel. */
129
+ border: z.ZodOptional<z.ZodString>;
130
+ busyLabel: z.ZodOptional<z.ZodString>;
131
+ /** Regex capture group index for kind/busyLabel when phase is limit/busy. */
132
+ capture: z.ZodOptional<z.ZodNumber>;
133
+ }, "strip", z.ZodTypeAny, {
134
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
135
+ kind?: string | undefined;
136
+ border?: string | undefined;
137
+ busyLabel?: string | undefined;
138
+ capture?: number | undefined;
139
+ }, {
140
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
141
+ kind?: string | undefined;
142
+ border?: string | undefined;
143
+ busyLabel?: string | undefined;
144
+ capture?: number | undefined;
145
+ }>;
146
+ /** Daemon rising-edge side effect when this limit state appears. */
147
+ onRise: z.ZodOptional<z.ZodEnum<["none", "connectivity.rate-limit", "connectivity.proxy-down", "limits.oc-limit", "limits.cc-limit"]>>;
148
+ }, "strip", z.ZodTypeAny, {
149
+ set: {
150
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
151
+ kind?: string | undefined;
152
+ border?: string | undefined;
153
+ busyLabel?: string | undefined;
154
+ capture?: number | undefined;
155
+ };
156
+ id: string;
157
+ for: string[];
158
+ priority: number;
159
+ when: {
160
+ match: string;
161
+ scan?: {
162
+ tailLines?: number | undefined;
163
+ bottomLines?: number | undefined;
164
+ full?: boolean | undefined;
165
+ } | undefined;
166
+ unless?: string | undefined;
167
+ };
168
+ onRise?: "none" | "connectivity.rate-limit" | "connectivity.proxy-down" | "limits.oc-limit" | "limits.cc-limit" | undefined;
169
+ }, {
170
+ set: {
171
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
172
+ kind?: string | undefined;
173
+ border?: string | undefined;
174
+ busyLabel?: string | undefined;
175
+ capture?: number | undefined;
176
+ };
177
+ id: string;
178
+ when: {
179
+ match: string;
180
+ scan?: {
181
+ tailLines?: number | undefined;
182
+ bottomLines?: number | undefined;
183
+ full?: boolean | undefined;
184
+ } | undefined;
185
+ unless?: string | undefined;
186
+ };
187
+ for?: string[] | undefined;
188
+ priority?: number | undefined;
189
+ onRise?: "none" | "connectivity.rate-limit" | "connectivity.proxy-down" | "limits.oc-limit" | "limits.cc-limit" | undefined;
190
+ }>;
191
+ export declare const UxSchema: z.ZodObject<{
192
+ /** Merge engine defaults before user rules. */
193
+ useDefaults: z.ZodDefault<z.ZodBoolean>;
194
+ rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
195
+ id: z.ZodString;
196
+ /** Provider ids, or "*" for any detected provider. */
197
+ for: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
198
+ /** Higher runs first; first match wins. */
199
+ priority: z.ZodDefault<z.ZodNumber>;
200
+ when: z.ZodObject<{
201
+ scan: z.ZodOptional<z.ZodObject<{
202
+ /** Last N lines of capture (default for most limit/busy rules). */
203
+ tailLines: z.ZodOptional<z.ZodNumber>;
204
+ /** Bottom N non-empty lines (OpenCode composer footer heuristics). */
205
+ bottomLines: z.ZodOptional<z.ZodNumber>;
206
+ /** Entire capture tail. */
207
+ full: z.ZodOptional<z.ZodBoolean>;
208
+ }, "strip", z.ZodTypeAny, {
209
+ tailLines?: number | undefined;
210
+ bottomLines?: number | undefined;
211
+ full?: boolean | undefined;
212
+ }, {
213
+ tailLines?: number | undefined;
214
+ bottomLines?: number | undefined;
215
+ full?: boolean | undefined;
216
+ }>>;
217
+ /** Regex tested against the scanned region (case-insensitive). */
218
+ match: z.ZodString;
219
+ /** If this regex matches, rule is skipped (e.g. exclude rate-limit when testing connect). */
220
+ unless: z.ZodOptional<z.ZodString>;
221
+ }, "strip", z.ZodTypeAny, {
222
+ match: string;
223
+ scan?: {
224
+ tailLines?: number | undefined;
225
+ bottomLines?: number | undefined;
226
+ full?: boolean | undefined;
227
+ } | undefined;
228
+ unless?: string | undefined;
229
+ }, {
230
+ match: string;
231
+ scan?: {
232
+ tailLines?: number | undefined;
233
+ bottomLines?: number | undefined;
234
+ full?: boolean | undefined;
235
+ } | undefined;
236
+ unless?: string | undefined;
237
+ }>;
238
+ set: z.ZodObject<{
239
+ phase: z.ZodEnum<["empty", "typing", "busy", "afk", "limit", "plain_shell"]>;
240
+ /** limitKind when phase=limit; busyLabel when phase=busy (unless capture set). */
241
+ kind: z.ZodOptional<z.ZodString>;
242
+ /** Border strip label; {kind} expands to kind or busyLabel. */
243
+ border: z.ZodOptional<z.ZodString>;
244
+ busyLabel: z.ZodOptional<z.ZodString>;
245
+ /** Regex capture group index for kind/busyLabel when phase is limit/busy. */
246
+ capture: z.ZodOptional<z.ZodNumber>;
247
+ }, "strip", z.ZodTypeAny, {
248
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
249
+ kind?: string | undefined;
250
+ border?: string | undefined;
251
+ busyLabel?: string | undefined;
252
+ capture?: number | undefined;
253
+ }, {
254
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
255
+ kind?: string | undefined;
256
+ border?: string | undefined;
257
+ busyLabel?: string | undefined;
258
+ capture?: number | undefined;
259
+ }>;
260
+ /** Daemon rising-edge side effect when this limit state appears. */
261
+ onRise: z.ZodOptional<z.ZodEnum<["none", "connectivity.rate-limit", "connectivity.proxy-down", "limits.oc-limit", "limits.cc-limit"]>>;
262
+ }, "strip", z.ZodTypeAny, {
263
+ set: {
264
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
265
+ kind?: string | undefined;
266
+ border?: string | undefined;
267
+ busyLabel?: string | undefined;
268
+ capture?: number | undefined;
269
+ };
270
+ id: string;
271
+ for: string[];
272
+ priority: number;
273
+ when: {
274
+ match: string;
275
+ scan?: {
276
+ tailLines?: number | undefined;
277
+ bottomLines?: number | undefined;
278
+ full?: boolean | undefined;
279
+ } | undefined;
280
+ unless?: string | undefined;
281
+ };
282
+ onRise?: "none" | "connectivity.rate-limit" | "connectivity.proxy-down" | "limits.oc-limit" | "limits.cc-limit" | undefined;
283
+ }, {
284
+ set: {
285
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
286
+ kind?: string | undefined;
287
+ border?: string | undefined;
288
+ busyLabel?: string | undefined;
289
+ capture?: number | undefined;
290
+ };
291
+ id: string;
292
+ when: {
293
+ match: string;
294
+ scan?: {
295
+ tailLines?: number | undefined;
296
+ bottomLines?: number | undefined;
297
+ full?: boolean | undefined;
298
+ } | undefined;
299
+ unless?: string | undefined;
300
+ };
301
+ for?: string[] | undefined;
302
+ priority?: number | undefined;
303
+ onRise?: "none" | "connectivity.rate-limit" | "connectivity.proxy-down" | "limits.oc-limit" | "limits.cc-limit" | undefined;
304
+ }>, "many">>;
305
+ }, "strip", z.ZodTypeAny, {
306
+ useDefaults: boolean;
307
+ rules: {
308
+ set: {
309
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
310
+ kind?: string | undefined;
311
+ border?: string | undefined;
312
+ busyLabel?: string | undefined;
313
+ capture?: number | undefined;
314
+ };
315
+ id: string;
316
+ for: string[];
317
+ priority: number;
318
+ when: {
319
+ match: string;
320
+ scan?: {
321
+ tailLines?: number | undefined;
322
+ bottomLines?: number | undefined;
323
+ full?: boolean | undefined;
324
+ } | undefined;
325
+ unless?: string | undefined;
326
+ };
327
+ onRise?: "none" | "connectivity.rate-limit" | "connectivity.proxy-down" | "limits.oc-limit" | "limits.cc-limit" | undefined;
328
+ }[];
329
+ }, {
330
+ useDefaults?: boolean | undefined;
331
+ rules?: {
332
+ set: {
333
+ phase: "empty" | "typing" | "busy" | "afk" | "limit" | "plain_shell";
334
+ kind?: string | undefined;
335
+ border?: string | undefined;
336
+ busyLabel?: string | undefined;
337
+ capture?: number | undefined;
338
+ };
339
+ id: string;
340
+ when: {
341
+ match: string;
342
+ scan?: {
343
+ tailLines?: number | undefined;
344
+ bottomLines?: number | undefined;
345
+ full?: boolean | undefined;
346
+ } | undefined;
347
+ unless?: string | undefined;
348
+ };
349
+ for?: string[] | undefined;
350
+ priority?: number | undefined;
351
+ onRise?: "none" | "connectivity.rate-limit" | "connectivity.proxy-down" | "limits.oc-limit" | "limits.cc-limit" | undefined;
352
+ }[] | undefined;
353
+ }>;
354
+ export type UxConfig = z.infer<typeof UxSchema>;
355
+ export type UxRule = z.infer<typeof UxRuleSchema>;
356
+ export type UxWhen = z.infer<typeof UxWhenSchema>;
357
+ export type UxStatus = z.infer<typeof UxStatusSchema>;
358
+ export type UxTrigger = z.infer<typeof UxTriggerSchema>;
359
+ //# sourceMappingURL=ux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux.d.ts","sourceRoot":"","sources":["../../src/schema/ux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wDAAwD;AACxD,eAAO,MAAM,YAAY;IAErB,mEAAmE;;IAEnE,sEAAsE;;IAEtE,2BAA2B;;;;;;;;;;GAGlB,CAAC;AAEd,eAAO,MAAM,YAAY;;QATrB,mEAAmE;;QAEnE,sEAAsE;;QAEtE,2BAA2B;;;;;;;;;;;IAO7B,kEAAkE;;IAElE,6FAA6F;;;;;;;;;;;;;;;;;;EAE7F,CAAC;AAEH,eAAO,MAAM,cAAc;;IAEzB,kFAAkF;;IAElF,+DAA+D;;;IAG/D,6EAA6E;;;;;;;;;;;;;;EAE7E,CAAC;AAEH,eAAO,MAAM,eAAe,iHAM1B,CAAC;AAEH,eAAO,MAAM,YAAY;;IAEvB,sDAAsD;;IAEtD,2CAA2C;;;;YAxCzC,mEAAmE;;YAEnE,sEAAsE;;YAEtE,2BAA2B;;;;;;;;;;;QAO7B,kEAAkE;;QAElE,6FAA6F;;;;;;;;;;;;;;;;;;;;;QAM7F,kFAAkF;;QAElF,+DAA+D;;;QAG/D,6EAA6E;;;;;;;;;;;;;;;IAoB7E,oEAAoE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEpE,CAAC;AAEH,eAAO,MAAM,QAAQ;IACnB,+CAA+C;;;;QAX/C,sDAAsD;;QAEtD,2CAA2C;;;;gBAxCzC,mEAAmE;;gBAEnE,sEAAsE;;gBAEtE,2BAA2B;;;;;;;;;;;YAO7B,kEAAkE;;YAElE,6FAA6F;;;;;;;;;;;;;;;;;;;;;YAM7F,kFAAkF;;YAElF,+DAA+D;;;YAG/D,6EAA6E;;;;;;;;;;;;;;;QAoB7E,oEAAoE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQpE,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { z } from "zod";
2
+ /** Where to read pane capture text for a rule match. */
3
+ export const UxScanSchema = z
4
+ .object({
5
+ /** Last N lines of capture (default for most limit/busy rules). */
6
+ tailLines: z.number().int().min(1).max(500).optional(),
7
+ /** Bottom N non-empty lines (OpenCode composer footer heuristics). */
8
+ bottomLines: z.number().int().min(1).max(100).optional(),
9
+ /** Entire capture tail. */
10
+ full: z.boolean().optional(),
11
+ })
12
+ .optional();
13
+ export const UxWhenSchema = z.object({
14
+ scan: UxScanSchema,
15
+ /** Regex tested against the scanned region (case-insensitive). */
16
+ match: z.string().min(1),
17
+ /** If this regex matches, rule is skipped (e.g. exclude rate-limit when testing connect). */
18
+ unless: z.string().optional(),
19
+ });
20
+ export const UxStatusSchema = z.object({
21
+ phase: z.enum(["empty", "typing", "busy", "afk", "limit", "plain_shell"]),
22
+ /** limitKind when phase=limit; busyLabel when phase=busy (unless capture set). */
23
+ kind: z.string().optional(),
24
+ /** Border strip label; {kind} expands to kind or busyLabel. */
25
+ border: z.string().optional(),
26
+ busyLabel: z.string().optional(),
27
+ /** Regex capture group index for kind/busyLabel when phase is limit/busy. */
28
+ capture: z.number().int().min(1).max(9).optional(),
29
+ });
30
+ export const UxTriggerSchema = z.enum([
31
+ "none",
32
+ "connectivity.rate-limit",
33
+ "connectivity.proxy-down",
34
+ "limits.oc-limit",
35
+ "limits.cc-limit",
36
+ ]);
37
+ export const UxRuleSchema = z.object({
38
+ id: z.string().min(1),
39
+ /** Provider ids, or "*" for any detected provider. */
40
+ for: z.array(z.string()).default(["*"]),
41
+ /** Higher runs first; first match wins. */
42
+ priority: z.number().int().default(50),
43
+ when: UxWhenSchema,
44
+ set: UxStatusSchema,
45
+ /** Daemon rising-edge side effect when this limit state appears. */
46
+ onRise: UxTriggerSchema.optional(),
47
+ });
48
+ export const UxSchema = z.object({
49
+ /** Merge engine defaults before user rules. */
50
+ useDefaults: z.boolean().default(true),
51
+ rules: z.array(UxRuleSchema).default([]),
52
+ });
53
+ //# sourceMappingURL=ux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ux.js","sourceRoot":"","sources":["../../src/schema/ux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wDAAwD;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,CAAC;IACN,mEAAmE;IACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACtD,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACxD,2BAA2B;IAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC;KACD,QAAQ,EAAE,CAAC;AAEd,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,YAAY;IAClB,kEAAkE;IAClE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,6FAA6F;IAC7F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACzE,kFAAkF;IAClF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,+DAA+D;IAC/D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,6EAA6E;IAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,MAAM;IACN,yBAAyB;IACzB,yBAAyB;IACzB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,sDAAsD;IACtD,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtC,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,cAAc;IACnB,oEAAoE;IACpE,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,+CAA+C;IAC/C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { MeshProfile } from "../schema/profile.js";
2
+ export declare function sessionHarnessCommand(profile: MeshProfile): string | undefined;
3
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/session/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAG9E"}
@@ -0,0 +1,5 @@
1
+ export function sessionHarnessCommand(profile) {
2
+ const cmd = profile.session.command?.trim();
3
+ return cmd || undefined;
4
+ }
5
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/session/config.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5C,OAAO,GAAG,IAAI,SAAS,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { LoadedProfile } from "../profile.js";
2
+ export declare function resolveSessionHarness(loaded: LoadedProfile): string;
3
+ /** Create or attach the dev tmux session. Replaces the Node process tree via shell exec. */
4
+ export declare function runSessionStart(loaded: LoadedProfile, args: string[]): number;
5
+ //# sourceMappingURL=exec.d.ts.map