@fureworks/scope 0.1.0 → 0.3.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 (104) hide show
  1. package/README.md +129 -48
  2. package/dist/cli/clean.d.ts +7 -0
  3. package/dist/cli/clean.d.ts.map +1 -0
  4. package/dist/cli/clean.js +49 -0
  5. package/dist/cli/clean.js.map +1 -0
  6. package/dist/cli/config.d.ts +8 -1
  7. package/dist/cli/config.d.ts.map +1 -1
  8. package/dist/cli/config.js +368 -42
  9. package/dist/cli/config.js.map +1 -1
  10. package/dist/cli/diff.d.ts +6 -0
  11. package/dist/cli/diff.d.ts.map +1 -0
  12. package/dist/cli/diff.js +63 -0
  13. package/dist/cli/diff.js.map +1 -0
  14. package/dist/cli/init.d.ts +2 -0
  15. package/dist/cli/init.d.ts.map +1 -0
  16. package/dist/cli/init.js +15 -0
  17. package/dist/cli/init.js.map +1 -0
  18. package/dist/cli/notifications.d.ts +7 -0
  19. package/dist/cli/notifications.d.ts.map +1 -0
  20. package/dist/cli/notifications.js +77 -0
  21. package/dist/cli/notifications.js.map +1 -0
  22. package/dist/cli/onboard.d.ts.map +1 -1
  23. package/dist/cli/onboard.js +2 -1
  24. package/dist/cli/onboard.js.map +1 -1
  25. package/dist/cli/plan.d.ts +7 -0
  26. package/dist/cli/plan.d.ts.map +1 -0
  27. package/dist/cli/plan.js +111 -0
  28. package/dist/cli/plan.js.map +1 -0
  29. package/dist/cli/review.d.ts +6 -0
  30. package/dist/cli/review.d.ts.map +1 -0
  31. package/dist/cli/review.js +167 -0
  32. package/dist/cli/review.js.map +1 -0
  33. package/dist/cli/snooze.d.ts +12 -0
  34. package/dist/cli/snooze.d.ts.map +1 -0
  35. package/dist/cli/snooze.js +155 -0
  36. package/dist/cli/snooze.js.map +1 -0
  37. package/dist/cli/today.d.ts.map +1 -1
  38. package/dist/cli/today.js +85 -11
  39. package/dist/cli/today.js.map +1 -1
  40. package/dist/cli/tune.d.ts +8 -0
  41. package/dist/cli/tune.d.ts.map +1 -0
  42. package/dist/cli/tune.js +62 -0
  43. package/dist/cli/tune.js.map +1 -0
  44. package/dist/engine/__tests__/prioritize.test.d.ts +2 -0
  45. package/dist/engine/__tests__/prioritize.test.d.ts.map +1 -0
  46. package/dist/engine/__tests__/prioritize.test.js +199 -0
  47. package/dist/engine/__tests__/prioritize.test.js.map +1 -0
  48. package/dist/engine/prioritize.d.ts +10 -2
  49. package/dist/engine/prioritize.d.ts.map +1 -1
  50. package/dist/engine/prioritize.js +249 -50
  51. package/dist/engine/prioritize.js.map +1 -1
  52. package/dist/index.js +61 -5
  53. package/dist/index.js.map +1 -1
  54. package/dist/notifications/index.d.ts.map +1 -1
  55. package/dist/notifications/index.js +6 -10
  56. package/dist/notifications/index.js.map +1 -1
  57. package/dist/sources/__tests__/git.test.d.ts +2 -0
  58. package/dist/sources/__tests__/git.test.d.ts.map +1 -0
  59. package/dist/sources/__tests__/git.test.js +52 -0
  60. package/dist/sources/__tests__/git.test.js.map +1 -0
  61. package/dist/sources/activity.d.ts +32 -0
  62. package/dist/sources/activity.d.ts.map +1 -0
  63. package/dist/sources/activity.js +101 -0
  64. package/dist/sources/activity.js.map +1 -0
  65. package/dist/sources/calendar.d.ts +6 -0
  66. package/dist/sources/calendar.d.ts.map +1 -1
  67. package/dist/sources/calendar.js +114 -0
  68. package/dist/sources/calendar.js.map +1 -1
  69. package/dist/sources/git.d.ts +3 -0
  70. package/dist/sources/git.d.ts.map +1 -1
  71. package/dist/sources/git.js +62 -6
  72. package/dist/sources/git.js.map +1 -1
  73. package/dist/sources/issues.d.ts +2 -0
  74. package/dist/sources/issues.d.ts.map +1 -1
  75. package/dist/sources/issues.js +33 -0
  76. package/dist/sources/issues.js.map +1 -1
  77. package/dist/store/config.d.ts +8 -0
  78. package/dist/store/config.d.ts.map +1 -1
  79. package/dist/store/config.js +22 -0
  80. package/dist/store/config.js.map +1 -1
  81. package/dist/store/muted.d.ts +17 -0
  82. package/dist/store/muted.d.ts.map +1 -0
  83. package/dist/store/muted.js +55 -0
  84. package/dist/store/muted.js.map +1 -0
  85. package/dist/store/snapshot.d.ts +12 -0
  86. package/dist/store/snapshot.d.ts.map +1 -0
  87. package/dist/store/snapshot.js +41 -0
  88. package/dist/store/snapshot.js.map +1 -0
  89. package/package.json +11 -3
  90. package/src/cli/config.ts +0 -66
  91. package/src/cli/context.ts +0 -109
  92. package/src/cli/daemon.ts +0 -217
  93. package/src/cli/onboard.ts +0 -335
  94. package/src/cli/status.ts +0 -77
  95. package/src/cli/switch.ts +0 -93
  96. package/src/cli/today.ts +0 -114
  97. package/src/engine/prioritize.ts +0 -257
  98. package/src/index.ts +0 -58
  99. package/src/notifications/index.ts +0 -42
  100. package/src/sources/calendar.ts +0 -170
  101. package/src/sources/git.ts +0 -168
  102. package/src/sources/issues.ts +0 -62
  103. package/src/store/config.ts +0 -104
  104. package/tsconfig.json +0 -19
