저장소 없는 세션
저장소를 clone하지 않고 빈 작업 공간에서 도는 세션
저장소를 쓰는지는 프로필이 정한다. 프로필의 repository_mode가 required면 세션마다 repository_id를 보내고(GitHub 설정이 있는 에이전트의 세션과 워크스페이스 상한이 정하는 프로필은 아래 절처럼 빼도 된다), none이면 보내지 않으며, optional이면 둘 다 된다. 저장소 없이 만든 세션은 빈 작업 공간에서 시작한다. SDK 예제는 SDK 설치에서 만든 werft 클라이언트를, HTTP API 예제는 서버 주소 API와 key KEY 셸 변수를 쓴다.
프로필 확인
const { items } = await werft.profiles.list();
for (const profile of items) console.log(profile.id, profile.repository_mode);claude-coding-auto required
claude-coding-local required
general none개발용 서버(개발용 서버 실행)의 general 프로필이 none이다.
저장소 없이 만들기
repository_id를 빼고 만든다.
const created = await werft.sessions.create({
profile_id: "general",
message: 'GATE-SPEC {"id":"no-repo","steps":[],"final":"no repository here"}',
});
console.log(created.status);
const session = await werft.sessions.get(created.session_id);
console.log(session.repository_id, session.repository);queued
null null프로필과 맞지 않을 때
none 프로필에 repository_id를 보내거나 required 프로필에서 빼면 422 UNSUPPORTED_CAPABILITY다. 단 GitHub 설정이 있는 에이전트의 세션과 워크스페이스 상한이 정하는 프로필은 required여도 빼면 저장소 없이 시작한다.
import { isApiError } from "@werft-ai/sdk";
try {
await werft.sessions.create({
profile_id: "general",
repository_id: "sample-app",
message: "hello",
});
} catch (error) {
if (!isApiError(error)) throw error;
console.log(error.status, error.code, error.message);
}422 UNSUPPORTED_CAPABILITY Profile general runs without a repository: omit repository_id저장소가 없으니 push할 곳도 없다. 이 세션의 push 요청은 409 PUSH_SOURCE_MISSING이다. 진행 중에 프로필을 바꿀 때는 저장소를 쓰지 않는 프로필(optional, none)로만 바꿀 수 있다. 워크스페이스 상한이 정하는 프로필은 required로도 바꿀 수 있고, 에이전트 release에 묶인 세션은 프로필을 바꿀 수 없다(프로필 바꾸기).
에이전트 세션은 저장소 없이 시작한다
에이전트의 release로 만든 세션에서 repository_id를 빼면, GitHub 설정이 있는 에이전트는 저장소 없이 시작한다. 예외가 아니라 에이전트 세션의 기본이다. 에이전트는 허용된 저장소를 list_repositories로 보고, 작업이 읽거나 바꾸는 저장소만 attach_repository로 붙인다(세션 도중 저장소 붙이기). 붙인 저장소는 작업 공간에 git 원격으로 들어오고, 그 저장소에 쓰는 일은 저장소마다 push 요청 한 번씩 승인을 거친다.
저장소가 없는 세션에서 만든 파일 가운데 성과물로 모으려는 것은 작업 공간 루트의 out/에 둔다. checkpoint가 그 아래 파일을 성과물로 거둔다. repository_id를 보내면 그 저장소로 시작하고, GitHub 설정이 아직 없는 옛 에이전트는 release의 저장소로 시작한다.
다음 단계
- 보내기: 세션에 메시지 보내기