chief-clancy 0.5.7 → 0.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/bundle/clancy-once.js +53 -53
  2. package/dist/scripts/once/board-ops.d.ts +11 -0
  3. package/dist/scripts/once/board-ops.d.ts.map +1 -0
  4. package/dist/scripts/once/board-ops.js +81 -0
  5. package/dist/scripts/once/board-ops.js.map +1 -0
  6. package/dist/scripts/once/deliver.d.ts +13 -0
  7. package/dist/scripts/once/deliver.d.ts.map +1 -0
  8. package/dist/scripts/once/deliver.js +134 -0
  9. package/dist/scripts/once/deliver.js.map +1 -0
  10. package/dist/scripts/once/fetch-ticket.d.ts +4 -0
  11. package/dist/scripts/once/fetch-ticket.d.ts.map +1 -0
  12. package/dist/scripts/once/fetch-ticket.js +59 -0
  13. package/dist/scripts/once/fetch-ticket.js.map +1 -0
  14. package/dist/scripts/once/git-token.d.ts +13 -0
  15. package/dist/scripts/once/git-token.d.ts.map +1 -0
  16. package/dist/scripts/once/git-token.js +30 -0
  17. package/dist/scripts/once/git-token.js.map +1 -0
  18. package/dist/scripts/once/once.d.ts.map +1 -1
  19. package/dist/scripts/once/once.js +6 -535
  20. package/dist/scripts/once/once.js.map +1 -1
  21. package/dist/scripts/once/pr-creation.d.ts +11 -0
  22. package/dist/scripts/once/pr-creation.d.ts.map +1 -0
  23. package/dist/scripts/once/pr-creation.js +50 -0
  24. package/dist/scripts/once/pr-creation.js.map +1 -0
  25. package/dist/scripts/once/rework.d.ts +32 -0
  26. package/dist/scripts/once/rework.d.ts.map +1 -0
  27. package/dist/scripts/once/rework.js +208 -0
  28. package/dist/scripts/once/rework.js.map +1 -0
  29. package/dist/scripts/once/types.d.ts +13 -0
  30. package/dist/scripts/once/types.d.ts.map +1 -0
  31. package/dist/scripts/once/types.js +2 -0
  32. package/dist/scripts/once/types.js.map +1 -0
  33. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ import type { BoardConfig, SharedEnv } from '../../scripts/shared/env-schema/env-schema.js';
