shreni 0.1.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 (269) hide show
  1. package/ARCHITECTURE.md +260 -0
  2. package/LICENSE +201 -0
  3. package/README.md +519 -0
  4. package/TRADEMARK.md +97 -0
  5. package/dist/agents/parikshaka.d.ts +11 -0
  6. package/dist/agents/parikshaka.d.ts.map +1 -0
  7. package/dist/agents/parikshaka.js +80 -0
  8. package/dist/agents/parikshaka.js.map +1 -0
  9. package/dist/agents/providers/claude.d.ts +3 -0
  10. package/dist/agents/providers/claude.d.ts.map +1 -0
  11. package/dist/agents/providers/claude.js +100 -0
  12. package/dist/agents/providers/claude.js.map +1 -0
  13. package/dist/agents/providers/codex.d.ts +3 -0
  14. package/dist/agents/providers/codex.d.ts.map +1 -0
  15. package/dist/agents/providers/codex.js +123 -0
  16. package/dist/agents/providers/codex.js.map +1 -0
  17. package/dist/agents/providers/gemini.d.ts +3 -0
  18. package/dist/agents/providers/gemini.d.ts.map +1 -0
  19. package/dist/agents/providers/gemini.js +77 -0
  20. package/dist/agents/providers/gemini.js.map +1 -0
  21. package/dist/agents/providers/index.d.ts +6 -0
  22. package/dist/agents/providers/index.d.ts.map +1 -0
  23. package/dist/agents/providers/index.js +35 -0
  24. package/dist/agents/providers/index.js.map +1 -0
  25. package/dist/agents/providers/registry.d.ts +20 -0
  26. package/dist/agents/providers/registry.d.ts.map +1 -0
  27. package/dist/agents/providers/registry.js +91 -0
  28. package/dist/agents/providers/registry.js.map +1 -0
  29. package/dist/agents/providers/types.d.ts +42 -0
  30. package/dist/agents/providers/types.d.ts.map +1 -0
  31. package/dist/agents/providers/types.js +61 -0
  32. package/dist/agents/providers/types.js.map +1 -0
  33. package/dist/agents/runner.d.ts +6 -0
  34. package/dist/agents/runner.d.ts.map +1 -0
  35. package/dist/agents/runner.js +159 -0
  36. package/dist/agents/runner.js.map +1 -0
  37. package/dist/agents/silpi.d.ts +3 -0
  38. package/dist/agents/silpi.d.ts.map +1 -0
  39. package/dist/agents/silpi.js +101 -0
  40. package/dist/agents/silpi.js.map +1 -0
  41. package/dist/agents/viharapala.d.ts +5 -0
  42. package/dist/agents/viharapala.d.ts.map +1 -0
  43. package/dist/agents/viharapala.js +128 -0
  44. package/dist/agents/viharapala.js.map +1 -0
  45. package/dist/cli/agents.d.ts +14 -0
  46. package/dist/cli/agents.d.ts.map +1 -0
  47. package/dist/cli/agents.js +47 -0
  48. package/dist/cli/agents.js.map +1 -0
  49. package/dist/cli/detect-toolchain.d.ts +10 -0
  50. package/dist/cli/detect-toolchain.d.ts.map +1 -0
  51. package/dist/cli/detect-toolchain.js +77 -0
  52. package/dist/cli/detect-toolchain.js.map +1 -0
  53. package/dist/cli/index.d.ts +3 -0
  54. package/dist/cli/index.d.ts.map +1 -0
  55. package/dist/cli/index.js +342 -0
  56. package/dist/cli/index.js.map +1 -0
  57. package/dist/cli/init-kshetra.d.ts +59 -0
  58. package/dist/cli/init-kshetra.d.ts.map +1 -0
  59. package/dist/cli/init-kshetra.js +531 -0
  60. package/dist/cli/init-kshetra.js.map +1 -0
  61. package/dist/cli/list.d.ts +11 -0
  62. package/dist/cli/list.d.ts.map +1 -0
  63. package/dist/cli/list.js +45 -0
  64. package/dist/cli/list.js.map +1 -0
  65. package/dist/cli/logs.d.ts +20 -0
  66. package/dist/cli/logs.d.ts.map +1 -0
  67. package/dist/cli/logs.js +144 -0
  68. package/dist/cli/logs.js.map +1 -0
  69. package/dist/cli/migrate.d.ts +8 -0
  70. package/dist/cli/migrate.d.ts.map +1 -0
  71. package/dist/cli/migrate.js +116 -0
  72. package/dist/cli/migrate.js.map +1 -0
  73. package/dist/cli/pause.d.ts +24 -0
  74. package/dist/cli/pause.d.ts.map +1 -0
  75. package/dist/cli/pause.js +41 -0
  76. package/dist/cli/pause.js.map +1 -0
  77. package/dist/cli/phalaka-autostart.d.ts +11 -0
  78. package/dist/cli/phalaka-autostart.d.ts.map +1 -0
  79. package/dist/cli/phalaka-autostart.js +28 -0
  80. package/dist/cli/phalaka-autostart.js.map +1 -0
  81. package/dist/cli/phalaka-server.d.ts +2 -0
  82. package/dist/cli/phalaka-server.d.ts.map +1 -0
  83. package/dist/cli/phalaka-server.js +20 -0
  84. package/dist/cli/phalaka-server.js.map +1 -0
  85. package/dist/cli/phalaka.d.ts +30 -0
  86. package/dist/cli/phalaka.d.ts.map +1 -0
  87. package/dist/cli/phalaka.js +60 -0
  88. package/dist/cli/phalaka.js.map +1 -0
  89. package/dist/cli/pid.d.ts +9 -0
  90. package/dist/cli/pid.d.ts.map +1 -0
  91. package/dist/cli/pid.js +66 -0
  92. package/dist/cli/pid.js.map +1 -0
  93. package/dist/cli/provider-preflight.d.ts +11 -0
  94. package/dist/cli/provider-preflight.d.ts.map +1 -0
  95. package/dist/cli/provider-preflight.js +70 -0
  96. package/dist/cli/provider-preflight.js.map +1 -0
  97. package/dist/cli/register.d.ts +8 -0
  98. package/dist/cli/register.d.ts.map +1 -0
  99. package/dist/cli/register.js +34 -0
  100. package/dist/cli/register.js.map +1 -0
  101. package/dist/cli/run.d.ts +3 -0
  102. package/dist/cli/run.d.ts.map +1 -0
  103. package/dist/cli/run.js +40 -0
  104. package/dist/cli/run.js.map +1 -0
  105. package/dist/cli/start.d.ts +11 -0
  106. package/dist/cli/start.d.ts.map +1 -0
  107. package/dist/cli/start.js +26 -0
  108. package/dist/cli/start.js.map +1 -0
  109. package/dist/cli/status.d.ts +39 -0
  110. package/dist/cli/status.d.ts.map +1 -0
  111. package/dist/cli/status.js +207 -0
  112. package/dist/cli/status.js.map +1 -0
  113. package/dist/cli/stop.d.ts +13 -0
  114. package/dist/cli/stop.d.ts.map +1 -0
  115. package/dist/cli/stop.js +18 -0
  116. package/dist/cli/stop.js.map +1 -0
  117. package/dist/cli/sync.d.ts +6 -0
  118. package/dist/cli/sync.d.ts.map +1 -0
  119. package/dist/cli/sync.js +31 -0
  120. package/dist/cli/sync.js.map +1 -0
  121. package/dist/cli/tail.d.ts +6 -0
  122. package/dist/cli/tail.d.ts.map +1 -0
  123. package/dist/cli/tail.js +170 -0
  124. package/dist/cli/tail.js.map +1 -0
  125. package/dist/cli/telemetry.d.ts +2 -0
  126. package/dist/cli/telemetry.d.ts.map +1 -0
  127. package/dist/cli/telemetry.js +42 -0
  128. package/dist/cli/telemetry.js.map +1 -0
  129. package/dist/cli/verify-hooks.d.ts +12 -0
  130. package/dist/cli/verify-hooks.d.ts.map +1 -0
  131. package/dist/cli/verify-hooks.js +38 -0
  132. package/dist/cli/verify-hooks.js.map +1 -0
  133. package/dist/cli/worker.d.ts +2 -0
  134. package/dist/cli/worker.d.ts.map +1 -0
  135. package/dist/cli/worker.js +211 -0
  136. package/dist/cli/worker.js.map +1 -0
  137. package/dist/kshetra/config.d.ts +64 -0
  138. package/dist/kshetra/config.d.ts.map +1 -0
  139. package/dist/kshetra/config.js +173 -0
  140. package/dist/kshetra/config.js.map +1 -0
  141. package/dist/kshetra/registry.d.ts +5 -0
  142. package/dist/kshetra/registry.d.ts.map +1 -0
  143. package/dist/kshetra/registry.js +69 -0
  144. package/dist/kshetra/registry.js.map +1 -0
  145. package/dist/kshetra/state.d.ts +57 -0
  146. package/dist/kshetra/state.d.ts.map +1 -0
  147. package/dist/kshetra/state.js +195 -0
  148. package/dist/kshetra/state.js.map +1 -0
  149. package/dist/kshetra/toolchain.d.ts +20 -0
  150. package/dist/kshetra/toolchain.d.ts.map +1 -0
  151. package/dist/kshetra/toolchain.js +146 -0
  152. package/dist/kshetra/toolchain.js.map +1 -0
  153. package/dist/phalaka/api.d.ts +123 -0
  154. package/dist/phalaka/api.d.ts.map +1 -0
  155. package/dist/phalaka/api.js +196 -0
  156. package/dist/phalaka/api.js.map +1 -0
  157. package/dist/phalaka/beads-read.d.ts +49 -0
  158. package/dist/phalaka/beads-read.d.ts.map +1 -0
  159. package/dist/phalaka/beads-read.js +174 -0
  160. package/dist/phalaka/beads-read.js.map +1 -0
  161. package/dist/phalaka/pid.d.ts +6 -0
  162. package/dist/phalaka/pid.d.ts.map +1 -0
  163. package/dist/phalaka/pid.js +48 -0
  164. package/dist/phalaka/pid.js.map +1 -0
  165. package/dist/phalaka/server.d.ts +10 -0
  166. package/dist/phalaka/server.d.ts.map +1 -0
  167. package/dist/phalaka/server.js +30 -0
  168. package/dist/phalaka/server.js.map +1 -0
  169. package/dist/phalaka/token.d.ts +5 -0
  170. package/dist/phalaka/token.d.ts.map +1 -0
  171. package/dist/phalaka/token.js +40 -0
  172. package/dist/phalaka/token.js.map +1 -0
  173. package/dist/phalaka/ui.d.ts +15 -0
  174. package/dist/phalaka/ui.d.ts.map +1 -0
  175. package/dist/phalaka/ui.js +233 -0
  176. package/dist/phalaka/ui.js.map +1 -0
  177. package/dist/sthapathi/activity-log.d.ts +68 -0
  178. package/dist/sthapathi/activity-log.d.ts.map +1 -0
  179. package/dist/sthapathi/activity-log.js +57 -0
  180. package/dist/sthapathi/activity-log.js.map +1 -0
  181. package/dist/sthapathi/beads.d.ts +27 -0
  182. package/dist/sthapathi/beads.d.ts.map +1 -0
  183. package/dist/sthapathi/beads.js +153 -0
  184. package/dist/sthapathi/beads.js.map +1 -0
  185. package/dist/sthapathi/branch.d.ts +5 -0
  186. package/dist/sthapathi/branch.d.ts.map +1 -0
  187. package/dist/sthapathi/branch.js +20 -0
  188. package/dist/sthapathi/branch.js.map +1 -0
  189. package/dist/sthapathi/dispatch.d.ts +14 -0
  190. package/dist/sthapathi/dispatch.d.ts.map +1 -0
  191. package/dist/sthapathi/dispatch.js +326 -0
  192. package/dist/sthapathi/dispatch.js.map +1 -0
  193. package/dist/sthapathi/errors.d.ts +27 -0
  194. package/dist/sthapathi/errors.d.ts.map +1 -0
  195. package/dist/sthapathi/errors.js +174 -0
  196. package/dist/sthapathi/errors.js.map +1 -0
  197. package/dist/sthapathi/gh.d.ts +19 -0
  198. package/dist/sthapathi/gh.d.ts.map +1 -0
  199. package/dist/sthapathi/gh.js +69 -0
  200. package/dist/sthapathi/gh.js.map +1 -0
  201. package/dist/sthapathi/git.d.ts +41 -0
  202. package/dist/sthapathi/git.d.ts.map +1 -0
  203. package/dist/sthapathi/git.js +199 -0
  204. package/dist/sthapathi/git.js.map +1 -0
  205. package/dist/sthapathi/guard.d.ts +24 -0
  206. package/dist/sthapathi/guard.d.ts.map +1 -0
  207. package/dist/sthapathi/guard.js +64 -0
  208. package/dist/sthapathi/guard.js.map +1 -0
  209. package/dist/sthapathi/health.d.ts +23 -0
  210. package/dist/sthapathi/health.d.ts.map +1 -0
  211. package/dist/sthapathi/health.js +142 -0
  212. package/dist/sthapathi/health.js.map +1 -0
  213. package/dist/sthapathi/index.d.ts +21 -0
  214. package/dist/sthapathi/index.d.ts.map +1 -0
  215. package/dist/sthapathi/index.js +88 -0
  216. package/dist/sthapathi/index.js.map +1 -0
  217. package/dist/sthapathi/lifecycle.d.ts +7 -0
  218. package/dist/sthapathi/lifecycle.d.ts.map +1 -0
  219. package/dist/sthapathi/lifecycle.js +43 -0
  220. package/dist/sthapathi/lifecycle.js.map +1 -0
  221. package/dist/sthapathi/lint.d.ts +8 -0
  222. package/dist/sthapathi/lint.d.ts.map +1 -0
  223. package/dist/sthapathi/lint.js +33 -0
  224. package/dist/sthapathi/lint.js.map +1 -0
  225. package/dist/sthapathi/merge.d.ts +18 -0
  226. package/dist/sthapathi/merge.d.ts.map +1 -0
  227. package/dist/sthapathi/merge.js +259 -0
  228. package/dist/sthapathi/merge.js.map +1 -0
  229. package/dist/sthapathi/notifications.d.ts +14 -0
  230. package/dist/sthapathi/notifications.d.ts.map +1 -0
  231. package/dist/sthapathi/notifications.js +57 -0
  232. package/dist/sthapathi/notifications.js.map +1 -0
  233. package/dist/sthapathi/parikshaka-dispatch.d.ts +12 -0
  234. package/dist/sthapathi/parikshaka-dispatch.d.ts.map +1 -0
  235. package/dist/sthapathi/parikshaka-dispatch.js +0 -0
  236. package/dist/sthapathi/parikshaka-dispatch.js.map +1 -0
  237. package/dist/sthapathi/pickup.d.ts +13 -0
  238. package/dist/sthapathi/pickup.d.ts.map +1 -0
  239. package/dist/sthapathi/pickup.js +144 -0
  240. package/dist/sthapathi/pickup.js.map +1 -0
  241. package/dist/sthapathi/recover.d.ts +16 -0
  242. package/dist/sthapathi/recover.d.ts.map +1 -0
  243. package/dist/sthapathi/recover.js +149 -0
  244. package/dist/sthapathi/recover.js.map +1 -0
  245. package/dist/sthapathi/retry.d.ts +11 -0
  246. package/dist/sthapathi/retry.d.ts.map +1 -0
  247. package/dist/sthapathi/retry.js +42 -0
  248. package/dist/sthapathi/retry.js.map +1 -0
  249. package/dist/sthapathi/self-heal.d.ts +19 -0
  250. package/dist/sthapathi/self-heal.d.ts.map +1 -0
  251. package/dist/sthapathi/self-heal.js +46 -0
  252. package/dist/sthapathi/self-heal.js.map +1 -0
  253. package/dist/sthapathi/types.d.ts +56 -0
  254. package/dist/sthapathi/types.d.ts.map +1 -0
  255. package/dist/sthapathi/types.js +4 -0
  256. package/dist/sthapathi/types.js.map +1 -0
  257. package/dist/sthapathi/watchdog.d.ts +27 -0
  258. package/dist/sthapathi/watchdog.d.ts.map +1 -0
  259. package/dist/sthapathi/watchdog.js +145 -0
  260. package/dist/sthapathi/watchdog.js.map +1 -0
  261. package/dist/telemetry/telemetry.d.ts +42 -0
  262. package/dist/telemetry/telemetry.d.ts.map +1 -0
  263. package/dist/telemetry/telemetry.js +189 -0
  264. package/dist/telemetry/telemetry.js.map +1 -0
  265. package/dist/test-setup.d.ts +2 -0
  266. package/dist/test-setup.d.ts.map +1 -0
  267. package/dist/test-setup.js +16 -0
  268. package/dist/test-setup.js.map +1 -0
  269. package/package.json +71 -0
