@knpkv/jira-clockify 1.5.0 → 1.6.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 (102) hide show
  1. package/README.md +33 -4
  2. package/dist/package.json +1 -1
  3. package/dist/src/bin.js +16 -5
  4. package/dist/src/bin.js.map +1 -1
  5. package/dist/src/cli/CommandFailed.d.ts +27 -0
  6. package/dist/src/cli/CommandFailed.d.ts.map +1 -0
  7. package/dist/src/cli/CommandFailed.js +25 -0
  8. package/dist/src/cli/CommandFailed.js.map +1 -0
  9. package/dist/src/cli/auth.d.ts +23 -3
  10. package/dist/src/cli/auth.d.ts.map +1 -1
  11. package/dist/src/cli/auth.js +123 -102
  12. package/dist/src/cli/auth.js.map +1 -1
  13. package/dist/src/cli/config.d.ts +2 -1
  14. package/dist/src/cli/config.d.ts.map +1 -1
  15. package/dist/src/cli/config.js +43 -29
  16. package/dist/src/cli/config.js.map +1 -1
  17. package/dist/src/cli/fetchTicket.d.ts +3 -3
  18. package/dist/src/cli/fetchTicket.d.ts.map +1 -1
  19. package/dist/src/cli/fetchTicket.js +7 -7
  20. package/dist/src/cli/fetchTicket.js.map +1 -1
  21. package/dist/src/cli/layers.d.ts +6 -5
  22. package/dist/src/cli/layers.d.ts.map +1 -1
  23. package/dist/src/cli/layers.js +16 -15
  24. package/dist/src/cli/layers.js.map +1 -1
  25. package/dist/src/cli/list.d.ts +3 -2
  26. package/dist/src/cli/list.d.ts.map +1 -1
  27. package/dist/src/cli/list.js +11 -5
  28. package/dist/src/cli/list.js.map +1 -1
  29. package/dist/src/cli/reconcile.d.ts +12 -3
  30. package/dist/src/cli/reconcile.d.ts.map +1 -1
  31. package/dist/src/cli/reconcile.js +71 -23
  32. package/dist/src/cli/reconcile.js.map +1 -1
  33. package/dist/src/cli/root.d.ts.map +1 -1
  34. package/dist/src/cli/root.js +3 -3
  35. package/dist/src/cli/root.js.map +1 -1
  36. package/dist/src/cli/setup.d.ts +14 -4
  37. package/dist/src/cli/setup.d.ts.map +1 -1
  38. package/dist/src/cli/setup.js +45 -94
  39. package/dist/src/cli/setup.js.map +1 -1
  40. package/dist/src/cli/timer/discard.d.ts +1 -1
  41. package/dist/src/cli/timer/discard.d.ts.map +1 -1
  42. package/dist/src/cli/timer/discard.js +2 -1
  43. package/dist/src/cli/timer/discard.js.map +1 -1
  44. package/dist/src/cli/timer/log.d.ts +1 -1
  45. package/dist/src/cli/timer/log.d.ts.map +1 -1
  46. package/dist/src/cli/timer/log.js +2 -1
  47. package/dist/src/cli/timer/log.js.map +1 -1
  48. package/dist/src/cli/timer/start.d.ts +2 -1
  49. package/dist/src/cli/timer/start.d.ts.map +1 -1
  50. package/dist/src/cli/timer/start.js +6 -8
  51. package/dist/src/cli/timer/start.js.map +1 -1
  52. package/dist/src/cli/timer/stop.d.ts +1 -1
  53. package/dist/src/cli/timer/stop.d.ts.map +1 -1
  54. package/dist/src/cli/timer.d.ts.map +1 -1
  55. package/dist/src/cli/timer.js +8 -1
  56. package/dist/src/cli/timer.js.map +1 -1
  57. package/dist/src/cli/unknownCommand.d.ts +24 -0
  58. package/dist/src/cli/unknownCommand.d.ts.map +1 -0
  59. package/dist/src/cli/unknownCommand.js +84 -0
  60. package/dist/src/cli/unknownCommand.js.map +1 -0
  61. package/dist/src/cli/watch.d.ts +2 -2
  62. package/dist/src/cli/watch.d.ts.map +1 -1
  63. package/dist/src/services/ConfigService.d.ts +2 -0
  64. package/dist/src/services/ConfigService.d.ts.map +1 -1
  65. package/dist/src/services/ConfigService.js +2 -1
  66. package/dist/src/services/ConfigService.js.map +1 -1
  67. package/dist/src/services/IssueFacts.d.ts +2 -2
  68. package/dist/src/services/IssueFacts.d.ts.map +1 -1
  69. package/dist/src/services/IssueFacts.js +5 -5
  70. package/dist/src/services/IssueFacts.js.map +1 -1
  71. package/dist/src/services/JiraAccess.d.ts +140 -0
  72. package/dist/src/services/JiraAccess.d.ts.map +1 -0
  73. package/dist/src/services/JiraAccess.js +204 -0
  74. package/dist/src/services/JiraAccess.js.map +1 -0
  75. package/dist/src/services/ProviderSnapshots.d.ts +2 -2
  76. package/dist/src/services/ProviderSnapshots.d.ts.map +1 -1
  77. package/dist/src/services/ProviderSnapshots.js +14 -24
  78. package/dist/src/services/ProviderSnapshots.js.map +1 -1
  79. package/dist/src/services/ReconcileService.d.ts +2 -2
  80. package/dist/src/services/ReconcileService.d.ts.map +1 -1
  81. package/dist/src/services/ReconcileService.js +11 -4
  82. package/dist/src/services/ReconcileService.js.map +1 -1
  83. package/dist/src/services/SavedEntries.d.ts +1 -1
  84. package/dist/src/services/SavedEntries.d.ts.map +1 -1
  85. package/dist/src/services/TimerService.d.ts +3 -3
  86. package/dist/src/services/TimerService.d.ts.map +1 -1
  87. package/dist/src/services/TimerService.js +6 -17
  88. package/dist/src/services/TimerService.js.map +1 -1
  89. package/dist/src/testing/fakeHeadless.d.ts +1 -1
  90. package/dist/src/testing/fakeHeadless.d.ts.map +1 -1
  91. package/dist/src/testing/fakeHeadless.js +17 -7
  92. package/dist/src/testing/fakeHeadless.js.map +1 -1
  93. package/dist/src/tui/App.js +1 -1
  94. package/dist/src/tui/atoms/runtime.d.ts +1 -1
  95. package/dist/src/tui/atoms/runtime.d.ts.map +1 -1
  96. package/dist/src/utils/hints.d.ts +4 -2
  97. package/dist/src/utils/hints.d.ts.map +1 -1
  98. package/dist/src/utils/hints.js +4 -2
  99. package/dist/src/utils/hints.js.map +1 -1
  100. package/dist/tsconfig.tsbuildinfo +1 -1
  101. package/package.json +4 -4
  102. package/skills/jcf/SKILL.md +9 -6
