@knpkv/jira-clockify 1.2.1 → 1.4.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 (243) hide show
  1. package/README.md +254 -3
  2. package/dist/package.json +36 -12
  3. package/dist/src/agent/agentSettings.d.ts +18 -0
  4. package/dist/src/agent/agentSettings.d.ts.map +1 -0
  5. package/dist/src/agent/agentSettings.js +23 -0
  6. package/dist/src/agent/agentSettings.js.map +1 -0
  7. package/dist/src/agent/schedule.d.ts +20 -0
  8. package/dist/src/agent/schedule.d.ts.map +1 -0
  9. package/dist/src/agent/schedule.js +189 -0
  10. package/dist/src/agent/schedule.js.map +1 -0
  11. package/dist/src/agent/sessions.d.ts +427 -0
  12. package/dist/src/agent/sessions.d.ts.map +1 -0
  13. package/dist/src/agent/sessions.js +868 -0
  14. package/dist/src/agent/sessions.js.map +1 -0
  15. package/dist/src/agent/sourceConsumption.d.ts +79 -0
  16. package/dist/src/agent/sourceConsumption.d.ts.map +1 -0
  17. package/dist/src/agent/sourceConsumption.js +191 -0
  18. package/dist/src/agent/sourceConsumption.js.map +1 -0
  19. package/dist/src/agent/watch.d.ts +76 -0
  20. package/dist/src/agent/watch.d.ts.map +1 -0
  21. package/dist/src/agent/watch.js +45 -0
  22. package/dist/src/agent/watch.js.map +1 -0
  23. package/dist/src/agent/writePlanning.d.ts +154 -0
  24. package/dist/src/agent/writePlanning.d.ts.map +1 -0
  25. package/dist/src/agent/writePlanning.js +210 -0
  26. package/dist/src/agent/writePlanning.js.map +1 -0
  27. package/dist/src/bin.d.ts +3 -0
  28. package/dist/src/bin.d.ts.map +1 -0
  29. package/dist/src/bin.js +9 -3
  30. package/dist/src/bin.js.map +1 -1
  31. package/dist/src/cli/agentWrite.d.ts +164 -0
  32. package/dist/src/cli/agentWrite.d.ts.map +1 -0
  33. package/dist/src/cli/agentWrite.js +362 -0
  34. package/dist/src/cli/agentWrite.js.map +1 -0
  35. package/dist/src/cli/auth.d.ts +8 -0
  36. package/dist/src/cli/auth.d.ts.map +1 -0
  37. package/dist/src/cli/auth.js +10 -10
  38. package/dist/src/cli/auth.js.map +1 -1
  39. package/dist/src/cli/calendar.d.ts +42 -0
  40. package/dist/src/cli/calendar.d.ts.map +1 -0
  41. package/dist/src/cli/calendar.js +189 -0
  42. package/dist/src/cli/calendar.js.map +1 -0
  43. package/dist/src/cli/config.d.ts +12 -0
  44. package/dist/src/cli/config.d.ts.map +1 -0
  45. package/dist/src/cli/config.js +163 -21
  46. package/dist/src/cli/config.js.map +1 -1
  47. package/dist/src/cli/fetchTicket.d.ts +51 -0
  48. package/dist/src/cli/fetchTicket.d.ts.map +1 -0
  49. package/dist/src/cli/fetchTicket.js +18 -2
  50. package/dist/src/cli/fetchTicket.js.map +1 -1
  51. package/dist/src/cli/fuzzySelect.d.ts +24 -0
  52. package/dist/src/cli/fuzzySelect.d.ts.map +1 -0
  53. package/dist/src/cli/layers.d.ts +40 -0
  54. package/dist/src/cli/layers.d.ts.map +1 -0
  55. package/dist/src/cli/layers.js +56 -12
  56. package/dist/src/cli/layers.js.map +1 -1
  57. package/dist/src/cli/list.d.ts +8 -0
  58. package/dist/src/cli/list.d.ts.map +1 -0
  59. package/dist/src/cli/list.js +2 -2
  60. package/dist/src/cli/list.js.map +1 -1
  61. package/dist/src/cli/reconcile.d.ts +129 -0
  62. package/dist/src/cli/reconcile.d.ts.map +1 -0
  63. package/dist/src/cli/reconcile.js +635 -46
  64. package/dist/src/cli/reconcile.js.map +1 -1
  65. package/dist/src/cli/root.d.ts +15 -0
  66. package/dist/src/cli/root.d.ts.map +1 -0
  67. package/dist/src/cli/root.js +4 -3
  68. package/dist/src/cli/root.js.map +1 -1
  69. package/dist/src/cli/runtimeFailure.d.ts +10 -0
  70. package/dist/src/cli/runtimeFailure.d.ts.map +1 -0
  71. package/dist/src/cli/runtimeFailure.js +17 -0
  72. package/dist/src/cli/runtimeFailure.js.map +1 -0
  73. package/dist/src/cli/setup.d.ts +10 -0
  74. package/dist/src/cli/setup.d.ts.map +1 -0
  75. package/dist/src/cli/setup.js +7 -7
  76. package/dist/src/cli/setup.js.map +1 -1
  77. package/dist/src/cli/timer/discard.d.ts +4 -0
  78. package/dist/src/cli/timer/discard.d.ts.map +1 -0
  79. package/dist/src/cli/timer/discard.js +2 -2
  80. package/dist/src/cli/timer/discard.js.map +1 -1
  81. package/dist/src/cli/timer/edit.d.ts +22 -0
  82. package/dist/src/cli/timer/edit.d.ts.map +1 -0
  83. package/dist/src/cli/timer/edit.js +62 -42
  84. package/dist/src/cli/timer/edit.js.map +1 -1
  85. package/dist/src/cli/timer/index.d.ts +12 -0
  86. package/dist/src/cli/timer/index.d.ts.map +1 -0
  87. package/dist/src/cli/timer/log.d.ts +16 -0
  88. package/dist/src/cli/timer/log.d.ts.map +1 -0
  89. package/dist/src/cli/timer/log.js +6 -6
  90. package/dist/src/cli/timer/log.js.map +1 -1
  91. package/dist/src/cli/timer/start.d.ts +21 -0
  92. package/dist/src/cli/timer/start.d.ts.map +1 -0
  93. package/dist/src/cli/timer/start.js +9 -9
  94. package/dist/src/cli/timer/start.js.map +1 -1
  95. package/dist/src/cli/timer/status.d.ts +22 -0
  96. package/dist/src/cli/timer/status.d.ts.map +1 -0
  97. package/dist/src/cli/timer/status.js +110 -71
  98. package/dist/src/cli/timer/status.js.map +1 -1
  99. package/dist/src/cli/timer/stop.d.ts +48 -0
  100. package/dist/src/cli/timer/stop.d.ts.map +1 -0
  101. package/dist/src/cli/timer/stop.js +19 -19
  102. package/dist/src/cli/timer/stop.js.map +1 -1
  103. package/dist/src/cli/timer.d.ts +11 -0
  104. package/dist/src/cli/timer.d.ts.map +1 -0
  105. package/dist/src/cli/timer.js +1 -1
  106. package/dist/src/cli/timer.js.map +1 -1
  107. package/dist/src/cli/watch.d.ts +54 -0
  108. package/dist/src/cli/watch.d.ts.map +1 -0
  109. package/dist/src/cli/watch.js +412 -0
  110. package/dist/src/cli/watch.js.map +1 -0
  111. package/dist/src/cli/watchLease.d.ts +99 -0
  112. package/dist/src/cli/watchLease.d.ts.map +1 -0
  113. package/dist/src/cli/watchLease.js +204 -0
  114. package/dist/src/cli/watchLease.js.map +1 -0
  115. package/dist/src/cli/writerGuard.d.ts +37 -0
  116. package/dist/src/cli/writerGuard.d.ts.map +1 -0
  117. package/dist/src/cli/writerGuard.js +92 -0
  118. package/dist/src/cli/writerGuard.js.map +1 -0
  119. package/dist/src/index.d.ts +46 -0
  120. package/dist/src/index.d.ts.map +1 -0
  121. package/dist/src/index.js +46 -0
  122. package/dist/src/index.js.map +1 -0
  123. package/dist/src/main.d.ts +4 -0
  124. package/dist/src/main.d.ts.map +1 -0
  125. package/dist/src/services/AgentSessionReader.d.ts +121 -0
  126. package/dist/src/services/AgentSessionReader.d.ts.map +1 -0
  127. package/dist/src/services/AgentSessionReader.js +392 -0
  128. package/dist/src/services/AgentSessionReader.js.map +1 -0
  129. package/dist/src/services/ClockifyAuth.d.ts +47 -0
  130. package/dist/src/services/ClockifyAuth.d.ts.map +1 -0
  131. package/dist/src/services/ClockifyAuth.js +2 -2
  132. package/dist/src/services/ClockifyAuth.js.map +1 -1
  133. package/dist/src/services/CodexTranscript.d.ts +112 -0
  134. package/dist/src/services/CodexTranscript.d.ts.map +1 -0
  135. package/dist/src/services/CodexTranscript.js +96 -0
  136. package/dist/src/services/CodexTranscript.js.map +1 -0
  137. package/dist/src/services/ConfigService.d.ts +99 -0
  138. package/dist/src/services/ConfigService.d.ts.map +1 -0
  139. package/dist/src/services/ConfigService.js +79 -7
  140. package/dist/src/services/ConfigService.js.map +1 -1
  141. package/dist/src/services/HomeDirectory.d.ts +17 -0
  142. package/dist/src/services/HomeDirectory.d.ts.map +1 -0
  143. package/dist/src/services/HomeDirectory.js +1 -1
  144. package/dist/src/services/IssueFacts.d.ts +127 -0
  145. package/dist/src/services/IssueFacts.d.ts.map +1 -0
  146. package/dist/src/services/IssueFacts.js +277 -0
  147. package/dist/src/services/IssueFacts.js.map +1 -0
  148. package/dist/src/services/ProviderDeletion.d.ts +19 -0
  149. package/dist/src/services/ProviderDeletion.d.ts.map +1 -0
  150. package/dist/src/services/ProviderDeletion.js +37 -0
  151. package/dist/src/services/ProviderDeletion.js.map +1 -0
  152. package/dist/src/services/ReconcileService.d.ts +378 -0
  153. package/dist/src/services/ReconcileService.d.ts.map +1 -0
  154. package/dist/src/services/ReconcileService.js +1270 -79
  155. package/dist/src/services/ReconcileService.js.map +1 -1
  156. package/dist/src/services/SavedEntries.d.ts +40 -0
  157. package/dist/src/services/SavedEntries.d.ts.map +1 -0
  158. package/dist/src/services/SavedEntries.js +209 -0
  159. package/dist/src/services/SavedEntries.js.map +1 -0
  160. package/dist/src/services/SessionAttributor.d.ts +114 -0
  161. package/dist/src/services/SessionAttributor.d.ts.map +1 -0
  162. package/dist/src/services/SessionAttributor.js +240 -0
  163. package/dist/src/services/SessionAttributor.js.map +1 -0
  164. package/dist/src/services/SourceLedger.d.ts +104 -0
  165. package/dist/src/services/SourceLedger.d.ts.map +1 -0
  166. package/dist/src/services/SourceLedger.js +302 -0
  167. package/dist/src/services/SourceLedger.js.map +1 -0
  168. package/dist/src/services/StateWriter.d.ts +39 -0
  169. package/dist/src/services/StateWriter.d.ts.map +1 -0
  170. package/dist/src/services/TicketService.d.ts +63 -0
  171. package/dist/src/services/TicketService.d.ts.map +1 -0
  172. package/dist/src/services/TimerService.d.ts +145 -0
  173. package/dist/src/services/TimerService.d.ts.map +1 -0
  174. package/dist/src/services/TimerService.js +113 -80
  175. package/dist/src/services/TimerService.js.map +1 -1
  176. package/dist/src/services/internal/JiraWorklogPost.d.ts +7 -0
  177. package/dist/src/services/internal/JiraWorklogPost.d.ts.map +1 -0
  178. package/dist/src/services/internal/JiraWorklogPost.js +32 -0
  179. package/dist/src/services/internal/JiraWorklogPost.js.map +1 -0
  180. package/dist/src/testing/fakeHeadless.d.ts +318 -0
  181. package/dist/src/testing/fakeHeadless.d.ts.map +1 -0
  182. package/dist/src/testing/fakeHeadless.js +1149 -0
  183. package/dist/src/testing/fakeHeadless.js.map +1 -0
  184. package/dist/src/tui/App.d.ts +6 -0
  185. package/dist/src/tui/App.d.ts.map +1 -0
  186. package/dist/src/tui/App.js +1 -1
  187. package/dist/src/tui/App.js.map +1 -1
  188. package/dist/src/tui/atoms/runtime.d.ts +8 -0
  189. package/dist/src/tui/atoms/runtime.d.ts.map +1 -0
  190. package/dist/src/tui/atoms/runtime.js +1 -1
  191. package/dist/src/tui/atoms/runtime.js.map +1 -1
  192. package/dist/src/tui/atoms/tickets.d.ts +3 -0
  193. package/dist/src/tui/atoms/tickets.d.ts.map +1 -0
  194. package/dist/src/tui/atoms/timer.d.ts +11 -0
  195. package/dist/src/tui/atoms/timer.d.ts.map +1 -0
  196. package/dist/src/tui/atoms/timer.js +1 -1
  197. package/dist/src/tui/atoms/timer.js.map +1 -1
  198. package/dist/src/tui/atoms/ui.d.ts +11 -0
  199. package/dist/src/tui/atoms/ui.d.ts.map +1 -0
  200. package/dist/src/tui/atoms/ui.js +1 -1
  201. package/dist/src/tui/atoms/ui.js.map +1 -1
  202. package/dist/src/tui/components/BigTimer.d.ts +2 -0
  203. package/dist/src/tui/components/BigTimer.d.ts.map +1 -0
  204. package/dist/src/tui/components/Footer.d.ts +2 -0
  205. package/dist/src/tui/components/Footer.d.ts.map +1 -0
  206. package/dist/src/tui/components/Header.d.ts +2 -0
  207. package/dist/src/tui/components/Header.d.ts.map +1 -0
  208. package/dist/src/tui/components/Header.js +1 -1
  209. package/dist/src/tui/components/Header.js.map +1 -1
  210. package/dist/src/tui/components/PopupInput.d.ts +18 -0
  211. package/dist/src/tui/components/PopupInput.d.ts.map +1 -0
  212. package/dist/src/tui/components/PopupMessage.d.ts +20 -0
  213. package/dist/src/tui/components/PopupMessage.d.ts.map +1 -0
  214. package/dist/src/tui/components/TicketList.d.ts +2 -0
  215. package/dist/src/tui/components/TicketList.d.ts.map +1 -0
  216. package/dist/src/tui/components/TicketList.js +1 -1
  217. package/dist/src/tui/components/TicketList.js.map +1 -1
  218. package/dist/src/tui/components/TicketRow.d.ts +8 -0
  219. package/dist/src/tui/components/TicketRow.d.ts.map +1 -0
  220. package/dist/src/tui/components/TimerDisplay.d.ts +2 -0
  221. package/dist/src/tui/components/TimerDisplay.d.ts.map +1 -0
  222. package/dist/src/tui/components/index.d.ts +12 -0
  223. package/dist/src/tui/components/index.d.ts.map +1 -0
  224. package/dist/src/tui/context/theme.d.ts +15 -0
  225. package/dist/src/tui/context/theme.d.ts.map +1 -0
  226. package/dist/src/tui/hooks/useElapsedTimer.d.ts +6 -0
  227. package/dist/src/tui/hooks/useElapsedTimer.d.ts.map +1 -0
  228. package/dist/src/tui/hooks/useElapsedTimer.js +1 -1
  229. package/dist/src/tui/hooks/useElapsedTimer.js.map +1 -1
  230. package/dist/src/tui/hooks/useTerminalSize.d.ts +5 -0
  231. package/dist/src/tui/hooks/useTerminalSize.d.ts.map +1 -0
  232. package/dist/src/utils/hints.d.ts +12 -0
  233. package/dist/src/utils/hints.d.ts.map +1 -0
  234. package/dist/src/utils/hints.js +12 -0
  235. package/dist/src/utils/hints.js.map +1 -0
  236. package/dist/src/utils/time.d.ts +104 -0
  237. package/dist/src/utils/time.d.ts.map +1 -0
  238. package/dist/src/utils/time.js +74 -8
  239. package/dist/src/utils/time.js.map +1 -1
  240. package/dist/tsconfig.tsbuildinfo +1 -1
  241. package/nvim/lua/jcf/state.lua +191 -13
  242. package/package.json +36 -18
  243. package/skills/jcf/SKILL.md +93 -1
