@knpkv/jira-clockify 0.2.0 → 0.5.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 (83) hide show
  1. package/README.md +4 -1
  2. package/dist/package.json +12 -13
  3. package/dist/src/bin.js +30 -13
  4. package/dist/src/bin.js.map +1 -1
  5. package/dist/src/cli/auth.js +23 -19
  6. package/dist/src/cli/auth.js.map +1 -1
  7. package/dist/src/cli/config.js +4 -4
  8. package/dist/src/cli/config.js.map +1 -1
  9. package/dist/src/cli/fetchTicket.js +30 -0
  10. package/dist/src/cli/fetchTicket.js.map +1 -0
  11. package/dist/src/cli/fuzzySelect.js +6 -5
  12. package/dist/src/cli/fuzzySelect.js.map +1 -1
  13. package/dist/src/cli/layers.js +10 -8
  14. package/dist/src/cli/layers.js.map +1 -1
  15. package/dist/src/cli/list.js +1 -1
  16. package/dist/src/cli/list.js.map +1 -1
  17. package/dist/src/cli/setup.js +19 -19
  18. package/dist/src/cli/setup.js.map +1 -1
  19. package/dist/src/cli/timer/discard.js +2 -2
  20. package/dist/src/cli/timer/discard.js.map +1 -1
  21. package/dist/src/cli/timer/edit.js +11 -11
  22. package/dist/src/cli/timer/edit.js.map +1 -1
  23. package/dist/src/cli/timer/log.js +56 -79
  24. package/dist/src/cli/timer/log.js.map +1 -1
  25. package/dist/src/cli/timer/start.js +56 -40
  26. package/dist/src/cli/timer/start.js.map +1 -1
  27. package/dist/src/cli/timer/status.js +7 -7
  28. package/dist/src/cli/timer/status.js.map +1 -1
  29. package/dist/src/cli/timer/stop.js +183 -59
  30. package/dist/src/cli/timer/stop.js.map +1 -1
  31. package/dist/src/main.js +15 -3
  32. package/dist/src/main.js.map +1 -1
  33. package/dist/src/services/ClockifyAuth.js +12 -23
  34. package/dist/src/services/ClockifyAuth.js.map +1 -1
  35. package/dist/src/services/ConfigService.js +7 -7
  36. package/dist/src/services/ConfigService.js.map +1 -1
  37. package/dist/src/services/HomeDirectory.js +14 -0
  38. package/dist/src/services/HomeDirectory.js.map +1 -0
  39. package/dist/src/services/StateWriter.js +8 -8
  40. package/dist/src/services/StateWriter.js.map +1 -1
  41. package/dist/src/services/TicketService.js +22 -15
  42. package/dist/src/services/TicketService.js.map +1 -1
  43. package/dist/src/services/TimerService.js +126 -60
  44. package/dist/src/services/TimerService.js.map +1 -1
  45. package/dist/src/tui/App.js +72 -8
  46. package/dist/src/tui/App.js.map +1 -1
  47. package/dist/src/tui/atoms/runtime.js +1 -1
  48. package/dist/src/tui/atoms/runtime.js.map +1 -1
  49. package/dist/src/tui/atoms/tickets.js +1 -1
  50. package/dist/src/tui/atoms/tickets.js.map +1 -1
  51. package/dist/src/tui/atoms/timer.js +7 -2
  52. package/dist/src/tui/atoms/timer.js.map +1 -1
  53. package/dist/src/tui/atoms/ui.js +1 -1
  54. package/dist/src/tui/atoms/ui.js.map +1 -1
  55. package/dist/src/tui/components/BigTimer.js +2 -2
  56. package/dist/src/tui/components/BigTimer.js.map +1 -1
  57. package/dist/src/tui/components/Footer.js +1 -1
  58. package/dist/src/tui/components/Footer.js.map +1 -1
  59. package/dist/src/tui/components/Header.js +3 -2
  60. package/dist/src/tui/components/Header.js.map +1 -1
  61. package/dist/src/tui/components/PopupMessage.js +7 -2
  62. package/dist/src/tui/components/PopupMessage.js.map +1 -1
  63. package/dist/src/tui/components/TicketList.js +3 -2
  64. package/dist/src/tui/components/TicketList.js.map +1 -1
  65. package/dist/src/tui/context/theme.js.map +1 -1
  66. package/dist/src/tui/hooks/useElapsedTimer.js +3 -2
  67. package/dist/src/tui/hooks/useElapsedTimer.js.map +1 -1
  68. package/dist/src/tui/hooks/useTerminalSize.js +1 -21
  69. package/dist/src/tui/hooks/useTerminalSize.js.map +1 -1
  70. package/dist/src/utils/time.js +55 -5
  71. package/dist/src/utils/time.js.map +1 -1
  72. package/dist/test/TimerService.test.js +224 -31
  73. package/dist/test/TimerService.test.js.map +1 -1
  74. package/dist/test/fetchTicket.test.js +89 -0
  75. package/dist/test/fetchTicket.test.js.map +1 -0
  76. package/dist/test/stopPrompts.test.js +93 -0
  77. package/dist/test/stopPrompts.test.js.map +1 -0
  78. package/dist/test/time.test.js +84 -0
  79. package/dist/test/time.test.js.map +1 -0
  80. package/dist/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +16 -17
  82. package/skills/jcf/SKILL.md +89 -0
  83. package/skills/jcf/agents/openai.yaml +4 -0
