Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions packages/app/tests/docker-git/entrypoint-auth.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,12 @@ describe("renderEntrypoint auth bridge", () => {
expect(entrypoint).toContain("CLAUDE_GLOBAL_PROMPT_FILE=\"/home/dev/.claude/CLAUDE.md\"")
expect(entrypoint).toContain("CLAUDE_AUTO_SYSTEM_PROMPT=\"${CLAUDE_AUTO_SYSTEM_PROMPT:-1}\"")
expect(entrypoint).toContain("docker-git-managed:claude-md")
expect(entrypoint).toContain(
"SUBAGENTS_LINE=\"Для решения задач обязательно используй subagents. Сам агент обязан выполнять финальную проверку, интеграцию и валидацию результата перед ответом пользователю.\""
)
expect(entrypoint.split("Для решения задач обязательно используй subagents.").length - 1).toBeGreaterThanOrEqual(
2
)
expect(entrypoint).toContain("token=\"${GITHUB_TOKEN:-}\"")
expect(entrypoint).toContain("token=\"${GH_TOKEN:-}\"")
expect(entrypoint).toContain(String.raw`printf "%s\n" "password=$token"`)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ if [[ "$CLAUDE_AUTO_SYSTEM_PROMPT" == "1" ]]; then
$CLAUDE_WORKSPACE_CONTEXT
Фокус задачи: работай только в workspace, который запрашивает пользователь. Текущий workspace: __TARGET_DIR__
Доступ к интернету: есть. Если чего-то не знаешь — ищи в интернете или по кодовой базе.
Для решения задач обязательно используй subagents. Сам агент обязан выполнять финальную проверку, интеграцию и валидацию результата перед ответом пользователю.
Если ты видишь файлы AGENTS.md или CLAUDE.md внутри проекта, ты обязан их читать и соблюдать инструкции.
<!-- /docker-git-managed:claude-md -->
EOF
Expand Down
18 changes: 10 additions & 8 deletions packages/lib/src/core/templates-entrypoint/codex.ts
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ WORKSPACES_LINE="Доступные workspace пути: __TARGET_DIR__"
WORKSPACE_INFO_LINE="Контекст workspace: repository"
FOCUS_LINE="Фокус задачи: работай только в workspace, который запрашивает пользователь. Текущий workspace: __TARGET_DIR__"
INTERNET_LINE="Доступ к интернету: есть. Если чего-то не знаешь — ищи в интернете или по кодовой базе."
SUBAGENTS_LINE="Для решения задач обязательно используй subagents. Сам агент обязан выполнять финальную проверку, интеграцию и валидацию результата перед ответом пользователю."
if [[ "$REPO_REF" == issue-* ]]; then
ISSUE_ID="$(printf "%s" "$REPO_REF" | sed -E 's#^issue-##')"
ISSUE_URL=""
Expand Down Expand Up @@ -247,16 +248,17 @@ elif [[ "$REPO_REF" == refs/pull/*/head ]]; then
WORKSPACE_INFO_LINE="Контекст workspace: pull request ($REPO_REF)"
fi
fi
MANAGED_START="<!-- docker-git:managed:start -->"
MANAGED_END="<!-- docker-git:managed:end -->"
if [[ ! -f "$AGENTS_PATH" ]]; then
MANAGED_START="<!-- docker-git:managed:start -->"
MANAGED_END="<!-- docker-git:managed:end -->"
MANAGED_BLOCK="$(cat <<EOF
$MANAGED_START
$PROJECT_LINE
$WORKSPACES_LINE
$WORKSPACE_INFO_LINE
$FOCUS_LINE
$INTERNET_LINE
$SUBAGENTS_LINE
$MANAGED_END
EOF
)"
Expand All @@ -268,15 +270,14 @@ EOF
chown 1000:1000 "$AGENTS_PATH" || true
fi
if [[ -f "$AGENTS_PATH" ]]; then
MANAGED_START="<!-- docker-git:managed:start -->"
MANAGED_END="<!-- docker-git:managed:end -->"
MANAGED_BLOCK="$(cat <<EOF
$MANAGED_START
$PROJECT_LINE
$WORKSPACES_LINE
$WORKSPACE_INFO_LINE
$FOCUS_LINE
$INTERNET_LINE
$SUBAGENTS_LINE
$MANAGED_END
EOF
)"
Expand All @@ -296,6 +297,7 @@ EOF
-e '/^Фокус задачи:/d' \
-e '/^Issue AGENTS.md:/d' \
-e '/^Доступ к интернету:/d' \
-e '/^Для решения задач обязательно используй subagents[.]/d' \
"$AGENTS_PATH" > "$TMP_AGENTS_PATH"
if [[ -s "$TMP_AGENTS_PATH" ]]; then
printf "\n" >> "$TMP_AGENTS_PATH"
Expand All @@ -314,7 +316,7 @@ if [[ -f "$LEGACY_AGENTS_PATH" && -f "$AGENTS_PATH" ]]; then
fi`

export const renderEntrypointAgentsNotice = (config: TemplateConfig): string =>
entrypointAgentsNoticeTemplate
.replaceAll("__CODEX_HOME__", config.codexHome)
.replaceAll("__SSH_USER__", config.sshUser)
.replaceAll("__TARGET_DIR__", config.targetDir)
entrypointAgentsNoticeTemplate.replaceAll("__CODEX_HOME__", config.codexHome).replaceAll(
"__SSH_USER__",
config.sshUser
).replaceAll("__TARGET_DIR__", config.targetDir)