@@ -1,40 +1,152 @@
1
- function scorePR(pr, repoName) {
1
+ import { isItemMuted } from "../store/muted.js";
2
+ import { DEFAULT_WEIGHTS } from "../store/config.js";
3
+ // Label patterns → score boost (case-insensitive substring match)
4
+ const LABEL_BOOSTS = [
5
+ { pattern: "p0", boost: 15 },
6
+ { pattern: "critical", boost: 15 },
7
+ { pattern: "blocker", boost: 15 },
8
+ { pattern: "security", boost: 12 },
9
+ { pattern: "compliance", boost: 12 },
10
+ { pattern: "p1", boost: 10 },
11
+ { pattern: "bug", boost: 8 },
12
+ { pattern: "p2", boost: 4 },
13
+ { pattern: "enhancement", boost: 2 },
14
+ ];
15
+ function getLabelBoost(labels) {
16
+ let maxBoost = 0;
17
+ for (const label of labels) {
18
+ const lower = label.toLowerCase();
19
+ for (const { pattern, boost } of LABEL_BOOSTS) {
20
+ // Word-boundary match: "p1" matches "p1-important" but not "p10"
21
+ const re = new RegExp(`(^|[^a-z0-9])${pattern}($|[^a-z0-9])`);
22
+ if (re.test(lower) && boost > maxBoost) {
23
+ maxBoost = boost;
24
+ }
25
+ }
26
+ }
27
+ return maxBoost;
28
+ }
29
+ function scoreMyPR(pr, repoName) {
30
+ // Only surface if there's a review decision worth acting on
31
+ if (!pr.reviewDecision || pr.reviewDecision === "REVIEW_REQUIRED")
32
+ return null;
2
33
  let score = 0;
34
+ let reason = "";
3
35
  const details = [];
4
- // Staleness
5
- if (pr.ageDays > 14) {
6
- score += 9; // 2+ weeks = critical
7
- details.push(`open ${Math.round(pr.ageDays)} days`);
36
+ if (pr.reviewDecision === "CHANGES_REQUESTED") {
37
+ score = 28; // High — someone reviewed and wants changes
38
+ reason = "Changes requested on your PR. Respond to reviewer.";
39
+ details.push("changes requested");
8
40
  }
9
- else if (pr.ageDays > 5) {
10
- score += 7;
11
- details.push(`open ${Math.round(pr.ageDays)} days`);
41
+ else if (pr.reviewDecision === "APPROVED") {
42
+ score = 18; // Medium — ready to merge, don't let it sit
43
+ reason = "Your PR is approved. Merge it.";
44
+ details.push("approved, ready to merge");
12
45
  }
13
- else if (pr.ageDays > 2) {
14
- score += 4;
15
- details.push(`open ${Math.round(pr.ageDays)} days`);
46
+ if (pr.ciStatus === "fail") {
47
+ score += 5;
48
+ details.push("CI failing");
16
49
  }
17
- // Blocking potential
50
+ if (score === 0)
51
+ return null;
52
+ const priority = score >= 25 ? "now" : score >= 12 ? "today" : "later";
53
+ return {
54
+ priority,
55
+ score,
56
+ emoji: pr.reviewDecision === "CHANGES_REQUESTED" ? "🔴" : "🟢",
57
+ label: `Your PR #${pr.number} on ${repoName}`,
58
+ detail: `${pr.title} — ${details.join(", ")}`,
59
+ reason,
60
+ confidence: "high",
61
+ source: "pr",
62
+ suppressionReason: undefined,
63
+ };
64
+ }
65
+ function scorePR(pr, repoName) {
66
+ let score = 0;
67
+ const details = [];
68
+ const ageDaysRounded = Math.round(pr.ageDays);
69
+ // Graduated staleness — scales with age, not step-function
70
+ let agePoints = 0;
71
+ if (pr.ageDays > 2) {
72
+ agePoints = Math.min(30, Math.round(pr.ageDays * 0.6));
73
+ score += agePoints;
74
+ details.push(`open ${ageDaysRounded} days`);
75
+ }
76
+ // Blocking potential (scaled up proportionally)
77
+ const reviewPoints = pr.reviewRequested ? 15 : 0;
78
+ const ciPoints = pr.ciStatus === "fail" ? 10 : 0;
79
+ const conflictPoints = pr.hasConflicts ? 8 : 0;
18
80
  if (pr.reviewRequested) {
19
- score += 8;
81
+ score += reviewPoints;
20
82
  details.push("review requested");
21
83
  }
22
84
  if (pr.ciStatus === "fail") {
23
- score += 5;
85
+ score += ciPoints;
24
86
  details.push("CI failing");
25
87
  }
26
88
  if (pr.hasConflicts) {
27
- score += 4;
89
+ score += conflictPoints;
28
90
  details.push("has conflicts");
29
91
  }
30
- const priority = score >= 8 ? "now" : score >= 4 ? "today" : "later";
92
+ // Label-based boost (#23, #25)
93
+ const labelBoost = getLabelBoost(pr.labels ?? []);
94
+ if (labelBoost > 0) {
95
+ score += labelBoost;
96
+ details.push("priority label");
97
+ }
98
+ let reason = "Needs attention.";
99
+ if (reviewPoints > agePoints && reviewPoints >= ciPoints && reviewPoints >= conflictPoints) {
100
+ if (pr.ageDays > 5) {
101
+ reason = `Someone's waiting on your review. ${ageDaysRounded} days stale.`;
102
+ }
103
+ else {
104
+ reason = "Someone's waiting on your review.";
105
+ }
106
+ }
107
+ else if (agePoints >= reviewPoints && agePoints >= ciPoints && agePoints >= conflictPoints) {
108
+ if (pr.ageDays > 14) {
109
+ reason = `Open ${ageDaysRounded} days. Getting stale.`;
110
+ }
111
+ else {
112
+ reason = `Open ${ageDaysRounded} days.`;
113
+ }
114
+ }
115
+ else if (ciPoints >= conflictPoints) {
116
+ reason = "CI is failing. Fix or close.";
117
+ }
118
+ else if (conflictPoints > 0) {
119
+ reason = "Merge conflicts detected. Rebase or close.";
120
+ }
121
+ // Updated thresholds for wider score range
122
+ const priority = score >= 25 ? "now" : score >= 12 ? "today" : "later";
123
+ const suppressionReason = priority === "later"
124
+ ? pr.ageDays <= 2 && !pr.reviewRequested
125
+ ? "Fresh, no one's waiting"
126
+ : pr.ciStatus === "pass"
127
+ ? "On track, CI green"
128
+ : undefined
129
+ : undefined;
130
+ // Confidence: check for thin data
131
+ // Fix #22: don't say "no reviewer assigned" when reviewDecision exists
132
+ const missingContext = [];
133
+ if (pr.ciStatus === "unknown")
134
+ missingContext.push("no CI status");
135
+ if (!pr.reviewRequested && !pr.reviewDecision && pr.ageDays > 2) {
136
+ missingContext.push("no reviewer assigned");
137
+ }
138
+ const confidence = missingContext.length >= 2 ? "low" : missingContext.length === 1 ? "medium" : "high";
31
139
  return {
32
140
  priority,
33
141
  score,
34
142
  emoji: priority === "now" ? "🔴" : "🟡",
35
143
  label: `PR #${pr.number} on ${repoName}`,
36
144
  detail: `${pr.title} — ${details.join(", ")}`,
145
+ reason,
146
+ confidence,
147
+ confidenceNote: missingContext.length > 0 ? `low context: ${missingContext.join(", ")}` : undefined,
37
148
  source: "pr",
149
+ suppressionReason,
38
150
  };
39
151
  }
40
152
  function scoreRepoWork(signal) {
@@ -43,33 +155,39 @@ function scoreRepoWork(signal) {
43
155
  let score = 0;
44
156
  const details = [];
45
157
  details.push(`${signal.uncommittedFiles} uncommitted file${signal.uncommittedFiles > 1 ? "s" : ""}`);
46
- // Staleness of uncommitted work
158
+ // Staleness of uncommitted work (scaled to new range)
47
159
  const days = Math.round(signal.lastCommitAge / 24);
160
+ let reason = "Uncommitted changes detected.";
48
161
  if (signal.lastCommitAge > 72) {
49
- score += 9; // 3+ days uncommitted = NOW
162
+ score += 28; // 3+ days uncommitted = NOW
50
163
  details.push(`last commit ${days}d ago`);
164
+ reason = `Uncommitted work for ${days} days. Commit or stash.`;
51
165
  }
52
166
  else if (signal.lastCommitAge > 24) {
53
- score += 6;
167
+ score += 18; // 1-3 days = TODAY
54
168
  details.push(`last commit ${days}d ago`);
169
+ reason = `Uncommitted work for ${days} days. Commit or stash.`;
55
170
  }
56
171
  else if (signal.lastCommitAge > 4) {
57
- score += 3;
58
- details.push(`last touched ${Math.round(signal.lastCommitAge)}h ago`);
172
+ const hours = Math.round(signal.lastCommitAge);
173
+ score += 8; // 4+ hours = low TODAY
174
+ details.push(`last touched ${hours}h ago`);
175
+ reason = `Uncommitted work for ${hours} hours. Commit or stash.`;
59
176
  }
60
177
  else {
61
- score += 1;
178
+ score += 3;
62
179
  }
63
- if (score < 2)
64
- return null; // Don't surface fresh uncommitted work
65
- const priority = score >= 8 ? "now" : score >= 4 ? "today" : "later";
180
+ const priority = score >= 25 ? "now" : score >= 12 ? "today" : "later";
66
181
  return {
67
182
  priority,
68
183
  score,
69
184
  emoji: priority === "now" ? "🔴" : "🟡",
70
185
  label: `${signal.repo}`,
71
186
  detail: details.join(", "),
187
+ reason,
188
+ confidence: "high", // git signals are always concrete
72
189
  source: "git",
190
+ suppressionReason: priority === "later" ? "Recently touched, nothing stale" : undefined,
73
191
  };
74
192
  }
75
193
  function scoreCalendarEvent(event) {
@@ -77,16 +195,23 @@ function scoreCalendarEvent(event) {
77
195
  if (event.minutesUntilStart < -15)
78
196
  return null;
79
197
  let score = 0;
80
- if (event.minutesUntilStart <= 60 && event.minutesUntilStart > 0) {
81
- score += 10;
198
+ let reason = "Upcoming calendar event.";
199
+ if (event.minutesUntilStart <= 0 && event.minutesUntilStart > -15) {
200
+ score += 30; // Happening now = always NOW
201
+ reason = "Happening now.";
82
202
  }
83
- else if (event.minutesUntilStart <= 0 && event.minutesUntilStart > -15) {
84
- score += 10; // Happening now
203
+ else if (event.minutesUntilStart <= 30) {
204
+ score += 28; // <30 min = NOW
205
+ reason = `Starting in ${event.minutesUntilStart} minutes.`;
206
+ }
207
+ else if (event.minutesUntilStart <= 60) {
208
+ score += 20; // <60 min = TODAY (high)
209
+ reason = `Starting in ${event.minutesUntilStart} minutes.`;
85
210
  }
86
211
  else {
87
- score += 5;
212
+ score += 14; // >60 min = TODAY (low)
88
213
  }
89
- const priority = score >= 8 ? "now" : "today";
214
+ const priority = score >= 25 ? "now" : "today";
90
215
  let timeLabel;
91
216
  if (event.minutesUntilStart <= 0) {
92
217
  timeLabel = "happening now";
@@ -107,39 +232,59 @@ function scoreCalendarEvent(event) {
107
232
  emoji: "🔴",
108
233
  label: `Meeting: ${event.title}`,
109
234
  detail: timeLabel,
235
+ reason,
236
+ confidence: "high", // calendar events are factual
110
237
  source: "calendar",
111
238
  };
112
239
  }
113
240
  function scoreIssue(issue) {
114
241
  let score = 0;
115
242
  const details = [];
116
- if (issue.ageDays > 14) {
117
- score += 9;
118
- details.push(`open ${Math.round(issue.ageDays)} days`);
119
- }
120
- else if (issue.ageDays > 7) {
121
- score += 7;
122
- details.push(`open ${Math.round(issue.ageDays)} days`);
243
+ const ageDaysRounded = Math.round(issue.ageDays);
244
+ // Graduated staleness — same as PRs
245
+ let agePoints = 0;
246
+ if (issue.ageDays > 2) {
247
+ agePoints = Math.min(30, Math.round(issue.ageDays * 0.6));
248
+ score += agePoints;
249
+ details.push(`open ${ageDaysRounded} days`);
123
250
  }
124
- const hasPriorityLabel = issue.labels.some((label) => ["urgent", "critical", "bug"].includes(label.toLowerCase()));
125
- if (hasPriorityLabel) {
126
- score += 3;
251
+ // Label-based boost (reuses same LABEL_BOOSTS as PRs)
252
+ const labelBoost = getLabelBoost(issue.labels);
253
+ if (labelBoost > 0) {
254
+ score += labelBoost;
127
255
  details.push("priority label");
128
256
  }
129
- if (score === 0)
130
- return null;
131
- const priority = score >= 8 ? "now" : score >= 4 ? "today" : "later";
257
+ const priority = score >= 25 ? "now" : score >= 12 ? "today" : "later";
132
258
  const labels = issue.labels.length > 0 ? ` [${issue.labels.join(", ")}]` : "";
259
+ let reason = "Issue needs attention.";
260
+ if (agePoints > labelBoost && agePoints > 0) {
261
+ reason = `Open ${ageDaysRounded} days. Getting stale.`;
262
+ }
263
+ else if (labelBoost > 0) {
264
+ const topLabel = issue.labels.find((l) => getLabelBoost([l]) === labelBoost) || issue.labels[0];
265
+ reason = `Marked ${topLabel}. Needs attention.`;
266
+ }
267
+ // Confidence: issues missing labels
268
+ const issueMissing = [];
269
+ if (issue.labels.length === 0)
270
+ issueMissing.push("no labels");
271
+ const issueConfidence = issueMissing.length > 0 ? "medium" : "high";
133
272
  return {
134
273
  priority,
135
274
  score,
136
275
  emoji: "📋",
137
276
  label: `Issue #${issue.number} on ${issue.repo}`,
138
277
  detail: `${issue.title}${labels}${details.length > 0 ? ` — ${details.join(", ")}` : ""}`,
278
+ reason,
279
+ confidence: issueConfidence,
280
+ confidenceNote: issueMissing.length > 0 ? `low context: ${issueMissing.join(", ")}` : undefined,
139
281
  source: "issue",
282
+ suppressionReason: priority === "later" && issue.ageDays < 7 && labelBoost === 0
283
+ ? "Less than a week old, no priority label"
284
+ : undefined,
140
285
  };
141
286
  }
142
- export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
287
+ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues, weights = DEFAULT_WEIGHTS) {
143
288
  const allItems = [];
144
289
  // Score calendar events
145
290
  for (const event of calendarEvents) {
@@ -150,20 +295,56 @@ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
150
295
  // Score git repos
151
296
  for (const signal of gitSignals) {
152
297
  // Score uncommitted work
153
- const repoItem = scoreRepoWork(signal);
298
+ const gitItemId = `git:${signal.repo}`;
299
+ const repoItem = isItemMuted(gitItemId) ? null : scoreRepoWork(signal);
154
300
  if (repoItem)
155
301
  allItems.push(repoItem);
156
- // Score PRs
302
+ // Score PRs (in the repo)
157
303
  for (const pr of signal.openPRs) {
304
+ const prItemId = `pr:${signal.repo}#${pr.number}`;
305
+ if (isItemMuted(prItemId))
306
+ continue;
158
307
  allItems.push(scorePR(pr, signal.repo));
159
308
  }
309
+ // Score my PRs with inbound reviews
310
+ for (const pr of signal.myPRs) {
311
+ // Skip if already scored as an open PR (dedup)
312
+ const prItemId = `mypr:${signal.repo}#${pr.number}`;
313
+ const alreadyScored = signal.openPRs.some((p) => p.number === pr.number);
314
+ if (alreadyScored || isItemMuted(prItemId))
315
+ continue;
316
+ const scored = scoreMyPR(pr, signal.repo);
317
+ if (scored)
318
+ allItems.push(scored);
319
+ }
160
320
  }
161
321
  // Score issues
162
322
  for (const issue of issues) {
323
+ const issueItemId = `issue:${issue.repo}#${issue.number}`;
324
+ if (isItemMuted(issueItemId))
325
+ continue;
163
326
  const scored = scoreIssue(issue);
164
327
  if (scored)
165
328
  allItems.push(scored);
166
329
  }
330
+ // Apply weight multipliers based on source type
331
+ for (const item of allItems) {
332
+ if (item.source === "git") {
333
+ item.score = Math.round(item.score * weights.staleness);
334
+ }
335
+ else if (item.source === "pr") {
336
+ // PRs have both staleness and blocking components — use the higher weight
337
+ item.score = Math.round(item.score * Math.max(weights.staleness, weights.blocking));
338
+ }
339
+ else if (item.source === "calendar") {
340
+ item.score = Math.round(item.score * weights.timePressure);
341
+ }
342
+ else if (item.source === "issue") {
343
+ item.score = Math.round(item.score * weights.staleness);
344
+ }
345
+ // Recalculate priority tier after weight adjustment
346
+ item.priority = item.score >= 25 ? "now" : item.score >= 12 ? "today" : "later";
347
+ }
167
348
  // Sort by score descending
168
349
  allItems.sort((a, b) => b.score - a.score);
169
350
  // Cap output: max 3 NOW items, max 5 TODAY items. Rest goes to later.
@@ -173,8 +354,17 @@ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
173
354
  const now = allNow.slice(0, 3);
174
355
  const todayOverflow = allNow.slice(3);
175
356
  const today = [...todayOverflow, ...allToday].slice(0, 5);
176
- const laterCount = allLater.length +
177
- Math.max(0, todayOverflow.length + allToday.length - 5);
357
+ const capped = [...todayOverflow, ...allToday].slice(5);
358
+ const ignored = [
359
+ ...allLater.map((item) => ({
360
+ label: item.label,
361
+ reason: item.suppressionReason ?? "Lower priority than your top items",
362
+ })),
363
+ ...capped.map((item) => ({
364
+ label: item.label,
365
+ reason: "Lower priority than your top items",
366
+ })),
367
+ ];
178
368
  // Generate suggestions
179
369
  const suggestions = [];
180
370
  if (freeBlocks.length > 0) {
@@ -199,6 +389,15 @@ export function prioritize(gitSignals, calendarEvents, freeBlocks, issues) {
199
389
  suggestions.push(`${durationStr} free block available (${blockStart}–${blockEnd})`);
200
390
  }
201
391
  }
202
- return { now, today, laterCount, freeBlocks, suggestions };
392
+ return {
393
+ now,
394
+ today,
395
+ ignored,
396
+ get laterCount() {
397
+ return this.ignored.length;
398
+ },
399
+ freeBlocks,
400
+ suggestions,
401
+ };
203
402
  }
204
403
  //# 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,25 @@ 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";
16
+ import { cleanCommand } from "./cli/clean.js";
17
+ import { diffCommand } from "./cli/diff.js";
10
18
  const program = new Command();
11
19
  program
12
20
  .name("scope")
13
21
  .description("Personal ops CLI — focus on what matters.")
14
- .version("0.1.0");
22
+ .version("0.2.0");
23
+ program
24
+ .command("init")
25
+ .description("Initialize Scope (create ~/.scope/ and config)")
26
+ .action(initCommand);
15
27
  program
16
28
  .command("today")
17
29
  .description("What needs your attention right now")
@@ -37,12 +49,56 @@ program
37
49
  .option("--json", "Output as JSON")
38
50
  .action(statusCommand);
39
51
  program
40
- .command("config [key] [value]")
41
- .description("View or edit configuration")
42
- .action(configCommand);
52
+ .command("review")
53
+ .description("End-of-day summary what got done, what's carrying over")
54
+ .option("--json", "Output as JSON")
55
+ .action(reviewCommand);
56
+ // Config subcommands (repos, calendar, github, projects)
57
+ registerConfigCommand(program);
43
58
  program
44
59
  .command("daemon <action>")
45
60
  .description("Manage background signal checks (start|stop|status)")
46
61
  .action(daemonCommand);
62
+ program
63
+ .command("notifications")
64
+ .description("View recent notifications")
65
+ .option("--clear", "Clear all notifications")
66
+ .option("--all", "Show all notifications (not just last 24h)")
67
+ .action(notificationsCommand);
68
+ program
69
+ .command("snooze <item>")
70
+ .description("Snooze an item until a future date")
71
+ .requiredOption("--until <date>", "Until date: tomorrow, monday..sunday, 3d, 1w, or YYYY-MM-DD")
72
+ .action(snoozeCommand);
73
+ program
74
+ .command("mute [item]")
75
+ .description("Mute an item permanently, list mutes, or clear an item")
76
+ .option("--list", "Show muted and snoozed items")
77
+ .option("--clear <item-id>", "Remove an item from muted/snoozed")
78
+ .action(muteCommand);
79
+ program
80
+ .command("tune [key] [value]")
81
+ .description("View or adjust scoring weights")
82
+ .option("--show", "Display current weights")
83
+ .option("--reset", "Reset weights to defaults")
84
+ .option("--config", "Open config in $EDITOR")
85
+ .action(tuneCommand);
86
+ program
87
+ .command("clean")
88
+ .description("Suggest stale branch cleanup across repos")
89
+ .option("--json", "Output as JSON")
90
+ .option("--dry", "List only, no cleanup suggestions")
91
+ .action(cleanCommand);
92
+ program
93
+ .command("diff")
94
+ .description("Show what changed since this morning's snapshot")
95
+ .option("--json", "Output as JSON")
96
+ .action(diffCommand);
97
+ program
98
+ .command("plan")
99
+ .description("Weekly planning view")
100
+ .option("--no-calendar", "Skip calendar data")
101
+ .option("--json", "Output as JSON")
102
+ .action(planCommand);
47
103
  program.parse();
48
104
  //# 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=git.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.test.d.ts","sourceRoot":"","sources":["../../../src/sources/__tests__/git.test.ts"],"names":[],"mappings":""}