@@ -0,0 +1,362 @@
1
+ /**
2
+ * Writing one Proposed Worklog, shared by `jcf sync reconcile --agent`, `jcf watch`, and any other
3
+ * surface that offers a proposal for confirmation.
4
+ *
5
+ * **Mental model**
6
+ *
7
+ * - **One write path**: every surface derives proposals from the same evidence and must put the same
8
+ * text in the same two places. A second implementation would drift, and the drift would only ever
9
+ * be visible in someone else's timesheet.
10
+ * - **Say it before writing it**: the entry text lands in two systems other people read, so the
11
+ * caller shows it first. Nothing here writes anything the user has not already been shown.
12
+ * - **Reports, never prints.** A write returns what each side did and the caller renders it. A
13
+ * terminal has a console to print to and an HTTP handler has a response to fill; a write path that
14
+ * printed could only ever serve the first, and the second would grow its own copy of these rules.
15
+ *
16
+ * @module
17
+ */
18
+ import * as Effect from "effect/Effect";
19
+ import * as SourceConsumption from "../agent/sourceConsumption.js";
20
+ import { MINIMUM_WRITE_SECONDS, prepareProposal } from "../agent/writePlanning.js";
21
+ import { NOT_LOGGED_IN_HINT } from "../utils/hints.js";
22
+ import { formatDuration } from "../utils/time.js";
23
+ export { writeAnchor } from "../agent/writePlanning.js";
24
+ /** Clip `text` to `width`, marking that something was dropped. */
25
+ export const clip = (text, width) => text.length <= width ? text : `${text.slice(0, width - 1)}…`;
26
+ /**
27
+ * What accepting one row would write, naming only the sides that are actually short.
28
+ *
29
+ * Collapsed to "to both" when the two gaps are equal, which is the usual case for time neither
30
+ * side ever recorded — spelling the same number out twice reads like a mistake.
31
+ */
32
+ export const proposalTargets = (proposal) => {
33
+ if (proposal.blocks.some((block) => block.clockifyRefusal === "unlinked-overlap")) {
34
+ return proposal.jiraDelta > 0
35
+ ? `+${formatDuration(proposal.jiraDelta)} Jira · Clockify overlap held`
36
+ : "Clockify overlap held";
37
+ }
38
+ if (proposal.clockifyDelta > 0 && proposal.clockifyDelta === proposal.jiraDelta) {
39
+ return `+${formatDuration(proposal.clockifyDelta)} to both`;
40
+ }
41
+ const targets = [];
42
+ if (proposal.clockifyDelta > 0)
43
+ targets.push(`+${formatDuration(proposal.clockifyDelta)} Clockify`);
44
+ if (proposal.jiraDelta > 0)
45
+ targets.push(`+${formatDuration(proposal.jiraDelta)} Jira`);
46
+ return targets.join(", ");
47
+ };
48
+ /** A proposal accepted exactly as it was offered. */
49
+ export const asProposed = {
50
+ amountSetByHand: false,
51
+ evidence: "session",
52
+ ticketSetByHand: false
53
+ };
54
+ /** Time no session evidences: a meeting, a whiteboard, work away from the keyboard. */
55
+ export const byHand = {
56
+ amountSetByHand: true,
57
+ evidence: "hand",
58
+ ticketSetByHand: true
59
+ };
60
+ /**
61
+ * Where a written entry says it came from. This prose is never load-bearing: ordinary writes tally
62
+ * by `[KEY]` and day. Session-backed writes also carry a source suffix for legacy migration; the
63
+ * private provider-ID ledger, not editable text, keeps corrected-ticket consumption after a write.
64
+ */
65
+ export const PROVENANCE = "Reconciled from Claude Agent Session";
66
+ /** What an entry with this provenance says about itself. */
67
+ export const provenanceText = (provenance) => {
68
+ if (provenance.evidence === "hand")
69
+ return "Entered by hand";
70
+ const overrides = [
71
+ ...(provenance.amountSetByHand ? ["amount"] : []),
72
+ ...(provenance.ticketSetByHand ? ["ticket"] : [])
73
+ ];
74
+ return overrides.length === 0 ? PROVENANCE : `${PROVENANCE}, ${overrides.join(" and ")} set by hand`;
75
+ };
76
+ /** Keeps the issue title from crowding out the sentence that says what was actually done. */
77
+ const ENTRY_SUMMARY_WIDTH = 80;
78
+ /**
79
+ * What a written entry says about itself: the issue title, what was done, and where it came from.
80
+ *
81
+ * An entry that says only "reconciled from an Agent Session" answers the wrong question. The one
82
+ * asked of a timesheet months later is *what* the time went on, and by then the Issue Key alone is
83
+ * a lookup and the transcript is gone. So the title goes in — Clockify has no other way to know it —
84
+ * and the note goes in after it, as the one thing neither system can reconstruct.
85
+ *
86
+ * Both halves are optional, for different reasons: Jira may be unreachable, and a session whose
87
+ * prompts never say what was done gets no sentence rather than an invented one. The provenance stays
88
+ * last and unconditional — a reader has to be able to tell that a line was written by a tool from a
89
+ * session, not typed by hand.
90
+ */
91
+ export const entryDescription = (options) => {
92
+ const provenance = provenanceText(options.provenance ?? asProposed);
93
+ const parts = [
94
+ ...(options.summary === null ? [] : [clip(options.summary, ENTRY_SUMMARY_WIDTH)]),
95
+ ...(options.note === null || options.note.trim() === "" ? [] : [options.note.trim()])
96
+ ];
97
+ return parts.length === 0 ? provenance : `${parts.join(" — ")} (${provenance})`;
98
+ };
99
+ /** Both systems: what a write means unless someone says otherwise. */
100
+ export const bothTargets = { clockify: true, jira: true };
101
+ const missingSourceScope = "the provider account for this session was not verified; refresh before writing";
102
+ /** Why later rows would repeat the same Jira failure, or `null` when the next row remains useful. */
103
+ export const writeStopReason = (outcome) => {
104
+ const jira = outcome.jira;
105
+ if (jira._tag === "NotLoggedIn" ||
106
+ (jira._tag === "PartiallyWritten" && jira.failure._tag === "NotLoggedIn")) {
107
+ return NOT_LOGGED_IN_HINT;
108
+ }
109
+ if (jira._tag === "Refused" && jira.message === missingSourceScope)
110
+ return jira.message;
111
+ if (jira._tag === "PartiallyWritten" && jira.failure._tag === "Refused" &&
112
+ jira.failure.message === missingSourceScope) {
113
+ return jira.failure.message;
114
+ }
115
+ return null;
116
+ };
117
+ const sideSeconds = (outcome) => outcome._tag === "Written" || outcome._tag === "PartiallyWritten" ? outcome.seconds : 0;
118
+ /** Seconds this write actually put on Clockify. */
119
+ export const clockifyWritten = (outcome) => sideSeconds(outcome.clockify);
120
+ /** Seconds this write actually put on Jira. */
121
+ export const jiraWritten = (outcome) => sideSeconds(outcome.jira);
122
+ /**
123
+ * Whether a run should go on to the next row.
124
+ *
125
+ * False for an expired Jira session or an unverified Jira account: every remaining Jira write
126
+ * would fail the same way, and twenty rows that all fail is worse than stopping at the first. A
127
+ * Clockify refusal, or a Jira refusal about *this* row, says nothing about the next one.
128
+ */
129
+ export const keepGoing = (outcome) => writeStopReason(outcome) === null;
130
+ /**
131
+ * One line per side saying what happened, in the words every surface should use.
132
+ *
133
+ * Here rather than in each caller so a terminal and a browser cannot describe the same write
134
+ * differently. Silent about a side that owed nothing — a row where only Jira was short should not
135
+ * report a Clockify non-event.
136
+ */
137
+ export const writeOutcomeLines = (outcome) => {
138
+ const lines = [];
139
+ if (outcome.clockify._tag === "Written")
140
+ lines.push("✓ created Clockify entry");
141
+ if (outcome.clockify._tag === "PartiallyWritten") {
142
+ lines.push(`✓ created ${formatDuration(outcome.clockify.seconds)} in Clockify`);
143
+ lines.push(outcome.clockify.failure._tag === "NotLoggedIn"
144
+ ? "✗ Clockify is not logged in"
145
+ : `✗ Clockify: ${outcome.clockify.failure.message}`);
146
+ }
147
+ if (outcome.clockify._tag === "Refused")
148
+ lines.push(`✗ Clockify: ${outcome.clockify.message}`);
149
+ // Said out loud rather than left silent: a side nobody asked for looks exactly like a side that
150
+ // failed quietly, and the difference is the whole point of asking.
151
+ if (outcome.clockify._tag === "Skipped")
152
+ lines.push("· Clockify not asked for");
153
+ if (outcome.jira._tag === "Written")
154
+ lines.push("✓ posted to Jira");
155
+ if (outcome.jira._tag === "PartiallyWritten") {
156
+ lines.push(`✓ posted ${formatDuration(outcome.jira.seconds)} to Jira`);
157
+ lines.push(outcome.jira.failure._tag === "NotLoggedIn"
158
+ ? `✗ ${NOT_LOGGED_IN_HINT}`
159
+ : `✗ Jira: ${outcome.jira.failure.message}`);
160
+ }
161
+ if (outcome.jira._tag === "Refused")
162
+ lines.push(`✗ Jira: ${outcome.jira.message}`);
163
+ if (outcome.jira._tag === "Skipped")
164
+ lines.push("· Jira not asked for");
165
+ if (outcome.jira._tag === "NotLoggedIn")
166
+ lines.push(`✗ ${NOT_LOGGED_IN_HINT}`);
167
+ return lines;
168
+ };
169
+ const nothingOwed = { _tag: "NothingOwed" };
170
+ const skipped = { _tag: "Skipped" };
171
+ const unlinkedOverlap = "an unlinked Clockify entry overlaps this session block; review it before logging time";
172
+ /**
173
+ * Execute concrete per-side amounts and starts without reinterpreting their evidence.
174
+ *
175
+ * The plan's targets narrow which systems are touched. A side left out is reported as `Skipped` and its gap
176
+ * is left exactly as it was — so asking for Jira alone today and both tomorrow writes the Clockify
177
+ * half tomorrow, rather than treating the skipped side as settled.
178
+ */
179
+ export const applyPlannedWrite = (service, plan, description, sourceRowId, expectedScopes, jiraAvailability = "verified") => Effect.gen(function* () {
180
+ const sourceOf = (segment, provider) => sourceRowId === undefined ? undefined : {
181
+ rowId: sourceRowId,
182
+ sourceStartMs: segment.block.sourceStartMs ?? segment.block.startMs,
183
+ startMs: segment.startedAt.getTime(),
184
+ endMs: segment.startedAt.getTime() + segment.seconds * 1000,
185
+ seconds: segment.seconds,
186
+ ...(expectedScopes?.[provider] !== null && expectedScopes?.[provider] !== undefined &&
187
+ { expectedScope: expectedScopes[provider] })
188
+ };
189
+ const { targets } = plan;
190
+ if (!targets.clockify && !targets.jira)
191
+ return { clockify: skipped, jira: skipped };
192
+ // Anchored to real activity rather than left to the service's local-noon fallback, which files a
193
+ // 00:17 session as a lunchtime block — wrong on its face to anyone reading the timesheet later.
194
+ // Per side, because the two can already hold different amounts and so start in different blocks.
195
+ let clockifyWrittenSeconds = 0;
196
+ const clockifySegments = [];
197
+ let clockifyFailure = targets.clockify && plan.clockify.segments.length > 0 &&
198
+ sourceRowId !== undefined && expectedScopes?.clockify == null
199
+ ? missingSourceScope
200
+ : null;
201
+ if (targets.clockify && clockifyFailure === null) {
202
+ for (const segment of plan.clockify.segments) {
203
+ const result = yield* service
204
+ .applyToClockify(plan.ticketKey, plan.day, segment.seconds, segment.description ?? description, segment.startedAt, sourceOf(segment, "clockify"))
205
+ .pipe(Effect.map((created) => created ? null : "the entry was not created"), Effect.catch((error) => Effect.succeed(error.message)));
206
+ if (result !== null) {
207
+ clockifyFailure = result;
208
+ break;
209
+ }
210
+ clockifyWrittenSeconds += segment.seconds;
211
+ clockifySegments.push({
212
+ startMs: segment.startedAt.getTime(),
213
+ endMs: segment.startedAt.getTime() + segment.seconds * 1000
214
+ });
215
+ }
216
+ }
217
+ if (clockifyFailure === null && plan.clockify.refusal === "unlinked-overlap") {
218
+ clockifyFailure = unlinkedOverlap;
219
+ }
220
+ const clockify = !targets.clockify
221
+ ? skipped
222
+ : clockifyWrittenSeconds > 0 && clockifyFailure !== null
223
+ ? {
224
+ _tag: "PartiallyWritten",
225
+ seconds: clockifyWrittenSeconds,
226
+ segments: clockifySegments,
227
+ failure: { _tag: "Refused", message: clockifyFailure }
228
+ }
229
+ : clockifyWrittenSeconds > 0
230
+ ? { _tag: "Written", seconds: clockifyWrittenSeconds, segments: clockifySegments }
231
+ : plan.clockify.seconds <= 0 && clockifyFailure === null
232
+ ? nothingOwed
233
+ : { _tag: "Refused", message: clockifyFailure ?? "the entry was not created" };
234
+ if (!targets.jira)
235
+ return { clockify, jira: skipped };
236
+ const unavailableJira = sourceRowId !== undefined && expectedScopes?.jira == null
237
+ ? jiraAvailability === "not-logged-in"
238
+ ? { _tag: "NotLoggedIn" }
239
+ : { _tag: "Refused", message: missingSourceScope }
240
+ : null;
241
+ const withheldJiraSeconds = plan.jira.withheldSeconds ?? 0;
242
+ if (plan.jira.seconds <= 0) {
243
+ return {
244
+ clockify,
245
+ jira: unavailableJira ?? (withheldJiraSeconds > 0
246
+ ? { _tag: "Refused", message: "the remaining Jira gaps are below its one-minute minimum" }
247
+ : nothingOwed)
248
+ };
249
+ }
250
+ let jiraWrittenSeconds = 0;
251
+ const jiraSegments = [];
252
+ let jiraFailure = unavailableJira;
253
+ for (const segment of jiraFailure === null ? plan.jira.segments : []) {
254
+ const posted = yield* service.applyToJira(plan.ticketKey, plan.day, segment.seconds, segment.description ?? description, segment.startedAt, sourceOf(segment, "jira"));
255
+ if (posted._tag !== "Posted") {
256
+ jiraFailure = posted._tag === "NotLoggedIn"
257
+ ? { _tag: "NotLoggedIn" }
258
+ : posted._tag === "VerificationUnavailable"
259
+ ? { _tag: "Refused", message: missingSourceScope }
260
+ : { _tag: "Refused", message: posted.message };
261
+ break;
262
+ }
263
+ jiraWrittenSeconds += segment.seconds;
264
+ jiraSegments.push({
265
+ startMs: segment.startedAt.getTime(),
266
+ endMs: segment.startedAt.getTime() + segment.seconds * 1000
267
+ });
268
+ }
269
+ if (jiraFailure === null && withheldJiraSeconds > 0) {
270
+ jiraFailure = { _tag: "Refused", message: "the remaining Jira gaps are below its one-minute minimum" };
271
+ }
272
+ const jira = jiraWrittenSeconds > 0 && jiraFailure !== null
273
+ ? { _tag: "PartiallyWritten", seconds: jiraWrittenSeconds, segments: jiraSegments, failure: jiraFailure }
274
+ : jiraWrittenSeconds > 0
275
+ ? { _tag: "Written", seconds: jiraWrittenSeconds, segments: jiraSegments }
276
+ : jiraFailure ?? { _tag: "Refused", message: "the worklog was not created" };
277
+ return { clockify, jira };
278
+ });
279
+ /** Execute CLI/watch proposals while preserving exact corrected-ticket source consumption. */
280
+ export const applyProposal = (service, proposal, description, sourceScopes, targets = bothTargets, jiraAvailability = "verified") => {
281
+ const prepared = prepareProposal({
282
+ evidence: {
283
+ blocks: proposal.blocks,
284
+ credited: proposal.sessionSeconds,
285
+ ticketKey: proposal.ticketKey,
286
+ day: proposal.day
287
+ },
288
+ request: {},
289
+ targets,
290
+ consumed: (block, source) => {
291
+ const corrected = source === "clockify"
292
+ ? block.clockifyConsumedSeconds ?? 0
293
+ : block.jiraConsumedSeconds ?? 0;
294
+ const ordinary = SourceConsumption.recordedSecondsInBlock(block, proposal.recordedIntervals ?? [], source);
295
+ return Math.min(block.seconds, ordinary + corrected);
296
+ }
297
+ });
298
+ if (prepared._tag !== "Prepared") {
299
+ return applyPlannedWrite(service, {
300
+ _tag: "Write",
301
+ ticketKey: proposal.ticketKey,
302
+ day: proposal.day,
303
+ targets,
304
+ clockify: { seconds: 0, segments: [], startedAt: undefined },
305
+ jira: { seconds: 0, segments: [], startedAt: undefined }
306
+ }, description, `${proposal.day}:${proposal.ticketKey}`, sourceScopes, jiraAvailability);
307
+ }
308
+ const planned = prepared.plan([{
309
+ ticketKey: proposal.ticketKey,
310
+ day: proposal.day,
311
+ clockifySeconds: proposal.clockifySeconds,
312
+ jiraSeconds: proposal.jiraSeconds,
313
+ intervals: proposal.recordedIntervals ?? []
314
+ }]);
315
+ if (planned._tag === "Write") {
316
+ const cap = (side, requested, minimumSegmentSeconds = 0) => {
317
+ let remaining = requested;
318
+ const segments = side.segments.flatMap((segment) => {
319
+ const seconds = Math.min(segment.seconds, remaining);
320
+ if (seconds < minimumSegmentSeconds)
321
+ return [];
322
+ remaining -= seconds;
323
+ return seconds <= 0 ? [] : [{ ...segment, seconds }];
324
+ });
325
+ const seconds = segments.reduce((sum, segment) => sum + segment.seconds, 0);
326
+ return {
327
+ seconds,
328
+ withheldSeconds: Math.max(0, requested - seconds),
329
+ ...(side.refusal !== undefined && { refusal: side.refusal }),
330
+ segments,
331
+ startedAt: segments[0]?.startedAt
332
+ };
333
+ };
334
+ const sourceMarked = (side) => ({
335
+ ...side,
336
+ segments: side.segments.map((segment) => ({
337
+ ...segment,
338
+ description: `${description}\n${SourceConsumption.marker(`${proposal.day}:${proposal.ticketKey}`, segment.block.sourceStartMs ?? segment.block.startMs)}`
339
+ }))
340
+ });
341
+ return applyPlannedWrite(service, {
342
+ ...planned,
343
+ clockify: sourceMarked(cap(planned.clockify, proposal.clockifyDelta)),
344
+ jira: sourceMarked(cap(planned.jira, proposal.jiraDelta, MINIMUM_WRITE_SECONDS))
345
+ }, description, `${proposal.day}:${proposal.ticketKey}`, sourceScopes, jiraAvailability);
346
+ }
347
+ const belowMinimum = planned._tag === "BelowMinimum";
348
+ return applyPlannedWrite(service, {
349
+ _tag: "Write",
350
+ ticketKey: proposal.ticketKey,
351
+ day: proposal.day,
352
+ targets,
353
+ clockify: { seconds: 0, segments: [], startedAt: undefined },
354
+ jira: {
355
+ seconds: 0,
356
+ withheldSeconds: belowMinimum ? proposal.jiraDelta : 0,
357
+ segments: [],
358
+ startedAt: undefined
359
+ }
360
+ }, description, `${proposal.day}:${proposal.ticketKey}`, sourceScopes, jiraAvailability);
361
+ };
362
+ //# sourceMappingURL=agentWrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentWrite.js","sourceRoot":"","sources":["../../../src/cli/agentWrite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
2
+ import { Command, Prompt } from "effect/cli";
3
+ import * as HttpClient from "effect/http/HttpClient";
4
+ import { ClockifyAuth } from "../services/ClockifyAuth.js";
5
+ export declare const clockifySetup: Command.Command<"setup", {}, {}, never, ClockifyAuth | HttpClient.HttpClient | Prompt.Environment>;
6
+ /** Top-level `auth` command with jira/clockify/status subcommands. */
7
+ export declare const auth: Command.Command<"auth", {} | {}, {}, import("@knpkv/atlassian-common/config").FileSystemError | import("@knpkv/atlassian-common/config").HomeDirectoryError | import("effect/PlatformError").PlatformError | import("effect/Terminal").QuitError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner | ClockifyAuth | HttpClient.HttpClient | JiraAuth | Prompt.Environment>;
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/auth.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,OAAO,EAAmB,MAAM,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AA0I1D,eAAO,MAAM,aAAa,oGAwEzB,CAAA;AAgED,sEAAsE;AACtE,eAAO,MAAM,IAAI,4XAEhB,CAAA"}
@@ -6,9 +6,9 @@
6
6
  import { make as makeClockifyApi } from "@knpkv/clockify-api-client";
