@songsid/agend 2.2.0 → 2.3.0-beta.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 (298) hide show
  1. package/dist/agent-cli.js +248 -2
  2. package/dist/agent-cli.js.map +1 -1
  3. package/dist/agent-endpoint.d.ts +2 -0
  4. package/dist/agent-endpoint.js +25 -0
  5. package/dist/agent-endpoint.js.map +1 -1
  6. package/dist/agent-file-read.d.ts +35 -0
  7. package/dist/agent-file-read.js +144 -0
  8. package/dist/agent-file-read.js.map +1 -0
  9. package/dist/agent-whats-new.js +8 -0
  10. package/dist/agent-whats-new.js.map +1 -1
  11. package/dist/atomic-write.js +9 -1
  12. package/dist/atomic-write.js.map +1 -1
  13. package/dist/auth-api.js +17 -0
  14. package/dist/auth-api.js.map +1 -1
  15. package/dist/backend/antigravity.js +3 -3
  16. package/dist/backend/antigravity.js.map +1 -1
  17. package/dist/backend/claude-code.js +5 -1
  18. package/dist/backend/claude-code.js.map +1 -1
  19. package/dist/backend/launch-effort.js +1 -1
  20. package/dist/backend/launch-effort.js.map +1 -1
  21. package/dist/backend/muse.js +10 -2
  22. package/dist/backend/muse.js.map +1 -1
  23. package/dist/backend/types.d.ts +8 -0
  24. package/dist/backend/types.js +10 -0
  25. package/dist/backend/types.js.map +1 -1
  26. package/dist/cache-analysis.d.ts +47 -1
  27. package/dist/cache-analysis.js +68 -8
  28. package/dist/cache-analysis.js.map +1 -1
  29. package/dist/cache-report-tool.d.ts +17 -0
  30. package/dist/cache-report-tool.js +40 -0
  31. package/dist/cache-report-tool.js.map +1 -0
  32. package/dist/cache-service.d.ts +15 -0
  33. package/dist/cache-service.js +26 -1
  34. package/dist/cache-service.js.map +1 -1
  35. package/dist/channel/adapters/discord.d.ts +2 -0
  36. package/dist/channel/adapters/discord.js +17 -2
  37. package/dist/channel/adapters/discord.js.map +1 -1
  38. package/dist/channel/adapters/telegram.d.ts +8 -1
  39. package/dist/channel/adapters/telegram.js +74 -4
  40. package/dist/channel/adapters/telegram.js.map +1 -1
  41. package/dist/channel/mcp-tools.js +36 -0
  42. package/dist/channel/mcp-tools.js.map +1 -1
  43. package/dist/channel/types.d.ts +15 -0
  44. package/dist/cli.js +7 -3
  45. package/dist/cli.js.map +1 -1
  46. package/dist/config-validator.js +22 -2
  47. package/dist/config-validator.js.map +1 -1
  48. package/dist/daemon.js +244 -20
  49. package/dist/daemon.js.map +1 -1
  50. package/dist/fleet-context.d.ts +5 -0
  51. package/dist/fleet-manager.d.ts +92 -0
  52. package/dist/fleet-manager.js +410 -29
  53. package/dist/fleet-manager.js.map +1 -1
  54. package/dist/general-knowledge/skills/credential-profiles/SKILL.md +7 -0
  55. package/dist/general-knowledge/skills/web-appearance/SKILL.md +367 -0
  56. package/dist/instance-avatar.js +3 -0
  57. package/dist/instance-avatar.js.map +1 -1
  58. package/dist/instance-config-impact.js +3 -0
  59. package/dist/instance-config-impact.js.map +1 -1
  60. package/dist/instance-lifecycle.js +9 -4
  61. package/dist/instance-lifecycle.js.map +1 -1
  62. package/dist/needs-you-hub.d.ts +4 -0
  63. package/dist/needs-you-hub.js +31 -6
  64. package/dist/needs-you-hub.js.map +1 -1
  65. package/dist/needs-you.d.ts +1 -13
  66. package/dist/needs-you.js +3 -37
  67. package/dist/needs-you.js.map +1 -1
  68. package/dist/outbound-handlers.d.ts +7 -0
  69. package/dist/outbound-handlers.js +65 -10
  70. package/dist/outbound-handlers.js.map +1 -1
  71. package/dist/outbound-schemas.d.ts +74 -0
  72. package/dist/outbound-schemas.js +56 -0
  73. package/dist/outbound-schemas.js.map +1 -1
  74. package/dist/public-web-gateway.js +14 -0
  75. package/dist/public-web-gateway.js.map +1 -1
  76. package/dist/repo-worktree-guard.d.ts +36 -0
  77. package/dist/repo-worktree-guard.js +143 -0
  78. package/dist/repo-worktree-guard.js.map +1 -0
  79. package/dist/scheduler/scheduler.d.ts +70 -1
  80. package/dist/scheduler/scheduler.js +256 -17
  81. package/dist/scheduler/scheduler.js.map +1 -1
  82. package/dist/service-installer.d.ts +2 -1
  83. package/dist/service-installer.js +18 -3
  84. package/dist/service-installer.js.map +1 -1
  85. package/dist/settings-api.js +74 -1
  86. package/dist/settings-api.js.map +1 -1
  87. package/dist/settings-change.js +8 -0
  88. package/dist/settings-change.js.map +1 -1
  89. package/dist/settings-effect.js +16 -2
  90. package/dist/settings-effect.js.map +1 -1
  91. package/dist/settings-http-confirmation.js +5 -0
  92. package/dist/settings-http-confirmation.js.map +1 -1
  93. package/dist/tool-permissions.d.ts +5 -0
  94. package/dist/tool-permissions.js +61 -2
  95. package/dist/tool-permissions.js.map +1 -1
  96. package/dist/topic-commands.d.ts +10 -6
  97. package/dist/topic-commands.js +21 -17
  98. package/dist/topic-commands.js.map +1 -1
  99. package/dist/topic-link.d.ts +128 -0
  100. package/dist/topic-link.js +269 -0
  101. package/dist/topic-link.js.map +1 -0
  102. package/dist/types.d.ts +13 -0
  103. package/dist/ui/app-effects.js +187 -0
  104. package/dist/ui/chat-effect-posters.js +42 -0
  105. package/dist/ui/chat-effects.js +72 -0
  106. package/dist/ui/chat-live-replies.js +58 -0
  107. package/dist/ui/chat-render.js +4 -4
  108. package/dist/ui/chat-store.js +9 -3
  109. package/dist/ui/chat-strings.js +15 -0
  110. package/dist/ui/chat-thread.js +47 -21
  111. package/dist/ui/chat-tour.js +1 -1
  112. package/dist/ui/effect-trial-controller.js +119 -0
  113. package/dist/ui/effect-trial-offer.js +31 -0
  114. package/dist/ui/effect-trial-panel.js +37 -0
  115. package/dist/ui/fleet-cache.js +23 -1
  116. package/dist/ui/image-lightbox.js +1 -1
  117. package/dist/ui/panel-chat.js +85 -17
  118. package/dist/ui/panel-details.js +18 -5
  119. package/dist/ui/panel-fleet.js +3 -3
  120. package/dist/ui/panel-log.js +6 -6
  121. package/dist/ui/panel-needs.js +3 -3
  122. package/dist/ui/panel-settings.js +8 -5
  123. package/dist/ui/preview-panel.js +25 -9
  124. package/dist/ui/settings-appearance.js +325 -0
  125. package/dist/ui/settings-effects.js +201 -0
  126. package/dist/ui/settings-mods.js +257 -0
  127. package/dist/ui/settings-owner-effects.js +80 -0
  128. package/dist/ui/settings-strings.js +245 -0
  129. package/dist/ui/shared/agend-auth.js +27 -3
  130. package/dist/ui/shared/agent-widget.js +248 -0
  131. package/dist/ui/shared/app-i18n.js +2 -0
  132. package/dist/ui/shared/app-prefs.js +30 -10
  133. package/dist/ui/shared/app-route.js +23 -1
  134. package/dist/ui/shared/app-session.js +1 -1
  135. package/dist/ui/shared/app-shell.js +29 -16
  136. package/dist/ui/shared/app-store.js +2 -0
  137. package/dist/ui/shared/app-stream.js +12 -7
  138. package/dist/ui/shared/app-themes.js +188 -0
  139. package/dist/ui/shared/app.css +225 -3
  140. package/dist/ui/shared/app.js +6 -0
  141. package/dist/ui/shared/card-strings.js +28 -0
  142. package/dist/ui/shared/effect-app-runtime.js +248 -0
  143. package/dist/ui/shared/effect-baseline.js +64 -0
  144. package/dist/ui/shared/effect-chat-runtime.js +154 -0
  145. package/dist/ui/shared/effect-cursor.js +125 -0
  146. package/dist/ui/shared/effect-frame.js +127 -0
  147. package/dist/ui/shared/effect-geometry.js +122 -0
  148. package/dist/ui/shared/effect-host-style.js +10 -0
  149. package/dist/ui/shared/effect-owner-regions.js +74 -0
  150. package/dist/ui/shared/effect-owner-source.js +115 -0
  151. package/dist/ui/shared/effect-policy.js +137 -0
  152. package/dist/ui/shared/effect-poster-reader.js +98 -0
  153. package/dist/ui/shared/effect-posters.js +117 -0
  154. package/dist/ui/shared/effect-profiler.js +162 -0
  155. package/dist/ui/shared/effect-profiles.js +65 -0
  156. package/dist/ui/shared/effect-registry.js +496 -0
  157. package/dist/ui/shared/effect-runtime-loader.js +234 -0
  158. package/dist/ui/shared/effect-safety.js +153 -0
  159. package/dist/ui/shared/effect-stock-snapshot.js +34 -0
  160. package/dist/ui/shared/effect-stock-trust.js +165 -0
  161. package/dist/ui/shared/effect-trial-source.js +103 -0
  162. package/dist/ui/shared/effect-trial-stage.js +147 -0
  163. package/dist/ui/shared/header-tools.js +1 -1
  164. package/dist/ui/shared/identity-card.js +202 -0
  165. package/dist/ui/shared/identity-color.js +261 -0
  166. package/dist/ui/shared/instance-nav.js +37 -19
  167. package/dist/ui/shared/owner-css.js +221 -0
  168. package/dist/ui/shared/owner-effect-prefs.js +117 -0
  169. package/dist/ui/shared/panel-view.js +81 -8
  170. package/dist/ui/shared/signin.js +2 -0
  171. package/dist/ui/shared/ui-dialog.js +1 -1
  172. package/dist/ui/shared/ui-icons.js +2 -0
  173. package/dist/ui/shared/ui-menu.js +1 -1
  174. package/dist/ui/shared/ui-toast.js +1 -1
  175. package/dist/ui/shared/usage-dialog.js +14 -2
  176. package/dist/ui/shared/view-strings.js +36 -2
  177. package/dist/ui/signin.html +1 -0
  178. package/dist/usage/providers.d.ts +3 -0
  179. package/dist/usage/providers.js +4 -3
  180. package/dist/usage/providers.js.map +1 -1
  181. package/dist/view-api.d.ts +29 -0
  182. package/dist/view-api.js +188 -8
  183. package/dist/view-api.js.map +1 -1
  184. package/dist/web-api.d.ts +42 -0
  185. package/dist/web-api.js +898 -36
  186. package/dist/web-api.js.map +1 -1
  187. package/dist/web-appearance-limits.d.ts +82 -0
  188. package/dist/web-appearance-limits.js +83 -0
  189. package/dist/web-appearance-limits.js.map +1 -0
  190. package/dist/web-appearance-policy.d.ts +66 -0
  191. package/dist/web-appearance-policy.js +94 -0
  192. package/dist/web-appearance-policy.js.map +1 -0
  193. package/dist/web-appearance-tools.d.ts +50 -0
  194. package/dist/web-appearance-tools.js +105 -0
  195. package/dist/web-appearance-tools.js.map +1 -0
  196. package/dist/web-appearance-view.d.ts +99 -0
  197. package/dist/web-appearance-view.js +163 -0
  198. package/dist/web-appearance-view.js.map +1 -0
  199. package/dist/web-appearance.d.ts +79 -0
  200. package/dist/web-appearance.js +298 -0
  201. package/dist/web-appearance.js.map +1 -0
  202. package/dist/web-asset-parts.d.ts +93 -0
  203. package/dist/web-asset-parts.js +133 -0
  204. package/dist/web-asset-parts.js.map +1 -0
  205. package/dist/web-auth.js +17 -1
  206. package/dist/web-auth.js.map +1 -1
  207. package/dist/web-card.d.ts +96 -0
  208. package/dist/web-card.js +232 -0
  209. package/dist/web-card.js.map +1 -0
  210. package/dist/web-chat-history.d.ts +13 -0
  211. package/dist/web-chat-history.js +23 -2
  212. package/dist/web-chat-history.js.map +1 -1
  213. package/dist/web-effect-bundle.d.ts +28 -0
  214. package/dist/web-effect-bundle.js +126 -0
  215. package/dist/web-effect-bundle.js.map +1 -0
  216. package/dist/web-effect-canonical.d.ts +8 -0
  217. package/dist/web-effect-canonical.js +27 -0
  218. package/dist/web-effect-canonical.js.map +1 -0
  219. package/dist/web-effect-library.d.ts +114 -0
  220. package/dist/web-effect-library.js +530 -0
  221. package/dist/web-effect-library.js.map +1 -0
  222. package/dist/web-effect-poster.d.ts +8 -0
  223. package/dist/web-effect-poster.js +52 -0
  224. package/dist/web-effect-poster.js.map +1 -0
  225. package/dist/web-effect-profiles.d.ts +118 -0
  226. package/dist/web-effect-profiles.js +180 -0
  227. package/dist/web-effect-profiles.js.map +1 -0
  228. package/dist/web-effect-service.d.ts +86 -0
  229. package/dist/web-effect-service.js +314 -0
  230. package/dist/web-effect-service.js.map +1 -0
  231. package/dist/web-effect-tools.d.ts +47 -0
  232. package/dist/web-effect-tools.js +129 -0
  233. package/dist/web-effect-tools.js.map +1 -0
  234. package/dist/web-effect-trials.d.ts +86 -0
  235. package/dist/web-effect-trials.js +204 -0
  236. package/dist/web-effect-trials.js.map +1 -0
  237. package/dist/web-effect-upload.d.ts +27 -0
  238. package/dist/web-effect-upload.js +185 -0
  239. package/dist/web-effect-upload.js.map +1 -0
  240. package/dist/web-effect-worker.d.ts +8 -0
  241. package/dist/web-effect-worker.js +170 -0
  242. package/dist/web-effect-worker.js.map +1 -0
  243. package/dist/web-effect.d.ts +103 -0
  244. package/dist/web-effect.js +153 -0
  245. package/dist/web-effect.js.map +1 -0
  246. package/dist/web-identity-color.d.ts +87 -0
  247. package/dist/web-identity-color.js +209 -0
  248. package/dist/web-identity-color.js.map +1 -0
  249. package/dist/web-identity-palette.d.ts +113 -0
  250. package/dist/web-identity-palette.js +84 -0
  251. package/dist/web-identity-palette.js.map +1 -0
  252. package/dist/web-image-meta.d.ts +25 -0
  253. package/dist/web-image-meta.js +200 -0
  254. package/dist/web-image-meta.js.map +1 -0
  255. package/dist/web-mod-agent.d.ts +50 -0
  256. package/dist/web-mod-agent.js +205 -0
  257. package/dist/web-mod-agent.js.map +1 -0
  258. package/dist/web-mod-bundle.d.ts +149 -0
  259. package/dist/web-mod-bundle.js +470 -0
  260. package/dist/web-mod-bundle.js.map +1 -0
  261. package/dist/web-mod-export.d.ts +59 -0
  262. package/dist/web-mod-export.js +79 -0
  263. package/dist/web-mod-export.js.map +1 -0
  264. package/dist/web-mod-store.d.ts +283 -0
  265. package/dist/web-mod-store.js +625 -0
  266. package/dist/web-mod-store.js.map +1 -0
  267. package/dist/web-org.d.ts +3 -3
  268. package/dist/web-org.js +11 -17
  269. package/dist/web-org.js.map +1 -1
  270. package/dist/web-owner-css-store.d.ts +180 -0
  271. package/dist/web-owner-css-store.js +384 -0
  272. package/dist/web-owner-css-store.js.map +1 -0
  273. package/dist/web-owner-css.d.ts +58 -0
  274. package/dist/web-owner-css.js +552 -0
  275. package/dist/web-owner-css.js.map +1 -0
  276. package/dist/web-prefs.d.ts +48 -0
  277. package/dist/web-prefs.js +209 -33
  278. package/dist/web-prefs.js.map +1 -1
  279. package/dist/web-preview.d.ts +9 -1
  280. package/dist/web-preview.js +24 -7
  281. package/dist/web-preview.js.map +1 -1
  282. package/dist/web-settings-patch.d.ts +18 -0
  283. package/dist/web-settings-patch.js +51 -0
  284. package/dist/web-settings-patch.js.map +1 -1
  285. package/dist/web-shell-routes.d.ts +1 -1
  286. package/dist/web-shell-routes.js +1 -1
  287. package/dist/web-shell-routes.js.map +1 -1
  288. package/dist/web-theme-store.d.ts +218 -0
  289. package/dist/web-theme-store.js +516 -0
  290. package/dist/web-theme-store.js.map +1 -0
  291. package/dist/web-theme.d.ts +121 -0
  292. package/dist/web-theme.js +407 -0
  293. package/dist/web-theme.js.map +1 -0
  294. package/dist/web-widget.d.ts +72 -0
  295. package/dist/web-widget.js +245 -0
  296. package/dist/web-widget.js.map +1 -0
  297. package/package.json +1 -1
  298. package/templates/systemd.service.ejs +8 -0
