daily-focus 1.2.0-dev.5 → 1.2.0-dev.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/README.md +12 -11
- package/SETUP.md +9 -6
- package/dist/{audit-ITRXIX6T.js → audit-DNTFZOHH.js} +6 -5
- package/dist/{chunk-AIQO2YAI.js → chunk-6SMUSPZG.js} +2 -2
- package/dist/{chunk-26JG3D5C.js → chunk-GQ3NCWRT.js} +113 -272
- package/dist/{chunk-RNE27FQY.js → chunk-KZNY45XW.js} +0 -5
- package/dist/{chunk-UY6HQLGE.js → chunk-P3E2B2SD.js} +1 -1
- package/dist/cli.js +6 -6
- package/dist/{demo-KVFAVGO7.js → demo-6Q22AAC7.js} +33 -24
- package/dist/{init-57WHZZNG.js → init-XDMAXU2S.js} +1 -9
- package/dist/{seed-VALN2TCQ.js → seed-TWT7EDXJ.js} +3 -3
- package/dist/{server-SOCS3SZJ.js → server-PIYOIUKJ.js} +336 -251
- package/dist/{service-NAAAV67B.js → service-ZUHI3VKH.js} +1 -1
- package/package.json +1 -1
- package/prompts/README.md +2 -3
- package/prompts/morning-brief-personal.md +1 -25
- package/prompts/morning-brief-work.md +8 -33
- package/public/app.js +175 -345
- package/public/style.css +12 -170
package/package.json
CHANGED
package/prompts/README.md
CHANGED
|
@@ -37,7 +37,6 @@ alongside `items.schema.json`, so a run only ever names a path inside the store:
|
|
|
37
37
|
settings.json the dashboard writes: what you set on its settings page
|
|
38
38
|
items.json the agent writes it
|
|
39
39
|
actions.jsonl the dashboard appends
|
|
40
|
-
sessions.jsonl the dashboard appends
|
|
41
40
|
agent.jsonl the dashboard appends: every run, its report, and the questions asked of it
|
|
42
41
|
archive/ the dashboard writes
|
|
43
42
|
prs.json the dashboard writes: its last fetch of the user's open pull requests
|
|
@@ -93,8 +92,8 @@ works inside the store. Coding agents can read the implementation and tests, so
|
|
|
93
92
|
| `~/.daily-focus/sources.md` | Which calendars, account and recurring documents are yours. Not in this repo, for the same reason: it's the half of the brief that names real things. |
|
|
94
93
|
|
|
95
94
|
When code changes what the briefing agent must produce or understand, update the
|
|
96
|
-
prompt too. The tests check field names, required fields
|
|
97
|
-
|
|
95
|
+
prompt too. The tests check field names, required fields and enum values. Review
|
|
96
|
+
changes to judgement rules directly.
|
|
98
97
|
|
|
99
98
|
## Why the personal specifics live outside the repo
|
|
100
99
|
|
|
@@ -16,8 +16,6 @@ not for you.
|
|
|
16
16
|
- `focus.md` — **you only ever read this.** The standing personal objective, written
|
|
17
17
|
by hand. It decides what "important" means. It may be missing or have a blank
|
|
18
18
|
`objective`; both are normal.
|
|
19
|
-
- `sessions.jsonl` — **you only ever read this.** One line per focus session: what
|
|
20
|
-
they actually spent time on, as opposed to what they finished.
|
|
21
19
|
- `sources.md` — **you only ever read this.** The personal specifics this prompt
|
|
22
20
|
deliberately doesn't carry: who the user is, which calendars to query, which email
|
|
23
21
|
account, which reminder lists, how to reach Messages and e-Boks, which GitHub login
|
|
@@ -73,6 +71,7 @@ by `id` and take the **last** entry for each id:
|
|
|
73
71
|
| `snooze` | Not today | Leave it out until `until` (a `YYYY-MM-DD`) has arrived. If `until` is absent, use your judgement about when it's worth resurfacing. |
|
|
74
72
|
| `reopen` | They undid a previous action | Treat as though nothing had been recorded — it is live again. |
|
|
75
73
|
| `note` | Free text for you; **does not** change status | Read it. It usually explains *why*, and often tells you something the sources can't. |
|
|
74
|
+
| `nudge` | The user asked a pull request's reviewers for a review, somewhere you can't see (Slack, in person); **does not** change status | Treat the review as asked for at `at`. Don't suggest asking again until a day after it. |
|
|
76
75
|
|
|
77
76
|
**This is the most important instruction in this prompt.** A `done` in the log
|
|
78
77
|
outranks everything you can observe upstream. If the log says the user handled an
|
|
@@ -81,29 +80,6 @@ unread, even if the sender is still sending reminders. They may have replied by
|
|
|
81
80
|
phone, in person, or in another channel. Absence of upstream evidence is not evidence
|
|
82
81
|
of inaction. Never re-derive a completed item from source state.
|
|
83
82
|
|
|
84
|
-
**Read `sessions.jsonl`.** It records what the user worked on, which `actions.jsonl`
|
|
85
|
-
cannot tell you. Use it:
|
|
86
|
-
|
|
87
|
-
- Time spent on something unfinished is progress. Don't re-raise it tomorrow in
|
|
88
|
-
identical words as though the day never happened; acknowledge it in `detail`.
|
|
89
|
-
- The same item across several days with no completion means stuck. Say so plainly,
|
|
90
|
-
and consider whether the item is too big or the real blocker is elsewhere.
|
|
91
|
-
- An item the user has never once started, while finishing things around it, is being
|
|
92
|
-
avoided. Name it gently, once — not every day.
|
|
93
|
-
|
|
94
|
-
`actualMinutes` is real elapsed time rather than the plan, and `endedBy` says how far
|
|
95
|
-
to trust it:
|
|
96
|
-
|
|
97
|
-
| `endedBy` | How it ended | What the number is worth |
|
|
98
|
-
|---|---|---|
|
|
99
|
-
| `user` | They pressed Stop. | Exact. |
|
|
100
|
-
| `away` | The machine sat untouched, so the dashboard closed the session back at the last keypress. | Honest to within a minute. The break is already excluded — don't subtract for it twice. |
|
|
101
|
-
| `limit` | It outran a two-hour ceiling on a machine that couldn't say whether anyone was there. | An upper bound, not a measurement. **Never cite it as a long focused stretch.** |
|
|
102
|
-
|
|
103
|
-
A session that ended `away` was interrupted, not abandoned. `endedBy` is absent on
|
|
104
|
-
sessions recorded before it was tracked — treat those as `user`, but don't lean on the
|
|
105
|
-
duration.
|
|
106
|
-
|
|
107
83
|
**Read the previous `items.json`** and keep each surviving item's `firstSeen`. If an
|
|
108
84
|
item you are raising today also appeared yesterday under the same `id`, carry its
|
|
109
85
|
original `firstSeen` across verbatim. Only assign `firstSeen` = today to genuinely
|
|
@@ -15,8 +15,6 @@ not for you.
|
|
|
15
15
|
- `focus.md` — **you only ever read this.** The standing objective, written by hand.
|
|
16
16
|
It decides what "important" means. It may be missing or have a blank `objective`;
|
|
17
17
|
both are normal.
|
|
18
|
-
- `sessions.jsonl` — **you only ever read this.** One line per focus session: what
|
|
19
|
-
they actually spent time on, as opposed to what they finished.
|
|
20
18
|
- `sources.md` — **you only ever read this.** The personal specifics this prompt
|
|
21
19
|
deliberately doesn't carry: who the user is, which calendars to query, which
|
|
22
20
|
accounts to judge review requests and authorship against, which recurring documents
|
|
@@ -36,11 +34,13 @@ knows how long it has been since the objective moved.
|
|
|
36
34
|
- `tickets.json` — **you only ever read this.** The dashboard's own cache of the Jira
|
|
37
35
|
tickets whose status doesn't match their pull requests, refreshed while the
|
|
38
36
|
dashboard is in use. Facts only: each entry's `workflowStatus`, its
|
|
39
|
-
`statusCategory`, and whether
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
`statusCategory`, and whether it has any pull request (`hasAnyPr`) and any still
|
|
38
|
+
open (`hasOpenPr`). Those come from Jira, or from GitHub where Jira hasn't caught
|
|
39
|
+
up yet (`fromGitHub`, with the pull requests in `pulls`), so trust them over
|
|
40
|
+
Jira's own development panel. The dashboard shows this list on a tab of its own
|
|
41
|
+
and the user fixes the statuses there, **so do not copy it into the brief** — see
|
|
42
|
+
the Jira section of step 2. Use it if it helps, never write it, and never treat
|
|
43
|
+
its absence as meaning anything.
|
|
44
44
|
|
|
45
45
|
Work through the five steps below in order. Do not start gathering before step 1 is
|
|
46
46
|
done — what you find in step 1 changes what counts as worth raising.
|
|
@@ -84,6 +84,7 @@ by `id` and take the **last** entry for each id:
|
|
|
84
84
|
| `snooze` | Not today | Leave it out until `until` (a `YYYY-MM-DD`) has arrived. If `until` is absent, use your judgement about when it's worth resurfacing. |
|
|
85
85
|
| `reopen` | They undid a previous action | Treat as though nothing had been recorded — it is live again. |
|
|
86
86
|
| `note` | Free text for you; **does not** change status | Read it. It usually explains *why*, and often tells you something the sources can't. |
|
|
87
|
+
| `nudge` | The user asked a pull request's reviewers for a review, somewhere you can't see (Slack, in person); **does not** change status | Treat the review as asked for at `at`. Don't suggest asking again until a day after it. |
|
|
87
88
|
|
|
88
89
|
**This is the most important instruction in this prompt.** A `done` in the log
|
|
89
90
|
outranks everything you can observe upstream. If the log says the user handled a Gmail
|
|
@@ -92,32 +93,6 @@ unread, even if Workday is still sending reminders about it. They may have repli
|
|
|
92
93
|
phone, in person, or in another channel. Absence of upstream evidence is not evidence
|
|
93
94
|
of inaction. Never re-derive a completed item from source state.
|
|
94
95
|
|
|
95
|
-
**Read `sessions.jsonl`.** It records what the user worked on, which `actions.jsonl`
|
|
96
|
-
cannot tell you — a hard blocker can absorb days with nothing to mark done. Use it:
|
|
97
|
-
|
|
98
|
-
- Time spent on something unfinished is progress. Don't re-raise it tomorrow in
|
|
99
|
-
identical words as though the day never happened; acknowledge it in `detail`.
|
|
100
|
-
- The same item across several days with no completion means stuck. Say so plainly,
|
|
101
|
-
and consider whether the item is too big or the real blocker is elsewhere.
|
|
102
|
-
- No sessions against the objective for days running is the loudest thing in the
|
|
103
|
-
store. Lead with it.
|
|
104
|
-
- An item the user has never once started, while finishing things around it, is being
|
|
105
|
-
avoided. Name it gently, once — not every day.
|
|
106
|
-
|
|
107
|
-
`actualMinutes` is real elapsed time rather than the plan, and `endedBy` says how far
|
|
108
|
-
to trust it:
|
|
109
|
-
|
|
110
|
-
| `endedBy` | How it ended | What the number is worth |
|
|
111
|
-
|---|---|---|
|
|
112
|
-
| `user` | They pressed Stop. | Exact. |
|
|
113
|
-
| `away` | The machine sat untouched, so the dashboard closed the session back at the last keypress. | Honest to within a minute. The break is already excluded — don't subtract for it twice. |
|
|
114
|
-
| `limit` | It outran a two-hour ceiling on a machine that couldn't say whether anyone was there. | An upper bound, not a measurement. **Never cite it as a long focused stretch.** |
|
|
115
|
-
|
|
116
|
-
A session that ended `away` was interrupted, not abandoned: they left the desk, they
|
|
117
|
-
didn't give up on the item. Don't read it as a false start. `endedBy` is absent on
|
|
118
|
-
sessions recorded before it was tracked — treat those as `user`, but don't lean on the
|
|
119
|
-
duration.
|
|
120
|
-
|
|
121
96
|
**Read the previous `items.json`** and keep each surviving item's `firstSeen`. If an
|
|
122
97
|
item you are raising today also appeared yesterday under the same `id`, carry its
|
|
123
98
|
original `firstSeen` across verbatim. Only assign `firstSeen` = today to genuinely
|