7
7
  import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
8
8
  import { Console, Data, Effect, Option, Predicate, Redacted, Schema } from "effect";
9
- import { Command, Flag as Options, Prompt } from "effect/unstable/cli";
10
- import * as HttpClient from "effect/unstable/http/HttpClient";
11
- import * as ChildProcess from "effect/unstable/process/ChildProcess";
9
+ import { Command, Flag as Options, Prompt } from "effect/cli";
10
+ import * as HttpClient from "effect/http/HttpClient";
11
+ import * as ChildProcess from "effect/process/ChildProcess";
12
12
  import { ClockifyAuth } from "../services/ClockifyAuth.js";
13
13
  class InvalidClockifyApiKeyError extends Data.TaggedError("InvalidClockifyApiKeyError") {
14
14
  get message() {
@@ -51,20 +51,20 @@ Create OAuth app in Atlassian Developer Console:
51
51
  yield* exitCode(ChildProcess.make("open", [url])).pipe(Effect.catch(() => exitCode(ChildProcess.make("xdg-open", [url]))), Effect.catch(() => exitCode(ChildProcess.make("rundll32.exe", ["url.dll,FileProtocolHandler", url]))), Effect.asVoid, Effect.catch(() => Effect.void));
52
52
  }));
53
53
  const jiraConfigure = Command.make("configure", {
54
- clientId: Options.string("client-id").pipe(Options.withDescription("OAuth client ID"), Options.optional),
55
- clientSecret: Options.string("client-secret").pipe(Options.withDescription("OAuth client secret"), Options.optional)
54
+ clientId: Options.String("client-id").pipe(Options.withDescription("OAuth client ID"), Options.optional),
55
+ clientSecret: Options.String("client-secret").pipe(Options.withDescription("OAuth client secret"), Options.optional)
56
56
  }, ({ clientId, clientSecret }) => Effect.gen(function* () {
57
57
  const auth = yield* JiraAuth;
58
58
  const id = Option.isSome(clientId)
59
59
  ? clientId.value
60
- : yield* Prompt.text({ message: "Enter OAuth client ID:" });
60
+ : yield* Prompt.String({ message: "Enter OAuth client ID:" });
61
61
  const secret = Option.isSome(clientSecret)
62
62
  ? clientSecret.value
63
- : yield* Prompt.text({ message: "Enter OAuth client secret:" });
63
+ : yield* Prompt.String({ message: "Enter OAuth client secret:" });
64
64
  yield* auth.configure({ clientId: id, clientSecret: secret });
65
65
  yield* Console.log("OAuth configured. Run: jcf auth jira login");
66
66
  }));
