chief-clancy 0.5.3 → 0.5.4
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.
- package/README.md +3 -3
- package/dist/bundle/clancy-afk.js +2 -2
- package/dist/bundle/clancy-once.js +29 -28
- package/dist/schemas/env.d.ts +27 -0
- package/dist/schemas/env.d.ts.map +1 -1
- package/dist/schemas/env.js +8 -0
- package/dist/schemas/env.js.map +1 -1
- package/dist/scripts/afk/afk.d.ts.map +1 -1
- package/dist/scripts/afk/afk.js +1 -8
- package/dist/scripts/afk/afk.js.map +1 -1
- package/dist/scripts/board/github/github.d.ts.map +1 -1
- package/dist/scripts/board/github/github.js +1 -2
- package/dist/scripts/board/github/github.js.map +1 -1
- package/dist/scripts/board/linear/linear.d.ts.map +1 -1
- package/dist/scripts/board/linear/linear.js +35 -4
- package/dist/scripts/board/linear/linear.js.map +1 -1
- package/dist/scripts/once/once.d.ts.map +1 -1
- package/dist/scripts/once/once.js +205 -35
- package/dist/scripts/once/once.js.map +1 -1
- package/dist/scripts/shared/env-schema/env-schema.d.ts.map +1 -1
- package/dist/scripts/shared/env-schema/env-schema.js +3 -2
- package/dist/scripts/shared/env-schema/env-schema.js.map +1 -1
- package/dist/scripts/shared/format/format.d.ts +11 -0
- package/dist/scripts/shared/format/format.d.ts.map +1 -0
- package/dist/scripts/shared/format/format.js +18 -0
- package/dist/scripts/shared/format/format.js.map +1 -0
- package/dist/scripts/shared/git-ops/git-ops.d.ts +9 -0
- package/dist/scripts/shared/git-ops/git-ops.d.ts.map +1 -1
- package/dist/scripts/shared/git-ops/git-ops.js +20 -0
- package/dist/scripts/shared/git-ops/git-ops.js.map +1 -1
- package/dist/scripts/shared/http/http.d.ts +2 -0
- package/dist/scripts/shared/http/http.d.ts.map +1 -1
- package/dist/scripts/shared/http/http.js +2 -0
- package/dist/scripts/shared/http/http.js.map +1 -1
- package/dist/scripts/shared/progress/progress.d.ts +3 -2
- package/dist/scripts/shared/progress/progress.d.ts.map +1 -1
- package/dist/scripts/shared/progress/progress.js +1 -1
- package/dist/scripts/shared/progress/progress.js.map +1 -1
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts +38 -0
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts.map +1 -0
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js +69 -0
- package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js.map +1 -0
- package/dist/scripts/shared/pull-request/github/github.d.ts +15 -0
- package/dist/scripts/shared/pull-request/github/github.d.ts.map +1 -0
- package/dist/scripts/shared/pull-request/github/github.js +29 -0
- package/dist/scripts/shared/pull-request/github/github.js.map +1 -0
- package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts +23 -0
- package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts.map +1 -0
- package/dist/scripts/shared/pull-request/gitlab/gitlab.js +27 -0
- package/dist/scripts/shared/pull-request/gitlab/gitlab.js.map +1 -0
- package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts +31 -0
- package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts.map +1 -0
- package/dist/scripts/shared/pull-request/post-pr/post-pr.js +61 -0
- package/dist/scripts/shared/pull-request/post-pr/post-pr.js.map +1 -0
- package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts +19 -0
- package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts.map +1 -0
- package/dist/scripts/shared/pull-request/pr-body/pr-body.js +35 -0
- package/dist/scripts/shared/pull-request/pr-body/pr-body.js.map +1 -0
- package/dist/scripts/shared/remote/remote.d.ts +41 -0
- package/dist/scripts/shared/remote/remote.d.ts.map +1 -0
- package/dist/scripts/shared/remote/remote.js +227 -0
- package/dist/scripts/shared/remote/remote.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/remote.d.ts +44 -0
- package/dist/types/remote.d.ts.map +1 -0
- package/dist/types/remote.js +5 -0
- package/dist/types/remote.js.map +1 -0
- package/package.json +1 -1
- package/src/roles/setup/workflows/init.md +91 -0
- package/src/roles/setup/workflows/scaffold.md +27 -0
- package/src/roles/setup/workflows/settings.md +62 -0
package/dist/schemas/env.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare const sharedEnvSchema: z.ZodMiniObject<{
|
|
|
11
11
|
CLANCY_NOTIFY_WEBHOOK: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
12
12
|
CLANCY_STATUS_IN_PROGRESS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
13
13
|
CLANCY_STATUS_DONE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
14
|
+
CLANCY_STATUS_REVIEW: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
14
15
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
15
16
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
16
17
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -18,6 +19,12 @@ export declare const sharedEnvSchema: z.ZodMiniObject<{
|
|
|
18
19
|
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
19
20
|
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
20
21
|
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
22
|
+
GITHUB_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
23
|
+
GITLAB_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
24
|
+
BITBUCKET_USER: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
25
|
+
BITBUCKET_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
26
|
+
CLANCY_GIT_PLATFORM: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
27
|
+
CLANCY_GIT_API_URL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
21
28
|
}, z.core.$strip>;
|
|
22
29
|
export declare const jiraEnvSchema: z.ZodMiniObject<{
|
|
23
30
|
CLANCY_BASE_BRANCH: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -26,6 +33,7 @@ export declare const jiraEnvSchema: z.ZodMiniObject<{
|
|
|
26
33
|
CLANCY_NOTIFY_WEBHOOK: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
27
34
|
CLANCY_STATUS_IN_PROGRESS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
28
35
|
CLANCY_STATUS_DONE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
36
|
+
CLANCY_STATUS_REVIEW: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
29
37
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
30
38
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
31
39
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -33,6 +41,12 @@ export declare const jiraEnvSchema: z.ZodMiniObject<{
|
|
|
33
41
|
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
34
42
|
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
35
43
|
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
44
|
+
GITHUB_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
45
|
+
GITLAB_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
46
|
+
BITBUCKET_USER: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
47
|
+
BITBUCKET_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
48
|
+
CLANCY_GIT_PLATFORM: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
49
|
+
CLANCY_GIT_API_URL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
36
50
|
JIRA_BASE_URL: z.ZodMiniString<string>;
|
|
37
51
|
JIRA_USER: z.ZodMiniString<string>;
|
|
38
52
|
JIRA_API_TOKEN: z.ZodMiniString<string>;
|
|
@@ -47,6 +61,7 @@ export declare const githubEnvSchema: z.ZodMiniObject<{
|
|
|
47
61
|
CLANCY_NOTIFY_WEBHOOK: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
48
62
|
CLANCY_STATUS_IN_PROGRESS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
49
63
|
CLANCY_STATUS_DONE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
64
|
+
CLANCY_STATUS_REVIEW: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
50
65
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
51
66
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
52
67
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -54,6 +69,11 @@ export declare const githubEnvSchema: z.ZodMiniObject<{
|
|
|
54
69
|
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
55
70
|
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
56
71
|
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
72
|
+
GITLAB_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
73
|
+
BITBUCKET_USER: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
74
|
+
BITBUCKET_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
75
|
+
CLANCY_GIT_PLATFORM: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
76
|
+
CLANCY_GIT_API_URL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
57
77
|
GITHUB_TOKEN: z.ZodMiniString<string>;
|
|
58
78
|
GITHUB_REPO: z.ZodMiniString<string>;
|
|
59
79
|
}, z.core.$strip>;
|
|
@@ -64,6 +84,7 @@ export declare const linearEnvSchema: z.ZodMiniObject<{
|
|
|
64
84
|
CLANCY_NOTIFY_WEBHOOK: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
65
85
|
CLANCY_STATUS_IN_PROGRESS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
66
86
|
CLANCY_STATUS_DONE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
87
|
+
CLANCY_STATUS_REVIEW: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
67
88
|
MAX_ITERATIONS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
68
89
|
PLAYWRIGHT_ENABLED: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
69
90
|
PLAYWRIGHT_DEV_PORT: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
@@ -71,6 +92,12 @@ export declare const linearEnvSchema: z.ZodMiniObject<{
|
|
|
71
92
|
CLANCY_PLAN_STATUS: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
72
93
|
CLANCY_PLAN_LABEL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
73
94
|
CLANCY_PLAN_STATE_TYPE: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
95
|
+
GITHUB_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
96
|
+
GITLAB_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
97
|
+
BITBUCKET_USER: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
98
|
+
BITBUCKET_TOKEN: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
99
|
+
CLANCY_GIT_PLATFORM: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
100
|
+
CLANCY_GIT_API_URL: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
74
101
|
LINEAR_API_KEY: z.ZodMiniString<string>;
|
|
75
102
|
LINEAR_TEAM_ID: z.ZodMiniString<string>;
|
|
76
103
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAU9B,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAU9B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;iBAuB1B,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOxB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;iBAG1B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;iBAG1B,CAAC;AAIH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAIxD,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,GAClC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GACtC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,CAAC"}
|
package/dist/schemas/env.js
CHANGED
|
@@ -16,6 +16,7 @@ export const sharedEnvSchema = z.object({
|
|
|
16
16
|
CLANCY_NOTIFY_WEBHOOK: z.optional(z.string()),
|
|
17
17
|
CLANCY_STATUS_IN_PROGRESS: z.optional(z.string()),
|
|
18
18
|
CLANCY_STATUS_DONE: z.optional(z.string()),
|
|
19
|
+
CLANCY_STATUS_REVIEW: z.optional(z.string()),
|
|
19
20
|
MAX_ITERATIONS: z.optional(z.string()),
|
|
20
21
|
PLAYWRIGHT_ENABLED: z.optional(z.string()),
|
|
21
22
|
PLAYWRIGHT_DEV_PORT: z.optional(z.string()),
|
|
@@ -23,6 +24,13 @@ export const sharedEnvSchema = z.object({
|
|
|
23
24
|
CLANCY_PLAN_STATUS: z.optional(z.string()),
|
|
24
25
|
CLANCY_PLAN_LABEL: z.optional(z.string()),
|
|
25
26
|
CLANCY_PLAN_STATE_TYPE: z.optional(z.string()),
|
|
27
|
+
// Git host integration (for PR creation on non-GitHub boards)
|
|
28
|
+
GITHUB_TOKEN: z.optional(z.string()),
|
|
29
|
+
GITLAB_TOKEN: z.optional(z.string()),
|
|
30
|
+
BITBUCKET_USER: z.optional(z.string()),
|
|
31
|
+
BITBUCKET_TOKEN: z.optional(z.string()),
|
|
32
|
+
CLANCY_GIT_PLATFORM: z.optional(z.string()),
|
|
33
|
+
CLANCY_GIT_API_URL: z.optional(z.string()),
|
|
26
34
|
});
|
|
27
35
|
// ─── Board-specific schemas ──────────────────────────────────────────────────
|
|
28
36
|
export const jiraEnvSchema = z.extend(sharedEnvSchema, {
|
package/dist/schemas/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,4DAA4D;AAC5D,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAElD,2BAA2B;AAC3B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE5D,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7C,yBAAyB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,mBAAmB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3C,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1C,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/schemas/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"afk.d.ts","sourceRoot":"","sources":["../../../src/scripts/afk/afk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"afk.d.ts","sourceRoot":"","sources":["../../../src/scripts/afk/afk.ts"],"names":[],"mappings":"AAuBA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAClD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAiBA;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,SAAI,GAChB,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
package/dist/scripts/afk/afk.js
CHANGED
|
@@ -10,15 +10,8 @@ import { existsSync } from 'node:fs';
|
|
|
10
10
|
import { dirname, join, resolve } from 'node:path';
|
|
11
11
|
import { setTimeout as sleep } from 'node:timers/promises';
|
|
12
12
|
import { fileURLToPath } from 'node:url';
|
|
13
|
+
import { formatDuration } from '../../scripts/shared/format/format.js';
|
|
13
14
|
import { bold, dim, green, red } from '../../utils/ansi/ansi.js';
|
|
14
|
-
function formatDuration(ms) {
|
|
15
|
-
const secs = Math.floor(ms / 1000);
|
|
16
|
-
if (secs < 60)
|
|
17
|
-
return `${secs}s`;
|
|
18
|
-
const mins = Math.floor(secs / 60);
|
|
19
|
-
const remSecs = secs % 60;
|
|
20
|
-
return remSecs > 0 ? `${mins}m ${remSecs}s` : `${mins}m`;
|
|
21
|
-
}
|
|
22
15
|
/** Stop condition patterns matched against script output. */
|
|
23
16
|
const STOP_PATTERNS = {
|
|
24
17
|
noTickets: /No tickets found|No issues found|All done/,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"afk.js","sourceRoot":"","sources":["../../../src/scripts/afk/afk.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"afk.js","sourceRoot":"","sources":["../../../src/scripts/afk/afk.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE7D,6DAA6D;AAC7D,MAAM,aAAa,GAAG;IACpB,SAAS,EAAE,2CAA2C;IACtD,OAAO,EAAE,gBAAgB;IACzB,aAAa,EAAE,MAAM;CACtB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAI/C,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,OAAO;YACL,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,mDAAmD;SAC5D,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,aAAa,GAAG,CAAC;IAEjB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAErD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,8DAA8D,CAAC,CACpE,CAAC;IACF,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,GAAG,CAAC;QACN,IAAI,CAAC,0DAA0D,CAAC;QAChE,GAAG,CAAC,GAAG,CAAC,CACX,CAAC;IACF,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,GAAG,CAAC;QACN,GAAG,CAAC,4DAA4D,CAAC;QACjE,GAAG,CAAC,GAAG,CAAC,CACX,CAAC;IACF,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,8DAA8D,CAAC,CACpE,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC;QAExD,sEAAsE;QACtE,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE;YAC7C,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;YACrC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;SACnB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAEnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAE3D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CACX,GAAG,CAAC,gCAAgC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC5D,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,YAAY,EAAE,CAAC,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC,CAAC;QAEzD,iCAAiC;QACjC,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,gBAAgB,aAAa,aAAa,CAAC;QAC/C,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,CAC5B,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,gFAAgF;AAChF,IACE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC3D,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3E,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/scripts/board/github/github.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/scripts/board/github/github.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAY/C,4DAA4D;AAC5D,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,CAAC,CAWrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,CAAC,CAyDxD;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
|
|
@@ -9,13 +9,12 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { z } from 'zod/mini';
|
|
11
11
|
import { githubIssuesResponseSchema } from '../../../schemas/github.js';
|
|
12
|
-
import { githubHeaders, pingEndpoint } from '../../../scripts/shared/http/http.js';
|
|
12
|
+
import { GITHUB_API, githubHeaders, pingEndpoint, } from '../../../scripts/shared/http/http.js';
|
|
13
13
|
/** Schema for the `GET /user` response. */
|
|
14
14
|
const githubUserSchema = z.object({
|
|
15
15
|
login: z.string(),
|
|
16
16
|
});
|
|
17
17
|
const SAFE_REPO_PATTERN = /^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/;
|
|
18
|
-
const GITHUB_API = 'https://api.github.com';
|
|
19
18
|
/** Cached username to avoid repeated /user calls. */
|
|
20
19
|
let cachedUsername;
|
|
21
20
|
/** Reset the cached username. Exported for testing only. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/scripts/board/github/github.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../../src/scripts/board/github/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../../src/scripts/board/linear/linear.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK/C,KAAK,SAAS,GAAG;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../../../src/scripts/board/linear/linear.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK/C,KAAK,SAAS,GAAG;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsC1C;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CACrD,CAAC,MAAM,GAAG;IACR,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC,GACF,SAAS,CACZ,CA0DA;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuB7B;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAelB"}
|
|
@@ -64,10 +64,41 @@ export async function linearGraphql(apiKey, query, variables) {
|
|
|
64
64
|
* @returns An object with `ok` and optional `error` message.
|
|
65
65
|
*/
|
|
66
66
|
export async function pingLinear(apiKey) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
let response;
|
|
68
|
+
try {
|
|
69
|
+
response = await fetch(LINEAR_API_URL, {
|
|
70
|
+
method: 'POST',
|
|
71
|
+
headers: {
|
|
72
|
+
Authorization: apiKey,
|
|
73
|
+
'Content-Type': 'application/json',
|
|
74
|
+
},
|
|
75
|
+
body: JSON.stringify({ query: '{ viewer { id } }' }),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return { ok: false, error: '✗ Could not reach Linear — check network' };
|
|
80
|
+
}
|
|
81
|
+
if (!response.ok) {
|
|
82
|
+
if (response.status === 401 || response.status === 403) {
|
|
83
|
+
return {
|
|
84
|
+
ok: false,
|
|
85
|
+
error: '✗ Linear auth failed — check LINEAR_API_KEY',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
ok: false,
|
|
90
|
+
error: `✗ Linear API returned HTTP ${response.status}`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const json = await response.json();
|
|
95
|
+
const parsed = linearViewerResponseSchema.safeParse(json);
|
|
96
|
+
if (parsed.success && parsed.data.data?.viewer?.id)
|
|
97
|
+
return { ok: true };
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Invalid JSON — treat as auth issue
|
|
101
|
+
}
|
|
71
102
|
return { ok: false, error: '✗ Linear auth failed — check LINEAR_API_KEY' };
|
|
72
103
|
}
|
|
73
104
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../../src/scripts/board/linear/linear.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,EAC1B,0BAA0B,EAC1B,kCAAkC,GACnC,MAAM,qBAAqB,CAAC;AAG7B,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC3C,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAaxD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,KAAa,EACb,SAAmC;IAEnC,IAAI,QAAkB,CAAC;IAEvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,MAAM;gBACrB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc;IAEd,
|
|
1
|
+
{"version":3,"file":"linear.js","sourceRoot":"","sources":["../../../../src/scripts/board/linear/linear.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../src/scripts/once/once.ts"],"names":[],"mappings":"AA6iBA;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0NvD"}
|
|
@@ -17,20 +17,22 @@ import { computeTargetBranch, computeTicketBranch, } from '../../scripts/shared/
|
|
|
17
17
|
import { invokeClaudeSession } from '../../scripts/shared/claude-cli/claude-cli.js';
|
|
18
18
|
import { detectBoard } from '../../scripts/shared/env-schema/env-schema.js';
|
|
19
19
|
import { checkFeasibility } from '../../scripts/shared/feasibility/feasibility.js';
|
|
20
|
-
import {
|
|
20
|
+
import { formatDuration } from '../../scripts/shared/format/format.js';
|
|
21
|
+
import { checkout, currentBranch, deleteBranch, ensureBranch, pushBranch, squashMerge, } from '../../scripts/shared/git-ops/git-ops.js';
|
|
21
22
|
import { sendNotification } from '../../scripts/shared/notify/notify.js';
|
|
22
23
|
import { runPreflight } from '../../scripts/shared/preflight/preflight.js';
|
|
23
24
|
import { appendProgress } from '../../scripts/shared/progress/progress.js';
|
|
24
25
|
import { buildPrompt } from '../../scripts/shared/prompt/prompt.js';
|
|
26
|
+
import { createPullRequest as createBitbucketPr, createServerPullRequest as createBitbucketServerPr, } from '../../scripts/shared/pull-request/bitbucket/bitbucket.js';
|
|
27
|
+
import { createPullRequest as createGitHubPr } from '../../scripts/shared/pull-request/github/github.js';
|
|
28
|
+
import { createMergeRequest as createGitLabMr } from '../../scripts/shared/pull-request/gitlab/gitlab.js';
|
|
29
|
+
import { buildPrBody } from '../../scripts/shared/pull-request/pr-body/pr-body.js';
|
|
30
|
+
import { buildApiBaseUrl, detectRemote, } from '../../scripts/shared/remote/remote.js';
|
|
25
31
|
import { bold, dim, green, red, yellow } from '../../utils/ansi/ansi.js';
|
|
26
32
|
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return `${secs}s`;
|
|
31
|
-
const mins = Math.floor(secs / 60);
|
|
32
|
-
const remSecs = secs % 60;
|
|
33
|
-
return remSecs > 0 ? `${mins}m ${remSecs}s` : `${mins}m`;
|
|
33
|
+
/** Type-safe access to shared env vars across all board configs. */
|
|
34
|
+
function sharedEnv(config) {
|
|
35
|
+
return config.env;
|
|
34
36
|
}
|
|
35
37
|
// ─── Board-specific fetch ────────────────────────────────────────────────────
|
|
36
38
|
async function fetchTicket(config) {
|
|
@@ -158,6 +160,192 @@ async function transitionToStatus(config, ticket, statusName) {
|
|
|
158
160
|
}
|
|
159
161
|
}
|
|
160
162
|
}
|
|
163
|
+
// ─── PR/MR creation ──────────────────────────────────────────────────────────
|
|
164
|
+
/**
|
|
165
|
+
* Resolve a git host token from the board config's env.
|
|
166
|
+
*
|
|
167
|
+
* For GitHub boards, `GITHUB_TOKEN` is always present.
|
|
168
|
+
* For Jira/Linear boards, check the shared optional vars.
|
|
169
|
+
*/
|
|
170
|
+
function resolveGitToken(config, remote) {
|
|
171
|
+
const env = sharedEnv(config);
|
|
172
|
+
switch (remote.host) {
|
|
173
|
+
case 'github':
|
|
174
|
+
if (env.GITHUB_TOKEN)
|
|
175
|
+
return { token: env.GITHUB_TOKEN };
|
|
176
|
+
break;
|
|
177
|
+
case 'gitlab':
|
|
178
|
+
if (env.GITLAB_TOKEN)
|
|
179
|
+
return { token: env.GITLAB_TOKEN };
|
|
180
|
+
break;
|
|
181
|
+
case 'bitbucket':
|
|
182
|
+
if (env.BITBUCKET_USER && env.BITBUCKET_TOKEN)
|
|
183
|
+
return { token: env.BITBUCKET_TOKEN, username: env.BITBUCKET_USER };
|
|
184
|
+
break;
|
|
185
|
+
case 'bitbucket-server':
|
|
186
|
+
if (env.BITBUCKET_TOKEN)
|
|
187
|
+
return { token: env.BITBUCKET_TOKEN };
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Attempt to create a PR/MR on the detected remote platform.
|
|
194
|
+
*/
|
|
195
|
+
async function attemptPrCreation(config, remote, ticketBranch, targetBranch, title, body) {
|
|
196
|
+
const creds = resolveGitToken(config, remote);
|
|
197
|
+
if (!creds)
|
|
198
|
+
return undefined;
|
|
199
|
+
const apiBase = buildApiBaseUrl(remote, sharedEnv(config).CLANCY_GIT_API_URL);
|
|
200
|
+
if (!apiBase)
|
|
201
|
+
return undefined;
|
|
202
|
+
switch (remote.host) {
|
|
203
|
+
case 'github':
|
|
204
|
+
return createGitHubPr(creds.token, `${remote.owner}/${remote.repo}`, ticketBranch, targetBranch, title, body, apiBase);
|
|
205
|
+
case 'gitlab':
|
|
206
|
+
return createGitLabMr(creds.token, apiBase, remote.projectPath, ticketBranch, targetBranch, title, body);
|
|
207
|
+
case 'bitbucket':
|
|
208
|
+
return createBitbucketPr(creds.username, creds.token, remote.workspace, remote.repoSlug, ticketBranch, targetBranch, title, body);
|
|
209
|
+
case 'bitbucket-server':
|
|
210
|
+
return createBitbucketServerPr(creds.token, apiBase, remote.projectKey, remote.repoSlug, ticketBranch, targetBranch, title, body);
|
|
211
|
+
default:
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Build a manual PR/MR URL for the user to click.
|
|
217
|
+
*/
|
|
218
|
+
function buildManualPrUrl(remote, ticketBranch, targetBranch) {
|
|
219
|
+
const encodedTicket = encodeURIComponent(ticketBranch);
|
|
220
|
+
const encodedTarget = encodeURIComponent(targetBranch);
|
|
221
|
+
if (remote.host === 'github') {
|
|
222
|
+
return `https://${remote.hostname}/${remote.owner}/${remote.repo}/compare/${encodedTarget}...${encodedTicket}`;
|
|
223
|
+
}
|
|
224
|
+
if (remote.host === 'gitlab') {
|
|
225
|
+
return `https://${remote.hostname}/${remote.projectPath}/-/merge_requests/new?merge_request[source_branch]=${encodedTicket}&merge_request[target_branch]=${encodedTarget}`;
|
|
226
|
+
}
|
|
227
|
+
if (remote.host === 'bitbucket') {
|
|
228
|
+
return `https://${remote.hostname}/${remote.workspace}/${remote.repoSlug}/pull-requests/new?source=${encodedTicket}&dest=${encodedTarget}`;
|
|
229
|
+
}
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
// ─── Delivery paths ──────────────────────────────────────────────────────────
|
|
233
|
+
/**
|
|
234
|
+
* Epic/parent flow: squash merge locally, delete branch, transition to Done.
|
|
235
|
+
*/
|
|
236
|
+
async function deliverViaEpicMerge(config, ticket, ticketBranch, targetBranch) {
|
|
237
|
+
checkout(targetBranch);
|
|
238
|
+
const commitMsg = `feat(${ticket.key}): ${ticket.title}`;
|
|
239
|
+
const hadChanges = squashMerge(ticketBranch, commitMsg);
|
|
240
|
+
if (!hadChanges) {
|
|
241
|
+
console.log(yellow('⚠ No changes staged after squash merge. Claude may not have committed any work.'));
|
|
242
|
+
}
|
|
243
|
+
deleteBranch(ticketBranch);
|
|
244
|
+
// Transition to Done / close issue (best-effort)
|
|
245
|
+
const statusDone = config.env.CLANCY_STATUS_DONE;
|
|
246
|
+
if (config.provider === 'github') {
|
|
247
|
+
const issueNumber = parseInt(ticket.key.replace('#', ''), 10);
|
|
248
|
+
if (Number.isNaN(issueNumber)) {
|
|
249
|
+
console.log(`⚠ Could not parse issue number from ${ticket.key}. Close it manually on GitHub.`);
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
const closed = await closeIssue(config.env.GITHUB_TOKEN, config.env.GITHUB_REPO, issueNumber);
|
|
253
|
+
if (!closed) {
|
|
254
|
+
console.log(`⚠ Could not close issue ${ticket.key}. Close it manually on GitHub.`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else if (statusDone) {
|
|
259
|
+
await transitionToStatus(config, ticket, statusDone);
|
|
260
|
+
}
|
|
261
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'DONE');
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* PR flow: push branch to remote, create PR/MR, transition to In Review.
|
|
265
|
+
*
|
|
266
|
+
* @returns `false` if the push failed (caller should handle early return).
|
|
267
|
+
*/
|
|
268
|
+
async function deliverViaPullRequest(config, ticket, ticketBranch, targetBranch, startTime) {
|
|
269
|
+
const pushed = pushBranch(ticketBranch);
|
|
270
|
+
if (!pushed) {
|
|
271
|
+
console.log(yellow(`⚠ Could not push ${ticketBranch} to origin.`));
|
|
272
|
+
console.log(dim(' The branch is still available locally. Push manually:'));
|
|
273
|
+
console.log(dim(` git push -u origin ${ticketBranch}`));
|
|
274
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSH_FAILED');
|
|
275
|
+
checkout(targetBranch);
|
|
276
|
+
const elapsed = formatDuration(Date.now() - startTime);
|
|
277
|
+
console.log('');
|
|
278
|
+
console.log(yellow(`⚠ ${ticket.key} implemented but push failed`) +
|
|
279
|
+
dim(` (${elapsed})`));
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
console.log(green(` ✓ Pushed ${ticketBranch}`));
|
|
283
|
+
// Attempt PR/MR creation
|
|
284
|
+
const platformOverride = sharedEnv(config).CLANCY_GIT_PLATFORM;
|
|
285
|
+
const remote = detectRemote(platformOverride);
|
|
286
|
+
const prTitle = `feat(${ticket.key}): ${ticket.title}`;
|
|
287
|
+
const prBody = buildPrBody(config, {
|
|
288
|
+
key: ticket.key,
|
|
289
|
+
title: ticket.title,
|
|
290
|
+
description: ticket.description,
|
|
291
|
+
provider: config.provider,
|
|
292
|
+
});
|
|
293
|
+
if (remote.host !== 'none' &&
|
|
294
|
+
remote.host !== 'unknown' &&
|
|
295
|
+
remote.host !== 'azure') {
|
|
296
|
+
const pr = await attemptPrCreation(config, remote, ticketBranch, targetBranch, prTitle, prBody);
|
|
297
|
+
if (pr?.ok) {
|
|
298
|
+
console.log(green(` ✓ PR created: ${pr.url}`));
|
|
299
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'PR_CREATED');
|
|
300
|
+
}
|
|
301
|
+
else if (pr && !pr.ok && pr.alreadyExists) {
|
|
302
|
+
console.log(yellow(` ⚠ A PR/MR already exists for ${ticketBranch}. Branch pushed.`));
|
|
303
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
|
|
304
|
+
}
|
|
305
|
+
else if (pr && !pr.ok) {
|
|
306
|
+
console.log(yellow(` ⚠ PR/MR creation failed: ${pr.error}`));
|
|
307
|
+
const manualUrl = buildManualPrUrl(remote, ticketBranch, targetBranch);
|
|
308
|
+
if (manualUrl) {
|
|
309
|
+
console.log(dim(` Create one manually: ${manualUrl}`));
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
console.log(dim(' Branch pushed — create a PR/MR manually.'));
|
|
313
|
+
}
|
|
314
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
// No token available for this platform
|
|
318
|
+
const manualUrl = buildManualPrUrl(remote, ticketBranch, targetBranch);
|
|
319
|
+
if (manualUrl) {
|
|
320
|
+
console.log(dim(` Create a PR: ${manualUrl}`));
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
console.log(dim(' Branch pushed to remote. Create a PR/MR manually.'));
|
|
324
|
+
}
|
|
325
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else if (remote.host === 'none') {
|
|
329
|
+
console.log(yellow(`⚠ No git remote configured. Branch available locally: ${ticketBranch}`));
|
|
330
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'LOCAL');
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
// Unknown or Azure remote — just note the push
|
|
334
|
+
console.log(dim(' Branch pushed to remote. Create a PR/MR manually.'));
|
|
335
|
+
appendProgress(process.cwd(), ticket.key, ticket.title, 'PUSHED');
|
|
336
|
+
}
|
|
337
|
+
// Transition to In Review (not Done — PR hasn't been merged yet)
|
|
338
|
+
// For GitHub Issues: do NOT close — PR body has "Closes #N" for auto-close on merge
|
|
339
|
+
if (config.provider !== 'github') {
|
|
340
|
+
const statusReview = config.env.CLANCY_STATUS_REVIEW ?? config.env.CLANCY_STATUS_DONE;
|
|
341
|
+
if (statusReview) {
|
|
342
|
+
await transitionToStatus(config, ticket, statusReview);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Switch back to target branch
|
|
346
|
+
checkout(targetBranch);
|
|
347
|
+
return true;
|
|
348
|
+
}
|
|
161
349
|
// ─── Main orchestrator ───────────────────────────────────────────────────────
|
|
162
350
|
/**
|
|
163
351
|
* Run the once orchestrator — full ticket lifecycle.
|
|
@@ -289,39 +477,21 @@ export async function run(argv) {
|
|
|
289
477
|
console.log(yellow('⚠ Claude session exited with an error. Skipping merge.'));
|
|
290
478
|
return;
|
|
291
479
|
}
|
|
292
|
-
// 13.
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
if (!hadChanges) {
|
|
297
|
-
console.log(yellow('⚠ No changes staged after squash merge. Claude may not have committed any work.'));
|
|
298
|
-
}
|
|
299
|
-
// 14. Delete feature branch
|
|
300
|
-
deleteBranch(ticketBranch);
|
|
301
|
-
// 15. Transition to Done / close issue (best-effort)
|
|
302
|
-
const statusDone = config.env.CLANCY_STATUS_DONE;
|
|
303
|
-
if (config.provider === 'github') {
|
|
304
|
-
const issueNumber = parseInt(ticket.key.replace('#', ''), 10);
|
|
305
|
-
if (Number.isNaN(issueNumber)) {
|
|
306
|
-
console.log(`⚠ Could not parse issue number from ${ticket.key}. Close it manually on GitHub.`);
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
const closed = await closeIssue(config.env.GITHUB_TOKEN, config.env.GITHUB_REPO, issueNumber);
|
|
310
|
-
if (!closed) {
|
|
311
|
-
console.log(`⚠ Could not close issue ${ticket.key}. Close it manually on GitHub.`);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
480
|
+
// 13. Deliver — epic merge or PR flow
|
|
481
|
+
const hasParent = ticket.parentInfo !== 'none';
|
|
482
|
+
if (hasParent) {
|
|
483
|
+
await deliverViaEpicMerge(config, ticket, ticketBranch, targetBranch);
|
|
314
484
|
}
|
|
315
|
-
else
|
|
316
|
-
await
|
|
485
|
+
else {
|
|
486
|
+
const delivered = await deliverViaPullRequest(config, ticket, ticketBranch, targetBranch, startTime);
|
|
487
|
+
if (!delivered)
|
|
488
|
+
return;
|
|
317
489
|
}
|
|
318
|
-
// 16. Log progress
|
|
319
|
-
appendProgress(process.cwd(), ticket.key, ticket.title, 'DONE');
|
|
320
490
|
const elapsed = formatDuration(Date.now() - startTime);
|
|
321
491
|
console.log('');
|
|
322
492
|
console.log(green(`🏁 ${ticket.key} complete`) + dim(` (${elapsed})`));
|
|
323
493
|
console.log(dim(' "Bake \'em away, toys."'));
|
|
324
|
-
//
|
|
494
|
+
// 14. Send notification (best-effort)
|
|
325
495
|
const webhook = config.env.CLANCY_NOTIFY_WEBHOOK;
|
|
326
496
|
if (webhook) {
|
|
327
497
|
await sendNotification(webhook, `✓ Clancy completed [${ticket.key}] ${ticket.title}`);
|