@@ -0,0 +1,68 @@
1
+ export type ActivityEvent = {
2
+ type: 'task_claimed';
3
+ kshetra: string;
4
+ beadId: string;
5
+ title: string;
6
+ } | {
7
+ type: 'round_start';
8
+ kshetra: string;
9
+ beadId: string;
10
+ round: number;
11
+ agent: 'silpi' | 'viharapala';
12
+ } | {
13
+ type: 'agent_text';
14
+ kshetra: string;
15
+ beadId: string;
16
+ agent: 'silpi' | 'viharapala' | 'parikshaka';
17
+ text: string;
18
+ } | {
19
+ type: 'agent_tool_call';
20
+ kshetra: string;
21
+ beadId: string;
22
+ agent: 'silpi' | 'viharapala' | 'parikshaka';
23
+ tool: string;
24
+ detail: string;
25
+ } | {
26
+ type: 'silpi_done';
27
+ kshetra: string;
28
+ beadId: string;
29
+ round: number;
30
+ summary: string;
31
+ confidence: number;
32
+ files: string[];
33
+ lintPassed: boolean;
34
+ testsPassed: boolean;
35
+ } | {
36
+ type: 'viharapala_done';
37
+ kshetra: string;
38
+ beadId: string;
39
+ round: number;
40
+ verdict: 'APPROVE' | 'REJECT';
41
+ score: number;
42
+ mustFix: string[];
43
+ } | {
44
+ type: 'task_done';
45
+ kshetra: string;
46
+ beadId: string;
47
+ title: string;
48
+ approved: boolean;
49
+ rounds: number;
50
+ } | {
51
+ type: 'beads_synced';
52
+ kshetra: string;
53
+ } | {
54
+ type: 'error';
55
+ kshetra: string;
56
+ beadId?: string;
57
+ message: string;
58
+ };
59
+ export type LoggedEvent = ActivityEvent & {
60
+ ts: string;
61
+ };
62
+ export declare function logPath(kshetraId: string): string;
63
+ export declare function notificationsPath(kshetraId: string): string;
64
+ export declare function legacyLogPath(kshetraId: string): string;
65
+ export declare function heartbeatPath(kshetraId: string): string;
66
+ export declare function touchHeartbeat(kshetraId: string): void;
67
+ export declare function emit(event: ActivityEvent): void;
68
+ //# sourceMappingURL=activity-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-log.d.ts","sourceRoot":"","sources":["../../src/sthapathi/activity-log.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAK,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAM,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAA;CAAE,GAC3G;IAAE,IAAI,EAAE,YAAY,CAAC;IAAO,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzH;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzI;IAAE,IAAI,EAAE,YAAY,CAAC;IAAO,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAC7K;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7I;IAAE,IAAI,EAAE,WAAW,CAAC;IAAQ,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/G;IAAE,IAAI,EAAE,cAAc,CAAC;IAAK,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAY,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAMzD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjD;AAGD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAGD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AASD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAID,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAOtD;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAQ/C"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logPath = logPath;
4
+ exports.notificationsPath = notificationsPath;
5
+ exports.legacyLogPath = legacyLogPath;
6
+ exports.heartbeatPath = heartbeatPath;
7
+ exports.touchHeartbeat = touchHeartbeat;
8
+ exports.emit = emit;
9
+ const fs_1 = require("fs");
10
+ const path_1 = require("path");
11
+ const os_1 = require("os");
12
+ function kshetraDir(kshetraId) {
13
+ return (0, path_1.join)((0, os_1.homedir)(), '.shreni', 'kshetra', kshetraId);
14
+ }
15
+ function logPath(kshetraId) {
16
+ return (0, path_1.join)(kshetraDir(kshetraId), 'activity.jsonl');
17
+ }
18
+ // Durable notification feed (stuck/end-state alerts) surfaced by Phalaka.
19
+ function notificationsPath(kshetraId) {
20
+ return (0, path_1.join)(kshetraDir(kshetraId), 'notifications.jsonl');
21
+ }
22
+ // Pre-Feature-2 location, kept so `tail` can read older logs.
23
+ function legacyLogPath(kshetraId) {
24
+ return (0, path_1.join)((0, os_1.homedir)(), '.shreni', 'logs', `${kshetraId}.jsonl`);
25
+ }
26
+ // Worker-liveness heartbeat (the watchdog design §3.1 / OQ1). A bare file whose
27
+ // *mtime* is the liveness signal — decoupled from agent emits so a long SILENT tool
28
+ // call (a build, `pnpm test`, a slow `bd` op) no longer reads as a hung agent. The
29
+ // worker touches it on a fixed cadence while a phase is active; the watchdog reads
30
+ // its mtime instead of `activity.jsonl`'s. A file (not a state.json field) avoids a
31
+ // read-modify-write of state.json on every tick and can't clobber concurrent JSON
32
+ // writers (CLI pause/resume, setPhase).
33
+ function heartbeatPath(kshetraId) {
34
+ return (0, path_1.join)(kshetraDir(kshetraId), 'heartbeat');
35
+ }
36
+ // Stamp the heartbeat: rewriting the (empty) file bumps its mtime to now. Best-effort
37
+ // — never let a heartbeat failure crash the worker.
38
+ function touchHeartbeat(kshetraId) {
39
+ try {
40
+ (0, fs_1.mkdirSync)(kshetraDir(kshetraId), { recursive: true });
41
+ (0, fs_1.writeFileSync)(heartbeatPath(kshetraId), '', 'utf8');
42
+ }
43
+ catch {
44
+ // Never let heartbeat stamping crash the worker
45
+ }
46
+ }
47
+ function emit(event) {
48
+ try {
49
+ (0, fs_1.mkdirSync)(kshetraDir(event.kshetra), { recursive: true });
50
+ const entry = { ...event, ts: new Date().toISOString() };
51
+ (0, fs_1.appendFileSync)(logPath(event.kshetra), JSON.stringify(entry) + '\n', 'utf8');
52
+ }
53
+ catch {
54
+ // Never let logging crash the worker
55
+ }
56
+ }
57
+ //# sourceMappingURL=activity-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-log.js","sourceRoot":"","sources":["../../src/sthapathi/activity-log.ts"],"names":[],"mappings":";;AAqBA,0BAEC;AAGD,8CAEC;AAGD,sCAEC;AASD,sCAEC;AAID,wCAOC;AAED,oBAQC;AAjED,2BAA8D;AAC9D,+BAA4B;AAC5B,2BAA6B;AAe7B,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,OAAO,CAAC,SAAiB;IACvC,OAAO,IAAA,WAAI,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,0EAA0E;AAC1E,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,OAAO,IAAA,WAAI,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC5D,CAAC;AAED,8DAA8D;AAC9D,SAAgB,aAAa,CAAC,SAAiB;IAC7C,OAAO,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,gFAAgF;AAChF,oFAAoF;AACpF,mFAAmF;AACnF,mFAAmF;AACnF,oFAAoF;AACpF,kFAAkF;AAClF,wCAAwC;AACxC,SAAgB,aAAa,CAAC,SAAiB;IAC7C,OAAO,IAAA,WAAI,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC;AAED,sFAAsF;AACtF,oDAAoD;AACpD,SAAgB,cAAc,CAAC,SAAiB;IAC9C,IAAI,CAAC;QACH,IAAA,cAAS,EAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,IAAA,kBAAa,EAAC,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED,SAAgB,IAAI,CAAC,KAAoB;IACvC,IAAI,CAAC;QACH,IAAA,cAAS,EAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAgB,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACtE,IAAA,mBAAc,EAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { KshetraConfig } from '../kshetra/config.js';
2
+ export declare class BeadsError extends Error {
3
+ readonly cause?: unknown | undefined;
4
+ constructor(message: string, cause?: unknown | undefined);
5
+ }
6
+ export declare function bd(kshetra: KshetraConfig): {
7
+ ready(): Promise<string>;
8
+ claim(id: string): Promise<string>;
9
+ show(id: string): Promise<string>;
10
+ prime(): Promise<string>;
11
+ close(id: string, note: string): Promise<string>;
12
+ create(title: string, priority: number, type?: string, labels?: string[]): Promise<string>;
13
+ search(query: string): Promise<string>;
14
+ remember(insight: string): Promise<string>;
15
+ addNote(id: string, note: string): Promise<string>;
16
+ flag(id: string, reason: string): Promise<string>;
17
+ reopen(id: string): Promise<string>;
18
+ addLabel(id: string, label: string): Promise<string>;
19
+ removeLabel(id: string, label: string): Promise<string>;
20
+ list(filters: {
21
+ status?: string;
22
+ label?: string;
23
+ excludeLabel?: string;
24
+ }): Promise<string>;
25
+ };
26
+ export declare function syncBeads(kshetra: KshetraConfig): Promise<void>;
27
+ //# sourceMappingURL=beads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../../src/sthapathi/beads.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,qBAAa,UAAW,SAAQ,KAAK;aAGjB,KAAK,CAAC,EAAE,OAAO;gBAD/B,OAAO,EAAE,MAAM,EACC,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAsBD,wBAAgB,EAAE,CAAC,OAAO,EAAE,aAAa;aAI5B,OAAO,CAAC,MAAM,CAAC;cAId,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAIzB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAIxB,OAAO,CAAC,MAAM,CAAC;cAId,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;kBAMlC,MAAM,YAAY,MAAM,SAAS,MAAM,WAAW,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;kBAS5E,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;sBAIpB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gBAI9B,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;aAKzC,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;eAMtC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;iBAOtB,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAIpC,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;kBAIzC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;EAQ7F;AAQD,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BeadsError = void 0;
4
+ exports.bd = bd;
5
+ exports.syncBeads = syncBeads;
6
+ const child_process_1 = require("child_process");
7
+ const util_1 = require("util");
8
+ const fs_1 = require("fs");
9
+ const path_1 = require("path");
10
+ const git_js_1 = require("./git.js");
11
+ const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
12
+ class BeadsError extends Error {
13
+ cause;
14
+ constructor(message, cause) {
15
+ super(message);
16
+ this.cause = cause;
17
+ this.name = 'BeadsError';
18
+ }
19
+ }
20
+ exports.BeadsError = BeadsError;
21
+ async function exec(args, env) {
22
+ try {
23
+ const { stdout } = await execFileAsync('bd', args, {
24
+ env,
25
+ maxBuffer: 4 * 1024 * 1024,
26
+ });
27
+ return stdout.trim();
28
+ }
29
+ catch (err) {
30
+ const e = err;
31
+ throw new BeadsError(`bd ${args[0]} failed: ${e.stderr ?? e.message ?? String(err)}`, err);
32
+ }
33
+ }
34
+ // Internal-only bd CLI wrapper. Never called by agents directly.
35
+ function bd(kshetra) {
36
+ const env = { ...process.env, BEADS_DIR: kshetra.beads.path };
37
+ return {
38
+ ready() {
39
+ return exec(['ready', '--json'], env);
40
+ },
41
+ claim(id) {
42
+ return exec(['update', id, '--claim'], env);
43
+ },
44
+ show(id) {
45
+ return exec(['show', id, '--json'], env);
46
+ },
47
+ prime() {
48
+ return exec(['prime'], env);
49
+ },
50
+ close(id, note) {
51
+ // Note must go through --reason; `bd close` treats bare positional args as
52
+ // additional issue IDs, so a note resembling an ID fails ID resolution.
53
+ return exec(['close', id, '--reason', note], env);
54
+ },
55
+ create(title, priority, type, labels) {
56
+ const args = ['create', title, '-p', String(priority)];
57
+ if (type)
58
+ args.push('-t', type);
59
+ if (labels && labels.length)
60
+ args.push('-l', labels.join(','));
61
+ return exec(args, env);
62
+ },
63
+ // Text search across titles (and IDs), all statuses — used for Parikshaka
64
+ // idempotency (don't refile a coverage gap that already has a bead).
65
+ search(query) {
66
+ return exec(['search', query, '--status', 'all', '--json'], env);
67
+ },
68
+ remember(insight) {
69
+ return exec(['remember', insight], env);
70
+ },
71
+ addNote(id, note) {
72
+ return exec(['note', id, note], env);
73
+ },
74
+ // Blocking a bead: set status to blocked and append the reason as a note
75
+ flag(id, reason) {
76
+ return exec(['update', id, '--status', 'blocked', '--append-notes', reason], env);
77
+ },
78
+ // Reopen a bead (back to the ready pool). Used by RECOVER to re-queue work
79
+ // stranded in_progress by a crash/restart for a fresh cycle.
80
+ reopen(id) {
81
+ return exec(['update', id, '--status', 'open'], env);
82
+ },
83
+ // Add / remove a label. Used by the PR merge policy (3r2) to mark a bead
84
+ // `awaiting-merge` (kept open + in_progress so dependents stay blocked) and
85
+ // to clear the marker once its PR is reconciled.
86
+ addLabel(id, label) {
87
+ return exec(['update', id, '--add-label', label], env);
88
+ },
89
+ removeLabel(id, label) {
90
+ return exec(['update', id, '--remove-label', label], env);
91
+ },
92
+ list(filters) {
93
+ const args = ['list', '--json'];
94
+ if (filters.status)
95
+ args.push('--status', filters.status);
96
+ if (filters.label)
97
+ args.push('--label', filters.label);
98
+ if (filters.excludeLabel)
99
+ args.push('--exclude-label', filters.excludeLabel);
100
+ return exec(args, env);
101
+ },
102
+ };
103
+ }
104
+ // One in-flight sync per beads path — callers that arrive while a sync is running
105
+ // share the same promise instead of racing on the git index.
106
+ const syncInFlight = new Map();
107
+ // syncBeads: commit any local changes, pull, push.
108
+ // Commit before pull so unstaged changes don't block the rebase.
109
+ function syncBeads(kshetra) {
110
+ const key = kshetra.beads.path;
111
+ const existing = syncInFlight.get(key);
112
+ if (existing)
113
+ return existing;
114
+ const promise = doSyncBeads(kshetra).finally(() => syncInFlight.delete(key));
115
+ syncInFlight.set(key, promise);
116
+ return promise;
117
+ }
118
+ async function doSyncBeads(kshetra) {
119
+ // Remove stale lock files left by crashed git processes
120
+ const indexLock = (0, path_1.join)(kshetra.beads.path, '.git', 'index.lock');
121
+ if ((0, fs_1.existsSync)(indexLock))
122
+ (0, fs_1.rmSync)(indexLock);
123
+ const g = (0, git_js_1.git)(kshetra.beads.path);
124
+ await g.add('-A');
125
+ await g.commit(`shreni: sync ${new Date().toISOString()}`);
126
+ // Beads sync must be resilient: a transient git hiccup must NOT propagate and
127
+ // abort the caller's cycle (it used to abort pickup). Benign
128
+ // conditions ("Already up to date", "no candidate for rebasing") are success;
129
+ // anything else is logged and swallowed — the local sync commit persists and a
130
+ // later cycle reconciles. (See the Sthapathi workflow design §4.7.)
131
+ try {
132
+ await g.pull('--rebase', 'origin', 'main');
133
+ }
134
+ catch (err) {
135
+ if (!isBenignSyncError(err)) {
136
+ console.warn(`[shreni sync:${kshetra.id}] beads pull skipped: ${err.message}`);
137
+ return; // can't safely push over a failed/diverged pull; retry next cycle
138
+ }
139
+ }
140
+ try {
141
+ await g.push('origin', 'main');
142
+ }
143
+ catch (err) {
144
+ console.warn(`[shreni sync:${kshetra.id}] beads push deferred: ${err.message}`);
145
+ }
146
+ }
147
+ // "no candidate for rebasing" / "already up to date" are not failures — they
148
+ // mean the local branch is already reconciled with the remote.
149
+ function isBenignSyncError(err) {
150
+ const msg = err?.message ?? '';
151
+ return /no candidate for rebasing|already up[ -]to[ -]date/i.test(msg);
152
+ }
153
+ //# sourceMappingURL=beads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beads.js","sourceRoot":"","sources":["../../src/sthapathi/beads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { KshetraConfig } from '../kshetra/config.js';
2
+ import type { Task } from './types.js';
3
+ export declare function branchName(task: Pick<Task, 'id' | 'slug'>): string;
4
+ export declare function createTaskBranch(task: Task, kshetra: KshetraConfig): Promise<string>;
5
+ //# sourceMappingURL=branch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/sthapathi/branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAKvC,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,CAElE;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1F"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.branchName = branchName;
4
+ exports.createTaskBranch = createTaskBranch;
5
+ const git_js_1 = require("./git.js");
6
+ // Only the id + slug are needed to name a branch, so any object carrying those
7
+ // works (a full Task, or the lighter awaiting-merge bead reconcile reconstructs).
8
+ function branchName(task) {
9
+ return `bead-${task.id}/${task.slug}`;
10
+ }
11
+ // Ensures we are on the latest main before branching so the task branch is
12
+ // never behind origin. Checkout → pull → branch in that order.
13
+ async function createTaskBranch(task, kshetra) {
14
+ const g = (0, git_js_1.git)(kshetra);
15
+ const main = kshetra.repo.mainBranch;
16
+ await g.checkout(main);
17
+ await g.pull('--rebase', 'origin', main);
18
+ return g.createBranch(task);
19
+ }
20
+ //# sourceMappingURL=branch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/sthapathi/branch.ts"],"names":[],"mappings":";;AAMA,gCAEC;AAID,4CAMC;AAhBD,qCAA+B;AAE/B,+EAA+E;AAC/E,kFAAkF;AAClF,SAAgB,UAAU,CAAC,IAA+B;IACxD,OAAO,QAAQ,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,2EAA2E;AAC3E,+DAA+D;AACxD,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,OAAsB;IACvE,MAAM,CAAC,GAAG,IAAA,YAAG,EAAC,OAAO,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IACrC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { KshetraConfig } from '../kshetra/config.js';
2
+ import type { AgentContext, Task, SilpiOutput, ViharapalaOutput } from './types.js';
3
+ export declare function buildAgentContext(kshetra: KshetraConfig, task: Task): Promise<AgentContext>;
4
+ export declare function runSilpiSafe(kshetra: KshetraConfig, task: Task, context: AgentContext, round: number, branch: string, feedback?: ViharapalaOutput | null): Promise<SilpiOutput>;
5
+ export declare function runViharapalaSafe(kshetra: KshetraConfig, task: Task, context: AgentContext, silpiOut: SilpiOutput, round: number, branch: string): Promise<ViharapalaOutput>;
6
+ export declare function runSilpiViharapalaLoop(kshetra: KshetraConfig, task: Task, _branchParam: string, signal?: AbortSignal): Promise<{
7
+ approved: boolean;
8
+ note: string;
9
+ }>;
10
+ export declare function runHealthRepairLoop(kshetra: KshetraConfig, task: Task, signal?: AbortSignal): Promise<{
11
+ approved: boolean;
12
+ note: string;
13
+ }>;
14
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/sthapathi/dispatch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAmCpF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAkCjG;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,GACjC,OAAO,CAAC,WAAW,CAAC,CAetB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAiB3B;AA4BD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA4H9C;AAOD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiF9C"}