@@ -2,6 +2,7 @@ import { Cron } from "croner";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import { SchedulerDb } from "./db.js";
4
4
  import { validateTimezone } from "../config.js";
5
+ const NO_LOG = { info() { }, warn() { } };
5
6
  export class Scheduler {
6
7
  /** #1426: an attempt waiting for a reset time gives the window this long to settle before it looks again. */
7
8
  static RETRY_RESET_GRACE_MS = 60_000;
@@ -17,6 +18,24 @@ export class Scheduler {
17
18
  static MAX_TIMEOUT_MS = 2_147_000_000;
18
19
  /** Admission failures leave one-shot schedules pending instead of losing their run. */
19
20
  static ONE_SHOT_FAILURE_RETRY_MS = 30_000;
21
+ /** #1995: how often a running fleet looks for a cron occurrence that came due but never ran. */
22
+ static MISSED_TICK_CHECK_MS = 60_000;
23
+ /**
24
+ * #1995: how long (monotonic, measured by this process) an occurrence must have been due and not run before it counts
25
+ * as missed. Croner's own timer re-checks at least every 30 s, so a late-but-real fire, even after a wall-clock jump,
26
+ * wins well within this.
27
+ */
28
+ static MISSED_TICK_GRACE_MS = 3 * 60_000;
29
+ /**
30
+ * #1995: an occurrence this recent (wall) may still be about to fire normally. The check's candidate is the latest
31
+ * occurrence at least this old — a schedule every second or every minute, checked at any phase, still has one.
32
+ */
33
+ static MISSED_TICK_SETTLE_MS = 30_000;
34
+ /**
35
+ * #1995: how many dealt-with occurrence ids each schedule remembers: the most recently handled, by handling order.
36
+ * Not by wall time — one occurrence from a wrongly-set clock must not evict the real history.
37
+ */
38
+ static HANDLED_MAX = 1_500;
20
39
  db;
21
40
  jobs = new Map();
22
41
  oneShotTimers = new Map();
@@ -34,18 +53,50 @@ export class Scheduler {
34
53
  /** IDs of schedules whose onTrigger is currently in flight; guards against
35
54
  * a manual trigger and a cron firing (or two cron fires) overlapping. */
36
55
  executing = new Set();
37
- constructor(dbPath, onTrigger, config, isValidInstance, onRetryDropped = () => { }) {
56
+ log;
57
+ /**
58
+ * #1995: the exact occurrences (run id → instant) this process has dealt with, per schedule — started a run of, or
59
+ * skipped on purpose because the previous run was still in flight. Neither the tick nor the missed-tick check runs
60
+ * one again. Exact ids, not a high-water mark: after the wall clock was wrong and corrected, an earlier occurrence
61
+ * that never ran is still distinct and runs. Bounded: the HANDLED_MAX most recently handled.
62
+ */
63
+ handled = new Map();
64
+ /**
65
+ * #1995: when each cron schedule was armed in this process, by both clocks. Kept across reload(), which only
66
+ * re-creates the timers: an occurrence lost to a reload at its due instant is still this registration's to run.
67
+ * Reset when the schedule is created, edited or re-enabled; an occurrence before that is not caught up.
68
+ */
69
+ armedSince = new Map();
70
+ /**
71
+ * #1995: since when (monotonic ms) the check has seen this schedule with a due occurrence not run. Kept while any
72
+ * stays unrun — a newer occurrence does not restart it, so a schedule every minute still reaches the grace — and
73
+ * cleared once the latest occurrence is dealt with.
74
+ */
75
+ missSeen = new Map();
76
+ missTimer = null;
77
+ /** #1995: when this process's scheduler started (both clocks): the earliest a repaired registration is armed from. */
78
+ startedAt = null;
79
+ /**
80
+ * #1995: schedules this process has seen disabled (in a reload or the check) and not yet seen enabled again. The first
81
+ * time one is seen enabled — whichever path sees it, with or without a reload — it is armed afresh from that moment,
82
+ * so nothing from while it was disabled is ever caught up.
83
+ */
84
+ seenDisabled = new Set();
85
+ constructor(dbPath, onTrigger, config, isValidInstance, onRetryDropped = () => { }, log = NO_LOG) {
38
86
  this.db = new SchedulerDb(dbPath);
39
87
  this.onTrigger = onTrigger;
40
88
  this.config = config;
41
89
  this.isValidInstance = isValidInstance;
42
90
  this.onRetryDropped = onRetryDropped;
91
+ this.log = log;
43
92
  }
44
93
  init() {
94
+ this.startedAt = { wall: Date.now(), mono: performance.now() };
45
95
  this.db.pruneOldRuns();
46
96
  // Catch-up first: an occurrence missed while the fleet was down supersedes the retry of an older one.
47
97
  this.runCatchUp();
48
- this.registerAllJobs();
98
+ this.registerAllJobs("init");
99
+ this.armMissedTickCheck();
49
100
  }
50
101
  /**
51
102
  * On startup, fire any schedule whose most recent expected run was missed
@@ -96,10 +147,14 @@ export class Scheduler {
96
147
  }
97
148
  reload() {
98
149
  this.stopAllJobs();
99
- this.registerAllJobs();
150
+ this.registerAllJobs("reload");
100
151
  }
101
152
  shutdown() {
102
153
  this.stopped = true;
154
+ if (this.missTimer) {
155
+ clearTimeout(this.missTimer);
156
+ this.missTimer = null;
157
+ }
103
158
  this.stopAllJobs();
104
159
  this.db.close();
105
160
  }
@@ -114,7 +169,7 @@ export class Scheduler {
114
169
  throw new Error(`Instance "${params.target}" not found in fleet config.`);
115
170
  }
116
171
  const schedule = this.db.create(params, this.config.max_schedules);
117
- this.registerJob(schedule);
172
+ this.registerJob(schedule, "create");
118
173
  return schedule;
119
174
  }
120
175
  list(target) {
@@ -144,13 +199,19 @@ export class Scheduler {
144
199
  }
145
200
  const updated = this.db.update(id, params);
146
201
  this.stopJob(id);
202
+ // #1995: an edited or re-enabled schedule starts from now; nothing before the change is caught up.
203
+ this.forget(id);
147
204
  if (updated.enabled) {
148
- this.registerJob(updated);
205
+ this.registerJob(updated, "update");
206
+ }
207
+ else {
208
+ this.markDisabled(id);
149
209
  }
150
210
  return updated;
151
211
  }
152
212
  delete(id) {
153
213
  this.stopJob(id);
214
+ this.forget(id);
154
215
  const retryTimer = this.retryTimers.get(id);
155
216
  if (retryTimer) {
156
217
  clearTimeout(retryTimer);
@@ -175,10 +236,15 @@ export class Scheduler {
175
236
  if (!retry) {
176
237
  // …but the occurrence a pending retry already owns is not run again unlabelled: a one-shot timer after a restart,
177
238
  // or croner re-firing it after the wall clock was set back across it (#1433 review). The retry runs it.
178
- if (this.db.getRetry(schedule.id)?.run_id === runId)
239
+ if (this.db.getRetry(schedule.id)?.run_id === runId) {
240
+ this.log.info({ scheduleId: schedule.id, runId, reason: "owned_by_retry" }, "Schedule run not started");
179
241
  return;
242
+ }
180
243
  this.supersedeRetry(schedule, runId);
181
244
  }
245
+ // #1995: an occurrence instant (not a manual trigger's UUID) runs at most once per process, whoever starts it.
246
+ if (!retry)
247
+ this.markHandled(schedule.id, runId);
182
248
  this.executing.add(schedule.id);
183
249
  if (retry)
184
250
  this.runningRetry.add(schedule.id);
@@ -238,11 +304,16 @@ export class Scheduler {
238
304
  result = this.onTrigger(schedule, runId, retry);
239
305
  }
240
306
  catch (err) {
307
+ this.log.warn({ scheduleId: schedule.id, runId, err: err?.message ?? String(err) }, "Schedule run failed");
241
308
  finish(!schedule.silent);
242
309
  throw err;
243
310
  }
244
311
  if (result && typeof result.then === "function") {
245
- void result.then(() => finish(), () => finish(!schedule.silent));
312
+ // #1995: a run that rejects used to end here without a trace — no run row and no log line.
313
+ void result.then(() => finish(), (err) => {
314
+ this.log.warn({ scheduleId: schedule.id, runId, err: err?.message ?? String(err) }, "Schedule run failed");
315
+ finish(!schedule.silent);
316
+ });
246
317
  }
247
318
  else {
248
319
  finish();
@@ -252,6 +323,7 @@ export class Scheduler {
252
323
  const affected = this.db.list().filter((s) => s.target === instanceName || s.reply_thread_id === threadId);
253
324
  for (const s of affected) {
254
325
  this.stopJob(s.id);
326
+ this.forget(s.id);
255
327
  }
256
328
  return this.db.deleteByInstanceOrThread(instanceName, threadId);
257
329
  }
@@ -408,44 +480,211 @@ export class Scheduler {
408
480
  }
409
481
  this.runWithLock(schedule, retry.run_id, retry);
410
482
  }
411
- registerAllJobs() {
483
+ registerAllJobs(source) {
412
484
  for (const schedule of this.db.list()) {
413
485
  if (schedule.enabled) {
414
- this.registerJob(schedule);
486
+ this.registerJob(schedule, source);
487
+ }
488
+ else {
489
+ // #1995: disabled outside this process (the CLI writes the database, then reloads): its tick history no longer
490
+ // applies, so re-enabling it later never catches up an occurrence from while it was disabled.
491
+ this.markDisabled(schedule.id);
415
492
  }
416
493
  }
417
494
  // #1426: pending retries survive a restart (and a reload): re-armed from what was persisted.
418
495
  for (const retry of this.db.listRetries())
419
496
  this.armRetry(retry);
420
497
  }
421
- registerJob(schedule) {
498
+ registerJob(schedule, source) {
422
499
  if (schedule.at) {
423
500
  // (#1426: if its one occurrence was deferred, the pending retry owns it — runWithLock skips this timer's run.)
424
501
  this.registerOneShot(schedule);
502
+ this.log.info({ scheduleId: schedule.id, source, at: schedule.at }, "One-shot schedule registered");
425
503
  return;
426
504
  }
427
505
  if (!schedule.cron)
428
506
  return;
507
+ // Seen disabled since it was last armed: it is re-enabled now, and armed from now.
508
+ if (this.seenDisabled.delete(schedule.id))
509
+ this.armedSince.delete(schedule.id);
510
+ if (!this.armedSince.has(schedule.id))
511
+ this.armedSince.set(schedule.id, { wall: Date.now(), mono: performance.now() });
429
512
  const job = new Cron(schedule.cron, { timezone: schedule.timezone }, currentJob => {
430
- const current = this.db.get(schedule.id);
431
- if (!current || !current.enabled)
432
- return;
433
513
  // currentRun() is callback wall-clock time, not the cron occurrence. A
434
514
  // delayed callback must still use the scheduled instant so restart
435
515
  // catch-up derives the same durable outbox key.
436
516
  const runId = this.cronRunAtOrBefore(currentJob, new Date())?.toISOString() ?? null;
517
+ // #1995: one line per tick and one per tick that does not run, with the reason: "croner never fired" and "AgEnD
518
+ // received the tick and dropped it" must be told apart from the log alone.
519
+ this.log.info({ scheduleId: schedule.id, runId }, "Cron tick");
520
+ const dropped = (reason) => this.log.info({ scheduleId: schedule.id, runId, reason }, "Cron tick not run");
521
+ const current = this.db.get(schedule.id);
522
+ if (!current)
523
+ return dropped("schedule_missing");
524
+ if (!current.enabled)
525
+ return dropped("disabled");
526
+ if (!runId)
527
+ return dropped("no_occurrence");
528
+ if (this.wasHandled(current.id, runId))
529
+ return dropped("already_ran");
437
530
  // Skip if a previous fire (or manual trigger) is still in flight —
438
531
  // avoids overlapping runs of the same schedule. A RETRY in flight is not a reason to lose this occurrence
439
532
  // (#1426): it is held and runs as soon as the retry settles (the retry stops at this occurrence, its deadline).
440
533
  if (this.executing.has(current.id)) {
441
- if (runId && this.runningRetry.has(current.id))
534
+ if (this.runningRetry.has(current.id)) {
442
535
  this.heldBehindRetry.set(current.id, runId);
443
- return;
536
+ return dropped("held_behind_retry");
537
+ }
538
+ // Skipped on purpose, as before: overlapping runs are not started, and the check must not replay it later.
539
+ this.markHandled(current.id, runId);
540
+ return dropped("still_running");
444
541
  }
445
- if (runId)
446
- this.runWithLock(current, runId);
542
+ this.runWithLock(current, runId);
447
543
  });
448
544
  this.jobs.set(schedule.id, job);
545
+ // #1995: "registered, and when it will next fire" — so a missing tick can be told from a missing registration.
546
+ let next = null;
547
+ try {
548
+ next = job.nextRun()?.toISOString() ?? null;
549
+ }
550
+ catch { /* the log line still says it was registered */ }
551
+ this.log.info({ scheduleId: schedule.id, source, cron: schedule.cron, timezone: schedule.timezone, next }, "Cron schedule registered");
552
+ }
553
+ /** #1995: seen disabled: its tick history no longer applies, and its next enable is a new arming boundary. */
554
+ markDisabled(id) {
555
+ this.forget(id);
556
+ this.seenDisabled.add(id);
557
+ }
558
+ /** #1995: the schedule was edited, re-enabled or deleted: its in-process tick history no longer applies. */
559
+ forget(id) {
560
+ this.seenDisabled.delete(id);
561
+ this.handled.delete(id);
562
+ this.armedSince.delete(id);
563
+ this.missSeen.delete(id);
564
+ }
565
+ wasHandled(id, runId) {
566
+ return this.handled.get(id)?.has(runId) === true;
567
+ }
568
+ /** Record an occurrence as dealt with (a manual trigger's UUID is not one); keep the HANDLED_MAX most recent. */
569
+ markHandled(id, runId) {
570
+ if (!Number.isFinite(Date.parse(runId)))
571
+ return;
572
+ let ids = this.handled.get(id);
573
+ if (!ids) {
574
+ ids = new Set();
575
+ this.handled.set(id, ids);
576
+ }
577
+ ids.delete(runId);
578
+ ids.add(runId); // most recently handled last
579
+ while (ids.size > Scheduler.HANDLED_MAX)
580
+ ids.delete(ids.values().next().value);
581
+ }
582
+ armMissedTickCheck() {
583
+ if (this.stopped)
584
+ return;
585
+ this.missTimer = setTimeout(() => {
586
+ this.missTimer = null;
587
+ try {
588
+ this.checkMissedTicks();
589
+ }
590
+ catch (err) {
591
+ this.log.warn({ err: err?.message ?? String(err) }, "Missed-tick check failed");
592
+ }
593
+ this.armMissedTickCheck();
594
+ }, Scheduler.MISSED_TICK_CHECK_MS);
595
+ }
596
+ /**
597
+ * #1995: a cron occurrence that came due while this process was running, and was never run, gets the same single
598
+ * catch-up the startup does. It counts as missed only once it has been due, and not run, for MISSED_TICK_GRACE_MS of
599
+ * this process's own (monotonic) time — so a late but real tick still runs it, once: the run id is the occurrence
600
+ * instant, and runWithLock starts each occurrence at most once.
601
+ */
602
+ checkMissedTicks(nowMono = performance.now()) {
603
+ if (this.stopped)
604
+ return;
605
+ const now = Date.now();
606
+ for (const schedule of this.db.list()) {
607
+ if (!schedule.enabled || !schedule.cron || schedule.at) {
608
+ if (!schedule.enabled)
609
+ this.markDisabled(schedule.id);
610
+ else
611
+ this.missSeen.delete(schedule.id);
612
+ continue;
613
+ }
614
+ if (this.seenDisabled.delete(schedule.id)) {
615
+ // Re-enabled outside this process and no reload has said so: armed from now, as a reload would have done.
616
+ this.forget(schedule.id);
617
+ this.armedSince.set(schedule.id, { wall: now, mono: nowMono });
618
+ }
619
+ if (!this.jobs.has(schedule.id)) {
620
+ // #1995: enabled in the database but no job in this process (a registration that never happened, or was lost).
621
+ // Register it now, keeping every bit of state it already has: the run ids it handled and when it was armed.
622
+ // Only one this process never armed gets a baseline: this scheduler's real start (both clocks), moved to its
623
+ // creation when that is later — never earlier than either, and never a monotonic instant in the future.
624
+ if (!this.armedSince.has(schedule.id)) {
625
+ const createdMs = Scheduler.createdMs(schedule);
626
+ const start = this.startedAt ?? { wall: now, mono: nowMono };
627
+ const shift = Number.isFinite(createdMs) && createdMs > start.wall ? createdMs - start.wall : 0;
628
+ this.armedSince.set(schedule.id, { wall: start.wall + shift, mono: Math.min(nowMono, start.mono + shift) });
629
+ }
630
+ this.log.warn({ scheduleId: schedule.id, cron: schedule.cron, armedFrom: new Date(this.armedSince.get(schedule.id).wall).toISOString() }, "Cron schedule was not registered — registering");
631
+ try {
632
+ this.registerJob(schedule, "repair");
633
+ }
634
+ catch (err) {
635
+ this.log.warn({ scheduleId: schedule.id, err: err?.message ?? String(err) }, "Cron schedule could not be registered");
636
+ continue;
637
+ }
638
+ }
639
+ const armed = this.armedSince.get(schedule.id);
640
+ if (armed === undefined)
641
+ continue;
642
+ let latest;
643
+ // The candidate: the latest occurrence that has settled (not the very latest, which croner may be running now).
644
+ try {
645
+ latest = this.cronRunAtOrBefore(new Cron(schedule.cron, { timezone: schedule.timezone }), new Date(now - Scheduler.MISSED_TICK_SETTLE_MS));
646
+ }
647
+ catch {
648
+ continue;
649
+ }
650
+ if (!latest)
651
+ continue;
652
+ const latestMs = latest.getTime(), runId = latest.toISOString();
653
+ // Registration, expressed in today's wall clock: if the clock was set back since, the instant it was armed
654
+ // moves back with it (wall now minus the monotonic time since), so an occurrence that comes due after the
655
+ // registration still counts. One from before it (startup catch-up's, or while disabled) is not this check's.
656
+ const armedAt = Math.min(armed.wall, now - (nowMono - armed.mono));
657
+ // The row's own creation, as written, bounds it too. Whether it was written in today's wall clock or in one from
658
+ // before the clock was set back cannot always be told: when it reads as already past, it is taken at its word (a
659
+ // catch-up may then be missed, never invented). One that reads as still to come was written before the clock went
660
+ // back; the baseline above, carried by the monotonic clock, decides alone.
661
+ const createdMs = Scheduler.createdMs(schedule);
662
+ const beforeCreated = Number.isFinite(createdMs) && createdMs <= now && latestMs <= createdMs;
663
+ // Every run this process starts goes through runWithLock, which records its exact run id.
664
+ if (this.wasHandled(schedule.id, runId) || latestMs <= armedAt || beforeCreated) {
665
+ this.missSeen.delete(schedule.id);
666
+ continue;
667
+ }
668
+ // A run still in flight: never start an overlapping one. The occurrence stays pending and runs once it settles.
669
+ if (this.executing.has(schedule.id))
670
+ continue;
671
+ const since = this.missSeen.get(schedule.id);
672
+ if (since === undefined) {
673
+ this.missSeen.set(schedule.id, nowMono);
674
+ continue;
675
+ }
676
+ if (nowMono - since < Scheduler.MISSED_TICK_GRACE_MS)
677
+ continue;
678
+ // One catch-up per grace: the latest settled occurrence, under its own run id. Never a replay of every one missed.
679
+ this.missSeen.delete(schedule.id);
680
+ this.log.warn({ scheduleId: schedule.id, runId, lastTriggeredAt: schedule.last_triggered_at }, "Missed cron tick — catching up");
681
+ this.runWithLock(schedule, runId);
682
+ }
683
+ }
684
+ /** When the row was created, as its wall clock wrote it (an older row may lack the zone suffix: UTC). */
685
+ static createdMs(schedule) {
686
+ const at = schedule.created_at;
687
+ return Date.parse(at.endsWith("Z") || /[+-]\d{2}:\d{2}$/.test(at) ? at : at + "Z");
449
688
  }
450
689
  /** Return the latest actual cron occurrence at or before the observation. */
451
690
  cronRunAtOrBefore(cron, observedAt) {
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/scheduler/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/scheduler/scheduler.ts"],"names":[],"mappings":"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"}
@@ -123,7 +123,8 @@ export declare function launchdPlistPath(label: string): string;
123
123
  export declare function installService(vars: ServiceVars): string;
124
124
  export type SystemUnitRefresh = {
125
125
  kind: "updated";
126
- execStart: string;
126
+ execStart?: string;
127
+ oomPolicyAdded?: boolean;
127
128
  } | {
128
129
  kind: "current";
129
130
  } | {
@@ -448,11 +448,23 @@ export function refreshSystemUnitExecStart(unitPath, vars, pkgDir) {
448
448
  if (!starts)
449
449
  return { kind: "foreign", reason: "its ExecStart does not start this package's fleet" };
450
450
  const wanted = /^ExecStart=.*$/m.exec(renderSystemdUnit(vars))[0];
451
- if (at[0].line.trim() === wanted)
451
+ const execChanged = at[0].line.trim() !== wanted;
452
+ if (execChanged)
453
+ lines[at[0].index] = wanted;
454
+ // #2015: the same refresh gives the unit OOMPolicy=continue when it sets no OOMPolicy at all (the user unit gets it
455
+ // by being rewritten). One it does set, whatever the value, is the operator's.
456
+ const service = sectionBounds(lines, "Service");
457
+ const hasOomPolicy = lines.slice(service.start + 1, service.end).some(l => /^\s*OOMPolicy\s*=/.test(l));
458
+ if (!hasOomPolicy) {
459
+ let insert = service.end;
460
+ while (insert > service.start + 1 && lines[insert - 1].trim() === "")
461
+ insert--;
462
+ lines.splice(insert, 0, "OOMPolicy=continue");
463
+ }
464
+ if (!execChanged && hasOomPolicy)
452
465
  return { kind: "current" };
453
- lines[at[0].index] = wanted;
454
466
  replaceUnitFile(unitPath, lines.join("\n"));
455
- return { kind: "updated", execStart: wanted.slice("ExecStart=".length) };
467
+ return { kind: "updated", ...(execChanged ? { execStart: wanted.slice("ExecStart=".length) } : {}), ...(!hasOomPolicy ? { oomPolicyAdded: true } : {}) };
456
468
  }
457
469
  /**
458
470
  * #908: bring an installed AgEnD unit up to `KillMode=mixed` before it is
@@ -611,6 +623,9 @@ const UNIT_HARDENING = [
611
623
  // Classified from every assignment, drop-ins included: see unitCoredumpFilterState.
612
624
  { section: "Service", key: "CoredumpFilter", value: "0", equivalent: v => /^(?:0x)?0+$/i.test(v), allAssignments: true },
613
625
  { section: "Service", key: "LimitCORE", value: "0" },
626
+ // #2015: an OOM-killed process stops only itself. `stop` (systemd's default) is never something AgEnD wrote, so a
627
+ // unit that sets it is the operator's choice and is left alone.
628
+ { section: "Service", key: "OOMPolicy", value: "continue" },
614
629
  ];
615
630
  function sectionBounds(lines, name) {
616
631
  const start = lines.findIndex(l => l.trim() === `[${name}]`);