cdsa-harness 0.22.4 → 0.22.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdsa-harness",
3
- "version": "0.22.4",
3
+ "version": "0.22.5",
4
4
  "description": "AI 에이전트의 내부 동작을 단계별로 드러내는 교육용 터미널 하네스. 실시간 스트리밍 + OpenAI/Claude/OpenRouter + MCP + npm 플러그인·크로스포맷 스킬.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/builtins.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // 스킬/플러그인/버전을 바꾼 뒤 `node scripts/gen-builtins.mjs` 로 재생성하세요.
3
3
  import p0 from "../plugins/hwpx_read.mjs";
4
4
 
5
- export const VERSION = "0.22.4";
5
+ export const VERSION = "0.22.5";
6
6
 
7
7
  export const BUILTIN_PLUGINS = [p0];
8
8
 
package/src/cli.js CHANGED
@@ -297,7 +297,12 @@ async function fetchProviderModels(cfg, query = "") {
297
297
  try {
298
298
  if (cfg.provider === "openrouter") {
299
299
  const r = await fetchJson("https://openrouter.ai/api/v1/models");
300
- let ids = (r.data || []).map((m) => m.id).sort();
300
+ // 하네스는 항상 도구(tools)를 함께 보내므로, 도구를 지원하지 않는 모델은 어차피
301
+ // "No endpoints found that support tool use" 로 실패한다 — 목록에서 미리 제외.
302
+ let ids = (r.data || [])
303
+ .filter((m) => !Array.isArray(m.supported_parameters) || m.supported_parameters.includes("tools"))
304
+ .map((m) => m.id)
305
+ .sort();
301
306
  if (q) ids = ids.filter((id) => id.toLowerCase().includes(q));
302
307
  return { list: ids, live: true };
303
308
  }
package/src/llm.js CHANGED
@@ -346,6 +346,15 @@ function safeParse(jsonStr) {
346
346
 
347
347
  function httpErrorMessage(status, text) {
348
348
  let msg = `API 오류 ${status}: ${trim(text)}`;
349
+ // 도구(tool use) 미지원 모델/엔드포인트 — 모델명 오타 힌트는 오답이므로 여기서 끝낸다.
350
+ if (/tool[ _]use|support tools?/i.test(text)) {
351
+ msg +=
352
+ "\n ↳ 이 모델(또는 이 모델의 제공 엔드포인트)이 도구 호출(tool use)을 지원하지 않아요. " +
353
+ "에이전트 하네스는 파일 도구가 필수라 도구 지원 모델이 필요합니다." +
354
+ "\n ↳ /models 로 다른 모델을 고르세요 — OpenRouter 목록은 도구 지원 모델만 표시됩니다 " +
355
+ "(예: anthropic/claude-sonnet-4.5, openai/gpt-4o-mini).";
356
+ return msg;
357
+ }
349
358
  if (status === 404) {
350
359
  msg += "\n ↳ 모델 이름을 확인하세요. /model 로 변경 가능. " +
351
360
  "OpenRouter 는 'provider/model' 형식이어야 합니다 (예: openai/gpt-4o-mini, anthropic/claude-3.7-sonnet).";