@bretwardjames/ghp-core 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -59,6 +59,7 @@ __export(index_exports, {
59
59
  cleanupStaleAgents: () => cleanupStaleAgents,
60
60
  computeSettingsDiff: () => computeSettingsDiff,
61
61
  createBranch: () => createBranch,
62
+ createBranchNoCheckout: () => createBranchNoCheckout,
62
63
  createIssueWorkflow: () => createIssueWorkflow,
63
64
  createPRWorkflow: () => createPRWorkflow,
64
65
  createSessionWatcher: () => createSessionWatcher,
@@ -1280,6 +1281,21 @@ var GitHubAPI = class {
1280
1281
  return false;
1281
1282
  }
1282
1283
  }
1284
+ /**
1285
+ * Move an issue to a target status in its project.
1286
+ * Returns { success, error? } — does not throw.
1287
+ */
1288
+ async moveIssueToStatus(repo, issueNumber, targetStatus) {
1289
+ const item = await this.findItemByNumber(repo, issueNumber);
1290
+ if (!item) return { success: false, error: `Issue #${issueNumber} not found in any project` };
1291
+ if (item.status === targetStatus) return { success: true };
1292
+ const statusField = await this.getStatusField(item.projectId);
1293
+ if (!statusField) return { success: false, error: "Could not find Status field on project" };
1294
+ const option = statusField.options.find((o) => o.name === targetStatus);
1295
+ if (!option) return { success: false, error: `Status "${targetStatus}" not found. Available: ${statusField.options.map((o) => o.name).join(", ")}` };
1296
+ const updated = await this.updateItemStatus(item.projectId, item.id, statusField.fieldId, option.id);
1297
+ return updated ? { success: true } : { success: false, error: "Failed to update status" };
1298
+ }
1283
1299
  /**
1284
1300
  * Find an item by issue number - direct lookup via issue's projectItems
1285
1301
  * Much faster than iterating through all project items
@@ -2434,6 +2450,14 @@ async function createBranch(branchName, options = {}) {
2434
2450
  const cmd = options.startPoint ? `git checkout -b "${branchName}" "${options.startPoint}"` : `git checkout -b "${branchName}"`;
2435
2451
  await execGit(cmd, options);
2436
2452
  }
2453
+ async function createBranchNoCheckout(branchName, options = {}) {
2454
+ validateBranchName(branchName);
2455
+ if (options.startPoint) {
2456
+ validateRefString(options.startPoint);
2457
+ }
2458
+ const cmd = options.startPoint ? `git branch "${branchName}" "${options.startPoint}"` : `git branch "${branchName}"`;
2459
+ await execGit(cmd, options);
2460
+ }
2437
2461
  async function checkoutBranch(branchName, options = {}) {
2438
2462
  await execGit(`git checkout "${branchName}"`, options);
2439
2463
  }
@@ -2651,31 +2675,41 @@ var SYNCABLE_KEYS = [
2651
2675
  "mainBranch",
2652
2676
  "branchPattern",
2653
2677
  "startWorkingStatus",
2654
- "doneStatus"
2678
+ "doneStatus",
2679
+ "prOpenedStatus",
2680
+ "prMergedStatus"
2655
2681
  ];
2656
2682
  var SETTING_DISPLAY_NAMES = {
2657
2683
  mainBranch: "Main Branch",
2658
2684
  branchPattern: "Branch Name Pattern",
2659
2685
  startWorkingStatus: "Start Working Status",
2660
- doneStatus: "Done/PR Merged Status"
2686
+ doneStatus: "Done Status",
2687
+ prOpenedStatus: "PR Opened Status",
2688
+ prMergedStatus: "PR Merged Status"
2661
2689
  };
2662
2690
  var VSCODE_TO_CLI_MAP = {
2663
2691
  "mainBranch": "mainBranch",
2664
2692
  "branchNamePattern": "branchPattern",
2665
2693
  "startWorkingStatus": "startWorkingStatus",
2666
- "prMergedStatus": "doneStatus"
2694
+ "doneStatus": "doneStatus",
2695
+ "prOpenedStatus": "prOpenedStatus",
2696
+ "prMergedStatus": "prMergedStatus"
2667
2697
  };
2668
2698
  var CLI_TO_VSCODE_MAP = {
2669
2699
  mainBranch: "mainBranch",
2670
2700
  branchPattern: "branchNamePattern",
2671
2701
  startWorkingStatus: "startWorkingStatus",
2672
- doneStatus: "prMergedStatus"
2702
+ doneStatus: "doneStatus",
2703
+ prOpenedStatus: "prOpenedStatus",
2704
+ prMergedStatus: "prMergedStatus"
2673
2705
  };
2674
2706
  var DEFAULT_VALUES = {
2675
2707
  mainBranch: "main",
2676
2708
  branchPattern: "{user}/{number}-{title}",
2677
2709
  startWorkingStatus: "In Progress",
2678
- doneStatus: "Done"
2710
+ doneStatus: "Done",
2711
+ prOpenedStatus: "In Review",
2712
+ prMergedStatus: "Ready for Beta"
2679
2713
  };
2680
2714
  function normalizeVSCodeSettings(vscodeSettings) {
2681
2715
  const result = {};
@@ -5914,6 +5948,7 @@ EOF
5914
5948
  cleanupStaleAgents,
5915
5949
  computeSettingsDiff,
5916
5950
  createBranch,
5951
+ createBranchNoCheckout,
5917
5952
  createIssueWorkflow,
5918
5953
  createPRWorkflow,
5919
5954
  createSessionWatcher,
package/dist/index.d.cts CHANGED
@@ -539,6 +539,14 @@ declare class GitHubAPI {
539
539
  * Update an item's status
540
540
  */
541
541
  updateItemStatus(projectId: string, itemId: string, fieldId: string, optionId: string): Promise<boolean>;
542
+ /**
543
+ * Move an issue to a target status in its project.
544
+ * Returns { success, error? } — does not throw.
545
+ */
546
+ moveIssueToStatus(repo: RepoInfo, issueNumber: number, targetStatus: string): Promise<{
547
+ success: boolean;
548
+ error?: string;
549
+ }>;
542
550
  /**
543
551
  * Find an item by issue number - direct lookup via issue's projectItems
544
552
  * Much faster than iterating through all project items
@@ -805,6 +813,15 @@ declare function branchExists(branchName: string, options?: GitOptions): Promise
805
813
  declare function createBranch(branchName: string, options?: GitOptions & {
806
814
  startPoint?: string;
807
815
  }): Promise<void>;
816
+ /**
817
+ * Create a new branch without switching to it.
818
+ * Uses `git branch` instead of `git checkout -b`, so the working tree is unaffected.
819
+ * Useful for parallel worktree workflows where you never want to change the current branch.
820
+ * @throws {GitError} If the branch already exists or the start point doesn't exist
821
+ */
822
+ declare function createBranchNoCheckout(branchName: string, options?: GitOptions & {
823
+ startPoint?: string;
824
+ }): Promise<void>;
808
825
  /**
809
826
  * Checkout an existing branch.
810
827
  * @throws {GitError} If the branch cannot be checked out (e.g., doesn't exist, uncommitted changes)
@@ -1021,7 +1038,7 @@ declare function buildOrgProjectUrl(org: string, projectNumber: number): string;
1021
1038
  * The canonical setting keys used in sync operations.
1022
1039
  * These are the CLI key names (used as the canonical form).
1023
1040
  */
1024
- type SyncableSettingKey = 'mainBranch' | 'branchPattern' | 'startWorkingStatus' | 'doneStatus';
1041
+ type SyncableSettingKey = 'mainBranch' | 'branchPattern' | 'startWorkingStatus' | 'doneStatus' | 'prOpenedStatus' | 'prMergedStatus';
1025
1042
  /**
1026
1043
  * Settings that can be synced between CLI and VSCode.
1027
1044
  * Uses CLI key names as the canonical form.
@@ -1031,6 +1048,8 @@ interface SyncableSettings {
1031
1048
  branchPattern?: string;
1032
1049
  startWorkingStatus?: string;
1033
1050
  doneStatus?: string;
1051
+ prOpenedStatus?: string;
1052
+ prMergedStatus?: string;
1034
1053
  }
1035
1054
  /**
1036
1055
  * A source of settings (CLI or VSCode)
@@ -3359,4 +3378,4 @@ declare function shouldAbort(results: HookResult[]): boolean;
3359
3378
  */
3360
3379
  declare function hasHooksForEvent(event: EventType): boolean;
3361
3380
 
3362
- export { type ActivityEvent, type AgentInstance, type AgentRegistry, type AgentSessionStatus, type AgentStatus, type AgentSummary, type ApiKeyProvider, type AssigneeInfo, type AuthError, type BaseEventPayload, type BlockingIssue, type BlockingRelationships, type BranchDashboardData, BranchLinker, CLI_TO_VSCODE_MAP, ClaudeClient, type ClaudeClientOptions, type ClaudeResult, type ClaudeTool, type Collaborator, type Commit, type ConflictChoices, type ConflictResolution, type ContentBlock, type CreateIssueOptions, type CreateIssueResult, type CreatePROptions, type CreatePRResult, type CreateWorktreeOptions, type CreateWorktreeResult, DEFAULT_RETRY_CONFIG, DEFAULT_VALUES, type DashboardHook, type DashboardOptions, type DateFieldValue, type DiffStats, type EventHook, type EventHookSettings, type EventHooksConfig, type EventPayload, type EventType, type ExpandIssueOptions, type ExpandedIssue, type FieldInfo, type FieldValue, type FieldValueConnection, type FileChange, type FormatStandupOptions, GHP_TOOLS, type GeneratePRDescriptionOptions, GitError, GitHubAPI, type GitHubAPIOptions, type GitOptions, type HookExecutionOptions, type HookExecutionResult, type HookExitCodes, type HookItem, type HookMode, type HookOutcome, type HookResponse, type HookResult, type HooksConfig, type IssueActivity, type IssueCreatedPayload, type IssueDetails, type IssueReference, type IssueRelationships, type IssueStartedPayload, type IterationFieldValue, type LabelInfo, type Message, type NumberFieldValue, type OnFailureBehavior, type PRInfo, type PermissionPrompt, type PlanEpicOptions, type PlanEpicResult, type PrCreatedPayload, type PrCreatingPayload, type PrMergedPayload, type PrePrPayload, type Project, type ProjectConfig, type ProjectConventions, type ProjectItem, type ProjectItemContent, type ProjectItemsQueryResponse, type ProjectV2, type ProjectV2Field, type ProjectV2Item, type ProjectV2View, type ProjectWithViews, type ProjectsQueryResponse, type RegisterAgentOptions, type RelatedIssue, type RemoveWorktreeOptions, type RemoveWorktreeResult, type RepoInfo, type ResolvedClaudeConfig, type ResolvedSettings, type RetryConfig, SETTING_DISPLAY_NAMES, SYNCABLE_KEYS, type SessionEvent, SessionWatcher, type SettingConflict, type SettingsDiff, type SettingsSource, type SingleSelectFieldValue, type StartIssueOptions, type StartIssueResult, type StatusField, type StreamCallbacks, type StreamErrorEvent, type StreamEvent, type StreamEventBase, type StreamMessageCompleteEvent, type StreamOptions, type StreamTextEvent, type StreamToolInputDeltaEvent, type StreamToolUseCompleteEvent, type StreamToolUseStartEvent, type SyncableSettingKey, type SyncableSettings, TOOL_NAMES, type TextFieldValue, type TokenProvider, type TokenUsage, type ToolContext, type ToolHandler, type ToolHandlers, type UpdateAgentOptions, VSCODE_TO_CLI_MAP, type IssueInfo as WorkflowIssueInfo, type WorkflowResult, type WorktreeInfo as WorkflowWorktreeInfo, type WorktreeCreatedPayload, type WorktreeInfo$1 as WorktreeInfo, type WorktreeRemovedPayload, addEventHook, addHook, branchExists, buildConventionsContext, buildIssueUrl, buildOrgProjectUrl, buildProjectUrl, buildPullRequestUrl, buildRepoUrl, calculateBackoffDelay, checkTmuxForPermission, checkoutBranch, index as claudePrompts, cleanupStaleAgents, computeSettingsDiff, createBranch, createIssueWorkflow, createPRWorkflow, createSessionWatcher, createWorktree, createWorktreeWorkflow, detectRepository, disableEventHook, disableHook, enableEventHook, enableHook, executeAllHooks, executeEventHook, executeHook, executeHooksForEvent, extractIssueNumberFromBranch, fetchOrigin, findSessionFile, formatAction, formatConflict, formatStandupText, gatherDashboardData, generateBranchName, generateWorktreePath, getAgent, getAgentByIssue, getAgentSummaries, getAllBranches, getChangedFiles, getCommitHistory, getCommitsAhead, getCommitsBehind, getCurrentBranch$1 as getCurrentBranch, getCurrentBranch as getDashboardCurrentBranch, getDefaultBaseBranch, getDefaultBranch, getDiffStats, getDiffSummary, getEnabledEventHooks, getEnabledHooks, getEventHook, getEventHooks, getEventHooksConfigPath, getEventSettings, getFullDiff, getGitHubRepo, getHook, getHooks, getHooksByCategory, getHooksConfigPath, getHooksForEvent, getIssueReferenceText, getLocalBranches, getRegistryPath, getRemoteBranches, getRepositoryRoot, getTools, getValidEventTypes, getValidModes, getValidOnFailureBehaviors, getWorktreeForBranch, hasDifferences, hasHooksForEvent, hasUncommittedChanges, isGitRepository, isTransientError, listAgents, listTags, listWorktrees, loadEventHooksConfig, loadHooksConfig, loadProjectConventions, loadRegistry, normalizeVSCodeSettings, parseBranchLink, parseGitHubUrl, parseIssueUrl, parseRateLimitDelay, parseSessionLine, parseSince, pullLatest, queries, registerAgent, removeBranchLinkFromBody, removeEventHook, removeHook, removeWorktree, removeWorktreeWorkflow, resolveConflicts, resolveRef, sanitizeForBranchName, saveEventHooksConfig, saveHooksConfig, saveRegistry, setBranchLinkInBody, shellEscape, shouldAbort, skip, startIssueWorkflow, substituteTemplateVariables, toVSCodeSettings, unregisterAgent, updateAgent, updateEventHook, updateHook, useCli, useCustom, useVSCode, validateNumericInput, validateSafeString, validateUrl, withRetry, worktreeExists, wrapWithRetry };
3381
+ export { type ActivityEvent, type AgentInstance, type AgentRegistry, type AgentSessionStatus, type AgentStatus, type AgentSummary, type ApiKeyProvider, type AssigneeInfo, type AuthError, type BaseEventPayload, type BlockingIssue, type BlockingRelationships, type BranchDashboardData, BranchLinker, CLI_TO_VSCODE_MAP, ClaudeClient, type ClaudeClientOptions, type ClaudeResult, type ClaudeTool, type Collaborator, type Commit, type ConflictChoices, type ConflictResolution, type ContentBlock, type CreateIssueOptions, type CreateIssueResult, type CreatePROptions, type CreatePRResult, type CreateWorktreeOptions, type CreateWorktreeResult, DEFAULT_RETRY_CONFIG, DEFAULT_VALUES, type DashboardHook, type DashboardOptions, type DateFieldValue, type DiffStats, type EventHook, type EventHookSettings, type EventHooksConfig, type EventPayload, type EventType, type ExpandIssueOptions, type ExpandedIssue, type FieldInfo, type FieldValue, type FieldValueConnection, type FileChange, type FormatStandupOptions, GHP_TOOLS, type GeneratePRDescriptionOptions, GitError, GitHubAPI, type GitHubAPIOptions, type GitOptions, type HookExecutionOptions, type HookExecutionResult, type HookExitCodes, type HookItem, type HookMode, type HookOutcome, type HookResponse, type HookResult, type HooksConfig, type IssueActivity, type IssueCreatedPayload, type IssueDetails, type IssueReference, type IssueRelationships, type IssueStartedPayload, type IterationFieldValue, type LabelInfo, type Message, type NumberFieldValue, type OnFailureBehavior, type PRInfo, type PermissionPrompt, type PlanEpicOptions, type PlanEpicResult, type PrCreatedPayload, type PrCreatingPayload, type PrMergedPayload, type PrePrPayload, type Project, type ProjectConfig, type ProjectConventions, type ProjectItem, type ProjectItemContent, type ProjectItemsQueryResponse, type ProjectV2, type ProjectV2Field, type ProjectV2Item, type ProjectV2View, type ProjectWithViews, type ProjectsQueryResponse, type RegisterAgentOptions, type RelatedIssue, type RemoveWorktreeOptions, type RemoveWorktreeResult, type RepoInfo, type ResolvedClaudeConfig, type ResolvedSettings, type RetryConfig, SETTING_DISPLAY_NAMES, SYNCABLE_KEYS, type SessionEvent, SessionWatcher, type SettingConflict, type SettingsDiff, type SettingsSource, type SingleSelectFieldValue, type StartIssueOptions, type StartIssueResult, type StatusField, type StreamCallbacks, type StreamErrorEvent, type StreamEvent, type StreamEventBase, type StreamMessageCompleteEvent, type StreamOptions, type StreamTextEvent, type StreamToolInputDeltaEvent, type StreamToolUseCompleteEvent, type StreamToolUseStartEvent, type SyncableSettingKey, type SyncableSettings, TOOL_NAMES, type TextFieldValue, type TokenProvider, type TokenUsage, type ToolContext, type ToolHandler, type ToolHandlers, type UpdateAgentOptions, VSCODE_TO_CLI_MAP, type IssueInfo as WorkflowIssueInfo, type WorkflowResult, type WorktreeInfo as WorkflowWorktreeInfo, type WorktreeCreatedPayload, type WorktreeInfo$1 as WorktreeInfo, type WorktreeRemovedPayload, addEventHook, addHook, branchExists, buildConventionsContext, buildIssueUrl, buildOrgProjectUrl, buildProjectUrl, buildPullRequestUrl, buildRepoUrl, calculateBackoffDelay, checkTmuxForPermission, checkoutBranch, index as claudePrompts, cleanupStaleAgents, computeSettingsDiff, createBranch, createBranchNoCheckout, createIssueWorkflow, createPRWorkflow, createSessionWatcher, createWorktree, createWorktreeWorkflow, detectRepository, disableEventHook, disableHook, enableEventHook, enableHook, executeAllHooks, executeEventHook, executeHook, executeHooksForEvent, extractIssueNumberFromBranch, fetchOrigin, findSessionFile, formatAction, formatConflict, formatStandupText, gatherDashboardData, generateBranchName, generateWorktreePath, getAgent, getAgentByIssue, getAgentSummaries, getAllBranches, getChangedFiles, getCommitHistory, getCommitsAhead, getCommitsBehind, getCurrentBranch$1 as getCurrentBranch, getCurrentBranch as getDashboardCurrentBranch, getDefaultBaseBranch, getDefaultBranch, getDiffStats, getDiffSummary, getEnabledEventHooks, getEnabledHooks, getEventHook, getEventHooks, getEventHooksConfigPath, getEventSettings, getFullDiff, getGitHubRepo, getHook, getHooks, getHooksByCategory, getHooksConfigPath, getHooksForEvent, getIssueReferenceText, getLocalBranches, getRegistryPath, getRemoteBranches, getRepositoryRoot, getTools, getValidEventTypes, getValidModes, getValidOnFailureBehaviors, getWorktreeForBranch, hasDifferences, hasHooksForEvent, hasUncommittedChanges, isGitRepository, isTransientError, listAgents, listTags, listWorktrees, loadEventHooksConfig, loadHooksConfig, loadProjectConventions, loadRegistry, normalizeVSCodeSettings, parseBranchLink, parseGitHubUrl, parseIssueUrl, parseRateLimitDelay, parseSessionLine, parseSince, pullLatest, queries, registerAgent, removeBranchLinkFromBody, removeEventHook, removeHook, removeWorktree, removeWorktreeWorkflow, resolveConflicts, resolveRef, sanitizeForBranchName, saveEventHooksConfig, saveHooksConfig, saveRegistry, setBranchLinkInBody, shellEscape, shouldAbort, skip, startIssueWorkflow, substituteTemplateVariables, toVSCodeSettings, unregisterAgent, updateAgent, updateEventHook, updateHook, useCli, useCustom, useVSCode, validateNumericInput, validateSafeString, validateUrl, withRetry, worktreeExists, wrapWithRetry };
package/dist/index.d.ts CHANGED
@@ -539,6 +539,14 @@ declare class GitHubAPI {
539
539
  * Update an item's status
540
540
  */
541
541
  updateItemStatus(projectId: string, itemId: string, fieldId: string, optionId: string): Promise<boolean>;
542
+ /**
543
+ * Move an issue to a target status in its project.
544
+ * Returns { success, error? } — does not throw.
545
+ */
546
+ moveIssueToStatus(repo: RepoInfo, issueNumber: number, targetStatus: string): Promise<{
547
+ success: boolean;
548
+ error?: string;
549
+ }>;
542
550
  /**
543
551
  * Find an item by issue number - direct lookup via issue's projectItems
544
552
  * Much faster than iterating through all project items
@@ -805,6 +813,15 @@ declare function branchExists(branchName: string, options?: GitOptions): Promise
805
813
  declare function createBranch(branchName: string, options?: GitOptions & {
806
814
  startPoint?: string;
807
815
  }): Promise<void>;
816
+ /**
817
+ * Create a new branch without switching to it.
818
+ * Uses `git branch` instead of `git checkout -b`, so the working tree is unaffected.
819
+ * Useful for parallel worktree workflows where you never want to change the current branch.
820
+ * @throws {GitError} If the branch already exists or the start point doesn't exist
821
+ */
822
+ declare function createBranchNoCheckout(branchName: string, options?: GitOptions & {
823
+ startPoint?: string;
824
+ }): Promise<void>;
808
825
  /**
809
826
  * Checkout an existing branch.
810
827
  * @throws {GitError} If the branch cannot be checked out (e.g., doesn't exist, uncommitted changes)
@@ -1021,7 +1038,7 @@ declare function buildOrgProjectUrl(org: string, projectNumber: number): string;
1021
1038
  * The canonical setting keys used in sync operations.
1022
1039
  * These are the CLI key names (used as the canonical form).
1023
1040
  */
1024
- type SyncableSettingKey = 'mainBranch' | 'branchPattern' | 'startWorkingStatus' | 'doneStatus';
1041
+ type SyncableSettingKey = 'mainBranch' | 'branchPattern' | 'startWorkingStatus' | 'doneStatus' | 'prOpenedStatus' | 'prMergedStatus';
1025
1042
  /**
1026
1043
  * Settings that can be synced between CLI and VSCode.
1027
1044
  * Uses CLI key names as the canonical form.
@@ -1031,6 +1048,8 @@ interface SyncableSettings {
1031
1048
  branchPattern?: string;
1032
1049
  startWorkingStatus?: string;
1033
1050
  doneStatus?: string;
1051
+ prOpenedStatus?: string;
1052
+ prMergedStatus?: string;
1034
1053
  }
1035
1054
  /**
1036
1055
  * A source of settings (CLI or VSCode)
@@ -3359,4 +3378,4 @@ declare function shouldAbort(results: HookResult[]): boolean;
3359
3378
  */
3360
3379
  declare function hasHooksForEvent(event: EventType): boolean;
3361
3380
 
3362
- export { type ActivityEvent, type AgentInstance, type AgentRegistry, type AgentSessionStatus, type AgentStatus, type AgentSummary, type ApiKeyProvider, type AssigneeInfo, type AuthError, type BaseEventPayload, type BlockingIssue, type BlockingRelationships, type BranchDashboardData, BranchLinker, CLI_TO_VSCODE_MAP, ClaudeClient, type ClaudeClientOptions, type ClaudeResult, type ClaudeTool, type Collaborator, type Commit, type ConflictChoices, type ConflictResolution, type ContentBlock, type CreateIssueOptions, type CreateIssueResult, type CreatePROptions, type CreatePRResult, type CreateWorktreeOptions, type CreateWorktreeResult, DEFAULT_RETRY_CONFIG, DEFAULT_VALUES, type DashboardHook, type DashboardOptions, type DateFieldValue, type DiffStats, type EventHook, type EventHookSettings, type EventHooksConfig, type EventPayload, type EventType, type ExpandIssueOptions, type ExpandedIssue, type FieldInfo, type FieldValue, type FieldValueConnection, type FileChange, type FormatStandupOptions, GHP_TOOLS, type GeneratePRDescriptionOptions, GitError, GitHubAPI, type GitHubAPIOptions, type GitOptions, type HookExecutionOptions, type HookExecutionResult, type HookExitCodes, type HookItem, type HookMode, type HookOutcome, type HookResponse, type HookResult, type HooksConfig, type IssueActivity, type IssueCreatedPayload, type IssueDetails, type IssueReference, type IssueRelationships, type IssueStartedPayload, type IterationFieldValue, type LabelInfo, type Message, type NumberFieldValue, type OnFailureBehavior, type PRInfo, type PermissionPrompt, type PlanEpicOptions, type PlanEpicResult, type PrCreatedPayload, type PrCreatingPayload, type PrMergedPayload, type PrePrPayload, type Project, type ProjectConfig, type ProjectConventions, type ProjectItem, type ProjectItemContent, type ProjectItemsQueryResponse, type ProjectV2, type ProjectV2Field, type ProjectV2Item, type ProjectV2View, type ProjectWithViews, type ProjectsQueryResponse, type RegisterAgentOptions, type RelatedIssue, type RemoveWorktreeOptions, type RemoveWorktreeResult, type RepoInfo, type ResolvedClaudeConfig, type ResolvedSettings, type RetryConfig, SETTING_DISPLAY_NAMES, SYNCABLE_KEYS, type SessionEvent, SessionWatcher, type SettingConflict, type SettingsDiff, type SettingsSource, type SingleSelectFieldValue, type StartIssueOptions, type StartIssueResult, type StatusField, type StreamCallbacks, type StreamErrorEvent, type StreamEvent, type StreamEventBase, type StreamMessageCompleteEvent, type StreamOptions, type StreamTextEvent, type StreamToolInputDeltaEvent, type StreamToolUseCompleteEvent, type StreamToolUseStartEvent, type SyncableSettingKey, type SyncableSettings, TOOL_NAMES, type TextFieldValue, type TokenProvider, type TokenUsage, type ToolContext, type ToolHandler, type ToolHandlers, type UpdateAgentOptions, VSCODE_TO_CLI_MAP, type IssueInfo as WorkflowIssueInfo, type WorkflowResult, type WorktreeInfo as WorkflowWorktreeInfo, type WorktreeCreatedPayload, type WorktreeInfo$1 as WorktreeInfo, type WorktreeRemovedPayload, addEventHook, addHook, branchExists, buildConventionsContext, buildIssueUrl, buildOrgProjectUrl, buildProjectUrl, buildPullRequestUrl, buildRepoUrl, calculateBackoffDelay, checkTmuxForPermission, checkoutBranch, index as claudePrompts, cleanupStaleAgents, computeSettingsDiff, createBranch, createIssueWorkflow, createPRWorkflow, createSessionWatcher, createWorktree, createWorktreeWorkflow, detectRepository, disableEventHook, disableHook, enableEventHook, enableHook, executeAllHooks, executeEventHook, executeHook, executeHooksForEvent, extractIssueNumberFromBranch, fetchOrigin, findSessionFile, formatAction, formatConflict, formatStandupText, gatherDashboardData, generateBranchName, generateWorktreePath, getAgent, getAgentByIssue, getAgentSummaries, getAllBranches, getChangedFiles, getCommitHistory, getCommitsAhead, getCommitsBehind, getCurrentBranch$1 as getCurrentBranch, getCurrentBranch as getDashboardCurrentBranch, getDefaultBaseBranch, getDefaultBranch, getDiffStats, getDiffSummary, getEnabledEventHooks, getEnabledHooks, getEventHook, getEventHooks, getEventHooksConfigPath, getEventSettings, getFullDiff, getGitHubRepo, getHook, getHooks, getHooksByCategory, getHooksConfigPath, getHooksForEvent, getIssueReferenceText, getLocalBranches, getRegistryPath, getRemoteBranches, getRepositoryRoot, getTools, getValidEventTypes, getValidModes, getValidOnFailureBehaviors, getWorktreeForBranch, hasDifferences, hasHooksForEvent, hasUncommittedChanges, isGitRepository, isTransientError, listAgents, listTags, listWorktrees, loadEventHooksConfig, loadHooksConfig, loadProjectConventions, loadRegistry, normalizeVSCodeSettings, parseBranchLink, parseGitHubUrl, parseIssueUrl, parseRateLimitDelay, parseSessionLine, parseSince, pullLatest, queries, registerAgent, removeBranchLinkFromBody, removeEventHook, removeHook, removeWorktree, removeWorktreeWorkflow, resolveConflicts, resolveRef, sanitizeForBranchName, saveEventHooksConfig, saveHooksConfig, saveRegistry, setBranchLinkInBody, shellEscape, shouldAbort, skip, startIssueWorkflow, substituteTemplateVariables, toVSCodeSettings, unregisterAgent, updateAgent, updateEventHook, updateHook, useCli, useCustom, useVSCode, validateNumericInput, validateSafeString, validateUrl, withRetry, worktreeExists, wrapWithRetry };
3381
+ export { type ActivityEvent, type AgentInstance, type AgentRegistry, type AgentSessionStatus, type AgentStatus, type AgentSummary, type ApiKeyProvider, type AssigneeInfo, type AuthError, type BaseEventPayload, type BlockingIssue, type BlockingRelationships, type BranchDashboardData, BranchLinker, CLI_TO_VSCODE_MAP, ClaudeClient, type ClaudeClientOptions, type ClaudeResult, type ClaudeTool, type Collaborator, type Commit, type ConflictChoices, type ConflictResolution, type ContentBlock, type CreateIssueOptions, type CreateIssueResult, type CreatePROptions, type CreatePRResult, type CreateWorktreeOptions, type CreateWorktreeResult, DEFAULT_RETRY_CONFIG, DEFAULT_VALUES, type DashboardHook, type DashboardOptions, type DateFieldValue, type DiffStats, type EventHook, type EventHookSettings, type EventHooksConfig, type EventPayload, type EventType, type ExpandIssueOptions, type ExpandedIssue, type FieldInfo, type FieldValue, type FieldValueConnection, type FileChange, type FormatStandupOptions, GHP_TOOLS, type GeneratePRDescriptionOptions, GitError, GitHubAPI, type GitHubAPIOptions, type GitOptions, type HookExecutionOptions, type HookExecutionResult, type HookExitCodes, type HookItem, type HookMode, type HookOutcome, type HookResponse, type HookResult, type HooksConfig, type IssueActivity, type IssueCreatedPayload, type IssueDetails, type IssueReference, type IssueRelationships, type IssueStartedPayload, type IterationFieldValue, type LabelInfo, type Message, type NumberFieldValue, type OnFailureBehavior, type PRInfo, type PermissionPrompt, type PlanEpicOptions, type PlanEpicResult, type PrCreatedPayload, type PrCreatingPayload, type PrMergedPayload, type PrePrPayload, type Project, type ProjectConfig, type ProjectConventions, type ProjectItem, type ProjectItemContent, type ProjectItemsQueryResponse, type ProjectV2, type ProjectV2Field, type ProjectV2Item, type ProjectV2View, type ProjectWithViews, type ProjectsQueryResponse, type RegisterAgentOptions, type RelatedIssue, type RemoveWorktreeOptions, type RemoveWorktreeResult, type RepoInfo, type ResolvedClaudeConfig, type ResolvedSettings, type RetryConfig, SETTING_DISPLAY_NAMES, SYNCABLE_KEYS, type SessionEvent, SessionWatcher, type SettingConflict, type SettingsDiff, type SettingsSource, type SingleSelectFieldValue, type StartIssueOptions, type StartIssueResult, type StatusField, type StreamCallbacks, type StreamErrorEvent, type StreamEvent, type StreamEventBase, type StreamMessageCompleteEvent, type StreamOptions, type StreamTextEvent, type StreamToolInputDeltaEvent, type StreamToolUseCompleteEvent, type StreamToolUseStartEvent, type SyncableSettingKey, type SyncableSettings, TOOL_NAMES, type TextFieldValue, type TokenProvider, type TokenUsage, type ToolContext, type ToolHandler, type ToolHandlers, type UpdateAgentOptions, VSCODE_TO_CLI_MAP, type IssueInfo as WorkflowIssueInfo, type WorkflowResult, type WorktreeInfo as WorkflowWorktreeInfo, type WorktreeCreatedPayload, type WorktreeInfo$1 as WorktreeInfo, type WorktreeRemovedPayload, addEventHook, addHook, branchExists, buildConventionsContext, buildIssueUrl, buildOrgProjectUrl, buildProjectUrl, buildPullRequestUrl, buildRepoUrl, calculateBackoffDelay, checkTmuxForPermission, checkoutBranch, index as claudePrompts, cleanupStaleAgents, computeSettingsDiff, createBranch, createBranchNoCheckout, createIssueWorkflow, createPRWorkflow, createSessionWatcher, createWorktree, createWorktreeWorkflow, detectRepository, disableEventHook, disableHook, enableEventHook, enableHook, executeAllHooks, executeEventHook, executeHook, executeHooksForEvent, extractIssueNumberFromBranch, fetchOrigin, findSessionFile, formatAction, formatConflict, formatStandupText, gatherDashboardData, generateBranchName, generateWorktreePath, getAgent, getAgentByIssue, getAgentSummaries, getAllBranches, getChangedFiles, getCommitHistory, getCommitsAhead, getCommitsBehind, getCurrentBranch$1 as getCurrentBranch, getCurrentBranch as getDashboardCurrentBranch, getDefaultBaseBranch, getDefaultBranch, getDiffStats, getDiffSummary, getEnabledEventHooks, getEnabledHooks, getEventHook, getEventHooks, getEventHooksConfigPath, getEventSettings, getFullDiff, getGitHubRepo, getHook, getHooks, getHooksByCategory, getHooksConfigPath, getHooksForEvent, getIssueReferenceText, getLocalBranches, getRegistryPath, getRemoteBranches, getRepositoryRoot, getTools, getValidEventTypes, getValidModes, getValidOnFailureBehaviors, getWorktreeForBranch, hasDifferences, hasHooksForEvent, hasUncommittedChanges, isGitRepository, isTransientError, listAgents, listTags, listWorktrees, loadEventHooksConfig, loadHooksConfig, loadProjectConventions, loadRegistry, normalizeVSCodeSettings, parseBranchLink, parseGitHubUrl, parseIssueUrl, parseRateLimitDelay, parseSessionLine, parseSince, pullLatest, queries, registerAgent, removeBranchLinkFromBody, removeEventHook, removeHook, removeWorktree, removeWorktreeWorkflow, resolveConflicts, resolveRef, sanitizeForBranchName, saveEventHooksConfig, saveHooksConfig, saveRegistry, setBranchLinkInBody, shellEscape, shouldAbort, skip, startIssueWorkflow, substituteTemplateVariables, toVSCodeSettings, unregisterAgent, updateAgent, updateEventHook, updateHook, useCli, useCustom, useVSCode, validateNumericInput, validateSafeString, validateUrl, withRetry, worktreeExists, wrapWithRetry };
package/dist/index.js CHANGED
@@ -1109,6 +1109,21 @@ var GitHubAPI = class {
1109
1109
  return false;
1110
1110
  }
1111
1111
  }
1112
+ /**
1113
+ * Move an issue to a target status in its project.
1114
+ * Returns { success, error? } — does not throw.
1115
+ */
1116
+ async moveIssueToStatus(repo, issueNumber, targetStatus) {
1117
+ const item = await this.findItemByNumber(repo, issueNumber);
1118
+ if (!item) return { success: false, error: `Issue #${issueNumber} not found in any project` };
1119
+ if (item.status === targetStatus) return { success: true };
1120
+ const statusField = await this.getStatusField(item.projectId);
1121
+ if (!statusField) return { success: false, error: "Could not find Status field on project" };
1122
+ const option = statusField.options.find((o) => o.name === targetStatus);
1123
+ if (!option) return { success: false, error: `Status "${targetStatus}" not found. Available: ${statusField.options.map((o) => o.name).join(", ")}` };
1124
+ const updated = await this.updateItemStatus(item.projectId, item.id, statusField.fieldId, option.id);
1125
+ return updated ? { success: true } : { success: false, error: "Failed to update status" };
1126
+ }
1112
1127
  /**
1113
1128
  * Find an item by issue number - direct lookup via issue's projectItems
1114
1129
  * Much faster than iterating through all project items
@@ -2263,6 +2278,14 @@ async function createBranch(branchName, options = {}) {
2263
2278
  const cmd = options.startPoint ? `git checkout -b "${branchName}" "${options.startPoint}"` : `git checkout -b "${branchName}"`;
2264
2279
  await execGit(cmd, options);
2265
2280
  }
2281
+ async function createBranchNoCheckout(branchName, options = {}) {
2282
+ validateBranchName(branchName);
2283
+ if (options.startPoint) {
2284
+ validateRefString(options.startPoint);
2285
+ }
2286
+ const cmd = options.startPoint ? `git branch "${branchName}" "${options.startPoint}"` : `git branch "${branchName}"`;
2287
+ await execGit(cmd, options);
2288
+ }
2266
2289
  async function checkoutBranch(branchName, options = {}) {
2267
2290
  await execGit(`git checkout "${branchName}"`, options);
2268
2291
  }
@@ -2480,31 +2503,41 @@ var SYNCABLE_KEYS = [
2480
2503
  "mainBranch",
2481
2504
  "branchPattern",
2482
2505
  "startWorkingStatus",
2483
- "doneStatus"
2506
+ "doneStatus",
2507
+ "prOpenedStatus",
2508
+ "prMergedStatus"
2484
2509
  ];
2485
2510
  var SETTING_DISPLAY_NAMES = {
2486
2511
  mainBranch: "Main Branch",
2487
2512
  branchPattern: "Branch Name Pattern",
2488
2513
  startWorkingStatus: "Start Working Status",
2489
- doneStatus: "Done/PR Merged Status"
2514
+ doneStatus: "Done Status",
2515
+ prOpenedStatus: "PR Opened Status",
2516
+ prMergedStatus: "PR Merged Status"
2490
2517
  };
2491
2518
  var VSCODE_TO_CLI_MAP = {
2492
2519
  "mainBranch": "mainBranch",
2493
2520
  "branchNamePattern": "branchPattern",
2494
2521
  "startWorkingStatus": "startWorkingStatus",
2495
- "prMergedStatus": "doneStatus"
2522
+ "doneStatus": "doneStatus",
2523
+ "prOpenedStatus": "prOpenedStatus",
2524
+ "prMergedStatus": "prMergedStatus"
2496
2525
  };
2497
2526
  var CLI_TO_VSCODE_MAP = {
2498
2527
  mainBranch: "mainBranch",
2499
2528
  branchPattern: "branchNamePattern",
2500
2529
  startWorkingStatus: "startWorkingStatus",
2501
- doneStatus: "prMergedStatus"
2530
+ doneStatus: "doneStatus",
2531
+ prOpenedStatus: "prOpenedStatus",
2532
+ prMergedStatus: "prMergedStatus"
2502
2533
  };
2503
2534
  var DEFAULT_VALUES = {
2504
2535
  mainBranch: "main",
2505
2536
  branchPattern: "{user}/{number}-{title}",
2506
2537
  startWorkingStatus: "In Progress",
2507
- doneStatus: "Done"
2538
+ doneStatus: "Done",
2539
+ prOpenedStatus: "In Review",
2540
+ prMergedStatus: "Ready for Beta"
2508
2541
  };
2509
2542
  function normalizeVSCodeSettings(vscodeSettings) {
2510
2543
  const result = {};
@@ -5742,6 +5775,7 @@ export {
5742
5775
  cleanupStaleAgents,
5743
5776
  computeSettingsDiff,
5744
5777
  createBranch,
5778
+ createBranchNoCheckout,
5745
5779
  createIssueWorkflow,
5746
5780
  createPRWorkflow,
5747
5781
  createSessionWatcher,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bretwardjames/ghp-core",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Shared core library for GitHub Projects tools",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",