fix(ci): simplify test runner to plain bun test by fixing mock.module() leakage
- Add afterAll(() => { mock.restore() }) to 52 test files missing cleanup
- Rewrite create-tool-guard-hooks.test.ts to use spyOn instead of barrel mock
- Fix skill-mcp-manager OAuth tests with missing mockTokens/mockLogin definitions
- Fix start-work hook: show worktree active block on resume with existing worktree_path
- Extract createWorktreeActiveBlock to worktree-block.ts to avoid circular import
- Replace 80-line isolated test runner CI config with single `bun test` command
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
writeBoulderState,
|
||||
} from "../../features/boulder-state"
|
||||
import { log } from "../../shared/logger"
|
||||
import { createWorktreeActiveBlock } from "./worktree-block"
|
||||
import type { PluginInput } from "@opencode-ai/plugin"
|
||||
import { HOOK_NAME } from "./start-work-hook"
|
||||
|
||||
@@ -158,7 +159,9 @@ Looking for new plans...`
|
||||
appendSessionId(directory, sessionId)
|
||||
}
|
||||
|
||||
const worktreeDisplay = effectiveWorktree ? worktreeBlock.replace(worktreePath ?? "", effectiveWorktree) : worktreeBlock
|
||||
const worktreeDisplay = effectiveWorktree
|
||||
? (worktreeBlock || createWorktreeActiveBlock(effectiveWorktree))
|
||||
: worktreeBlock
|
||||
|
||||
return `
|
||||
## Active Work Session Found
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
import { detectWorktreePath } from "./worktree-detector"
|
||||
import { parseUserRequest } from "./parse-user-request"
|
||||
import { buildStartWorkContextInfo } from "./context-info-builder"
|
||||
import { createWorktreeActiveBlock } from "./worktree-block"
|
||||
|
||||
export const HOOK_NAME = "start-work" as const
|
||||
const START_WORK_TEMPLATE_MARKER = "You are starting a Sisyphus work session."
|
||||
@@ -44,18 +45,6 @@ interface StartWorkHookOutput {
|
||||
parts: Array<{ type: string; text?: string }>
|
||||
}
|
||||
|
||||
function createWorktreeActiveBlock(worktreePath: string): string {
|
||||
return `
|
||||
## Worktree Active
|
||||
|
||||
**Worktree**: \`${worktreePath}\`
|
||||
|
||||
**CRITICAL - DO NOT FORGET**: You are working inside a git worktree. ALL operations MUST be performed exclusively within this worktree directory.
|
||||
- Every file read, write, edit, and git operation MUST target paths under: \`${worktreePath}\`
|
||||
- When delegating tasks to subagents, you MUST include the worktree path in your delegation prompt so they also operate exclusively within the worktree
|
||||
- NEVER operate on the main repository directory - always use the worktree path above`
|
||||
}
|
||||
|
||||
function resolveWorktreeContext(
|
||||
explicitWorktreePath: string | null,
|
||||
): { worktreePath: string | undefined; block: string } {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
export function createWorktreeActiveBlock(worktreePath: string): string {
|
||||
return `
|
||||
## Worktree Active
|
||||
|
||||
**Worktree**: \`${worktreePath}\`
|
||||
|
||||
**CRITICAL - DO NOT FORGET**: You are working inside a git worktree. ALL operations MUST be performed exclusively within this worktree directory.
|
||||
- Every file read, write, edit, and git operation MUST target paths under: \`${worktreePath}\`
|
||||
- When delegating tasks to subagents, you MUST include the worktree path in your delegation prompt so they also operate exclusively within the worktree
|
||||
- NEVER operate on the main repository directory - always use the worktree path above`
|
||||
}
|
||||
Reference in New Issue
Block a user