2
+ import type { FetchedTicket } from './types.js';
3
+ /** Type-safe access to shared env vars across all board configs. */
4
+ export declare function sharedEnv(config: BoardConfig): SharedEnv;
5
+ export declare function pingBoard(config: BoardConfig): Promise<{
6
+ ok: boolean;
7
+ error?: string;
8
+ }>;
9
+ export declare function validateInputs(config: BoardConfig): string | undefined;
10
+ export declare function transitionToStatus(config: BoardConfig, ticket: FetchedTicket, statusName: string): Promise<void>;
11
+ //# sourceMappingURL=board-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-ops.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/board-ops.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACV,MAAM,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAExD;AAID,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc1C;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CA8BtE;AAID,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAmCf"}
@@ -0,0 +1,81 @@
1
+ import { isValidRepo, pingGitHub } from '../../scripts/board/github/github.js';
2
+ import { buildAuthHeader, isSafeJqlValue, pingJira, transitionIssue as transitionJiraIssue, } from '../../scripts/board/jira/jira.js';
3
+ import { isValidTeamId, pingLinear, transitionIssue as transitionLinearIssue, } from '../../scripts/board/linear/linear.js';
4
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
5
+ /** Type-safe access to shared env vars across all board configs. */
6
+ export function sharedEnv(config) {
7
+ return config.env;
8
+ }
9
+ // ─── Board-specific ping ─────────────────────────────────────────────────────
10
+ export async function pingBoard(config) {
11
+ switch (config.provider) {
12
+ case 'jira': {
13
+ const { env } = config;
14
+ const auth = buildAuthHeader(env.JIRA_USER, env.JIRA_API_TOKEN);
15
+ return pingJira(env.JIRA_BASE_URL, env.JIRA_PROJECT_KEY, auth);
16
+ }
17
+ case 'github':
18
+ return pingGitHub(config.env.GITHUB_TOKEN, config.env.GITHUB_REPO);
19
+ case 'linear':
20
+ return pingLinear(config.env.LINEAR_API_KEY);
21
+ }
22
+ }
23
+ // ─── Board-specific validation ───────────────────────────────────────────────
24
+ export function validateInputs(config) {
25
+ switch (config.provider) {
26
+ case 'jira': {
27
+ const { env } = config;
28
+ if (!isSafeJqlValue(env.JIRA_PROJECT_KEY)) {
29
+ return '✗ JIRA_PROJECT_KEY contains invalid characters';
30
+ }
31
+ if (env.CLANCY_LABEL && !isSafeJqlValue(env.CLANCY_LABEL)) {
32
+ return '✗ CLANCY_LABEL contains invalid characters';
33
+ }
34
+ if (env.CLANCY_JQL_STATUS && !isSafeJqlValue(env.CLANCY_JQL_STATUS)) {
35
+ return '✗ CLANCY_JQL_STATUS contains invalid characters';
36
+ }
37
+ return undefined;
38
+ }
39
+ case 'github': {
40
+ if (!isValidRepo(config.env.GITHUB_REPO)) {
41
+ return '✗ GITHUB_REPO format is invalid — expected owner/repo';
42
+ }
43
+ return undefined;
44
+ }
45
+ case 'linear': {
46
+ if (!isValidTeamId(config.env.LINEAR_TEAM_ID)) {
47
+ return '✗ LINEAR_TEAM_ID contains invalid characters';
48
+ }
49
+ return undefined;
50
+ }
51
+ }
52
+ }
53
+ // ─── Board-specific transitions ──────────────────────────────────────────────
54
+ export async function transitionToStatus(config, ticket, statusName) {
55
+ switch (config.provider) {
56
+ case 'jira': {
57
+ const { env } = config;
58
+ const auth = buildAuthHeader(env.JIRA_USER, env.JIRA_API_TOKEN);
59
+ const issueKey = ticket.key;
60
+ const ok = await transitionJiraIssue(env.JIRA_BASE_URL, auth, issueKey, statusName);
61
+ if (ok)
62
+ console.log(` → Transitioned to ${statusName}`);
63
+ break;
64
+ }
65
+ case 'github': {
66
+ // GitHub Issues only has open/closed — status transitions not applicable
67
+ // closeIssue is called separately after merge
68
+ break;
69
+ }
70
+ case 'linear': {
71
+ const { env } = config;
72
+ if (!ticket.linearIssueId)
73
+ break;
74
+ const ok = await transitionLinearIssue(env.LINEAR_API_KEY, env.LINEAR_TEAM_ID, ticket.linearIssueId, statusName);
75
+ if (ok)
76
+ console.log(` → Transitioned to ${statusName}`);
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=board-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-ops.js","sourceRoot":"","sources":["../../../src/scripts/once/board-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { BoardConfig } from '../../scripts/shared/env-schema/env-schema.js';
2
+ import type { FetchedTicket } from './types.js';
3
+ /**
4
+ * Epic/parent flow: squash merge locally, delete branch, transition to Done.
5
+ */
6
+ export declare function deliverViaEpicMerge(config: BoardConfig, ticket: FetchedTicket, ticketBranch: string, targetBranch: string): Promise<void>;
7
+ /**
8
+ * PR flow: push branch to remote, create PR/MR, transition to In Review.
9
+ *
10
+ * @returns `false` if the push failed (caller should handle early return).
11
+ */
12
+ export declare function deliverViaPullRequest(config: BoardConfig, ticket: FetchedTicket, ticketBranch: string, targetBranch: string, startTime: number, skipLog?: boolean): Promise<boolean>;
13
+ //# sourceMappingURL=deliver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliver.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/deliver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAe7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,UAAQ,GACd,OAAO,CAAC,OAAO,CAAC,CAkHlB"}
@@ -0,0 +1,134 @@
1
+ import { closeIssue } from '../../scripts/board/github/github.js';
2
+ import { formatDuration } from '../../scripts/shared/format/format.js';
3
+ import { checkout, deleteBranch, pushBranch, squashMerge, } from '../../scripts/shared/git-ops/git-ops.js';
4
+ import { appendProgress } from '../../scripts/shared/progress/progress.js';
5
+ import { buildPrBody } from '../../scripts/shared/pull-request/pr-body/pr-body.js';
6
+ import { detectRemote } from '../../scripts/shared/remote/remote.js';
7
+ import { dim, green, yellow } from '../../utils/ansi/ansi.js';
8
+ import { sharedEnv, transitionToStatus } from './board-ops.js';
9
+ import { attemptPrCreation, buildManualPrUrl } from './pr-creation.js';
10
+ // ─── Delivery paths ──────────────────────────────────────────────────────────
11
+ /**
12
+ * Epic/parent flow: squash merge locally, delete branch, transition to Done.
13
+ */
14
+ export async function deliverViaEpicMerge(config, ticket, ticketBranch, targetBranch) {
15
+ checkout(targetBranch);
16
+ const commitMsg = `feat(${ticket.key}): ${ticket.title}`;
17
+ const hadChanges = squashMerge(ticketBranch, commitMsg);
18
+ if (!hadChanges) {
19
+ console.log(yellow('⚠ No changes staged after squash merge. Claude may not have committed any work.'));
20
+ }
21
+ deleteBranch(ticketBranch);
22
+ // Transition to Done / close issue (best-effort)
23
+ const statusDone = config.env.CLANCY_STATUS_DONE;
24
+ if (config.provider === 'github') {
25
+ const issueNumber = parseInt(ticket.key.replace('#', ''), 10);
26
+ if (Number.isNaN(issueNumber)) {
27
+ console.log(`⚠ Could not parse issue number from ${ticket.key}. Close it manually on GitHub.`);
28
+ }
29
+ else {
30
+ const closed = await closeIssue(config.env.GITHUB_TOKEN, config.env.GITHUB_REPO, issueNumber);
31
+ if (!closed) {
32
+ console.log(`⚠ Could not close issue ${ticket.key}. Close it manually on GitHub.`);
33
+ }
34
+ }
35
+ }
36
+ else if (statusDone) {
37
+ await transitionToStatus(config, ticket, statusDone);
38
+ }
39
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'DONE');
40
+ }
41
+ /**
42
+ * PR flow: push branch to remote, create PR/MR, transition to In Review.
43
+ *
44
+ * @returns `false` if the push failed (caller should handle early return).
45
+ */
46
+ export async function deliverViaPullRequest(config, ticket, ticketBranch, targetBranch, startTime, skipLog = false) {
47
+ const pushed = pushBranch(ticketBranch);
48
+ if (!pushed) {
49
+ console.log(yellow(`⚠ Could not push ${ticketBranch} to origin.`));
50
+ console.log(dim(' The branch is still available locally. Push manually:'));
51
+ console.log(dim(` git push -u origin ${ticketBranch}`));
52
+ if (!skipLog)
53
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSH_FAILED');
54
+ checkout(targetBranch);
55
+ const elapsed = formatDuration(Date.now() - startTime);
56
+ console.log('');
57
+ console.log(yellow(`⚠ ${ticket.key} implemented but push failed`) +
58
+ dim(` (${elapsed})`));
59
+ return false;
60
+ }
61
+ console.log(green(` ✓ Pushed ${ticketBranch}`));
62
+ // Attempt PR/MR creation
63
+ const platformOverride = sharedEnv(config).CLANCY_GIT_PLATFORM;
64
+ const remote = detectRemote(platformOverride);
65
+ const prTitle = `feat(${ticket.key}): ${ticket.title}`;
66
+ const prBody = buildPrBody(config, {
67
+ key: ticket.key,
68
+ title: ticket.title,
69
+ description: ticket.description,
70
+ provider: config.provider,
71
+ });
72
+ if (remote.host !== 'none' &&
73
+ remote.host !== 'unknown' &&
74
+ remote.host !== 'azure') {
75
+ const pr = await attemptPrCreation(config, remote, ticketBranch, targetBranch, prTitle, prBody);
76
+ if (pr?.ok) {
77
+ console.log(green(` ✓ PR created: ${pr.url}`));
78
+ if (!skipLog)
79
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'PR_CREATED', pr.number);
80
+ }
81
+ else if (pr && !pr.ok && pr.alreadyExists) {
82
+ console.log(yellow(` ⚠ A PR/MR already exists for ${ticketBranch}. Branch pushed.`));
83
+ if (!skipLog)
84
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
85
+ }
86
+ else if (pr && !pr.ok) {
87
+ console.log(yellow(` ⚠ PR/MR creation failed: ${pr.error}`));
88
+ const manualUrl = buildManualPrUrl(remote, ticketBranch, targetBranch);
89
+ if (manualUrl) {
90
+ console.log(dim(` Create one manually: ${manualUrl}`));
91
+ }
92
+ else {
93
+ console.log(dim(' Branch pushed — create a PR/MR manually.'));
94
+ }
95
+ if (!skipLog)
96
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
97
+ }
98
+ else {
99
+ // No token available for this platform
100
+ const manualUrl = buildManualPrUrl(remote, ticketBranch, targetBranch);
101
+ if (manualUrl) {
102
+ console.log(dim(` Create a PR: ${manualUrl}`));
103
+ }
104
+ else {
105
+ console.log(dim(' Branch pushed to remote. Create a PR/MR manually.'));
106
+ }
107
+ if (!skipLog)
108
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
109
+ }
110
+ }
111
+ else if (remote.host === 'none') {
112
+ console.log(yellow(`⚠ No git remote configured. Branch available locally: ${ticketBranch}`));
113
+ if (!skipLog)
114
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'LOCAL');
115
+ }
116
+ else {
117
+ // Unknown or Azure remote — just note the push
118
+ console.log(dim(' Branch pushed to remote. Create a PR/MR manually.'));
119
+ if (!skipLog)
120
+ appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
121
+ }
122
+ // Transition to In Review (not Done — PR hasn't been merged yet)
123
+ // For GitHub Issues: do NOT close — PR body has "Closes #N" for auto-close on merge
124
+ if (config.provider !== 'github') {
125
+ const statusReview = config.env.CLANCY_STATUS_REVIEW ?? config.env.CLANCY_STATUS_DONE;
126
+ if (statusReview) {
127
+ await transitionToStatus(config, ticket, statusReview);
128
+ }
129
+ }
130
+ // Switch back to target branch
131
+ checkout(targetBranch);
132
+ return true;
133
+ }
134
+ //# sourceMappingURL=deliver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliver.js","sourceRoot":"","sources":["../../../src/scripts/once/deliver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { BoardConfig } from '../../scripts/shared/env-schema/env-schema.js';
2
+ import type { FetchedTicket } from './types.js';
3
+ export declare function fetchTicket(config: BoardConfig): Promise<FetchedTicket | undefined>;
4
+ //# sourceMappingURL=fetch-ticket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-ticket.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/fetch-ticket.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAuEpC"}
@@ -0,0 +1,59 @@
1
+ import { fetchIssue as fetchGitHubIssue, resolveUsername, } from '../../scripts/board/github/github.js';
2
+ import { buildAuthHeader, fetchTicket as fetchJiraTicket, } from '../../scripts/board/jira/jira.js';
3
+ import { fetchIssue as fetchLinearIssue } from '../../scripts/board/linear/linear.js';
4
+ // ─── Board-specific fetch ────────────────────────────────────────────────────
5
+ export async function fetchTicket(config) {
6
+ switch (config.provider) {
7
+ case 'jira': {
8
+ const { env } = config;
9
+ const auth = buildAuthHeader(env.JIRA_USER, env.JIRA_API_TOKEN);
10
+ const ticket = await fetchJiraTicket(env.JIRA_BASE_URL, auth, env.JIRA_PROJECT_KEY, env.CLANCY_JQL_STATUS ?? 'To Do', env.CLANCY_JQL_SPRINT, env.CLANCY_LABEL);
11
+ if (!ticket)
12
+ return undefined;
13
+ const blockerStr = ticket.blockers.length
14
+ ? `Blocked by: ${ticket.blockers.join(', ')}`
15
+ : 'None';
16
+ return {
17
+ key: ticket.key,
18
+ title: ticket.title,
19
+ description: ticket.description,
20
+ parentInfo: ticket.epicKey ?? 'none',
21
+ blockers: blockerStr,
22
+ };
23
+ }
24
+ case 'github': {
25
+ const { env } = config;
26
+ const username = await resolveUsername(env.GITHUB_TOKEN);
27
+ const ticket = await fetchGitHubIssue(env.GITHUB_TOKEN, env.GITHUB_REPO, env.CLANCY_LABEL, username);
28
+ if (!ticket)
29
+ return undefined;
30
+ return {
31
+ key: ticket.key,
32
+ title: ticket.title,
33
+ description: ticket.description,
34
+ parentInfo: ticket.milestone ?? 'none',
35
+ blockers: 'None',
36
+ };
37
+ }
38
+ case 'linear': {
39
+ const { env } = config;
40
+ const ticket = await fetchLinearIssue({
41
+ LINEAR_API_KEY: env.LINEAR_API_KEY,
42
+ LINEAR_TEAM_ID: env.LINEAR_TEAM_ID,
43
+ CLANCY_LABEL: env.CLANCY_LABEL,
44
+ });
45
+ if (!ticket)
46
+ return undefined;
47
+ return {
48
+ key: ticket.key,
49
+ title: ticket.title,
50
+ description: ticket.description,
51
+ parentInfo: ticket.parentIdentifier ?? 'none',
52
+ blockers: 'None',
53
+ linearIssueId: ticket.issueId,
54
+ issueId: ticket.issueId,
55
+ };
56
+ }
57
+ }
58
+ }
59
+ //# sourceMappingURL=fetch-ticket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-ticket.js","sourceRoot":"","sources":["../../../src/scripts/once/fetch-ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,IAAI,gBAAgB,EAC9B,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,WAAW,IAAI,eAAe,GAC/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAKlF,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAmB;IAEnB,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;YACvB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,GAAG,CAAC,aAAa,EACjB,IAAI,EACJ,GAAG,CAAC,gBAAgB,EACpB,GAAG,CAAC,iBAAiB,IAAI,OAAO,EAChC,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,YAAY,CACjB,CAAC;YAEF,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAE9B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;gBACvC,CAAC,CAAC,eAAe,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7C,CAAC,CAAC,MAAM,CAAC;YAEX,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM;gBACpC,QAAQ,EAAE,UAAU;aACrB,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,YAAY,EAChB,QAAQ,CACT,CAAC;YAEF,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAE9B,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;gBACtC,QAAQ,EAAE,MAAM;aACjB,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;gBACpC,cAAc,EAAE,GAAG,CAAC,cAAc;gBAClC,cAAc,EAAE,GAAG,CAAC,cAAc;gBAClC,YAAY,EAAE,GAAG,CAAC,YAAY;aAC/B,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM;gBAAE,OAAO,SAAS,CAAC;YAE9B,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,gBAAgB,IAAI,MAAM;gBAC7C,QAAQ,EAAE,MAAM;gBAChB,aAAa,EAAE,MAAM,CAAC,OAAO;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { BoardConfig } from '../../scripts/shared/env-schema/env-schema.js';
2
+ import type { RemoteInfo } from '../../types/index.js';
3
+ /**
4
+ * Resolve a git host token from the board config's env.
5
+ *
6
+ * For GitHub boards, `GITHUB_TOKEN` is always present.
7
+ * For Jira/Linear boards, check the shared optional vars.
8
+ */
9
+ export declare function resolveGitToken(config: BoardConfig, remote: RemoteInfo): {
10
+ token: string;
11
+ username?: string;
12
+ } | undefined;
13
+ //# sourceMappingURL=git-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-token.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/git-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAmBlD"}
@@ -0,0 +1,30 @@
1
+ import { sharedEnv } from './board-ops.js';
2
+ /**
3
+ * Resolve a git host token from the board config's env.
4
+ *
5
+ * For GitHub boards, `GITHUB_TOKEN` is always present.
6
+ * For Jira/Linear boards, check the shared optional vars.
7
+ */
8
+ export function resolveGitToken(config, remote) {
9
+ const env = sharedEnv(config);
10
+ switch (remote.host) {
11
+ case 'github':
12
+ if (env.GITHUB_TOKEN)
13
+ return { token: env.GITHUB_TOKEN };
14
+ break;
15
+ case 'gitlab':
16
+ if (env.GITLAB_TOKEN)
17
+ return { token: env.GITLAB_TOKEN };
18
+ break;
19
+ case 'bitbucket':
20
+ if (env.BITBUCKET_USER && env.BITBUCKET_TOKEN)
21
+ return { token: env.BITBUCKET_TOKEN, username: env.BITBUCKET_USER };
22
+ break;
23
+ case 'bitbucket-server':
24
+ if (env.BITBUCKET_TOKEN)
25
+ return { token: env.BITBUCKET_TOKEN };
26
+ break;
27
+ }
28
+ return undefined;
29
+ }
30
+ //# sourceMappingURL=git-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-token.js","sourceRoot":"","sources":["../../../src/scripts/once/git-token.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,MAAkB;IAElB,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,IAAI,GAAG,CAAC,YAAY;gBAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,GAAG,CAAC,YAAY;gBAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;YACzD,MAAM;QACR,KAAK,WAAW;YACd,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,eAAe;gBAC3C,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;YACtE,MAAM;QACR,KAAK,kBAAkB;YACrB,IAAI,GAAG,CAAC,eAAe;gBAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC;YAC/D,MAAM;IACV,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"AAm7BA;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsUvD"}
1
+ {"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"AAqDA;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsUvD"}