@@ -20,7 +20,6 @@
20
20
  * @module
21
21
  */
22
22
  import { JiraApiClient } from "@knpkv/jira-api-client";
23
- import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
24
23
  import * as Clock from "effect/Clock";
25
24
  import * as Context from "effect/Context";
26
25
  import * as Effect from "effect/Effect";
@@ -32,6 +31,7 @@ import * as Predicate from "effect/Predicate";
32
31
  import * as Schema from "effect/Schema";
33
32
  import { isTicketKey } from "../agent/sessions.js";
34
33
  import { HomeDirectory } from "./HomeDirectory.js";
34
+ import { JiraAccess } from "./JiraAccess.js";
35
35
  export class IssueFacts extends Context.Service()("jcf/IssueFacts") {
36
36
  }
37
37
  /** Admit unknown tickets, but withhold a positive other-owner fact unless explicitly overridden. */
@@ -192,7 +192,7 @@ export const layer = Layer.effect(IssueFacts, Effect.gen(function* () {
192
192
  const path = yield* Path.Path;
193
193
  const home = (yield* HomeDirectory).path;
194
194
  const jira = yield* JiraApiClient;
195
- const auth = yield* JiraAuth;
195
+ const access = yield* JiraAccess;
196
196
  const dir = path.join(home, CACHE_DIR);
197
197
  const filePath = path.join(dir, CACHE_FILE);
198
198
  const readCache = Effect.gen(function* () {
@@ -238,11 +238,11 @@ export const layer = Layer.effect(IssueFacts, Effect.gen(function* () {
238
238
  // A logged-out Jira resolves an empty cloudId into a URL Atlassian answers with a 404,
239
239
  // which would otherwise look exactly like "none of these issues exist" — and mark every
240
240
  // ticket as somebody else's.
241
- const loggedIn = yield* auth.isLoggedIn().pipe(Effect.orElseSucceed(() => false));
242
- if (!loggedIn)
241
+ const connection = yield* access.connection.pipe(Effect.orElseSucceed(() => Option.none()));
242
+ if (Option.isNone(connection))
243
243
  return { checked: false, facts: new Map() };
244
244
  const mine = yield* accountId.pipe(Effect.orElseSucceed(() => null));
245
- const cloudId = yield* auth.getCloudId().pipe(Effect.orElseSucceed(() => ""));
245
+ const cloudId = connection.value.cloudId;
246
246
  if (mine === null || cloudId === "")
247
247
  return { checked: false, facts: new Map() };
248
248
  const cache = yield* readCache;
@@ -1 +1 @@
1
- {"version":3,"file":"IssueFacts.js","sourceRoot":"","sources":["../../../src/services/IssueFacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IssueFacts.js","sourceRoot":"","sources":["../../../src/services/IssueFacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * How jcf reaches Jira: an API token (`jcf auth jira token`) or the OAuth app (`jcf auth jira login`).
3
+ *
4
+ * **Mental model**
5
+ *
6
+ * - **One connection value.** {@link JiraConnection} carries the credential, the site, its cloud id and
7
+ * the account together, read at once, so a caller never addresses one site while authenticating or
8
+ * scoping against another.
9
+ * - **The API token wins.** `~/.jcf/jira.json` is used when present; otherwise the OAuth login.
10
+ * - **Not connected is a value**, `Option.none()`, distinct from an unreadable credential file.
11
+ * - **The token file** is written atomically with mode `0600` and is never printed.
12
+ *
13
+ * @module
14
+ */
15
+ import type { JiraApiCredential } from "@knpkv/jira-api-client";
16
+ import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
17
+ import * as Context from "effect/Context";
18
+ import * as Effect from "effect/Effect";
19
+ import * as FileSystem from "effect/FileSystem";
20
+ import * as HttpClient from "effect/http/HttpClient";
21
+ import * as Layer from "effect/Layer";
22
+ import * as Option from "effect/Option";
23
+ import * as Path from "effect/Path";
24
+ import * as Redacted from "effect/Redacted";
25
+ import * as Schema from "effect/Schema";
26
+ import { HomeDirectory } from "./HomeDirectory.js";
27
+ export { CONNECT_JIRA_COMMAND as connectJiraCommand } from "../utils/hints.js";
28
+ /** What `~/.jcf/jira.json` holds. The token stays in this file and in request headers only. */
29
+ declare const StoredToken: Schema.Struct<{
30
+ readonly siteUrl: Schema.String;
31
+ /**
32
+ * Where requests go: the site itself for a classic token, or Atlassian's gateway for the site
33
+ * (`https://api.atlassian.com/ex/jira/<cloudId>`) for a scoped token, which the site refuses.
34
+ */
35
+ readonly apiUrl: Schema.String;
36
+ readonly cloudId: Schema.String;
37
+ readonly email: Schema.String;
38
+ readonly apiToken: Schema.String;
39
+ readonly accountId: Schema.String;
40
+ readonly displayName: Schema.String;
41
+ }>;
42
+ export interface StoredToken extends Schema.Schema.Type<typeof StoredToken> {
43
+ }
44
+ export interface JiraConnection {
45
+ readonly method: "api-token" | "oauth";
46
+ readonly credential: JiraApiCredential;
47
+ readonly cloudId: string;
48
+ readonly siteUrl: string;
49
+ /** Empty when an OAuth login has not cached its account yet. */
50
+ readonly accountId: string;
51
+ readonly displayName: string;
52
+ }
53
+ declare const JiraAccessUnreadable_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
54
+ readonly _tag: "JiraAccessUnreadable";
55
+ } & Readonly<A>;
56
+ /** The Jira credential exists but cannot be read. */
57
+ export declare class JiraAccessUnreadable extends JiraAccessUnreadable_base<{
58
+ readonly path: string;
59
+ }> {
60
+ get message(): string;
61
+ }
62
+ declare const JiraTokenNotSaved_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
63
+ readonly _tag: "JiraTokenNotSaved";
64
+ } & Readonly<A>;
65
+ /** The token file could not be written. */
66
+ export declare class JiraTokenNotSaved extends JiraTokenNotSaved_base<{
67
+ readonly path: string;
68
+ }> {
69
+ get message(): string;
70
+ }
71
+ declare const JiraSiteInvalid_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
72
+ readonly _tag: "JiraSiteInvalid";
73
+ } & Readonly<A>;
74
+ /** What the user typed is not a Jira Cloud address, so no token is sent to it. */
75
+ export declare class JiraSiteInvalid extends JiraSiteInvalid_base<{
76
+ readonly input: string;
77
+ }> {
78
+ get message(): string;
79
+ }
80
+ declare const JiraLoginChanged_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
81
+ readonly _tag: "JiraLoginChanged";
82
+ } & Readonly<A>;
83
+ /** The OAuth login changed between reading its token and its profile; nothing mixed is used. */
84
+ export declare class JiraLoginChanged extends JiraLoginChanged_base<{}> {
85
+ get message(): string;
86
+ }
87
+ declare const JiraSiteNotFound_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
88
+ readonly _tag: "JiraSiteNotFound";
89
+ } & Readonly<A>;
90
+ /** Nothing answers as a Jira Cloud site at the address. */
91
+ export declare class JiraSiteNotFound extends JiraSiteNotFound_base<{
92
+ readonly siteUrl: string;
93
+ }> {
94
+ get message(): string;
95
+ }
96
+ declare const JiraUnreachable_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
97
+ readonly _tag: "JiraUnreachable";
98
+ } & Readonly<A>;
99
+ /** The site could not be reached at all. */
100
+ export declare class JiraUnreachable extends JiraUnreachable_base<{
101
+ readonly siteUrl: string;
102
+ }> {
103
+ get message(): string;
104
+ }
105
+ declare const JiraTokenRejected_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
106
+ readonly _tag: "JiraTokenRejected";
107
+ } & Readonly<A>;
108
+ /** The site answered, and refused the email and token. */
109
+ export declare class JiraTokenRejected extends JiraTokenRejected_base<{
110
+ readonly siteUrl: string;
111
+ readonly email: string;
112
+ }> {
113
+ get message(): string;
114
+ }
115
+ export type JiraTokenVerificationError = JiraSiteInvalid | JiraSiteNotFound | JiraUnreachable | JiraTokenRejected;
116
+ export interface JiraAccessContract {
117
+ /** The current connection, or none when Jira is not connected. Re-read on every call. */
118
+ readonly connection: Effect.Effect<Option.Option<JiraConnection>, JiraAccessUnreadable | JiraLoginChanged>;
119
+ /** Checks a site, email and token against Jira and returns what would be stored. Saves nothing. */
120
+ readonly verifyToken: (input: {
121
+ readonly site: string;
122
+ readonly email: string;
123
+ readonly apiToken: Redacted.Redacted<string>;
124
+ }) => Effect.Effect<StoredToken, JiraTokenVerificationError>;
125
+ readonly saveToken: (token: StoredToken) => Effect.Effect<void, JiraTokenNotSaved>;
126
+ /** Removes the token file. True when there was one. */
127
+ readonly removeToken: Effect.Effect<boolean, JiraTokenNotSaved>;
128
+ }
129
+ declare const JiraAccess_base: Context.ServiceClass<JiraAccess, "jcf/JiraAccess", JiraAccessContract>;
130
+ export declare class JiraAccess extends JiraAccess_base {
131
+ }
132
+ /**
133
+ * The origin of a Jira Cloud site the user typed: `team`, `team.atlassian.net` and a pasted Jira URL
134
+ * all name `https://team.atlassian.net`. Only `*.atlassian.net` over https is accepted, because the
135
+ * token is sent to this host: a typo or a look-alike domain must fail before any credential leaves.
136
+ * Plain http on loopback is the one exception, for stand-ins in tests.
137
+ */
138
+ export declare const siteOrigin: (input: string) => Option.Option<string>;
139
+ export declare const layer: Layer.Layer<JiraAccess, never, FileSystem.FileSystem | HomeDirectory | HttpClient.HttpClient | JiraAuth | Path.Path>;
140
+ //# sourceMappingURL=JiraAccess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JiraAccess.d.ts","sourceRoot":"","sources":["../../../src/services/JiraAccess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
2
+ import * as Context from "effect/Context";
3
+ import * as Data from "effect/Data";
4
+ import * as Effect from "effect/Effect";
5
+ import { Base64 } from "effect/encoding";
6
+ import * as FileSystem from "effect/FileSystem";
7
+ import * as HttpClient from "effect/http/HttpClient";
8
+ import * as HttpClientRequest from "effect/http/HttpClientRequest";
9
+ import * as Layer from "effect/Layer";
10
+ import * as Option from "effect/Option";
11
+ import * as Path from "effect/Path";
12
+ import * as Predicate from "effect/Predicate";
13
+ import * as Random from "effect/Random";
14
+ import * as Redacted from "effect/Redacted";
15
+ import * as Schema from "effect/Schema";
16
+ import { CONNECT_JIRA_COMMAND as connectJiraCommand } from "../utils/hints.js";
17
+ import { HomeDirectory } from "./HomeDirectory.js";
18
+ export { CONNECT_JIRA_COMMAND as connectJiraCommand } from "../utils/hints.js";
19
+ /** What `~/.jcf/jira.json` holds. The token stays in this file and in request headers only. */
20
+ const StoredToken = Schema.Struct({
21
+ siteUrl: Schema.String,
22
+ /**
23
+ * Where requests go: the site itself for a classic token, or Atlassian's gateway for the site
24
+ * (`https://api.atlassian.com/ex/jira/<cloudId>`) for a scoped token, which the site refuses.
25
+ */
26
+ apiUrl: Schema.String,
27
+ cloudId: Schema.String,
28
+ email: Schema.String,
29
+ apiToken: Schema.String,
30
+ accountId: Schema.String,
31
+ displayName: Schema.String
32
+ });
33
+ const decodeStoredToken = Schema.decodeUnknownEffect(Schema.fromJsonString(StoredToken));
34
+ /** The Jira credential exists but cannot be read. */
35
+ export class JiraAccessUnreadable extends Data.TaggedError("JiraAccessUnreadable") {
36
+ get message() {
37
+ return `Could not read the Jira credential in ${this.path}. Run ${connectJiraCommand} to connect Jira again.`;
38
+ }
39
+ }
40
+ /** The token file could not be written. */
41
+ export class JiraTokenNotSaved extends Data.TaggedError("JiraTokenNotSaved") {
42
+ get message() {
43
+ return `Could not save the Jira token to ${this.path}. Check that the folder is writable.`;
44
+ }
45
+ }
46
+ /** What the user typed is not a Jira Cloud address, so no token is sent to it. */
47
+ export class JiraSiteInvalid extends Data.TaggedError("JiraSiteInvalid") {
48
+ get message() {
49
+ return `"${this.input}" is not a Jira Cloud address. API tokens work with Jira Cloud sites, ` +
50
+ "which end in .atlassian.net, such as your-team.atlassian.net.";
51
+ }
52
+ }
53
+ /** The OAuth login changed between reading its token and its profile; nothing mixed is used. */
54
+ export class JiraLoginChanged extends Data.TaggedError("JiraLoginChanged") {
55
+ get message() {
56
+ return "The Jira OAuth login changed while it was being read. Try again.";
57
+ }
58
+ }
59
+ /** Nothing answers as a Jira Cloud site at the address. */
60
+ export class JiraSiteNotFound extends Data.TaggedError("JiraSiteNotFound") {
61
+ get message() {
62
+ return `No Jira Cloud site answers at ${this.siteUrl}. Check the address in your browser's Jira tab.`;
63
+ }
64
+ }
65
+ /** The site could not be reached at all. */
66
+ export class JiraUnreachable extends Data.TaggedError("JiraUnreachable") {
67
+ get message() {
68
+ return `Could not reach ${this.siteUrl}. Check your network connection and try again.`;
69
+ }
70
+ }
71
+ /** The site answered, and refused the email and token. */
72
+ export class JiraTokenRejected extends Data.TaggedError("JiraTokenRejected") {
73
+ get message() {
74
+ return `${this.siteUrl} rejected the API token for ${this.email}. Use the email you sign in to Atlassian with, ` +
75
+ "and a token from https://id.atlassian.com/manage-profile/security/api-tokens.";
76
+ }
77
+ }
78
+ export class JiraAccess extends Context.Service()("jcf/JiraAccess") {
79
+ }
80
+ const loopbackHosts = new Set(["localhost", "127.0.0.1", "[::1]"]);
81
+ /**
82
+ * The origin of a Jira Cloud site the user typed: `team`, `team.atlassian.net` and a pasted Jira URL
83
+ * all name `https://team.atlassian.net`. Only `*.atlassian.net` over https is accepted, because the
84
+ * token is sent to this host: a typo or a look-alike domain must fail before any credential leaves.
85
+ * Plain http on loopback is the one exception, for stand-ins in tests.
86
+ */
87
+ export const siteOrigin = (input) => {
88
+ const trimmed = input.trim();
89
+ if (trimmed === "")
90
+ return Option.none();
91
+ const withScheme = /^[a-z][a-z0-9+.-]*:\/\//iu.test(trimmed) ? trimmed : `https://${trimmed}`;
92
+ const url = URL.parse(withScheme);
93
+ if (url === null || url.username !== "" || url.password !== "")
94
+ return Option.none();
95
+ if (url.protocol === "http:" && loopbackHosts.has(url.hostname))
96
+ return Option.some(url.origin);
97
+ if (url.protocol !== "https:" || url.port !== "")
98
+ return Option.none();
99
+ const host = url.hostname.includes(".") ? url.hostname : `${url.hostname}.atlassian.net`;
100
+ return /^[a-z0-9][a-z0-9-]*\.atlassian\.net$/u.test(host) ? Option.some(`https://${host}`) : Option.none();
101
+ };
102
+ const TenantInfo = Schema.Struct({ cloudId: Schema.NonEmptyString });
103
+ const Myself = Schema.Struct({ accountId: Schema.NonEmptyString, displayName: Schema.String });
104
+ export const layer = Layer.effect(JiraAccess, Effect.gen(function* () {
105
+ const fs = yield* FileSystem.FileSystem;
106
+ const path = yield* Path.Path;
107
+ const httpClient = yield* HttpClient.HttpClient;
108
+ const oauth = yield* JiraAuth;
109
+ const directory = path.join((yield* HomeDirectory).path, ".jcf");
110
+ const file = path.join(directory, "jira.json");
111
+ const tokenConnection = Effect.gen(function* () {
112
+ if (!(yield* fs.exists(file)))
113
+ return Option.none();
114
+ const stored = yield* fs.readFileString(file).pipe(Effect.flatMap(decodeStoredToken));
115
+ return Option.some({
116
+ method: "api-token",
117
+ credential: {
118
+ type: "basic",
119
+ email: stored.email,
120
+ apiToken: Redacted.make(stored.apiToken),
121
+ siteUrl: stored.apiUrl
122
+ },
123
+ cloudId: stored.cloudId,
124
+ siteUrl: stored.siteUrl,
125
+ accountId: stored.accountId,
126
+ displayName: stored.displayName
127
+ });
128
+ }).pipe(Effect.mapError(() => new JiraAccessUnreadable({ path: file })));
129
+ // The token is refreshed first, then site and account come from one profile object holding that
130
+ // same token. Reading them separately could pair one profile's token with another's site.
131
+ const oauthConnection = Effect.gen(function* () {
132
+ if (!(yield* oauth.isLoggedIn()))
133
+ return Option.none();
134
+ const accessToken = yield* oauth.getAccessToken();
135
+ const profile = yield* oauth.getActiveProfile();
136
+ if (profile === null)
137
+ return Option.none();
138
+ if (profile.token.access_token !== Redacted.value(accessToken))
139
+ return yield* new JiraLoginChanged();
140
+ const { cloud_id: cloudId, site_url: siteUrl, user } = profile.token;
141
+ return Option.some({
142
+ method: "oauth",
143
+ credential: { type: "oauth2", accessToken, cloudId },
144
+ cloudId,
145
+ siteUrl,
146
+ accountId: user?.account_id ?? "",
147
+ displayName: user?.name ?? ""
148
+ });
149
+ }).pipe(Effect.mapError((error) => Predicate.isTagged(error, "JiraLoginChanged")
150
+ ? new JiraLoginChanged()
151
+ : new JiraAccessUnreadable({ path: "the Jira OAuth login" })));
152
+ const connection = tokenConnection.pipe(Effect.flatMap((token) => Option.isSome(token) ? Effect.succeed(token) : oauthConnection));
153
+ const verifyToken = (input) => Effect.gen(function* () {
154
+ const siteUrl = yield* Option.match(siteOrigin(input.site), {
155
+ onNone: () => Effect.fail(new JiraSiteInvalid({ input: input.site })),
156
+ onSome: Effect.succeed
157
+ });
158
+ const unreachable = () => new JiraUnreachable({ siteUrl });
159
+ const notFound = () => new JiraSiteNotFound({ siteUrl });
160
+ const tenant = yield* httpClient.execute(HttpClientRequest.get(`${siteUrl}/_edge/tenant_info`)).pipe(Effect.mapError(unreachable));
161
+ if (tenant.status !== 200)
162
+ return yield* notFound();
163
+ const { cloudId } = yield* tenant.json.pipe(Effect.flatMap(Schema.decodeUnknownEffect(TenantInfo)), Effect.mapError(notFound));
164
+ const authorization = `Basic ${Base64.encode(`${input.email}:${Redacted.value(input.apiToken)}`)}`;
165
+ const askMyself = (apiUrl) => httpClient.execute(HttpClientRequest.get(`${apiUrl}/rest/api/3/myself`).pipe(HttpClientRequest.setHeader("Authorization", authorization), HttpClientRequest.setHeader("Accept", "application/json"))).pipe(Effect.mapError(unreachable));
166
+ const refused = (status) => status === 401 || status === 403;
167
+ // A classic token works on the site; a scoped one only through Atlassian's gateway for it.
168
+ const gateway = `https://api.atlassian.com/ex/jira/${cloudId}`;
169
+ const onSite = yield* askMyself(siteUrl);
170
+ const apiUrl = refused(onSite.status) ? gateway : siteUrl;
171
+ const myself = apiUrl === gateway ? yield* askMyself(gateway) : onSite;
172
+ if (refused(myself.status))
173
+ return yield* new JiraTokenRejected({ siteUrl, email: input.email });
174
+ if (myself.status !== 200)
175
+ return yield* unreachable();
176
+ const user = yield* myself.json.pipe(Effect.flatMap(Schema.decodeUnknownEffect(Myself)), Effect.mapError(notFound));
177
+ return {
178
+ siteUrl,
179
+ apiUrl,
180
+ cloudId,
181
+ email: input.email,
182
+ apiToken: Redacted.value(input.apiToken),
183
+ accountId: user.accountId,
184
+ displayName: user.displayName
185
+ };
186
+ });
187
+ // Written beside the target and renamed over it, so a reader never sees half a file and the token
188
+ // is never readable by anyone else, not even for the moment before a chmod.
189
+ const saveToken = (token) => Effect.gen(function* () {
190
+ yield* fs.makeDirectory(directory, { recursive: true, mode: 0o700 });
191
+ const pending = `${file}.${yield* Random.nextIntBetween(0, 1_000_000_000)}.tmp`;
192
+ yield* fs.writeFileString(pending, JSON.stringify(token, null, 2), { mode: 0o600 });
193
+ yield* fs.chmod(pending, 0o600);
194
+ yield* fs.rename(pending, file).pipe(Effect.tapError(() => fs.remove(pending).pipe(Effect.ignore)));
195
+ }).pipe(Effect.mapError(() => new JiraTokenNotSaved({ path: file })));
196
+ const removeToken = Effect.gen(function* () {
197
+ if (!(yield* fs.exists(file)))
198
+ return false;
199
+ yield* fs.remove(file);
200
+ return true;
201
+ }).pipe(Effect.mapError(() => new JiraTokenNotSaved({ path: file })));
202
+ return { connection, verifyToken, saveToken, removeToken };
203
+ }));
204
+ //# sourceMappingURL=JiraAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JiraAccess.js","sourceRoot":"","sources":["../../../src/services/JiraAccess.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  /** Private provider coordinates and pinned authenticated clients; never serialize these snapshots. */
2
2
  import { type AuthenticatedClockifyApi, type ClockifyApiConfigContract } from "@knpkv/clockify-api-client";
3
3
  import { make as makeJiraApi } from "@knpkv/jira-api-client";
4
- import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
5
4
  import { Effect, Schema } from "effect";
6
5
  import * as HttpClient from "effect/http/HttpClient";
7
6
  import { ClockifyAuth } from "./ClockifyAuth.js";
7
+ import { JiraAccess } from "./JiraAccess.js";
8
8
  declare const ProviderSnapshotError_base: Schema.Class<ProviderSnapshotError, Schema.TaggedStruct<"ProviderSnapshotError", {
9
9
  readonly message: Schema.String;
10
10
  readonly cause: Schema.optionalKey<Schema.Defect>;
@@ -36,6 +36,6 @@ export type JiraWriteState = {
36
36
  export declare const make: Effect.Effect<{
37
37
  clockify: Effect.Effect<ClockifyWriteSnapshot, ProviderSnapshotError, never>;
38
38
  jira: Effect.Effect<JiraWriteState, never, never>;
39
- }, never, ClockifyAuth | HttpClient.HttpClient | JiraAuth>;
39
+ }, never, ClockifyAuth | HttpClient.HttpClient | JiraAccess>;
40
40
  export {};
41
41
  //# sourceMappingURL=ProviderSnapshots.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderSnapshots.d.ts","sourceRoot":"","sources":["../../../src/services/ProviderSnapshots.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE/B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;;;;;AAEhD,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;AAEL,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAA;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,YAAY,EAAE,eAAe,GAAG,YAAY,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAA;AAEtF,8GAA8G;AAC9G,eAAO,MAAM,IAAI;;;0DAuEf,CAAA"}
1
+ {"version":3,"file":"ProviderSnapshots.d.ts","sourceRoot":"","sources":["../../../src/services/ProviderSnapshots.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE/B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;;;;;AAE5C,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;AAEL,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAA;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,YAAY,EAAE,eAAe,GAAG,YAAY,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAA;AAEtF,8GAA8G;AAC9G,eAAO,MAAM,IAAI;;;4DA2Df,CAAA"}
@@ -1,10 +1,10 @@
1
1
  /** Private provider coordinates and pinned authenticated clients; never serialize these snapshots. */
2
2
  import { make as makeClockifyApi } from "@knpkv/clockify-api-client";
3
3
  import { make as makeJiraApi } from "@knpkv/jira-api-client";
4
- import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
5
- import { Effect, Redacted, Schema } from "effect";
4
+ import { Effect, Option, Schema } from "effect";
6
5
  import * as HttpClient from "effect/http/HttpClient";
7
6
  import { ClockifyAuth } from "./ClockifyAuth.js";
7
+ import { JiraAccess } from "./JiraAccess.js";
8
8
  export class ProviderSnapshotError extends Schema.TaggedError()("ProviderSnapshotError", {
9
9
  message: Schema.String,
10
10
  cause: Schema.optionalKey(Schema.Defect())
@@ -13,7 +13,7 @@ export class ProviderSnapshotError extends Schema.TaggedError()("ProviderSnapsho
13
13
  /** Bind all reads and mutations in an operation to one verified credential and selected provider endpoint. */
14
14
  export const make = Effect.gen(function* () {
15
15
  const clockifyAuth = yield* ClockifyAuth;
16
- const jiraAuth = yield* JiraAuth;
16
+ const jiraAccess = yield* JiraAccess;
17
17
  const httpClient = yield* HttpClient.HttpClient;
18
18
  /** One decoded credential and endpoint back every Clockify read and write in this operation. */
19
19
  const clockifyWriteSnapshot = Effect.gen(function* () {
@@ -39,27 +39,17 @@ export const make = Effect.gen(function* () {
39
39
  legacyScope: JSON.stringify([auth.workspaceId, user.id])
40
40
  };
41
41
  });
42
- /** Bind verification and worklog POST to one OAuth credential and selected site. */
42
+ /** Bind verification and worklog POST to one credential and its site, whether API token or OAuth. */
43
43
  const jiraWriteState = Effect.gen(function* () {
44
- const login = yield* Effect.result(jiraAuth.isLoggedIn());
45
- if (login._tag === "Failure")
44
+ const read = yield* Effect.result(jiraAccess.connection);
45
+ if (read._tag === "Failure")
46
46
  return { availability: "unverified", snapshot: null };
47
- if (!login.success)
47
+ if (Option.isNone(read.success))
48
48
  return { availability: "not-logged-in", snapshot: null };
49
- const tokenResult = yield* Effect.result(jiraAuth.getAccessToken());
50
- const profileResult = yield* Effect.result(jiraAuth.getActiveProfile());
51
- if (tokenResult._tag === "Failure" || profileResult._tag === "Failure") {
49
+ const connection = read.success.value;
50
+ if (connection.cloudId === "" || connection.siteUrl === "")
52
51
  return { availability: "unverified", snapshot: null };
53
- }
54
- const token = tokenResult.success;
55
- const profile = profileResult.success;
56
- if (profile === null || profile.token.cloud_id === "" || profile.token.site_url === "" ||
57
- profile.token.access_token !== Redacted.value(token))
58
- return { availability: "unverified", snapshot: null };
59
- const client = makeJiraApi(httpClient, {
60
- baseUrl: "",
61
- auth: { type: "oauth2", accessToken: token, cloudId: profile.token.cloud_id }
62
- });
52
+ const client = makeJiraApi(httpClient, { baseUrl: "", auth: connection.credential });
63
53
  const live = yield* client.getCurrentUser({}).pipe(Effect.orElseSucceed(() => null));
64
54
  if (live?.accountId === undefined || live.accountId === "") {
65
55
  return { availability: "unverified", snapshot: null };
@@ -68,11 +58,11 @@ export const make = Effect.gen(function* () {
68
58
  availability: "verified",
69
59
  snapshot: {
70
60
  client,
71
- ledgerScope: JSON.stringify([profile.token.cloud_id, live.accountId]),
72
- heldScope: JSON.stringify([profile.token.cloud_id, profile.token.site_url, live.accountId]),
61
+ ledgerScope: JSON.stringify([connection.cloudId, live.accountId]),
62
+ heldScope: JSON.stringify([connection.cloudId, connection.siteUrl, live.accountId]),
73
63
  accountId: live.accountId,
74
- cloudId: profile.token.cloud_id,
75
- siteUrl: profile.token.site_url
64
+ cloudId: connection.cloudId,
65
+ siteUrl: connection.siteUrl
76
66
  }
77
67
  };
78
68
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderSnapshots.js","sourceRoot":"","sources":["../../../src/services/ProviderSnapshots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProviderSnapshots.js","sourceRoot":"","sources":["../../../src/services/ProviderSnapshots.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { JiraApiClient } from "@knpkv/jira-api-client";
2
- import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
3
2
  import * as Context from "effect/Context";
4
3
  import * as Effect from "effect/Effect";
5
4
  import * as FileSystem from "effect/FileSystem";
@@ -11,6 +10,7 @@ import { localDay } from "../utils/time.js";
11
10
  import { AgentSessionReader } from "./AgentSessionReader.js";
12
11
  import { ConfigService } from "./ConfigService.js";
13
12
  import { HomeDirectory } from "./HomeDirectory.js";
13
+ import { JiraAccess } from "./JiraAccess.js";
14
14
  import { type RecordedEntry } from "./SavedEntries.js";
15
15
  import { SessionAttributor } from "./SessionAttributor.js";
16
16
  import { SourceLedger } from "./SourceLedger.js";
@@ -382,5 +382,5 @@ export type DayTally = ReadonlyArray<{
382
382
  * Buckets present on either side appear; rows are sorted by day then ticket for stable output.
383
383
  */
384
384
  export declare const buildReconcileRows: (clockify: DayTally, jira: DayTally) => ReadonlyArray<ReconcileRow>;
385
- export declare const layer: Layer.Layer<ReconcileService, never, AgentSessionReader | import("./ClockifyAuth.js").ClockifyAuth | ConfigService | FileSystem.FileSystem | HomeDirectory | import("effect/http/HttpClient").HttpClient | JiraApiClient | JiraAuth | Path.Path | SessionAttributor | SourceLedger | TimerService>;
385
+ export declare const layer: Layer.Layer<ReconcileService, never, AgentSessionReader | import("./ClockifyAuth.js").ClockifyAuth | ConfigService | FileSystem.FileSystem | HomeDirectory | import("effect/http/HttpClient").HttpClient | JiraAccess | JiraApiClient | Path.Path | SessionAttributor | SourceLedger | TimerService>;
386
386
  //# sourceMappingURL=ReconcileService.d.ts.map