@fureworks/scope 0.1.0 → 0.2.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 (80) hide show
  1. package/README.md +129 -48
  2. package/dist/cli/config.d.ts +8 -1
  3. package/dist/cli/config.d.ts.map +1 -1
  4. package/dist/cli/config.js +368 -42
  5. package/dist/cli/config.js.map +1 -1
  6. package/dist/cli/init.d.ts +2 -0
  7. package/dist/cli/init.d.ts.map +1 -0
  8. package/dist/cli/init.js +15 -0
  9. package/dist/cli/init.js.map +1 -0
  10. package/dist/cli/notifications.d.ts +7 -0
  11. package/dist/cli/notifications.d.ts.map +1 -0
  12. package/dist/cli/notifications.js +77 -0
  13. package/dist/cli/notifications.js.map +1 -0
  14. package/dist/cli/onboard.d.ts.map +1 -1
  15. package/dist/cli/onboard.js +2 -1
  16. package/dist/cli/onboard.js.map +1 -1
  17. package/dist/cli/plan.d.ts +7 -0
  18. package/dist/cli/plan.d.ts.map +1 -0
  19. package/dist/cli/plan.js +111 -0
  20. package/dist/cli/plan.js.map +1 -0
  21. package/dist/cli/review.d.ts +6 -0
  22. package/dist/cli/review.d.ts.map +1 -0
  23. package/dist/cli/review.js +167 -0
  24. package/dist/cli/review.js.map +1 -0
  25. package/dist/cli/snooze.d.ts +12 -0
  26. package/dist/cli/snooze.d.ts.map +1 -0
  27. package/dist/cli/snooze.js +155 -0
  28. package/dist/cli/snooze.js.map +1 -0
  29. package/dist/cli/today.d.ts.map +1 -1
  30. package/dist/cli/today.js +69 -9
  31. package/dist/cli/today.js.map +1 -1
  32. package/dist/cli/tune.d.ts +8 -0
  33. package/dist/cli/tune.d.ts.map +1 -0
  34. package/dist/cli/tune.js +62 -0
  35. package/dist/cli/tune.js.map +1 -0
  36. package/dist/engine/prioritize.d.ts +10 -2
  37. package/dist/engine/prioritize.d.ts.map +1 -1
  38. package/dist/engine/prioritize.js +156 -25
  39. package/dist/engine/prioritize.js.map +1 -1
  40. package/dist/index.js +48 -5
  41. package/dist/index.js.map +1 -1
  42. package/dist/notifications/index.d.ts.map +1 -1
  43. package/dist/notifications/index.js +6 -10
  44. package/dist/notifications/index.js.map +1 -1
  45. package/dist/sources/activity.d.ts +32 -0
  46. package/dist/sources/activity.d.ts.map +1 -0
  47. package/dist/sources/activity.js +101 -0
  48. package/dist/sources/activity.js.map +1 -0
  49. package/dist/sources/calendar.d.ts +6 -0
  50. package/dist/sources/calendar.d.ts.map +1 -1
  51. package/dist/sources/calendar.js +114 -0
  52. package/dist/sources/calendar.js.map +1 -1
  53. package/dist/store/config.d.ts +8 -0
  54. package/dist/store/config.d.ts.map +1 -1
  55. package/dist/store/config.js +22 -0
  56. package/dist/store/config.js.map +1 -1
  57. package/dist/store/muted.d.ts +17 -0
  58. package/dist/store/muted.d.ts.map +1 -0
  59. package/dist/store/muted.js +55 -0
  60. package/dist/store/muted.js.map +1 -0
  61. package/dist/store/snapshot.d.ts +12 -0
  62. package/dist/store/snapshot.d.ts.map +1 -0
  63. package/dist/store/snapshot.js +41 -0
  64. package/dist/store/snapshot.js.map +1 -0
  65. package/package.json +8 -2
  66. package/src/cli/config.ts +0 -66
  67. package/src/cli/context.ts +0 -109
  68. package/src/cli/daemon.ts +0 -217
  69. package/src/cli/onboard.ts +0 -335
  70. package/src/cli/status.ts +0 -77
  71. package/src/cli/switch.ts +0 -93
  72. package/src/cli/today.ts +0 -114
  73. package/src/engine/prioritize.ts +0 -257
  74. package/src/index.ts +0 -58
  75. package/src/notifications/index.ts +0 -42
  76. package/src/sources/calendar.ts +0 -170
  77. package/src/sources/git.ts +0 -168
  78. package/src/sources/issues.ts +0 -62
  79. package/src/store/config.ts +0 -104
  80. package/tsconfig.json +0 -19
