takt/src/infra/task/index.ts
Tomohisa Takaoka 1d7336950e feat: opt-in auto_fetch and base_branch config for clone
Replace the always-on syncDefaultBranch with opt-in resolveBaseBranch:

- Add auto_fetch config (default: false) — only fetch when enabled
- Add base_branch config (project and global) — fallback to current branch
- Fetch-only mode: git fetch origin without modifying local branches
- Use fetched commit hash (origin/<base_branch>) to reset clone to latest
- No more git merge --ff-only or git fetch origin main:main

Config example:
  # ~/.takt/config.yaml or .takt/config.yaml
  auto_fetch: true
  base_branch: develop

Addresses review feedback: opt-in behavior, no local branch changes,
configurable base branch with current-branch fallback.
2026-02-21 12:30:26 -08:00

63 lines
1.4 KiB
TypeScript

/**
* Task execution module
*/
// Types
export type {
TaskInfo,
TaskResult,
WorktreeOptions,
WorktreeResult,
BranchInfo,
BranchListItem,
SummarizeOptions,
TaskListItem,
} from './types.js';
// Classes
export { CloneManager } from './clone.js';
export { AutoCommitter } from './autoCommit.js';
export { TaskSummarizer } from './summarize.js';
export { BranchManager } from './branchList.js';
export { TaskRunner } from './runner.js';
export { showTaskList } from './display.js';
export {
TaskFileSchema,
type TaskFileData,
TaskExecutionConfigSchema,
TaskStatusSchema,
type TaskStatus,
TaskFailureSchema,
type TaskFailure,
TaskRecordSchema,
type TaskRecord,
TasksFileSchema,
type TasksFileData,
} from './schema.js';
export {
createSharedClone,
removeClone,
createTempCloneForBranch,
saveCloneMeta,
removeCloneMeta,
cleanupOrphanedClone,
resolveBaseBranch,
} from './clone.js';
export {
detectDefaultBranch,
listTaktBranches,
parseTaktBranches,
getFilesChanged,
extractTaskSlug,
getOriginalInstruction,
buildListItems,
} from './branchList.js';
export { stageAndCommit, getCurrentBranch } from './git.js';
export { autoCommitAndPush, type AutoCommitResult } from './autoCommit.js';
export { summarizeTaskName } from './summarize.js';
export { TaskWatcher, type TaskWatcherOptions } from './watcher.js';
export { isStaleRunningTask } from './process.js';