リポジトリなしのセッション
リポジトリを clone せず、空の作業スペースで動くセッション
リポジトリを使うかどうかは、プロファイルが決める。プロファイルの repository_mode が required ならセッションごとに repository_id を送り(GitHub 設定があるエージェントのセッションと、ワークスペースの上限が決めるプロファイルは、下の節のとおり省いてよい)、none なら送らず、optional ならどちらでもよい。リポジトリなしで作ったセッションは、空の作業スペースから始まる。SDK の例は SDK のインストールで作った werft クライアントを、HTTP API の例はサーバーのアドレス API とキー 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 にも変えられ、エージェントのリリースに紐づいたセッションはプロファイルを変えられない(プロファイルを変更する)。
エージェントのセッションはリポジトリなしで始まる
エージェントのリリースで作ったセッションで repository_id を省くと、GitHub 設定があるエージェントはリポジトリなしで始まる。例外ではなく、エージェントのセッションの既定の動きである。エージェントは許可されたリポジトリを list_repositories で見て、タスクが読むか変更するリポジトリだけを attach_repository で付ける(セッションの途中でリポジトリを付ける)。付けたリポジトリは作業スペースに git リモートとして入り、そこへの書き込みはリポジトリごとに push 要求 1 回ずつの承認を通る。
リポジトリのないセッションで、成果物として集めたいファイルは作業スペースのルートの out/ に置く。checkpoint がその下のファイルを成果物として集める。repository_id を送ればそのリポジトリで始まり、GitHub 設定がまだない古いエージェントはリリースのリポジトリで始まる。
次のステップ
- 送信: セッションにメッセージを送る