@teeras/afterhours 0.3.1 → 0.5.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 (57) hide show
  1. package/README.md +15 -0
  2. package/dist/apprun.d.ts +8 -0
  3. package/dist/apprun.d.ts.map +1 -0
  4. package/dist/apprun.js +67 -0
  5. package/dist/apprun.js.map +1 -0
  6. package/dist/cli.js +42 -3
  7. package/dist/cli.js.map +1 -1
  8. package/dist/cloud.d.ts +47 -0
  9. package/dist/cloud.d.ts.map +1 -1
  10. package/dist/cloud.js +165 -0
  11. package/dist/cloud.js.map +1 -1
  12. package/dist/collect.d.ts.map +1 -1
  13. package/dist/collect.js +4 -1
  14. package/dist/collect.js.map +1 -1
  15. package/dist/detect.js +2 -2
  16. package/dist/detect.js.map +1 -1
  17. package/dist/hooks.d.ts +13 -0
  18. package/dist/hooks.d.ts.map +1 -1
  19. package/dist/hooks.js +41 -21
  20. package/dist/hooks.js.map +1 -1
  21. package/dist/index.d.ts +3 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/macos/spool.d.ts +19 -0
  26. package/dist/macos/spool.d.ts.map +1 -0
  27. package/dist/macos/spool.js +117 -0
  28. package/dist/macos/spool.js.map +1 -0
  29. package/dist/macos/status.d.ts +32 -0
  30. package/dist/macos/status.d.ts.map +1 -0
  31. package/dist/macos/status.js +55 -0
  32. package/dist/macos/status.js.map +1 -0
  33. package/dist/privacy.d.ts.map +1 -1
  34. package/dist/privacy.js +2 -0
  35. package/dist/privacy.js.map +1 -1
  36. package/dist/runEventTypes.d.ts +2 -0
  37. package/dist/runEventTypes.d.ts.map +1 -0
  38. package/dist/runEventTypes.js +2 -0
  39. package/dist/runEventTypes.js.map +1 -0
  40. package/dist/runEvents.d.ts +59 -0
  41. package/dist/runEvents.d.ts.map +1 -0
  42. package/dist/runEvents.js +148 -0
  43. package/dist/runEvents.js.map +1 -0
  44. package/dist/sources/claude.js +2 -2
  45. package/dist/sources/claude.js.map +1 -1
  46. package/dist/sources/macosApps.d.ts +7 -0
  47. package/dist/sources/macosApps.d.ts.map +1 -0
  48. package/dist/sources/macosApps.js +122 -0
  49. package/dist/sources/macosApps.js.map +1 -0
  50. package/dist/types.d.ts +5 -1
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/version.d.ts +3 -0
  53. package/dist/version.d.ts.map +1 -0
  54. package/dist/version.js +3 -0
  55. package/dist/version.js.map +1 -0
  56. package/llms-install.md +8 -0
  57. package/package.json +1 -1