@@ -1,40 +1,91 @@
1
+ import { isItemMuted } from "../store/muted.js";
2
+ import { DEFAULT_WEIGHTS } from "../store/config.js";
1
3
  function scorePR(pr, repoName) {
2
4
  let score = 0;
3
5
  const details = [];
6
+ const ageDaysRounded = Math.round(pr.ageDays);
7
+ let agePoints = 0;
4
8
  // Staleness
5
9
  if (pr.ageDays > 14) {
6
- score += 9; // 2+ weeks = critical
7
- details.push(`open ${Math.round(pr.ageDays)} days`);
10
+ agePoints = 9; // 2+ weeks = critical
11
+ score += agePoints;
12
+ details.push(`open ${ageDaysRounded} days`);
8
13
  }
9
14
  else if (pr.ageDays > 5) {
10
- score += 7;
11
- details.push(`open ${Math.round(pr.ageDays)} days`);
15
+ agePoints = 7;
16
+ score += agePoints;
17
+ details.push(`open ${ageDaysRounded} days`);
12
18
  }
13
19
  else if (pr.ageDays > 2) {
14
- score += 4;
15
- details.push(`open ${Math.round(pr.ageDays)} days`);
20
+ agePoints = 4;
21
+ score += agePoints;
22
+ details.push(`open ${ageDaysRounded} days`);
16
23
  }
17
24
  // Blocking potential
25
+ const reviewPoints = pr.reviewRequested ? 8 : 0;
26
+ const ciPoints = pr.ciStatus === "fail" ? 5 : 0;
27
+ const conflictPoints = pr.hasConflicts ? 4 : 0;
18
28
  if (pr.reviewRequested) {
19
- score += 8;
29
+ score += reviewPoints;
20
30
  details.push("review requested");
21
31
  }
22
32
  if (pr.ciStatus === "fail") {
23
- score += 5;
33
+ score += ciPoints;
24
34
  details.push("CI failing");
25
35
  }
26
36
  if (pr.hasConflicts) {
27
- score += 4;
37
+ score += conflictPoints;
28
38
  details.push("has conflicts");
29
39
  }
40
+ let reason = "Needs attention.";
41
+ if (reviewPoints > agePoints && reviewPoints >= ciPoints && reviewPoints >= conflictPoints) {
42
+ if (pr.ageDays > 5) {
43
+ reason = `Someone's waiting on your review. ${ageDaysRounded} days stale.`;
44
+ }
45
+ else {
46
+ reason = "Someone's waiting on your review.";
47
+ }
48
+ }
49
+ else if (agePoints >= reviewPoints && agePoints >= ciPoints && agePoints >= conflictPoints) {
50
+ if (pr.ageDays > 14) {
51
+ reason = `Open ${ageDaysRounded} days. Getting stale.`;
52
+ }
53
+ else {
54
+ reason = `Open ${ageDaysRounded} days.`;
55
+ }
56
+ }
57
+ else if (ciPoints >= conflictPoints) {
58
+ reason = "CI is failing. Fix or close.";
59
+ }
60
+ else if (conflictPoints > 0) {
61
+ reason = "Merge conflicts detected. Rebase or close.";
62
+ }
30
63
  const priority = score >= 8 ? "now" : score >= 4 ? "today" : "later";
64
+ const suppressionReason = priority === "later"
65
+ ? pr.ageDays <= 2 && !pr.reviewRequested
66
+ ? "Fresh, no one's waiting"
67
+ : pr.ciStatus === "pass"
68
+ ? "On track, CI green"
69
+ : undefined
70
+ : undefined;
71
+ // Confidence: check for thin data
72
+ const missingContext = [];
73
+ if (pr.ciStatus === "unknown")
74
+ missingContext.push("no CI status");
75
+ if (!pr.reviewRequested && pr.ageDays > 2)
76
+ missingContext.push("no reviewer assigned");
77
+ const confidence = missingContext.length >= 2 ? "low" : missingContext.length === 1 ? "medium" : "high";
31
78
  return {
32
79
  priority,
33
80
  score,
34
81
  emoji: priority === "now" ? "🔴" : "🟡",
35
82
  label: `PR #${pr.number} on ${repoName}`,
36
83
  detail: `${pr.title} — ${details.join(", ")}`,
84
+ reason,
85
+ confidence,
86
+ confidenceNote: missingContext.length > 0 ? `low context: ${missingContext.join(", ")}` : undefined,
37
87
  source: "pr",
88
+ suppressionReason,
38
89
  };
39
90
  }
