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.
Files changed (72) hide show
  1. package/README.md +3 -3
  2. package/dist/bundle/clancy-afk.js +2 -2
  3. package/dist/bundle/clancy-once.js +29 -28
  4. package/dist/schemas/env.d.ts +27 -0
  5. package/dist/schemas/env.d.ts.map +1 -1
  6. package/dist/schemas/env.js +8 -0
  7. package/dist/schemas/env.js.map +1 -1
  8. package/dist/scripts/afk/afk.d.ts.map +1 -1
  9. package/dist/scripts/afk/afk.js +1 -8
  10. package/dist/scripts/afk/afk.js.map +1 -1
  11. package/dist/scripts/board/github/github.d.ts.map +1 -1
  12. package/dist/scripts/board/github/github.js +1 -2
  13. package/dist/scripts/board/github/github.js.map +1 -1
  14. package/dist/scripts/board/linear/linear.d.ts.map +1 -1
  15. package/dist/scripts/board/linear/linear.js +35 -4
  16. package/dist/scripts/board/linear/linear.js.map +1 -1
  17. package/dist/scripts/once/once.d.ts.map +1 -1
  18. package/dist/scripts/once/once.js +205 -35
  19. package/dist/scripts/once/once.js.map +1 -1
  20. package/dist/scripts/shared/env-schema/env-schema.d.ts.map +1 -1
  21. package/dist/scripts/shared/env-schema/env-schema.js +3 -2
  22. package/dist/scripts/shared/env-schema/env-schema.js.map +1 -1
  23. package/dist/scripts/shared/format/format.d.ts +11 -0
  24. package/dist/scripts/shared/format/format.d.ts.map +1 -0
  25. package/dist/scripts/shared/format/format.js +18 -0
  26. package/dist/scripts/shared/format/format.js.map +1 -0
  27. package/dist/scripts/shared/git-ops/git-ops.d.ts +9 -0
  28. package/dist/scripts/shared/git-ops/git-ops.d.ts.map +1 -1
  29. package/dist/scripts/shared/git-ops/git-ops.js +20 -0
  30. package/dist/scripts/shared/git-ops/git-ops.js.map +1 -1
  31. package/dist/scripts/shared/http/http.d.ts +2 -0
  32. package/dist/scripts/shared/http/http.d.ts.map +1 -1
  33. package/dist/scripts/shared/http/http.js +2 -0
  34. package/dist/scripts/shared/http/http.js.map +1 -1
  35. package/dist/scripts/shared/progress/progress.d.ts +3 -2
  36. package/dist/scripts/shared/progress/progress.d.ts.map +1 -1
  37. package/dist/scripts/shared/progress/progress.js +1 -1
  38. package/dist/scripts/shared/progress/progress.js.map +1 -1
  39. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts +38 -0
  40. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.d.ts.map +1 -0
  41. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js +69 -0
  42. package/dist/scripts/shared/pull-request/bitbucket/bitbucket.js.map +1 -0
  43. package/dist/scripts/shared/pull-request/github/github.d.ts +15 -0
  44. package/dist/scripts/shared/pull-request/github/github.d.ts.map +1 -0
  45. package/dist/scripts/shared/pull-request/github/github.js +29 -0
  46. package/dist/scripts/shared/pull-request/github/github.js.map +1 -0
  47. package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts +23 -0
  48. package/dist/scripts/shared/pull-request/gitlab/gitlab.d.ts.map +1 -0
  49. package/dist/scripts/shared/pull-request/gitlab/gitlab.js +27 -0
  50. package/dist/scripts/shared/pull-request/gitlab/gitlab.js.map +1 -0
  51. package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts +31 -0
  52. package/dist/scripts/shared/pull-request/post-pr/post-pr.d.ts.map +1 -0
  53. package/dist/scripts/shared/pull-request/post-pr/post-pr.js +61 -0
  54. package/dist/scripts/shared/pull-request/post-pr/post-pr.js.map +1 -0
  55. package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts +19 -0
  56. package/dist/scripts/shared/pull-request/pr-body/pr-body.d.ts.map +1 -0
  57. package/dist/scripts/shared/pull-request/pr-body/pr-body.js +35 -0
  58. package/dist/scripts/shared/pull-request/pr-body/pr-body.js.map +1 -0
  59. package/dist/scripts/shared/remote/remote.d.ts +41 -0
  60. package/dist/scripts/shared/remote/remote.d.ts.map +1 -0
  61. package/dist/scripts/shared/remote/remote.js +227 -0
  62. package/dist/scripts/shared/remote/remote.js.map +1 -0
  63. package/dist/types/index.d.ts +1 -0
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/dist/types/remote.d.ts +44 -0
  66. package/dist/types/remote.d.ts.map +1 -0
  67. package/dist/types/remote.js +5 -0
  68. package/dist/types/remote.js.map +1 -0
  69. package/package.json +1 -1
  70. package/src/roles/setup/workflows/init.md +91 -0
  71. package/src/roles/setup/workflows/scaffold.md +27 -0
  72. package/src/roles/setup/workflows/settings.md +62 -0
@@ -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;;;;;;;;;;;;;;iBAc1B,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"}
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"}
@@ -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, {
@@ -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;CAC/C,CAAC,CAAC;AAEH,gFAAgF;AAEhF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;IACrD,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,QAAQ;IACnB,cAAc,EAAE,QAAQ;IACxB,gBAAgB,EAAE,QAAQ;IAC1B,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;IACvD,YAAY,EAAE,QAAQ;IACtB,WAAW,EAAE,QAAQ;CACtB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;IACvD,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;CACzB,CAAC,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":"AA8BA;;;;;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"}
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"}
@@ -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":"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"}
1
+ {"version":3,"file":"afk.js","sourceRoot":"","sources":["../../../src/scripts/afk/afk.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../../src/scripts/board/github/github.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAa/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"}
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":"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"}
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,CAO1C;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"}
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
- const raw = await linearGraphql(apiKey, '{ viewer { id } }');
68
- const parsed = linearViewerResponseSchema.safeParse(raw);
69
- if (parsed.success && parsed.data.data?.viewer?.id)
70
- return { ok: true };
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":"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"}
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":"AA2PA;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuPvD"}
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 { checkout, currentBranch, deleteBranch, ensureBranch, squashMerge, } from '../../scripts/shared/git-ops/git-ops.js';
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
- function formatDuration(ms) {
28
- const secs = Math.floor(ms / 1000);
29
- if (secs < 60)
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. Squash merge
293
- checkout(targetBranch);
294
- const commitMsg = `feat(${ticket.key}): ${ticket.title}`;
295
- const hadChanges = squashMerge(ticketBranch, commitMsg);
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 if (statusDone) {
316
- await transitionToStatus(config, ticket, statusDone);
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
- // 17. Send notification (best-effort)
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}`);