67
- const jiraLogin = Command.make("login", { site: Options.string("site").pipe(Options.withDescription("Jira site URL"), Options.optional) }, ({ site }) => Effect.gen(function* () {
67
+ const jiraLogin = Command.make("login", { site: Options.String("site").pipe(Options.withDescription("Jira site URL"), Options.optional) }, ({ site }) => Effect.gen(function* () {
68
68
  const auth = yield* JiraAuth;
69
69
  const result = yield* auth.login(Option.isSome(site) ? { siteUrl: site.value } : undefined);
70
70
  if (Array.isArray(result) && result.length > 0) {
@@ -97,7 +97,7 @@ export const clockifySetup = Command.make("setup", {}, () => Effect.gen(function
97
97
  yield* Console.log("Clockify API Key Setup");
98
98
  yield* Console.log("Get your API key from: https://app.clockify.me/manage-api-keys");
99
99
  yield* Console.log("");
100
- const apiKey = yield* Prompt.text({ message: "Enter API key:" });
100
+ const apiKey = yield* Prompt.String({ message: "Enter API key:" });
101
101
  if (!apiKey) {
102
102
  yield* Console.log("No API key provided, aborting.");
103
103
  return;
@@ -125,7 +125,7 @@ export const clockifySetup = Command.make("setup", {}, () => Effect.gen(function
125
125
  }
126
126
  let selectedIdx = 0;
127
127
  if (workspaces.length > 1) {
128
- const choice = yield* Prompt.text({ message: `Select workspace (1-${workspaces.length}):` });
128
+ const choice = yield* Prompt.String({ message: `Select workspace (1-${workspaces.length}):` });
129
129
  selectedIdx = Math.max(0, Math.min(workspaces.length - 1, parseInt(choice, 10) - 1));
130
130
  }
131
131
  const workspace = workspaces[selectedIdx];
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /** One Issue Key's credited spans on the day being drawn. */
2
+ export interface CalendarRow {
3
+ readonly ticketKey: string;
4
+ readonly spans: ReadonlyArray<{
5
+ readonly startMs: number;
6
+ readonly endMs: number;
7
+ }>;
8
+ }
9
+ /**
10
+ * Draw one day. Returns the lines to print, or an empty array when the day has no credited time
11
+ * at all — a caller can then say "nothing" in its own words rather than print an empty grid.
12
+ */
13
+ export declare const renderDayCalendar: (options: {
14
+ readonly day: string;
15
+ readonly rows: ReadonlyArray<CalendarRow>;
16
+ }) => ReadonlyArray<string>;
17
+ /**
18
+ * The outer bounds of a set of spans: when the work item started and when it finished.
19
+ *
20
+ * This is the pair a timesheet actually asks for. It is deliberately *not* the credited duration —
21
+ * the gaps inside it were not worked, and on a shared day part of it belongs to another Issue Key.
22
+ */
23
+ export declare const formatSpanBounds: (spans: ReadonlyArray<{
24
+ readonly startMs: number;
25
+ readonly endMs: number;
26
+ }>) => string;
27
+ /** The earliest instant in a set of spans, for anchoring a write to when work began. */
28
+ export declare const earliestStart: (spans: ReadonlyArray<{
29
+ readonly startMs: number;
30
+ readonly endMs: number;
31
+ }>) => Date | undefined;
32
+ /**
33
+ * `HH:MM-HH:MM` for each span, so the row above the grid says *when* in words. Long lists are
34
+ * clipped with a count rather than wrapped, because the total is already on the row.
35
+ */
36
+ export declare const formatSpanRanges: (spans: ReadonlyArray<{
37
+ readonly startMs: number;
38
+ readonly endMs: number;
39
+ }>, options?: {
40
+ readonly limit?: number | undefined;
41
+ }) => string;
42
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/cli/calendar.ts"],"names":[],"mappings":"AAqBA,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpF;AA4ED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,YAAa;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;CAC1C,KAAG,aAAa,CAAC,MAAM,CA0EvB,CAAA;AAQD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,UACpB,aAAa,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,KACzE,MAKF,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,aAAa,UACjB,aAAa,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,KACzE,IAAI,GAAG,SAGkF,CAAA;AAE5F;;;GAGG;AACH,eAAO,MAAM,gBAAgB,UACpB,aAAa,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,YAChE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,KAChD,MAKF,CAAA"}