@aryasaatvik/motel 0.3.0 → 0.3.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aryasaatvik/motel",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "A local OpenTelemetry ingest + TUI viewer for development, backed by SQLite.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -323,6 +323,22 @@ describe("supervisor-aware top-level lifecycle", () => {
323
323
  expect(events).toEqual(["service:start", "service:stop", "service:restart"])
324
324
  })
325
325
 
326
+ test("stops a detached daemon when an equivalent LaunchAgent definition is not loaded", async () => {
327
+ const events: string[] = []
328
+ const daemon = {
329
+ applyEnv: Effect.void,
330
+ getStatus: Effect.succeed(daemonStatus()),
331
+ ensure: Effect.sync(() => { events.push("daemon:start"); return daemonStatus() }),
332
+ stop: Effect.sync(() => { events.push("daemon:stop"); return daemonStatus({ running: false, pid: null, registryPid: null }) }),
333
+ } satisfies DaemonManager
334
+ const lifecycle = createMotelLifecycle({
335
+ service: fakeService({ installed: true, manager: "not-loaded" }, events),
336
+ daemon,
337
+ })
338
+ await Effect.runPromise(lifecycle.stop)
339
+ expect(events).toEqual(["daemon:stop"])
340
+ })
341
+
326
342
  test("keeps detached-manager lifecycle when no service definition is installed", async () => {
327
343
  const events: string[] = []
328
344
  const daemon = {
@@ -447,7 +447,9 @@ export const createMotelLifecycle = (options: { readonly service?: LaunchAgentMa
447
447
  ? service.status.pipe(Effect.flatMap((status): Effect.Effect<DaemonStatus | LaunchAgentStatus, unknown, never> => route(status, service.start, daemon.ensure))) as Effect.Effect<DaemonStatus | LaunchAgentStatus, unknown, never>
448
448
  : daemon.ensure,
449
449
  stop: serviceEnabled
450
- ? service.status.pipe(Effect.flatMap((status): Effect.Effect<DaemonStatus | LaunchAgentStatus, unknown, never> => route(status, service.stop, daemon.stop))) as Effect.Effect<DaemonStatus | LaunchAgentStatus, unknown, never>
450
+ ? service.status.pipe(Effect.flatMap((status): Effect.Effect<DaemonStatus | LaunchAgentStatus, unknown, never> =>
451
+ route(status, status.manager === "loaded" ? service.stop : daemon.stop, daemon.stop),
452
+ )) as Effect.Effect<DaemonStatus | LaunchAgentStatus, unknown, never>
451
453
  : daemon.stop,
452
454
  restart: serviceEnabled
453
455
  ? service.status.pipe(Effect.flatMap((status): Effect.Effect<DaemonStatus | LaunchAgentStatus, unknown, never> => route(status, service.restart, Effect.gen(function*() {