@masslessai/push-todo 3.5.6 → 3.5.8
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/SKILL.md +10 -1
- package/lib/daemon.js +13 -4
- package/package.json +1 -1
package/SKILL.md
CHANGED
|
@@ -36,7 +36,16 @@ When this command is invoked:
|
|
|
36
36
|
|
|
37
37
|
5. Ask which task the user wants to work on
|
|
38
38
|
|
|
39
|
-
6.
|
|
39
|
+
6. **Check for resumable daemon sessions first:**
|
|
40
|
+
- If the task output contains `**Session:** Resumable`, the daemon already ran Claude Code on this task
|
|
41
|
+
- Do NOT start working from scratch — the daemon's session has full context (files read, edits made, decisions)
|
|
42
|
+
- Instead, tell the user:
|
|
43
|
+
1. The daemon already worked on this task (show the execution summary if available)
|
|
44
|
+
2. To continue where the daemon left off, run in a **new terminal**: `push-todo resume <number>`
|
|
45
|
+
3. This resumes the exact Claude Code conversation with full history
|
|
46
|
+
- Only if the user explicitly says they want to start fresh should you begin new work
|
|
47
|
+
|
|
48
|
+
7. If no resumable session exists, begin working on the task normally
|
|
40
49
|
|
|
41
50
|
## Review Mode
|
|
42
51
|
|
package/lib/daemon.js
CHANGED
|
@@ -1006,14 +1006,23 @@ function handleTaskCompletion(displayNumber, exitCode) {
|
|
|
1006
1006
|
log(`Task #${displayNumber} could not extract session_id`);
|
|
1007
1007
|
}
|
|
1008
1008
|
|
|
1009
|
+
// Auto-create PR first so we can include it in the summary
|
|
1010
|
+
const prUrl = createPRForTask(displayNumber, summary, projectPath);
|
|
1011
|
+
|
|
1012
|
+
// Build execution summary for Supabase (shown in iOS timeline)
|
|
1013
|
+
const durationStr = duration < 60 ? `${duration}s` : `${Math.floor(duration / 60)}m ${duration % 60}s`;
|
|
1014
|
+
const machineName = getMachineName() || 'Mac';
|
|
1015
|
+
let executionSummary = `Ran for ${durationStr} on ${machineName}.`;
|
|
1016
|
+
if (prUrl) {
|
|
1017
|
+
executionSummary += ` PR: ${prUrl}`;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1009
1020
|
updateTaskStatus(displayNumber, 'completed', {
|
|
1010
1021
|
duration,
|
|
1011
|
-
sessionId
|
|
1022
|
+
sessionId,
|
|
1023
|
+
summary: executionSummary
|
|
1012
1024
|
});
|
|
1013
1025
|
|
|
1014
|
-
// Auto-create PR
|
|
1015
|
-
const prUrl = createPRForTask(displayNumber, summary, projectPath);
|
|
1016
|
-
|
|
1017
1026
|
if (NOTIFY_ON_COMPLETE) {
|
|
1018
1027
|
const prNote = prUrl ? ' PR ready for review.' : '';
|
|
1019
1028
|
sendMacNotification(
|