@camaradesuk/git-worktree-tools 1.3.0 → 1.4.1
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 +290 -3
- package/dist/api/clean.d.ts +65 -0
- package/dist/api/clean.d.ts.map +1 -0
- package/dist/api/clean.js +209 -0
- package/dist/api/clean.js.map +1 -0
- package/dist/api/create.d.ts +88 -0
- package/dist/api/create.d.ts.map +1 -0
- package/dist/api/create.js +373 -0
- package/dist/api/create.js.map +1 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +19 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/list.d.ts +74 -0
- package/dist/api/list.d.ts.map +1 -0
- package/dist/api/list.js +80 -0
- package/dist/api/list.js.map +1 -0
- package/dist/api/state.d.ts +43 -0
- package/dist/api/state.d.ts.map +1 -0
- package/dist/api/state.js +70 -0
- package/dist/api/state.js.map +1 -0
- package/dist/cli/cleanpr.js +171 -28
- package/dist/cli/cleanpr.js.map +1 -1
- package/dist/cli/cleanpr.test.js +459 -7
- package/dist/cli/cleanpr.test.js.map +1 -1
- package/dist/cli/newpr.js +189 -28
- package/dist/cli/newpr.js.map +1 -1
- package/dist/cli/newpr.test.js +349 -0
- package/dist/cli/newpr.test.js.map +1 -1
- package/dist/cli/wtconfig.d.ts +14 -0
- package/dist/cli/wtconfig.d.ts.map +1 -0
- package/dist/cli/wtconfig.js +948 -0
- package/dist/cli/wtconfig.js.map +1 -0
- package/dist/cli/wtconfig.test.d.ts +5 -0
- package/dist/cli/wtconfig.test.d.ts.map +1 -0
- package/dist/cli/wtconfig.test.js +1281 -0
- package/dist/cli/wtconfig.test.js.map +1 -0
- package/dist/cli/wtlink.js +5 -0
- package/dist/cli/wtlink.js.map +1 -1
- package/dist/cli/wtstate.d.ts +8 -0
- package/dist/cli/wtstate.d.ts.map +1 -0
- package/dist/cli/wtstate.js +83 -0
- package/dist/cli/wtstate.js.map +1 -0
- package/dist/cli/wtstate.test.d.ts +5 -0
- package/dist/cli/wtstate.test.d.ts.map +1 -0
- package/dist/cli/wtstate.test.js +193 -0
- package/dist/cli/wtstate.test.js.map +1 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts +2 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts.map +1 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.js +326 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.js.map +1 -0
- package/dist/e2e/helpers/cli-runner.d.ts +103 -0
- package/dist/e2e/helpers/cli-runner.d.ts.map +1 -0
- package/dist/e2e/helpers/cli-runner.js +200 -0
- package/dist/e2e/helpers/cli-runner.js.map +1 -0
- package/dist/e2e/helpers/gh-mock.d.ts +87 -0
- package/dist/e2e/helpers/gh-mock.d.ts.map +1 -0
- package/dist/e2e/helpers/gh-mock.js +384 -0
- package/dist/e2e/helpers/gh-mock.js.map +1 -0
- package/dist/e2e/helpers/index.d.ts +12 -0
- package/dist/e2e/helpers/index.d.ts.map +1 -0
- package/dist/e2e/helpers/index.js +16 -0
- package/dist/e2e/helpers/index.js.map +1 -0
- package/dist/e2e/helpers/pty-wrapper.d.ts +118 -0
- package/dist/e2e/helpers/pty-wrapper.d.ts.map +1 -0
- package/dist/e2e/helpers/pty-wrapper.js +276 -0
- package/dist/e2e/helpers/pty-wrapper.js.map +1 -0
- package/dist/e2e/helpers/scenario-harness.d.ts +55 -0
- package/dist/e2e/helpers/scenario-harness.d.ts.map +1 -0
- package/dist/e2e/helpers/scenario-harness.js +360 -0
- package/dist/e2e/helpers/scenario-harness.js.map +1 -0
- package/dist/e2e/helpers/test-context.d.ts +120 -0
- package/dist/e2e/helpers/test-context.d.ts.map +1 -0
- package/dist/e2e/helpers/test-context.js +263 -0
- package/dist/e2e/helpers/test-context.js.map +1 -0
- package/dist/e2e/lswt/lswt.e2e.test.d.ts +2 -0
- package/dist/e2e/lswt/lswt.e2e.test.d.ts.map +1 -0
- package/dist/e2e/lswt/lswt.e2e.test.js +328 -0
- package/dist/e2e/lswt/lswt.e2e.test.js.map +1 -0
- package/dist/e2e/newpr/newpr.e2e.test.d.ts +2 -0
- package/dist/e2e/newpr/newpr.e2e.test.d.ts.map +1 -0
- package/dist/e2e/newpr/newpr.e2e.test.js +286 -0
- package/dist/e2e/newpr/newpr.e2e.test.js.map +1 -0
- package/dist/e2e/newpr/scenarios.e2e.test.d.ts +2 -0
- package/dist/e2e/newpr/scenarios.e2e.test.d.ts.map +1 -0
- package/dist/e2e/newpr/scenarios.e2e.test.js +426 -0
- package/dist/e2e/newpr/scenarios.e2e.test.js.map +1 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts +2 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts.map +1 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.js +298 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.js.map +1 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.d.ts +2 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.d.ts.map +1 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.js +364 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/ai/base-provider.d.ts +58 -0
- package/dist/lib/ai/base-provider.d.ts.map +1 -0
- package/dist/lib/ai/base-provider.js +246 -0
- package/dist/lib/ai/base-provider.js.map +1 -0
- package/dist/lib/ai/base-provider.test.d.ts +7 -0
- package/dist/lib/ai/base-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/base-provider.test.js +320 -0
- package/dist/lib/ai/base-provider.test.js.map +1 -0
- package/dist/lib/ai/cli-provider.d.ts +87 -0
- package/dist/lib/ai/cli-provider.d.ts.map +1 -0
- package/dist/lib/ai/cli-provider.js +280 -0
- package/dist/lib/ai/cli-provider.js.map +1 -0
- package/dist/lib/ai/cli-provider.test.d.ts +5 -0
- package/dist/lib/ai/cli-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/cli-provider.test.js +462 -0
- package/dist/lib/ai/cli-provider.test.js.map +1 -0
- package/dist/lib/ai/fallback-provider.d.ts +20 -0
- package/dist/lib/ai/fallback-provider.d.ts.map +1 -0
- package/dist/lib/ai/fallback-provider.js +125 -0
- package/dist/lib/ai/fallback-provider.js.map +1 -0
- package/dist/lib/ai/fallback-provider.test.d.ts +7 -0
- package/dist/lib/ai/fallback-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/fallback-provider.test.js +165 -0
- package/dist/lib/ai/fallback-provider.test.js.map +1 -0
- package/dist/lib/ai/generation-service.d.ts +44 -0
- package/dist/lib/ai/generation-service.d.ts.map +1 -0
- package/dist/lib/ai/generation-service.js +107 -0
- package/dist/lib/ai/generation-service.js.map +1 -0
- package/dist/lib/ai/generation-service.test.d.ts +7 -0
- package/dist/lib/ai/generation-service.test.d.ts.map +1 -0
- package/dist/lib/ai/generation-service.test.js +213 -0
- package/dist/lib/ai/generation-service.test.js.map +1 -0
- package/dist/lib/ai/index.d.ts +19 -0
- package/dist/lib/ai/index.d.ts.map +1 -0
- package/dist/lib/ai/index.js +22 -0
- package/dist/lib/ai/index.js.map +1 -0
- package/dist/lib/ai/provider-manager.d.ts +109 -0
- package/dist/lib/ai/provider-manager.d.ts.map +1 -0
- package/dist/lib/ai/provider-manager.js +270 -0
- package/dist/lib/ai/provider-manager.js.map +1 -0
- package/dist/lib/ai/provider-manager.test.d.ts +5 -0
- package/dist/lib/ai/provider-manager.test.d.ts.map +1 -0
- package/dist/lib/ai/provider-manager.test.js +312 -0
- package/dist/lib/ai/provider-manager.test.js.map +1 -0
- package/dist/lib/ai/types.d.ts +166 -0
- package/dist/lib/ai/types.d.ts.map +1 -0
- package/dist/lib/ai/types.js +19 -0
- package/dist/lib/ai/types.js.map +1 -0
- package/dist/lib/cleanpr/args.d.ts.map +1 -1
- package/dist/lib/cleanpr/args.js +18 -0
- package/dist/lib/cleanpr/args.js.map +1 -1
- package/dist/lib/cleanpr/args.test.js +88 -11
- package/dist/lib/cleanpr/args.test.js.map +1 -1
- package/dist/lib/cleanpr/cleanup.d.ts +2 -0
- package/dist/lib/cleanpr/cleanup.d.ts.map +1 -1
- package/dist/lib/cleanpr/cleanup.js +30 -2
- package/dist/lib/cleanpr/cleanup.js.map +1 -1
- package/dist/lib/cleanpr/cleanup.test.js +37 -5
- package/dist/lib/cleanpr/cleanup.test.js.map +1 -1
- package/dist/lib/cleanpr/types.d.ts +10 -0
- package/dist/lib/cleanpr/types.d.ts.map +1 -1
- package/dist/lib/cleanpr/worktree-info.test.js +72 -1
- package/dist/lib/cleanpr/worktree-info.test.js.map +1 -1
- package/dist/lib/config.d.ts +170 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +129 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.js +406 -2
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/hooks/executor.d.ts +35 -0
- package/dist/lib/hooks/executor.d.ts.map +1 -0
- package/dist/lib/hooks/executor.js +401 -0
- package/dist/lib/hooks/executor.js.map +1 -0
- package/dist/lib/hooks/executor.test.d.ts +5 -0
- package/dist/lib/hooks/executor.test.d.ts.map +1 -0
- package/dist/lib/hooks/executor.test.js +648 -0
- package/dist/lib/hooks/executor.test.js.map +1 -0
- package/dist/lib/hooks/index.d.ts +25 -0
- package/dist/lib/hooks/index.d.ts.map +1 -0
- package/dist/lib/hooks/index.js +26 -0
- package/dist/lib/hooks/index.js.map +1 -0
- package/dist/lib/hooks/templates.d.ts +74 -0
- package/dist/lib/hooks/templates.d.ts.map +1 -0
- package/dist/lib/hooks/templates.js +270 -0
- package/dist/lib/hooks/templates.js.map +1 -0
- package/dist/lib/hooks/templates.test.d.ts +5 -0
- package/dist/lib/hooks/templates.test.d.ts.map +1 -0
- package/dist/lib/hooks/templates.test.js +163 -0
- package/dist/lib/hooks/templates.test.js.map +1 -0
- package/dist/lib/hooks/types.d.ts +161 -0
- package/dist/lib/hooks/types.d.ts.map +1 -0
- package/dist/lib/hooks/types.js +73 -0
- package/dist/lib/hooks/types.js.map +1 -0
- package/dist/lib/hooks/types.test.d.ts +5 -0
- package/dist/lib/hooks/types.test.d.ts.map +1 -0
- package/dist/lib/hooks/types.test.js +132 -0
- package/dist/lib/hooks/types.test.js.map +1 -0
- package/dist/lib/json-output.d.ts +172 -0
- package/dist/lib/json-output.d.ts.map +1 -0
- package/dist/lib/json-output.js +134 -0
- package/dist/lib/json-output.js.map +1 -0
- package/dist/lib/json-output.test.d.ts +5 -0
- package/dist/lib/json-output.test.d.ts.map +1 -0
- package/dist/lib/json-output.test.js +259 -0
- package/dist/lib/json-output.test.js.map +1 -0
- package/dist/lib/lswt/action-executors.test.js +6 -0
- package/dist/lib/lswt/action-executors.test.js.map +1 -1
- package/dist/lib/newpr/action-deps.d.ts +15 -0
- package/dist/lib/newpr/action-deps.d.ts.map +1 -0
- package/dist/lib/newpr/action-deps.js +22 -0
- package/dist/lib/newpr/action-deps.js.map +1 -0
- package/dist/lib/newpr/args.d.ts.map +1 -1
- package/dist/lib/newpr/args.js +56 -0
- package/dist/lib/newpr/args.js.map +1 -1
- package/dist/lib/newpr/hook-runner.d.ts +80 -0
- package/dist/lib/newpr/hook-runner.d.ts.map +1 -0
- package/dist/lib/newpr/hook-runner.js +182 -0
- package/dist/lib/newpr/hook-runner.js.map +1 -0
- package/dist/lib/newpr/hook-runner.test.d.ts +7 -0
- package/dist/lib/newpr/hook-runner.test.d.ts.map +1 -0
- package/dist/lib/newpr/hook-runner.test.js +301 -0
- package/dist/lib/newpr/hook-runner.test.js.map +1 -0
- package/dist/lib/newpr/index.d.ts +3 -0
- package/dist/lib/newpr/index.d.ts.map +1 -1
- package/dist/lib/newpr/index.js +3 -0
- package/dist/lib/newpr/index.js.map +1 -1
- package/dist/lib/newpr/types.d.ts +9 -0
- package/dist/lib/newpr/types.d.ts.map +1 -1
- package/dist/lib/wtconfig/config-manager.d.ts +72 -0
- package/dist/lib/wtconfig/config-manager.d.ts.map +1 -0
- package/dist/lib/wtconfig/config-manager.js +408 -0
- package/dist/lib/wtconfig/config-manager.js.map +1 -0
- package/dist/lib/wtconfig/config-manager.test.d.ts +5 -0
- package/dist/lib/wtconfig/config-manager.test.d.ts.map +1 -0
- package/dist/lib/wtconfig/config-manager.test.js +501 -0
- package/dist/lib/wtconfig/config-manager.test.js.map +1 -0
- package/dist/lib/wtconfig/environment.d.ts +23 -0
- package/dist/lib/wtconfig/environment.d.ts.map +1 -0
- package/dist/lib/wtconfig/environment.js +242 -0
- package/dist/lib/wtconfig/environment.js.map +1 -0
- package/dist/lib/wtconfig/environment.test.d.ts +5 -0
- package/dist/lib/wtconfig/environment.test.d.ts.map +1 -0
- package/dist/lib/wtconfig/environment.test.js +246 -0
- package/dist/lib/wtconfig/environment.test.js.map +1 -0
- package/dist/lib/wtconfig/index.d.ts +7 -0
- package/dist/lib/wtconfig/index.d.ts.map +1 -0
- package/dist/lib/wtconfig/index.js +8 -0
- package/dist/lib/wtconfig/index.js.map +1 -0
- package/dist/lib/wtconfig/types.d.ts +97 -0
- package/dist/lib/wtconfig/types.d.ts.map +1 -0
- package/dist/lib/wtconfig/types.js +5 -0
- package/dist/lib/wtconfig/types.js.map +1 -0
- package/dist/lib/wtstate/analyze.d.ts +13 -0
- package/dist/lib/wtstate/analyze.d.ts.map +1 -0
- package/dist/lib/wtstate/analyze.js +165 -0
- package/dist/lib/wtstate/analyze.js.map +1 -0
- package/dist/lib/wtstate/analyze.test.d.ts +5 -0
- package/dist/lib/wtstate/analyze.test.d.ts.map +1 -0
- package/dist/lib/wtstate/analyze.test.js +282 -0
- package/dist/lib/wtstate/analyze.test.js.map +1 -0
- package/dist/lib/wtstate/args.d.ts +17 -0
- package/dist/lib/wtstate/args.d.ts.map +1 -0
- package/dist/lib/wtstate/args.js +91 -0
- package/dist/lib/wtstate/args.js.map +1 -0
- package/dist/lib/wtstate/args.test.d.ts +5 -0
- package/dist/lib/wtstate/args.test.d.ts.map +1 -0
- package/dist/lib/wtstate/args.test.js +120 -0
- package/dist/lib/wtstate/args.test.js.map +1 -0
- package/dist/lib/wtstate/index.d.ts +7 -0
- package/dist/lib/wtstate/index.d.ts.map +1 -0
- package/dist/lib/wtstate/index.js +8 -0
- package/dist/lib/wtstate/index.js.map +1 -0
- package/dist/lib/wtstate/types.d.ts +64 -0
- package/dist/lib/wtstate/types.d.ts.map +1 -0
- package/dist/lib/wtstate/types.js +5 -0
- package/dist/lib/wtstate/types.js.map +1 -0
- package/dist/mcp/server.d.ts +14 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +339 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/server.test.d.ts +9 -0
- package/dist/mcp/server.test.d.ts.map +1 -0
- package/dist/mcp/server.test.js +390 -0
- package/dist/mcp/server.test.js.map +1 -0
- package/package.json +8 -2
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,3 +1,104 @@
|
|
|
1
|
+
import type { AIConfig } from './ai/types.js';
|
|
2
|
+
import type { HooksConfig } from './hooks/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Hook execution defaults configuration
|
|
5
|
+
*/
|
|
6
|
+
export interface HookDefaultsConfig {
|
|
7
|
+
/**
|
|
8
|
+
* Default timeout for individual hook execution (in milliseconds)
|
|
9
|
+
* Default: 30000 (30 seconds)
|
|
10
|
+
*/
|
|
11
|
+
timeout?: number;
|
|
12
|
+
/**
|
|
13
|
+
* Maximum timeout allowed for any hook (in milliseconds)
|
|
14
|
+
* Default: 60000 (60 seconds)
|
|
15
|
+
*/
|
|
16
|
+
maxTimeout?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Custom generator scripts configuration
|
|
20
|
+
* Paths to scripts that generate content instead of using built-in AI
|
|
21
|
+
*/
|
|
22
|
+
export interface GeneratorsConfig {
|
|
23
|
+
/**
|
|
24
|
+
* Path to custom branch name generator script
|
|
25
|
+
* Script receives context and should return the branch name
|
|
26
|
+
*/
|
|
27
|
+
branchName?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Path to custom PR title generator script
|
|
30
|
+
*/
|
|
31
|
+
prTitle?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Path to custom PR description generator script
|
|
34
|
+
*/
|
|
35
|
+
prDescription?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Path to custom commit message generator script
|
|
38
|
+
*/
|
|
39
|
+
commitMessage?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Linear integration configuration
|
|
43
|
+
*/
|
|
44
|
+
export interface LinearIntegration {
|
|
45
|
+
/**
|
|
46
|
+
* Linear team ID for issue linking
|
|
47
|
+
*/
|
|
48
|
+
teamId?: string;
|
|
49
|
+
/**
|
|
50
|
+
* API key environment variable name (default: LINEAR_API_KEY)
|
|
51
|
+
*/
|
|
52
|
+
apiKeyEnv?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Jira integration configuration
|
|
56
|
+
*/
|
|
57
|
+
export interface JiraIntegration {
|
|
58
|
+
/**
|
|
59
|
+
* Jira project key (e.g., "PROJ")
|
|
60
|
+
*/
|
|
61
|
+
projectKey?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Jira base URL
|
|
64
|
+
*/
|
|
65
|
+
baseUrl?: string;
|
|
66
|
+
/**
|
|
67
|
+
* API token environment variable name (default: JIRA_API_TOKEN)
|
|
68
|
+
*/
|
|
69
|
+
apiTokenEnv?: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Slack integration configuration
|
|
73
|
+
*/
|
|
74
|
+
export interface SlackIntegration {
|
|
75
|
+
/**
|
|
76
|
+
* Slack webhook URL for notifications
|
|
77
|
+
* Can also be an environment variable name (e.g., "SLACK_WEBHOOK_URL")
|
|
78
|
+
*/
|
|
79
|
+
webhookUrl?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Default channel for notifications
|
|
82
|
+
*/
|
|
83
|
+
channel?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Third-party integrations configuration
|
|
87
|
+
*/
|
|
88
|
+
export interface IntegrationsConfig {
|
|
89
|
+
/**
|
|
90
|
+
* Linear issue tracker integration
|
|
91
|
+
*/
|
|
92
|
+
linear?: LinearIntegration;
|
|
93
|
+
/**
|
|
94
|
+
* Jira issue tracker integration
|
|
95
|
+
*/
|
|
96
|
+
jira?: JiraIntegration;
|
|
97
|
+
/**
|
|
98
|
+
* Slack notification integration
|
|
99
|
+
*/
|
|
100
|
+
slack?: SlackIntegration;
|
|
101
|
+
}
|
|
1
102
|
/**
|
|
2
103
|
* Configuration for git-worktree-tools
|
|
3
104
|
*/
|
|
@@ -43,6 +144,39 @@ export interface WorktreeConfig {
|
|
|
43
144
|
* Default: "vscode"
|
|
44
145
|
*/
|
|
45
146
|
preferredEditor?: 'vscode' | 'cursor' | 'auto';
|
|
147
|
+
/**
|
|
148
|
+
* AI content generation configuration
|
|
149
|
+
*/
|
|
150
|
+
ai?: AIConfig;
|
|
151
|
+
/**
|
|
152
|
+
* Lifecycle hooks configuration
|
|
153
|
+
*
|
|
154
|
+
* Define shell commands or scripts to run at various points in the workflow.
|
|
155
|
+
* Available hooks: pre-analyze, post-analyze, pre-branch, post-branch,
|
|
156
|
+
* pre-commit, post-commit, pre-push, post-push, pre-pr, post-pr,
|
|
157
|
+
* pre-worktree, post-worktree, cleanup
|
|
158
|
+
*/
|
|
159
|
+
hooks?: HooksConfig;
|
|
160
|
+
/**
|
|
161
|
+
* Default settings for hook execution
|
|
162
|
+
* Allows customizing timeout values for hooks
|
|
163
|
+
*/
|
|
164
|
+
hookDefaults?: HookDefaultsConfig;
|
|
165
|
+
/**
|
|
166
|
+
* Plugin packages to load
|
|
167
|
+
* Can be npm package names or paths to local plugin files
|
|
168
|
+
* e.g., ["@worktree-tools/plugin-linear", "./plugins/custom.js"]
|
|
169
|
+
*/
|
|
170
|
+
plugins?: string[];
|
|
171
|
+
/**
|
|
172
|
+
* Custom generator scripts configuration
|
|
173
|
+
* Paths to scripts that generate content instead of using built-in AI
|
|
174
|
+
*/
|
|
175
|
+
generators?: GeneratorsConfig;
|
|
176
|
+
/**
|
|
177
|
+
* Third-party integrations configuration
|
|
178
|
+
*/
|
|
179
|
+
integrations?: IntegrationsConfig;
|
|
46
180
|
}
|
|
47
181
|
/**
|
|
48
182
|
* Get default configuration values
|
|
@@ -58,7 +192,42 @@ export declare function loadConfig(repoRoot: string): Required<WorktreeConfig>;
|
|
|
58
192
|
*/
|
|
59
193
|
export declare function generateWorktreePath(config: Required<WorktreeConfig>, repoRoot: string, repoName: string, prNumber: number, branchName?: string): string;
|
|
60
194
|
/**
|
|
61
|
-
* Generate branch name from description
|
|
195
|
+
* Generate branch name from description (synchronous, rule-based)
|
|
62
196
|
*/
|
|
63
197
|
export declare function generateBranchName(config: Required<WorktreeConfig>, description: string): string;
|
|
198
|
+
/**
|
|
199
|
+
* Generate branch name from description with AI support
|
|
200
|
+
*
|
|
201
|
+
* Uses AI if enabled in config, otherwise falls back to rule-based generation.
|
|
202
|
+
*
|
|
203
|
+
* @param config - The worktree configuration
|
|
204
|
+
* @param description - User-provided description for the branch
|
|
205
|
+
* @param repoName - Repository name (optional, defaults to 'repo')
|
|
206
|
+
*/
|
|
207
|
+
export declare function generateBranchNameAsync(config: Required<WorktreeConfig>, description: string, repoName?: string): Promise<string>;
|
|
208
|
+
/**
|
|
209
|
+
* Context for generating PR content
|
|
210
|
+
*/
|
|
211
|
+
export interface PRGenerationContext {
|
|
212
|
+
description: string;
|
|
213
|
+
branchName: string;
|
|
214
|
+
baseBranch?: string;
|
|
215
|
+
diff?: string;
|
|
216
|
+
changedFiles?: string[];
|
|
217
|
+
commitMessages?: string[];
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Result of PR content generation
|
|
221
|
+
*/
|
|
222
|
+
export interface PRGenerationResult {
|
|
223
|
+
title: string;
|
|
224
|
+
description: string;
|
|
225
|
+
aiGenerated: boolean;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Generate PR title and description with AI support
|
|
229
|
+
*
|
|
230
|
+
* Uses AI if enabled in config, otherwise falls back to simple defaults.
|
|
231
|
+
*/
|
|
232
|
+
export declare function generatePRContentAsync(config: Required<WorktreeConfig>, context: PRGenerationContext): Promise<PRGenerationResult>;
|
|
64
233
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { DEFAULT_BASE_BRANCH, DEFAULT_WORKTREE_PATTERN, DEFAULT_WORKTREE_PARENT, DEFAULT_BRANCH_PREFIX, CONFIG_FILE_NAMES, } from './constants.js';
|
|
4
|
+
import { DEFAULT_AI_CONFIG } from './ai/types.js';
|
|
4
5
|
/**
|
|
5
6
|
* Get default configuration values
|
|
6
7
|
*/
|
|
@@ -14,6 +15,15 @@ export function getDefaultConfig() {
|
|
|
14
15
|
syncPatterns: [],
|
|
15
16
|
branchPrefix: DEFAULT_BRANCH_PREFIX,
|
|
16
17
|
preferredEditor: 'vscode',
|
|
18
|
+
ai: DEFAULT_AI_CONFIG,
|
|
19
|
+
hooks: {},
|
|
20
|
+
hookDefaults: {
|
|
21
|
+
timeout: 30000,
|
|
22
|
+
maxTimeout: 60000,
|
|
23
|
+
},
|
|
24
|
+
plugins: [],
|
|
25
|
+
generators: {},
|
|
26
|
+
integrations: {},
|
|
17
27
|
};
|
|
18
28
|
}
|
|
19
29
|
/**
|
|
@@ -41,10 +51,37 @@ export function loadConfig(repoRoot) {
|
|
|
41
51
|
try {
|
|
42
52
|
const content = fs.readFileSync(configPath, 'utf8');
|
|
43
53
|
const userConfig = JSON.parse(content);
|
|
44
|
-
// Merge with defaults
|
|
54
|
+
// Merge with defaults (deep merge for nested config objects)
|
|
45
55
|
return {
|
|
46
56
|
...defaults,
|
|
47
57
|
...userConfig,
|
|
58
|
+
ai: {
|
|
59
|
+
...defaults.ai,
|
|
60
|
+
...userConfig.ai,
|
|
61
|
+
},
|
|
62
|
+
hooks: {
|
|
63
|
+
...defaults.hooks,
|
|
64
|
+
...userConfig.hooks,
|
|
65
|
+
},
|
|
66
|
+
plugins: userConfig.plugins ?? defaults.plugins,
|
|
67
|
+
generators: {
|
|
68
|
+
...defaults.generators,
|
|
69
|
+
...userConfig.generators,
|
|
70
|
+
},
|
|
71
|
+
integrations: {
|
|
72
|
+
...defaults.integrations,
|
|
73
|
+
...userConfig.integrations,
|
|
74
|
+
// Deep merge nested integration configs
|
|
75
|
+
linear: userConfig.integrations?.linear
|
|
76
|
+
? { ...defaults.integrations?.linear, ...userConfig.integrations.linear }
|
|
77
|
+
: defaults.integrations?.linear,
|
|
78
|
+
jira: userConfig.integrations?.jira
|
|
79
|
+
? { ...defaults.integrations?.jira, ...userConfig.integrations.jira }
|
|
80
|
+
: defaults.integrations?.jira,
|
|
81
|
+
slack: userConfig.integrations?.slack
|
|
82
|
+
? { ...defaults.integrations?.slack, ...userConfig.integrations.slack }
|
|
83
|
+
: defaults.integrations?.slack,
|
|
84
|
+
},
|
|
48
85
|
};
|
|
49
86
|
}
|
|
50
87
|
catch (error) {
|
|
@@ -76,7 +113,7 @@ export function generateWorktreePath(config, repoRoot, repoName, prNumber, branc
|
|
|
76
113
|
return path.join(parentDir, pattern);
|
|
77
114
|
}
|
|
78
115
|
/**
|
|
79
|
-
* Generate branch name from description
|
|
116
|
+
* Generate branch name from description (synchronous, rule-based)
|
|
80
117
|
*/
|
|
81
118
|
export function generateBranchName(config, description) {
|
|
82
119
|
// Convert to lowercase, replace spaces and special chars with hyphens
|
|
@@ -89,4 +126,94 @@ export function generateBranchName(config, description) {
|
|
|
89
126
|
const suffix = Math.random().toString(36).substring(2, 8);
|
|
90
127
|
return `${config.branchPrefix}/${slug}-${suffix}`;
|
|
91
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Generate branch name from description with AI support
|
|
131
|
+
*
|
|
132
|
+
* Uses AI if enabled in config, otherwise falls back to rule-based generation.
|
|
133
|
+
*
|
|
134
|
+
* @param config - The worktree configuration
|
|
135
|
+
* @param description - User-provided description for the branch
|
|
136
|
+
* @param repoName - Repository name (optional, defaults to 'repo')
|
|
137
|
+
*/
|
|
138
|
+
export async function generateBranchNameAsync(config, description, repoName = 'repo') {
|
|
139
|
+
// If AI is enabled for branch names, try to use it
|
|
140
|
+
if (config.ai.provider !== 'none' && config.ai.branchName) {
|
|
141
|
+
try {
|
|
142
|
+
const { createAIGenerationService } = await import('./ai/index.js');
|
|
143
|
+
const service = createAIGenerationService(config.ai);
|
|
144
|
+
const context = {
|
|
145
|
+
description,
|
|
146
|
+
repoName,
|
|
147
|
+
branchPrefix: config.branchPrefix,
|
|
148
|
+
existingBranches: [], // Could be populated for smarter suggestions
|
|
149
|
+
};
|
|
150
|
+
const result = await service.generateBranchName(context);
|
|
151
|
+
if (result.success && result.content) {
|
|
152
|
+
return result.content;
|
|
153
|
+
}
|
|
154
|
+
// Fall through to rule-based on failure
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Fall through to rule-based on error
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Fall back to rule-based generation
|
|
161
|
+
return generateBranchName(config, description);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Generate PR title and description with AI support
|
|
165
|
+
*
|
|
166
|
+
* Uses AI if enabled in config, otherwise falls back to simple defaults.
|
|
167
|
+
*/
|
|
168
|
+
export async function generatePRContentAsync(config, context) {
|
|
169
|
+
const defaultResult = {
|
|
170
|
+
title: context.description,
|
|
171
|
+
description: '',
|
|
172
|
+
aiGenerated: false,
|
|
173
|
+
};
|
|
174
|
+
// If AI is enabled for PR content, try to use it
|
|
175
|
+
if (config.ai.provider !== 'none' && (config.ai.prTitle || config.ai.prDescription)) {
|
|
176
|
+
try {
|
|
177
|
+
const { createAIGenerationService } = await import('./ai/index.js');
|
|
178
|
+
const service = createAIGenerationService(config.ai);
|
|
179
|
+
const prContext = {
|
|
180
|
+
description: context.description,
|
|
181
|
+
branchName: context.branchName,
|
|
182
|
+
baseBranch: context.baseBranch || config.baseBranch,
|
|
183
|
+
diff: context.diff,
|
|
184
|
+
changedFiles: context.changedFiles || [],
|
|
185
|
+
commits: (context.commitMessages || []).map((msg) => ({
|
|
186
|
+
message: msg,
|
|
187
|
+
hash: '',
|
|
188
|
+
})),
|
|
189
|
+
};
|
|
190
|
+
let title = context.description;
|
|
191
|
+
let description = '';
|
|
192
|
+
let anyGenerated = false;
|
|
193
|
+
// Generate title if enabled
|
|
194
|
+
if (config.ai.prTitle) {
|
|
195
|
+
const titleResult = await service.generatePRTitle(prContext);
|
|
196
|
+
if (titleResult.success && titleResult.content) {
|
|
197
|
+
title = titleResult.content;
|
|
198
|
+
anyGenerated = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Generate description if enabled
|
|
202
|
+
if (config.ai.prDescription) {
|
|
203
|
+
const descResult = await service.generatePRDescription(prContext);
|
|
204
|
+
if (descResult.success && descResult.content) {
|
|
205
|
+
description = descResult.content;
|
|
206
|
+
anyGenerated = true;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (anyGenerated) {
|
|
210
|
+
return { title, description, aiGenerated: true };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
// Fall through to defaults on error
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return defaultResult;
|
|
218
|
+
}
|
|
92
219
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|