@@ -0,0 +1,148 @@
1
+ import { chmodSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { opaqueEpisodeId } from "./activity.js";
5
+ import { postRunEnded, postRunStarted, readCredentials } from "./cloud.js";
6
+ import { parseHookInput, readContentFreeHookEvents } from "./hooks.js";
7
+ import { ensureEpisodeSecret } from "./secret.js";
8
+ const STALE_MS = 12 * 3_600_000;
9
+ export function openTurnsPath(home = homedir()) {
10
+ return join(home, ".teeras", "afterhours", "open-turns.json");
11
+ }
12
+ export function readOpenTurns(home = homedir(), nowMs = Date.now()) {
13
+ try {
14
+ const raw = JSON.parse(readFileSync(openTurnsPath(home), "utf8"));
15
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
16
+ return {};
17
+ const out = {};
18
+ const cutoff = nowMs - STALE_MS;
19
+ for (const [k, v] of Object.entries(raw)) {
20
+ if (typeof v === "number" && Number.isFinite(v) && v >= cutoff)
21
+ out[k] = v;
22
+ }
23
+ return out;
24
+ }
25
+ catch {
26
+ return {};
27
+ }
28
+ }
29
+ export function writeOpenTurns(turns, home = homedir(), nowMs = Date.now()) {
30
+ const path = openTurnsPath(home);
31
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
32
+ chmodSync(dirname(path), 0o700);
33
+ const cutoff = nowMs - STALE_MS;
34
+ const kept = Object.fromEntries(Object.entries(turns).filter(([, v]) => v >= cutoff));
35
+ writeFileSync(path, JSON.stringify(kept), { mode: 0o600 });
36
+ chmodSync(path, 0o600);
37
+ }
38
+ function localHour(ms, tz) {
39
+ const hour = new Intl.DateTimeFormat("en-US", { hour: "numeric", hour12: false, timeZone: tz })
40
+ .formatToParts(new Date(ms))
41
+ .find((p) => p.type === "hour")?.value;
42
+ return Number(hour ?? 0) % 24;
43
+ }
44
+ /**
45
+ * Derives the real-time run-forecast event (if any) from one parsed hook
46
+ * event, against the caller's on-disk open-turn state.
47
+ *
48
+ * A run is one agent turn: `UserPromptSubmit` opens it, `Stop` closes it.
49
+ * Claude Code fires `Stop` whenever the agent yields, so if a
50
+ * `UserPromptSubmit` arrives while a turn is still open, that open turn was
51
+ * interrupted (e.g. Esc) and no `Stop` for it will ever come. The new prompt
52
+ * **replaces** the open turn: `next[key]` is overwritten with the new start
53
+ * time and a `started` event is emitted for the new turn under a new
54
+ * `runKey`. No `ended` event is emitted for the stale turn — the server
55
+ * expires it after 6 h and excludes it from accuracy, and emitting one here
56
+ * would fold a bogus duration into the cohort.
57
+ */
58
+ export function deriveRunEvent(event, sourceId, secret, turns, nowMs, tz = Intl.DateTimeFormat().resolvedOptions().timeZone) {
59
+ const episode = opaqueEpisodeId(secret, sourceId, event.sessionId);
60
+ const key = `${sourceId}:${episode}`;
61
+ const next = { ...turns };
62
+ if (event.eventName === "UserPromptSubmit") {
63
+ next[key] = nowMs;
64
+ return {
65
+ event: {
66
+ kind: "started",
67
+ sourceId,
68
+ runKey: `${episode}:${Math.floor(nowMs / 1000)}`,
69
+ modelFamily: event.model?.toLowerCase() ?? null,
70
+ localStartHour: localHour(nowMs, tz),
71
+ tz,
72
+ startedAtMs: nowMs,
73
+ },
74
+ turns: next,
75
+ };
76
+ }
77
+ if (event.eventName === "Stop" || event.eventName === "StopFailure" || event.eventName === "SessionEnd") {
78
+ const startedAt = next[key];
79
+ if (startedAt === undefined)
80
+ return { event: null, turns: next };
81
+ delete next[key];
82
+ return {
83
+ event: {
84
+ kind: "ended",
85
+ sourceId,
86
+ runKey: `${episode}:${Math.floor(startedAt / 1000)}`,
87
+ endedAt: new Date(nowMs).toISOString(),
88
+ },
89
+ turns: next,
90
+ };
91
+ }
92
+ return { event: null, turns: next };
93
+ }
94
+ /**
95
+ * 10-minute buckets since local midnight that contain a human hook event
96
+ * (a `human_prompt` signal). 0 when the journal is missing or empty; null
97
+ * only if the timezone is invalid.
98
+ */
99
+ export function humanActiveMinutesToday(home, nowMs, tz) {
100
+ try {
101
+ const parts = new Intl.DateTimeFormat("en-US", { timeZone: tz, hour: "numeric", minute: "numeric", hour12: false })
102
+ .formatToParts(new Date(nowMs));
103
+ const h = Number(parts.find((p) => p.type === "hour")?.value ?? 0) % 24;
104
+ const m = Number(parts.find((p) => p.type === "minute")?.value ?? 0);
105
+ const midnight = nowMs - (h * 60 + m) * 60_000;
106
+ const events = readContentFreeHookEvents(home, midnight, nowMs);
107
+ const buckets = new Set();
108
+ for (const e of events) {
109
+ if (e.signal === "human_prompt")
110
+ buckets.add(Math.floor((e.at - midnight) / 600_000));
111
+ }
112
+ return buckets.size * 10;
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }
118
+ /**
119
+ * Full hook→cloud path for `trs hook`: parse, gate on a connected account,
120
+ * derive the run event against on-disk open-turn state, persist that state
121
+ * before ever touching the network, then fire the matching best-effort POST.
122
+ * Never throws — a broken hook body must never interrupt the agent.
123
+ */
124
+ export async function emitRunEventFromHook(raw, sourceId, home = homedir(), fetcher = fetch, nowMs = Date.now(), tz = Intl.DateTimeFormat().resolvedOptions().timeZone) {
125
+ try {
126
+ const parsed = parseHookInput(raw);
127
+ if (!parsed)
128
+ return "none";
129
+ const credentials = readCredentials(home);
130
+ if (!credentials)
131
+ return "none";
132
+ const secret = ensureEpisodeSecret(home);
133
+ const { event, turns } = deriveRunEvent(parsed, sourceId, secret, readOpenTurns(home, nowMs), nowMs, tz);
134
+ writeOpenTurns(turns, home, nowMs);
135
+ if (!event)
136
+ return "none";
137
+ if (event.kind === "started") {
138
+ await postRunStarted(event, credentials, humanActiveMinutesToday(home, nowMs, tz), fetcher);
139
+ return "started";
140
+ }
141
+ await postRunEnded(event, credentials, fetcher);
142
+ return "ended";
143
+ }
144
+ catch {
145
+ return "none";
146
+ }
147
+ }
148
+ //# sourceMappingURL=runEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runEvents.js","sourceRoot":"","sources":["../src/runEvents.ts"],"names":[],"mappings":"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"}
@@ -22,11 +22,11 @@ function claudeRoots(home) {
22
22
  }
23
23
  export const claudeSource = {
24
24
  id: "claude-code",
25
- name: "Claude Code",
25
+ name: "Claude Code app + CLI",
26
26
  version: "claude-code-v3",
27
27
  collect({ home, sinceMs, untilMs, episodeKeySecret }) {
28
28
  const roots = claudeRoots(home);
29
- const source = emptySource("claude-code", "Claude Code", roots.some(isDirectory));
29
+ const source = emptySource("claude-code", "Claude Code app + CLI", roots.some(isDirectory));
30
30
  if (!source.configured)
31
31
  return source;
32
32
  const events = [];
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/sources/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/sources/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { SourceAdapter } from "../types.js";
2
+ /**
3
+ * Sessions in native AI apps observed by Teeras.app. Boundary math only:
4
+ * foreground time is a human-attention ESTIMATE; nothing here is delegation.
5
+ */
6
+ export declare const macosAppsSource: SourceAdapter;
7
+ //# sourceMappingURL=macosApps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macosApps.d.ts","sourceRoot":"","sources":["../../src/sources/macosApps.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgC,aAAa,EAAkB,MAAM,aAAa,CAAC;AAI/F;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,aA2B7B,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { readSpool, spoolDir } from "../macos/spool.js";
2
+ import { isDirectory } from "../files.js";
3
+ const NO_TOKENS = { input: null, cached: null, output: null, reasoning: null };
4
+ /**
5
+ * Sessions in native AI apps observed by Teeras.app. Boundary math only:
6
+ * foreground time is a human-attention ESTIMATE; nothing here is delegation.
7
+ */
8
+ export const macosAppsSource = {
9
+ id: "macos-apps",
10
+ name: "Mac AI apps",
11
+ version: "1.0.0",
12
+ collect(input) {
13
+ const dir = spoolDir(input.home);
14
+ const configured = isDirectory(dir);
15
+ const base = {
16
+ id: this.id,
17
+ name: this.name,
18
+ configured,
19
+ sessions: 0,
20
+ agentTurns: 0,
21
+ humanCheckIns: 0,
22
+ tokens: { ...NO_TOKENS },
23
+ models: [],
24
+ buckets: [],
25
+ episodes: [],
26
+ };
27
+ if (!configured)
28
+ return { ...base, fidelity: "none" };
29
+ const inWindow = readSpool(dir).records.filter((record) => {
30
+ const endedMs = Date.parse(record.ended_at);
31
+ return endedMs >= input.sinceMs && Date.parse(record.started_at) <= input.untilMs;
32
+ });
33
+ return { ...base, fidelity: "sessions", sessions: countSessions(inWindow), buckets: toBuckets(inWindow) };
34
+ },
35
+ };
36
+ /**
37
+ * The Swift-side collector checkpoints an open session every runner cycle
38
+ * (~5 minutes, or immediately on wake) — closing and re-opening it so a
39
+ * crash loses at most one cycle's worth of foreground time. That turns one
40
+ * continuous sitting into several spool records for the same `app_id`,
41
+ * chunk boundaries touching (or nearly so). Buckets are additive and don't
42
+ * need adjusting, but a raw record count would inflate `sessions` (a
43
+ * one-hour sitting reading as "12 sessions" at a 5-minute cadence), so
44
+ * merge same-app records whose gap between one record's `ended_at` and the
45
+ * next's `started_at` is at most `CHUNK_MERGE_WINDOW_MS` before counting.
46
+ */
47
+ const CHUNK_MERGE_WINDOW_MS = 2_000;
48
+ function countSessions(records) {
49
+ const byApp = new Map();
50
+ for (const record of records) {
51
+ const list = byApp.get(record.app_id);
52
+ if (list) {
53
+ list.push(record);
54
+ }
55
+ else {
56
+ byApp.set(record.app_id, [record]);
57
+ }
58
+ }
59
+ let sessions = 0;
60
+ for (const list of byApp.values()) {
61
+ const sorted = [...list].sort((a, b) => Date.parse(a.started_at) - Date.parse(b.started_at));
62
+ let previousEndedMs = null;
63
+ for (const record of sorted) {
64
+ const startedMs = Date.parse(record.started_at);
65
+ const isContinuation = previousEndedMs !== null &&
66
+ startedMs >= previousEndedMs &&
67
+ startedMs - previousEndedMs <= CHUNK_MERGE_WINDOW_MS;
68
+ if (!isContinuation)
69
+ sessions += 1;
70
+ previousEndedMs = Date.parse(record.ended_at);
71
+ }
72
+ }
73
+ return sessions;
74
+ }
75
+ function toBuckets(records) {
76
+ const byKey = new Map();
77
+ // Raw seconds per bucket key, rounded to minutes exactly once at the end.
78
+ // Checkpoint chunking (see `countSessions` above) means the same local
79
+ // hour is routinely split across several records — rounding each
80
+ // record's contribution independently before summing drifts from the
81
+ // true total (e.g. two 90s chunks: round(90/60) + round(90/60) = 2 + 2 =
82
+ // 4m, when the real total is 180s = 3m). Summing seconds first and
83
+ // rounding once avoids that systematic overcount.
84
+ const secondsByKey = new Map();
85
+ for (const record of records) {
86
+ // Extract UTC offset from started_at (e.g., "+03:00" or "-05:00")
87
+ const offsetMatch = record.started_at.match(/([\+\-]\d{2}:\d{2})$/);
88
+ const offset = offsetMatch ? offsetMatch[1] : "+00:00";
89
+ for (const [hourText, seconds] of Object.entries(record.fg_seconds_by_hour)) {
90
+ const localHour = Number(hourText);
91
+ // Hours after midnight belong to the next local date.
92
+ const startHour = Number(record.started_at.slice(11, 13));
93
+ const localDate = localHour >= startHour ? record.local_date : nextDate(record.local_date);
94
+ const key = `${localDate}T${localHour}`;
95
+ if (!byKey.has(key)) {
96
+ // Compute hour as the UTC instant of the local hour's start
97
+ const localTimestamp = `${localDate}T${String(localHour).padStart(2, "0")}:00:00${offset}`;
98
+ const hourUtc = new Date(Date.parse(localTimestamp)).toISOString();
99
+ byKey.set(key, {
100
+ hour: hourUtc,
101
+ localDate,
102
+ localHour,
103
+ agentTurns: 0,
104
+ humanCheckIns: 0,
105
+ agentActiveMinutes: 0,
106
+ humanAttentionMinutes: 0,
107
+ });
108
+ }
109
+ secondsByKey.set(key, (secondsByKey.get(key) ?? 0) + seconds);
110
+ }
111
+ }
112
+ for (const [key, bucket] of byKey) {
113
+ bucket.humanAttentionMinutes = Math.round((secondsByKey.get(key) ?? 0) / 60);
114
+ }
115
+ return [...byKey.values()].sort((a, b) => a.hour.localeCompare(b.hour));
116
+ }
117
+ function nextDate(localDate) {
118
+ const date = new Date(`${localDate}T12:00:00Z`);
119
+ date.setUTCDate(date.getUTCDate() + 1);
120
+ return date.toISOString().slice(0, 10);
121
+ }
122
+ //# sourceMappingURL=macosApps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macosApps.js","sourceRoot":"","sources":["../../src/sources/macosApps.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -101,7 +101,9 @@ export interface DataBoundary {
101
101
  "measurement provenance and missingness",
102
102
  "agent and model family",
103
103
  "approval and lifecycle signals",
104
- "reporting timezone"
104
+ "reporting timezone",
105
+ "collector version",
106
+ "since 0.5.0, a per-turn real-time event (agent, model family, hour, opaque run id, minutes-active estimate; end: id and time) sent when a turn starts and ends"
105
107
  ];
106
108
  neverRetained: readonly [
107
109
  "prompt text",
@@ -126,6 +128,8 @@ export interface AfterhoursSnapshot {
126
128
  tz: string | null;
127
129
  sources: SourceSnapshot[];
128
130
  boundary: DataBoundary;
131
+ /** Collector version at the time of this snapshot, for server-side rollout diagnostics. */
132
+ cliVersion?: string;
129
133
  }
130
134
  export interface SourceAdapter {
131
135
  id: SourceId;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Kept equal to package.json by tests/version.test.ts. */
2
+ export declare const CLI_VERSION = "0.5.0";
3
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,WAAW,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Kept equal to package.json by tests/version.test.ts. */
2
+ export const CLI_VERSION = "0.5.0";
3
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
package/llms-install.md CHANGED
@@ -19,6 +19,14 @@ model output, repository names, working directories, and file paths are never
19
19
  read into the sync payload, never uploaded, and never logged. `npx
20
20
  @teeras/afterhours privacy` prints the machine-readable boundary.
21
21
 
22
+ Since 0.5.0, when an agent turn starts and ends, the collector also sends a
23
+ small real-time event: the agent name, its model family, the hour of day, an
24
+ opaque run id, and an estimate of how many minutes you've been active today.
25
+ When the turn ends it sends the same id and the time. This lets the Teeras
26
+ iPhone app tell you how long runs like this usually take. It never includes
27
+ prompts, code, file paths, or repository names, it is sent once with a
28
+ two-second timeout, and it never blocks the agent.
29
+
22
30
  Setup is idempotent — re-running it repairs hooks and refreshes the
23
31
  connection. It installs lifecycle hooks for Claude Code and Codex when found,
24
32
  which record content-free session signals locally.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teeras/afterhours",
3
- "version": "0.3.1",
3
+ "version": "0.5.0",
4
4
  "description": "Private AI-life balance and usage analytics for Codex, Claude Code, Gemini CLI, Cursor, and other coding agents.",
5
5
  "homepage": "https://teeras.com",
6
6
  "keywords": [