40
91
  function scoreRepoWork(signal) {
@@ -45,23 +96,26 @@ function scoreRepoWork(signal) {
45
96
  details.push(`${signal.uncommittedFiles} uncommitted file${signal.uncommittedFiles > 1 ? "s" : ""}`);
46
97
  // Staleness of uncommitted work
47
98
  const days = Math.round(signal.lastCommitAge / 24);
99
+ let reason = "Uncommitted changes detected.";
48
100
  if (signal.lastCommitAge > 72) {
49
101
  score += 9; // 3+ days uncommitted = NOW
50
102
  details.push(`last commit ${days}d ago`);
103
+ reason = `Uncommitted work for ${days} days. Commit or stash.`;
51
104
  }
52
105
  else if (signal.lastCommitAge > 24) {
53
106
  score += 6;
54
107
  details.push(`last commit ${days}d ago`);
108
+ reason = `Uncommitted work for ${days} days. Commit or stash.`;
55
109
  }
56
110
  else if (signal.lastCommitAge > 4) {
111
+ const hours = Math.round(signal.lastCommitAge);
57
112
  score += 3;
58
- details.push(`last touched ${Math.round(signal.lastCommitAge)}h ago`);
113
+ details.push(`last touched ${hours}h ago`);
114
+ reason = `Uncommitted work for ${hours} hours. Commit or stash.`;
59
115
  }
60
116
  else {
61
117
  score += 1;
62
118
  }
63
- if (score < 2)
64
- return null; // Don't surface fresh uncommitted work
65
119
  const priority = score >= 8 ? "now" : score >= 4 ? "today" : "later";
66
120
  return {
67
121
  priority,
@@ -69,7 +123,10 @@ function scoreRepoWork(signal) {
69
123
  emoji: priority === "now" ? "🔴" : "🟡",
70
124
  label: `${signal.repo}`,
71
125
  detail: details.join(", "),
126
+ reason,
127
+ confidence: "high", // git signals are always concrete
72
128
  source: "git",
129
+ suppressionReason: priority === "later" ? "Recently touched, nothing stale" : undefined,
73
130
  };
74
131
  }
75
132
  function scoreCalendarEvent(event) {
@@ -77,11 +134,14 @@ function scoreCalendarEvent(event) {
77
134
  if (event.minutesUntilStart < -15)
78
135
  return null;
79
136
  let score = 0;
137
+ let reason = "Upcoming calendar event.";
80
138
  if (event.minutesUntilStart <= 60 && event.minutesUntilStart > 0) {
81
139
  score += 10;
140
+ reason = `Starting in ${event.minutesUntilStart} minutes.`;
82
141
  }
83
142
  else if (event.minutesUntilStart <= 0 && event.minutesUntilStart > -15) {
84
143
  score += 10; // Happening now
144
+ reason = "Happening now.";
85
145
  }
86
146
  else {
87
147
  score += 5;
@@ -107,39 +167,67 @@ function scoreCalendarEvent(event) {
107
167
  emoji: "🔴",
108
168
  label: `Meeting: ${event.title}`,
109
169
  detail: timeLabel,
170
+ reason,
171
+ confidence: "high", // calendar events are factual
110
172
  source: "calendar",
111
173
  };
112
174
  }
113
175
  function scoreIssue(issue) {
114
176
  let score = 0;
115
177
  const details = [];
178
+ const ageDaysRounded = Math.round(issue.ageDays);
179
+ let agePoints = 0;
116
180
  if (issue.ageDays > 14) {
117
- score += 9;
118
- details.push(`open ${Math.round(issue.ageDays)} days`);
181
+ agePoints = 9;
182
+ score += agePoints;
183
+ details.push(`open ${ageDaysRounded} days`);
119
184
  }
120
185
  else if (issue.ageDays > 7) {
121
- score += 7;
122
- details.push(`open ${Math.round(issue.ageDays)} days`);
186
+ agePoints = 7;
187
+ score += agePoints;
188
+ details.push(`open ${ageDaysRounded} days`);
123
189
  }
124
- const hasPriorityLabel = issue.labels.some((label) => ["urgent", "critical", "bug"].includes(label.toLowerCase()));
125
- if (hasPriorityLabel) {
190
+ const priorityLabel = issue.labels.find((label) => ["urgent", "critical", "bug"].includes(label.toLowerCase()));
191
+ const priorityPoints = priorityLabel ? 3 : 0;
192
+ if (priorityLabel) {
126
193
  score += 3;
127
194
  details.push("priority label");
128
195
  }
129
- if (score === 0)
130
- return null;
131
196
  const priority = score >= 8 ? "now" : score >= 4 ? "today" : "later";
132
197
  const labels = issue.labels.length > 0 ? ` [${issue.labels.join(", ")}]` : "";
198
+ let reason = "Assigned issue needs attention.";
199
+ if (agePoints >= priorityPoints && agePoints > 0) {
200
+ if (issue.ageDays > 14) {
201
+ reason = `Open ${ageDaysRounded} days and assigned to you.`;
202
+ }
203
+ else {
204
+ reason = `Open ${ageDaysRounded} days and assigned to you.`;
205
+ }
206
+ }
207
+ else if (priorityLabel) {
208
+ reason = `Marked ${priorityLabel}. Assigned to you.`;
209
+ }
210
+ // Confidence: issues missing labels or with no assignee context
211
+ const issueMissing = [];
212
+ if (issue.labels.length === 0)
213
+ issueMissing.push("no labels");
214
+ const issueConfidence = issueMissing.length > 0 ? "medium" : "high";
133
215
  return {
134
216
  priority,
135
217
  score,
136
218
  emoji: "📋",
137
219
  label: `Issue #${issue.number} on ${issue.repo}`,
138
220
  detail: `${issue.title}${labels}${details.length > 0 ? ` — ${details.join(", ")}` : ""}`,
221
+ reason,
222
+ confidence: issueConfidence,
223
+ confidenceNote: issueMissing.length > 0 ? `low context: ${issueMissing.join(", ")}` : undefined,
139
224
  source: "issue",
225
+ suppressionReason: priority === "later" && issue.ageDays < 7 && !priorityLabel
226
+ ? "Less than a week old, no priority label"
227
+ : undefined,
140
228
  };
141
229
  }
142
- export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
230
+ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues, weights = DEFAULT_WEIGHTS) {
143
231
  const allItems = [];
144
232
  // Score calendar events
145
233
  for (const event of calendarEvents) {
@@ -150,20 +238,45 @@ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
150
238
  // Score git repos
151
239
  for (const signal of gitSignals) {
152
240
  // Score uncommitted work
153
- const repoItem = scoreRepoWork(signal);
241
+ const gitItemId = `git:${signal.repo}`;
242
+ const repoItem = isItemMuted(gitItemId) ? null : scoreRepoWork(signal);
154
243
  if (repoItem)
155
244
  allItems.push(repoItem);
156
245
  // Score PRs
157
246
  for (const pr of signal.openPRs) {
247
+ const prItemId = `pr:${signal.repo}#${pr.number}`;
248
+ if (isItemMuted(prItemId))
249
+ continue;
158
250
  allItems.push(scorePR(pr, signal.repo));
159
251
  }
160
252
  }
161
253
  // Score issues
162
254
  for (const issue of issues) {
255
+ const issueItemId = `issue:${issue.repo}#${issue.number}`;
256
+ if (isItemMuted(issueItemId))
257
+ continue;
163
258
  const scored = scoreIssue(issue);
164
259
  if (scored)
165
260
  allItems.push(scored);
166
261
  }
262
+ // Apply weight multipliers based on source type
263
+ for (const item of allItems) {
264
+ if (item.source === "git") {
265
+ item.score = Math.round(item.score * weights.staleness);
266
+ }
267
+ else if (item.source === "pr") {
268
+ // PRs have both staleness and blocking components — use the higher weight
269
+ item.score = Math.round(item.score * Math.max(weights.staleness, weights.blocking));
270
+ }
271
+ else if (item.source === "calendar") {
272
+ item.score = Math.round(item.score * weights.timePressure);
273
+ }
274
+ else if (item.source === "issue") {
275
+ item.score = Math.round(item.score * weights.staleness);
276
+ }
277
+ // Recalculate priority tier after weight adjustment
278
+ item.priority = item.score >= 8 ? "now" : item.score >= 4 ? "today" : "later";
279
+ }
167
280
  // Sort by score descending
168
281
  allItems.sort((a, b) => b.score - a.score);
169
282
  // Cap output: max 3 NOW items, max 5 TODAY items. Rest goes to later.
@@ -173,8 +286,17 @@ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
173
286
  const now = allNow.slice(0, 3);
174
287
  const todayOverflow = allNow.slice(3);
175
288
  const today = [...todayOverflow, ...allToday].slice(0, 5);
176
- const laterCount = allLater.length +
177
- Math.max(0, todayOverflow.length + allToday.length - 5);
289
+ const capped = [...todayOverflow, ...allToday].slice(5);
290
+ const ignored = [
291
+ ...allLater.map((item) => ({
292
+ label: item.label,
293
+ reason: item.suppressionReason ?? "Lower priority than your top items",
294
+ })),
295
+ ...capped.map((item) => ({
296
+ label: item.label,
297
+ reason: "Lower priority than your top items",
298
+ })),
299
+ ];
178
300
  // Generate suggestions
179
301
  const suggestions = [];
180
302
  if (freeBlocks.length > 0) {
@@ -199,6 +321,15 @@ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
199
321
  suggestions.push(`${durationStr} free block available (${blockStart}–${blockEnd})`);
200
322
  }
201
323
  }
202
- return { now, today, laterCount, freeBlocks, suggestions };
324
+ return {
325
+ now,
326
+ today,
327
+ ignored,
328
+ get laterCount() {
329
+ return this.ignored.length;
330
+ },
331
+ freeBlocks,
332
+ suggestions,
333
+ };
203
334
  }
204
335
  //# sourceMappingURL=prioritize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prioritize.js","sourceRoot":"","sources":["../../src/engine/prioritize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prioritize.js","sourceRoot":"","sources":["../../src/engine/prioritize.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,13 +5,23 @@ import { switchCommand } from "./cli/switch.js";
5
5
  import { contextCommand } from "./cli/context.js";
6
6
  import { statusCommand } from "./cli/status.js";
7
7
  import { onboardCommand } from "./cli/onboard.js";
8
- import { configCommand } from "./cli/config.js";
8
+ import { registerConfigCommand } from "./cli/config.js";
9
+ import { reviewCommand } from "./cli/review.js";
10
+ import { notificationsCommand } from "./cli/notifications.js";
9
11
  import { daemonCommand } from "./cli/daemon.js";
12
+ import { muteCommand, snoozeCommand } from "./cli/snooze.js";
13
+ import { planCommand } from "./cli/plan.js";
14
+ import { initCommand } from "./cli/init.js";
15
+ import { tuneCommand } from "./cli/tune.js";
10
16
  const program = new Command();
11
17
  program
12
18
  .name("scope")
13
19
  .description("Personal ops CLI — focus on what matters.")
14
- .version("0.1.0");
20
+ .version("0.2.0");
21
+ program
22
+ .command("init")
23
+ .description("Initialize Scope (create ~/.scope/ and config)")
24
+ .action(initCommand);
15
25
  program
16
26
  .command("today")
17
27
  .description("What needs your attention right now")
@@ -37,12 +47,45 @@ program
37
47
  .option("--json", "Output as JSON")
38
48
  .action(statusCommand);
39
49
  program
40
- .command("config [key] [value]")
41
- .description("View or edit configuration")
42
- .action(configCommand);
50
+ .command("review")
51
+ .description("End-of-day summary what got done, what's carrying over")
52
+ .option("--json", "Output as JSON")
53
+ .action(reviewCommand);
54
+ // Config subcommands (repos, calendar, github, projects)
55
+ registerConfigCommand(program);
43
56
  program
44
57
  .command("daemon <action>")
45
58
  .description("Manage background signal checks (start|stop|status)")
46
59
  .action(daemonCommand);
60
+ program
61
+ .command("notifications")
62
+ .description("View recent notifications")
63
+ .option("--clear", "Clear all notifications")
64
+ .option("--all", "Show all notifications (not just last 24h)")
65
+ .action(notificationsCommand);
66
+ program
67
+ .command("snooze <item>")
68
+ .description("Snooze an item until a future date")
69
+ .requiredOption("--until <date>", "Until date: tomorrow, monday..sunday, 3d, 1w, or YYYY-MM-DD")
70
+ .action(snoozeCommand);
71
+ program
72
+ .command("mute [item]")
73
+ .description("Mute an item permanently, list mutes, or clear an item")
74
+ .option("--list", "Show muted and snoozed items")
75
+ .option("--clear <item-id>", "Remove an item from muted/snoozed")
76
+ .action(muteCommand);
77
+ program
78
+ .command("tune [key] [value]")
79
+ .description("View or adjust scoring weights")
80
+ .option("--show", "Display current weights")
81
+ .option("--reset", "Reset weights to defaults")
82
+ .option("--config", "Open config in $EDITOR")
83
+ .action(tuneCommand);
84
+ program
85
+ .command("plan")
86
+ .description("Weekly planning view")
87
+ .option("--no-calendar", "Skip calendar data")
88
+ .option("--json", "Output as JSON")
89
+ .action(planCommand);
47
90
  program.parse();
48
91
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC;KAC7C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,QAAQ,EAAE,4BAA4B,CAAC;KAC9C,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAgBA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAyBxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAgBA,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAuBxD"}
@@ -12,30 +12,26 @@ function fallbackNotify(title, body) {
12
12
  appendFileSync(logPath, `[${new Date().toISOString()}] ${title}: ${body}\n`, "utf-8");
13
13
  }
14
14
  export function notify(title, body) {
15
+ // Always log to file (so scope notifications can show history)
16
+ fallbackNotify(title, body);
17
+ // Also fire desktop notification
15
18
  try {
16
19
  if (process.platform === "linux") {
17
20
  if (commandExists("notify-send")) {
18
- const result = spawnSync("notify-send", [title, body], { stdio: "pipe" });
19
- if (result.status === 0)
20
- return;
21
+ spawnSync("notify-send", [title, body], { stdio: "pipe" });
21
22
  }
22
- fallbackNotify(title, body);
23
23
  return;
24
24
  }
25
25
  if (process.platform === "darwin") {
26
26
  const escapedTitle = title.replace(/"/g, '\\"');
27
27
  const escapedBody = body.replace(/"/g, '\\"');
28
28
  const script = `display notification "${escapedBody}" with title "${escapedTitle}"`;
29
- const result = spawnSync("osascript", ["-e", script], { stdio: "pipe" });
30
- if (result.status === 0)
31
- return;
32
- fallbackNotify(title, body);
29
+ spawnSync("osascript", ["-e", script], { stdio: "pipe" });
33
30
  return;
34
31
  }
35
- fallbackNotify(title, body);
36
32
  }
37
33
  catch {
38
- fallbackNotify(title, body);
34
+ // Desktop notification failed, but log was already written
39
35
  }
40
36
  }
41
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,IAAY;IACjD,cAAc,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACzD,cAAc,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,IAAY;IAChD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;YAClC,CAAC;YACD,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,yBAAyB,WAAW,iBAAiB,YAAY,GAAG,CAAC;YACpF,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAChC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,IAAY;IACjD,cAAc,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,mBAAmB,CAAC,CAAC;IACzD,cAAc,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,KAAK,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,IAAY;IAChD,+DAA+D;IAC/D,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE5B,iCAAiC;IACjC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,SAAS,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,yBAAyB,WAAW,iBAAiB,YAAY,GAAG,CAAC;YACpF,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ export interface RepoActivity {
2
+ repo: string;
3
+ commitsToday: number;
4
+ commitMessages: string[];
5
+ filesChanged: number;
6
+ }
7
+ export interface PRActivity {
8
+ repo: string;
9
+ merged: Array<{
10
+ number: number;
11
+ title: string;
12
+ }>;
13
+ opened: Array<{
14
+ number: number;
15
+ title: string;
16
+ }>;
17
+ closed: Array<{
18
+ number: number;
19
+ title: string;
20
+ }>;
21
+ }
22
+ export interface IssueActivity {
23
+ repo: string;
24
+ closed: Array<{
25
+ number: number;
26
+ title: string;
27
+ }>;
28
+ }
29
+ export declare function getTodayCommits(repoPath: string): Promise<RepoActivity | null>;
30
+ export declare function getTodayPRActivity(repoPath: string): Promise<PRActivity | null>;
31
+ export declare function getTodayIssueActivity(repoPath: string): Promise<IssueActivity | null>;
32
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/sources/activity.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAwCpF;AAED,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAoDrF;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAuB3F"}
@@ -0,0 +1,101 @@
1
+ import { simpleGit } from "simple-git";
2
+ import { existsSync } from "node:fs";
3
+ export async function getTodayCommits(repoPath) {
4
+ if (!existsSync(repoPath))
5
+ return null;
6
+ const git = simpleGit(repoPath);
7
+ try {
8
+ const isRepo = await git.checkIsRepo();
9
+ if (!isRepo)
10
+ return null;
11
+ const repoName = repoPath.split("/").pop() || repoPath;
12
+ // Get today's commits
13
+ const log = await git.log(["--since=midnight", "--all"]);
14
+ if (!log.all || log.all.length === 0) {
15
+ return { repo: repoName, commitsToday: 0, commitMessages: [], filesChanged: 0 };
16
+ }
17
+ const commitMessages = log.all.map((c) => c.message.split("\n")[0]);
18
+ // Get files changed today
19
+ let filesChanged = 0;
20
+ try {
21
+ const diffStat = await git.diff(["--stat", "--since=midnight", "HEAD"]);
22
+ // Count lines that look like file changes (contain |)
23
+ filesChanged = diffStat.split("\n").filter((l) => l.includes("|")).length;
24
+ }
25
+ catch {
26
+ // Fallback: estimate from commit count
27
+ filesChanged = 0;
28
+ }
29
+ return {
30
+ repo: repoName,
31
+ commitsToday: log.all.length,
32
+ commitMessages,
33
+ filesChanged,
34
+ };
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ export async function getTodayPRActivity(repoPath) {
41
+ const repoName = repoPath.split("/").pop() || repoPath;
42
+ try {
43
+ const { execSync } = await import("node:child_process");
44
+ const today = new Date().toISOString().split("T")[0];
45
+ // Merged today
46
+ let merged = [];
47
+ try {
48
+ const mergedRaw = execSync(`gh pr list --state merged --json number,title,mergedAt --limit 20`, { cwd: repoPath, encoding: "utf-8", timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
49
+ const mergedPrs = JSON.parse(mergedRaw);
50
+ merged = mergedPrs
51
+ .filter((pr) => pr.mergedAt && pr.mergedAt.startsWith(today))
52
+ .map((pr) => ({ number: pr.number, title: pr.title }));
53
+ }
54
+ catch { /* no merged PRs or gh not available */ }
55
+ // Opened today
56
+ let opened = [];
57
+ try {
58
+ const openedRaw = execSync(`gh pr list --state open --json number,title,createdAt --limit 20`, { cwd: repoPath, encoding: "utf-8", timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
59
+ const openedPrs = JSON.parse(openedRaw);
60
+ opened = openedPrs
61
+ .filter((pr) => pr.createdAt && pr.createdAt.startsWith(today))
62
+ .map((pr) => ({ number: pr.number, title: pr.title }));
63
+ }
64
+ catch { /* no opened PRs or gh not available */ }
65
+ // Closed today (not merged)
66
+ let closed = [];
67
+ try {
68
+ const closedRaw = execSync(`gh pr list --state closed --json number,title,closedAt,mergedAt --limit 20`, { cwd: repoPath, encoding: "utf-8", timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
69
+ const closedPrs = JSON.parse(closedRaw);
70
+ closed = closedPrs
71
+ .filter((pr) => pr.closedAt && pr.closedAt.startsWith(today) && !pr.mergedAt)
72
+ .map((pr) => ({ number: pr.number, title: pr.title }));
73
+ }
74
+ catch { /* no closed PRs or gh not available */ }
75
+ if (merged.length === 0 && opened.length === 0 && closed.length === 0)
76
+ return null;
77
+ return { repo: repoName, merged, opened, closed };
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ }
83
+ export async function getTodayIssueActivity(repoPath) {
84
+ const repoName = repoPath.split("/").pop() || repoPath;
85
+ try {
86
+ const { execSync } = await import("node:child_process");
87
+ const today = new Date().toISOString().split("T")[0];
88
+ const result = execSync(`gh issue list --state closed --json number,title,closedAt --limit 20`, { cwd: repoPath, encoding: "utf-8", timeout: 10000, stdio: ["pipe", "pipe", "pipe"] });
89
+ const issues = JSON.parse(result);
90
+ const closedToday = issues
91
+ .filter((i) => i.closedAt && i.closedAt.startsWith(today))
92
+ .map((i) => ({ number: i.number, title: i.title }));
93
+ if (closedToday.length === 0)
94
+ return null;
95
+ return { repo: repoName, closed: closedToday };
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ }
101
+ //# sourceMappingURL=activity.js.map