@@ -3,10 +3,12 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { Prompt } from "@effect/cli";
7
6
  import { makeOpenApiFetchClient, toEffect } from "@knpkv/clockify-api-client";
8
7
  import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
9
8
  import { Console, Effect } from "effect";
9
+ import * as Path from "effect/Path";
10
+ import { Prompt } from "effect/unstable/cli";
11
+ import * as ChildProcess from "effect/unstable/process/ChildProcess";
10
12
  import { ClockifyAuth } from "../services/ClockifyAuth.js";
11
13
  // ---------------------------------------------------------------------------
12
14
  // First-run setup
@@ -34,8 +36,8 @@ export const checkAuthOrSetup = Effect.gen(function* () {
34
36
  yield* Console.log("OAuth configured.");
35
37
  }
36
38
  yield* Console.log("Starting Jira login...");
37
- yield* jira.login().pipe(Effect.catchAll((e) => Console.log(`Jira login failed: ${"message" in e ? e.message : String(e)}`)));
38
- const user = yield* jira.getCurrentUser().pipe(Effect.catchAll(() => Effect.succeed(null)));
39
+ yield* jira.login().pipe(Effect.catch((e) => Console.log(`Jira login failed: ${"message" in e ? e.message : String(e)}`)));
40
+ const user = yield* jira.getCurrentUser().pipe(Effect.catch(() => Effect.succeed(null)));
39
41
  if (user) {
40
42
  yield* Console.log(`✓ Logged in as ${user.name} (${user.email})\n`);
41
43
  }
@@ -56,13 +58,13 @@ export const checkAuthOrSetup = Effect.gen(function* () {
56
58
  "X-Api-Key": apiKey,
57
59
  "Content-Type": "application/json"
58
60
  });
59
- const user = yield* toEffect(client.GET("/v1/user")).pipe(Effect.catchAll(() => Effect.succeed(null)));
61
+ const user = yield* toEffect(client.GET("/v1/user")).pipe(Effect.catch(() => Effect.succeed(null)));
60
62
  if (!user) {
61
63
  yield* Console.log("✗ Invalid API key. Run: jcf auth clockify setup\n");
62
64
  return false;
63
65
  }
64
66
  yield* Console.log(`Authenticated as: ${user.name} (${user.email})`);
65
- const workspaces = yield* toEffect(client.GET("/v1/workspaces")).pipe(Effect.catchAll(() => Effect.succeed([])));
67
+ const workspaces = yield* toEffect(client.GET("/v1/workspaces")).pipe(Effect.catch(() => Effect.succeed([])));
66
68
  let workspaceId = "";
67
69
  let workspaceName = "";
68
70
  if (workspaces.length === 1) {
@@ -100,11 +102,9 @@ export const launchTui = (args) => Effect.gen(function* () {
100
102
  }
101
103
  else {
102
104
  // Relaunch with Bun if available
103
- const { execFileSync } = yield* Effect.promise(() => import("node:child_process"));
104
- try {
105
- execFileSync("bun", ["--version"], { stdio: "ignore" });
106
- }
107
- catch {
105
+ const exitCode = (command) => Effect.scoped(command.pipe(Effect.flatMap((handle) => handle.exitCode)));
106
+ const hasBun = yield* exitCode(ChildProcess.make("bun", ["--version"])).pipe(Effect.map((code) => code === 0), Effect.catch(() => Effect.succeed(false)));
107
+ if (!hasBun) {
108
108
  yield* Console.log("TUI requires Bun runtime (@opentui/react dependency).");
109
109
  yield* Console.log("Install Bun: curl -fsSL https://bun.sh/install | bash");
110
110
  yield* Console.log("");
@@ -112,19 +112,19 @@ export const launchTui = (args) => Effect.gen(function* () {
112
112
  return;
113
113
  }
114
114
  // Re-exec with bun — must point to bin.ts, not this module
115
- const thisDir = new URL(".", import.meta.url).pathname;
116
- const scriptPath = thisDir + "../bin.js";
115
+ const path = yield* Path.Path;
116
+ const thisDir = yield* path.fromFileUrl(new URL(".", import.meta.url));
117
+ const scriptPath = path.join(thisDir, "../bin.js");
117
118
  const cliArgs = args.slice(2);
118
- try {
119
- execFileSync("bun", [scriptPath, ...cliArgs], { stdio: "inherit" });
120
- }
121
- catch {
122
- // bun process exited — normal
123
- }
119
+ yield* exitCode(ChildProcess.make("bun", [scriptPath, ...cliArgs], {
120
+ stdin: "inherit",
121
+ stdout: "inherit",
122
+ stderr: "inherit"
123
+ })).pipe(Effect.catch(() => Effect.void));
124
124
  }
125
125
  });
126
126
  export const launchTuiOrSetup = (args) => Effect.gen(function* () {
127
- const ready = yield* checkAuthOrSetup.pipe(Effect.catchAll(() => Effect.succeed(false)));
127
+ const ready = yield* checkAuthOrSetup.pipe(Effect.catch(() => Effect.succeed(false)));
128
128
  if (!ready) {
129
129
  yield* Console.log("Setup incomplete. Run 'jcf auth status' to check.");
130
130
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { Command, Prompt } from "@effect/cli";
7
6
  import { Console, Effect, SubscriptionRef } from "effect";
7
+ import { Command, Prompt } from "effect/unstable/cli";
8
8
  import { TimerService } from "../../services/TimerService.js";
9
9
  export const discard = Command.make("discard", {}, () => Effect.gen(function* () {
10
10
  const timer = yield* TimerService;
@@ -27,7 +27,7 @@ export const discard = Command.make("discard", {}, () => Effect.gen(function* ()
27
27
  yield* Console.log("Cancelled.");
28
28
  return;
29
29
  }
30
- yield* timer.discard.pipe(Effect.catchAll((e) => Console.log(`Error: ${e.message}`)));
30
+ yield* timer.discard.pipe(Effect.catch((e) => Console.log(`Error: ${e.message}`)));
31
31
  yield* Console.log("Timer discarded. Clockify entry deleted.");
32
32
  }));
33
33
  //# sourceMappingURL=discard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discard.js","sourceRoot":"","sources":["../../../../src/cli/timer/discard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CACjC,SAAS,EACT,EAAE,EACF,GAAG,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IACjC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAA;IAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,SAAS,MAAM,OAAO,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,CAAA;IACrF,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;IAE3F,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;YACtC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;SAClC;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACvB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAA+B,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CACzF,CAAA;IAED,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;AAChE,CAAC,CAAC,CACL,CAAA"}
1
+ {"version":3,"file":"discard.js","sourceRoot":"","sources":["../../../../src/cli/timer/discard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CACjC,SAAS,EACT,EAAE,EACF,GAAG,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IACjC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAA;IAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,SAAS,MAAM,OAAO,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,CAAA;IACrF,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;IAE3F,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;YACtC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;SAClC;KACF,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAChC,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACvB,MAAM,CAAC,KAAK,CAAC,CAAC,CAA+B,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CACtF,CAAA;IAED,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAA;AAChE,CAAC,CAAC,CACL,CAAA"}
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * @module
5
5
  */
6
- import { Command, Prompt } from "@effect/cli";
7
6
  import { ClockifyApiClient } from "@knpkv/clockify-api-client";
8
7
  import { Console, Effect, SubscriptionRef } from "effect";
8
+ import { Command, Prompt } from "effect/unstable/cli";
9
9
  import { ClockifyAuth } from "../../services/ClockifyAuth.js";
10
10
  import { TimerService } from "../../services/TimerService.js";
11
11
  export const edit = Command.make("edit", {}, () => Effect.gen(function* () {
@@ -20,7 +20,7 @@ export const edit = Command.make("edit", {}, () => Effect.gen(function* () {
20
20
  yield* Console.log("");
21
21
  const clockifyAuth = yield* ClockifyAuth;
22
22
  const clockifyClient = yield* ClockifyApiClient;
23
- const auth = yield* clockifyAuth.getConfig.pipe(Effect.catchAll(() => Effect.succeed(null)));
23
+ const auth = yield* clockifyAuth.getConfig.pipe(Effect.catch(() => Effect.succeed(null)));
24
24
  if (!auth || !current.clockifyEntryId) {
25
25
  yield* Console.log("Cannot edit: missing Clockify auth or entry ID.");
26
26
  return;
@@ -40,7 +40,7 @@ export const edit = Command.make("edit", {}, () => Effect.gen(function* () {
40
40
  ]
41
41
  });
42
42
  if (what === "project") {
43
- const projects = yield* clockifyClient.getProjects(auth.workspaceId).pipe(Effect.catchAll(() => Effect.succeed([])));
43
+ const projects = yield* clockifyClient.getProjects(auth.workspaceId).pipe(Effect.catch(() => Effect.succeed([])));
44
44
  const selected = yield* Prompt.select({
45
45
  message: "Select project:",
46
46
  choices: [
@@ -51,12 +51,12 @@ export const edit = Command.make("edit", {}, () => Effect.gen(function* () {
51
51
  if (!current.startedAt)
52
52
  return;
53
53
  // Fetch existing entry to preserve tags
54
- const entry = yield* clockifyClient.getTimeEntry(auth.workspaceId, current.clockifyEntryId).pipe(Effect.catchAll(() => Effect.succeed(null)));
54
+ const entry = yield* clockifyClient.getTimeEntry(auth.workspaceId, current.clockifyEntryId).pipe(Effect.catch(() => Effect.succeed(null)));
55
55
  yield* clockifyClient.updateTimeEntry(auth.workspaceId, current.clockifyEntryId, {
56
56
  start: current.startedAt.toISOString(),
57
57
  ...(selected ? { projectId: selected } : {}),
58
58
  ...(entry?.tagIds && entry.tagIds.length > 0 ? { tagIds: [...entry.tagIds] } : {})
59
- }).pipe(Effect.catchAll((e) => Console.log(`Error: ${e.message}`)));
59
+ }).pipe(Effect.catch((e) => Console.log(`Error: ${e.message}`)));
60
60
  const name = projects.find((p) => p.id === selected)?.name ?? null;
61
61
  yield* Console.log(`Project updated: ${name ?? "(none)"}`);
62
62
  }
@@ -70,18 +70,18 @@ export const edit = Command.make("edit", {}, () => Effect.gen(function* () {
70
70
  });
71
71
  if (!current.startedAt)
72
72
  return;
73
- const entry = yield* clockifyClient.getTimeEntry(auth.workspaceId, current.clockifyEntryId).pipe(Effect.catchAll(() => Effect.succeed(null)));
73
+ const entry = yield* clockifyClient.getTimeEntry(auth.workspaceId, current.clockifyEntryId).pipe(Effect.catch(() => Effect.succeed(null)));
74
74
  yield* clockifyClient.updateTimeEntry(auth.workspaceId, current.clockifyEntryId, {
75
75
  start: current.startedAt.toISOString(),
76
76
  billable: val,
77
77
  ...(entry?.projectId ? { projectId: entry.projectId } : {}),
78
78
  ...(entry?.tagIds && entry.tagIds.length > 0 ? { tagIds: [...entry.tagIds] } : {})
79
- }).pipe(Effect.catchAll((e) => Console.log(`Error: ${e.message}`)));
79
+ }).pipe(Effect.catch((e) => Console.log(`Error: ${e.message}`)));
80
80
  yield* Console.log(`Billable updated: ${val ? "yes" : "no"}`);
81
81
  }
82
82
  if (what === "tags") {
83
- const allTags = yield* clockifyClient.getTags(auth.workspaceId).pipe(Effect.catchAll(() => Effect.succeed([])));
84
- const entry = yield* clockifyClient.getTimeEntry(auth.workspaceId, current.clockifyEntryId).pipe(Effect.catchAll(() => Effect.succeed(null)));
83
+ const allTags = yield* clockifyClient.getTags(auth.workspaceId).pipe(Effect.catch(() => Effect.succeed([])));
84
+ const entry = yield* clockifyClient.getTimeEntry(auth.workspaceId, current.clockifyEntryId).pipe(Effect.catch(() => Effect.succeed(null)));
85
85
  const currentTagIds = new Set(entry?.tagIds ?? []);
86
86
  yield* Console.log("Current tags: " + (allTags.filter((t) => currentTagIds.has(t.id)).map((t) => t.name).join(", ") || "none"));
87
87
  yield* Console.log("");
@@ -110,7 +110,7 @@ export const edit = Command.make("edit", {}, () => Effect.gen(function* () {
110
110
  tagIds: newTagIds,
111
111
  ...(entry?.projectId ? { projectId: entry.projectId } : {}),
112
112
  ...(entry?.billable !== undefined ? { billable: entry.billable } : {})
113
- }).pipe(Effect.catchAll((e) => Console.log(`Error: ${e.message}`)));
113
+ }).pipe(Effect.catch((e) => Console.log(`Error: ${e.message}`)));
114
114
  yield* Console.log(`Tag added: ${allTags.find((t) => t.id === tagId)?.name}`);
115
115
  }
116
116
  if (action === "remove") {
@@ -131,7 +131,7 @@ export const edit = Command.make("edit", {}, () => Effect.gen(function* () {
131
131
  tagIds: newTagIds,
132
132
  ...(entry?.projectId ? { projectId: entry.projectId } : {}),
133
133
  ...(entry?.billable !== undefined ? { billable: entry.billable } : {})
134
- }).pipe(Effect.catchAll((e) => Console.log(`Error: ${e.message}`)));
134
+ }).pipe(Effect.catch((e) => Console.log(`Error: ${e.message}`)));
135
135
  yield* Console.log(`Tag removed: ${allTags.find((t) => t.id === tagId)?.name}`);
136
136
  }
137
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../src/cli/timer/edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../../src/cli/timer/edit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAE7D,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAC9B,MAAM,EACN,EAAE,EACF,GAAG,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IACjC,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAA;IAE1B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QAC9C,OAAM;IACR,CAAC;IAED,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,SAAS,MAAM,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAA;IAC9E,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEtB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IACxC,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAA;IAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzF,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;QACrE,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,qBAAqB,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,GAAG;gBACjF,KAAK,EAAE,SAAkB;aAC1B;YACD;gBACE,KAAK,EAAE,sBACL,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAC1E,GAAG;gBACH,KAAK,EAAE,UAAmB;aAC3B;YACD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAe,EAAE;SAC1C;KACF,CAAC,CAAA;IAEF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CACvE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAW,CAAC,CAAC,CAChD,CAAA;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACpC,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;aAC/B;SACF,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAM;QAC9B,wCAAwC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAC9F,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACzC,CAAA;QACD,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,EAAE;YAC/E,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;YACtC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAEhE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,IAAI,IAAI,CAAA;QAClE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/B,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;gBAC7B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;aAC9B;SACF,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAM;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAC9F,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACzC,CAAA;QACD,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,EAAE;YAC/E,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;YACtC,QAAQ,EAAE,GAAG;YACb,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAEhE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAClE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAW,CAAC,CAAC,CAChD,CAAA;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAC9F,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACzC,CAAA;QACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAA;QAElD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAChB,gBAAgB,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAC5G,CAAA;QACD,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAEtB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAClC,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAc,EAAE;gBAC3C,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAiB,EAAE;aAClD;SACF,CAAC,CAAA;QAEF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACjE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;gBAC7C,OAAM;YACR,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAChE,CAAC,CAAA;YACF,IAAI,CAAC,OAAO,CAAC,SAAS;gBAAE,OAAM;YAC9B,MAAM,SAAS,GAAG,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,CAAA;YAC3C,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,EAAE;gBAC/E,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;gBACtC,MAAM,EAAE,SAAS;gBACjB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;YAChE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/E,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACnE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;gBACxC,OAAM;YACR,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACjC,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aACnE,CAAC,CAAA;YACF,IAAI,CAAC,OAAO,CAAC,SAAS;gBAAE,OAAM;YAC9B,MAAM,SAAS,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;YACjE,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,eAAe,EAAE;gBAC/E,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;gBACtC,MAAM,EAAE,SAAS;gBACjB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;YAChE,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CACL,CAAA"}
@@ -1,96 +1,73 @@
1
1
  /**
2
- * Timer `log` command — add activity manually.
2
+ * Timer `log` command — add a completed interval manually (no running timer).
3
3
  *
4
4
  * @module
5
5
  */
6
- import { Args, Command, Options } from "@effect/cli";
7
- import * as HttpClient from "@effect/platform/HttpClient";
8
- import * as HttpClientRequest from "@effect/platform/HttpClientRequest";
9
- import { ClockifyApiClient } from "@knpkv/clockify-api-client";
10
- import { JiraApiClient, toEffect } from "@knpkv/jira-api-client";
11
- import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
12
- import { Console, Effect, Option, Redacted } from "effect";
13
- import { ClockifyAuth } from "../../services/ClockifyAuth.js";
6
+ import { Console, Effect, Option } from "effect";
7
+ import { Argument as Args, Command, Flag as Options } from "effect/unstable/cli";
8
+ import { TimerService } from "../../services/TimerService.js";
9
+ import { formatDuration, isFullIsoTimestamp, parseDuration, parseStartTime } from "../../utils/time.js";
10
+ import { fetchTicketByKey, NOT_LOGGED_IN_HINT } from "../fetchTicket.js";
11
+ /** Today's calendar day in the user's *local* timezone as `YYYY-MM-DD`. */
12
+ const localToday = () => {
13
+ const d = new Date();
14
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
15
+ };
14
16
  export const log = Command.make("log", {
15
- key: Args.text({ name: "key" }),
16
- time: Options.text("time").pipe(Options.withAlias("t"), Options.withDescription("Duration (e.g. 1h30m, 2h, 45m)")),
17
- date: Options.text("date").pipe(Options.withAlias("d"), Options.withDescription("Date (YYYY-MM-DD, default today)"), Options.optional),
18
- comment: Options.text("comment").pipe(Options.withAlias("c"), Options.withDescription("Worklog comment"), Options.optional)
19
- }, ({ comment, date, key, time }) => Effect.gen(function* () {
20
- // Parse duration string like "1h30m", "2h", "45m"
21
- const durationMatch = time.match(/(?:(\d+)h)?(?:(\d+)m)?/);
22
- if (!durationMatch || (!durationMatch[1] && !durationMatch[2])) {
23
- yield* Console.log("Invalid duration. Use format: 1h30m, 2h, 45m");
17
+ key: Args.string("key"),
18
+ time: Options.string("time").pipe(Options.withAlias("t"), Options.withDescription("Duration (e.g. 1h30m, 2h, 45m)")),
19
+ date: Options.string("date").pipe(Options.withAlias("d"), Options.withDescription("Date (YYYY-MM-DD, default today)"), Options.optional),
20
+ at: Options.string("at").pipe(Options.withDescription("Start time on that date (HH:MM, default 09:00)"), Options.optional),
21
+ comment: Options.string("comment").pipe(Options.withAlias("c"), Options.withDescription("Worklog comment"), Options.optional)
22
+ }, ({ at, comment, date, key, time }) => Effect.gen(function* () {
23
+ const totalSeconds = parseDuration(time);
24
+ if (totalSeconds === null || totalSeconds < 60) {
25
+ yield* Console.log("Invalid duration. Use format: 1h30m, 2h, 45m (minimum 1m).");
24
26
  return;
25
27
  }
26
- const hours = parseInt(durationMatch[1] ?? "0", 10);
27
- const minutes = parseInt(durationMatch[2] ?? "0", 10);
28
- const totalSeconds = Math.max(60, hours * 3600 + minutes * 60);
29
- // Parse date
30
- const dateStr = Option.isSome(date) ? date.value : new Date().toISOString().slice(0, 10);
31
- const started = new Date(`${dateStr}T09:00:00.000Z`);
32
- if (isNaN(started.getTime())) {
33
- yield* Console.log("Invalid date. Use format: YYYY-MM-DD");
28
+ // A full ISO `--at` carries its own date — combining it with `--date` is
29
+ // ambiguous (which date wins?), so reject the conflict explicitly.
30
+ if (Option.isSome(at) && isFullIsoTimestamp(at.value) && Option.isSome(date)) {
31
+ yield* Console.log("--at is a full ISO timestamp; drop --date (it conflicts).");
32
+ return;
33
+ }
34
+ // Parse date + start time → start instant. Default date is the *local*
35
+ // calendar day, and the date base is parsed at local midnight so the
36
+ // HH:MM `--at` lands on the intended local clock time.
37
+ const dateStr = Option.isSome(date) ? date.value : localToday();
38
+ const timeStr = Option.isSome(at) ? at.value : "09:00";
39
+ const started = parseStartTime(timeStr, new Date(`${dateStr}T00:00:00`));
40
+ if (!started || isNaN(started.getTime())) {
41
+ yield* Console.log("Invalid date/time. Use --date YYYY-MM-DD and --at HH:MM.");
34
42
  return;
35
43
  }
36
44
  // Validate ticket exists
37
- const jira = yield* JiraApiClient;
38
- const issue = yield* toEffect(jira.v3.client.GET("/rest/api/3/issue/{issueIdOrKey}", {
39
- params: {
40
- path: { issueIdOrKey: key },
41
- query: { fields: ["summary", "issuetype", "labels"] }
42
- }
43
- })).pipe(Effect.catchAll(() => Effect.succeed(null)));
44
- if (!issue) {
45
+ const fetched = yield* fetchTicketByKey(key);
46
+ if (fetched._tag === "NotLoggedIn") {
47
+ yield* Console.log(NOT_LOGGED_IN_HINT);
48
+ return;
49
+ }
50
+ if (fetched._tag === "NotFound") {
45
51
  yield* Console.log(`Ticket ${key} not found in Jira.`);
46
52
  return;
47
53
  }
48
- const fields = issue.fields;
49
- const summary = typeof fields?.["summary"] === "string" ? fields["summary"] : key;
50
- yield* Console.log(`Logging: ${key} — ${summary}`);
51
- yield* Console.log(` Duration: ${hours}h ${minutes}m (${totalSeconds}s)`);
52
- yield* Console.log(` Date: ${dateStr}`);
53
- // Create Clockify entry (completed)
54
- const clockifyAuth = yield* ClockifyAuth;
55
- const clockifyClient = yield* ClockifyApiClient;
56
- const auth = yield* clockifyAuth.getConfig.pipe(Effect.catchAll(() => Effect.succeed(null)));
57
- let clockifyOk = false;
58
- if (auth) {
59
- const end = new Date(started.getTime() + totalSeconds * 1000);
60
- yield* clockifyClient.createTimeEntry(auth.workspaceId, {
61
- description: `[${key}] ${summary}`,
62
- start: started.toISOString(),
63
- end: end.toISOString()
64
- }).pipe(Effect.tap(() => Effect.sync(() => {
65
- clockifyOk = true;
66
- })), Effect.catchAll(() => Effect.void));
54
+ if (fetched._tag === "FetchError") {
55
+ yield* Console.log(`Failed to fetch ticket ${key}: ${fetched.message}`);
56
+ return;
67
57
  }
68
- // Create Jira worklog via raw HTTP
69
- const jiraAuthSvc = yield* JiraAuth;
70
- const accessToken = yield* jiraAuthSvc.getAccessToken().pipe(Effect.map((t) => Redacted.value(t)), Effect.catchAll(() => Effect.succeed("")));
71
- const cloudId = yield* jiraAuthSvc.getCloudId().pipe(Effect.catchAll(() => Effect.succeed("")));
72
- let jiraOk = false;
73
- if (accessToken && cloudId) {
74
- const httpClient = yield* HttpClient.HttpClient;
75
- const commentText = Option.isSome(comment) ? comment.value : undefined;
76
- const response = yield* httpClient.execute(HttpClientRequest.post(`https://api.atlassian.com/ex/jira/${cloudId}/rest/api/3/issue/${key}/worklog`).pipe(HttpClientRequest.setHeader("Authorization", `Bearer ${accessToken}`), HttpClientRequest.setHeader("Content-Type", "application/json"), HttpClientRequest.bodyUnsafeJson({
77
- started: started.toISOString().replace("Z", "+0000"),
78
- timeSpentSeconds: totalSeconds,
79
- ...(commentText ?
80
- {
81
- comment: {
82
- type: "doc",
83
- version: 1,
84
- content: [{ type: "paragraph", content: [{ type: "text", text: commentText }] }]
85
- }
86
- } :
87
- {})
88
- }))).pipe(Effect.catchAll(() => Effect.succeed(null)));
89
- if (response && response.status >= 200 && response.status < 300) {
90
- jiraOk = true;
91
- }
58
+ const ticket = fetched.ticket;
59
+ yield* Console.log(`Logging: ${ticket.key} ${ticket.summary}`);
60
+ yield* Console.log(` Duration: ${formatDuration(totalSeconds)} (${totalSeconds}s)`);
61
+ yield* Console.log(` Started: ${started.toISOString()}`);
62
+ const timer = yield* TimerService;
63
+ const result = yield* timer.logManual(ticket, {
64
+ start: started,
65
+ durationSeconds: totalSeconds,
66
+ comment: Option.isSome(comment) ? comment.value : undefined
67
+ }).pipe(Effect.catch((e) => Console.log(`Error: ${e.message}`).pipe(Effect.as(null))));
68
+ if (result) {
69
+ yield* Console.log(` Clockify: ${result.clockifyLogged ? "✓" : "✗"}`);
70
+ yield* Console.log(` Jira worklog: ${result.jiraWorklogLogged ? "✓" : "✗"}`);
92
71
  }
93
- yield* Console.log(` Clockify: ${clockifyOk ? "✓" : "✗"}`);
94
- yield* Console.log(` Jira worklog: ${jiraOk ? "✓" : "✗"}`);
95
72
  }));
96
73
  //# sourceMappingURL=log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/cli/timer/log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../../src/cli/timer/log.ts"],"names":[],"mappings":"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"}