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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-RNE27FQY.js";
3
+ } from "./chunk-KZNY45XW.js";
4
4
  import {
5
5
  IN_NPX_CACHE,
6
6
  PACKAGED,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "daily-focus",
3
- "version": "1.2.0-dev.5",
3
+ "version": "1.2.0-dev.8",
4
4
  "description": "An interactive dashboard of what you should focus on today at work",
5
5
  "keywords": [
6
6
  "dashboard",
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, enum values, and session
97
- end reasons. Review changes to judgement rules directly.
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 Jira has any pull request for it (`hasAnyPr`) and any
40
- still open (`hasOpenPr`). The dashboard shows this list on a tab of its own and the
41
- user fixes the statuses there, **so do not copy it into the brief** — see the Jira
42
- section of step 2. Use it if it helps, never write it, and never treat its absence
43
- as meaning anything.
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