cuelo 0.6.1 → 0.6.2

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.
Files changed (59) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +8 -8
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +1 -1
  6. package/.next/required-server-files.json +1 -1
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +2 -2
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  25. package/.next/server/app/api/updates/route.js +1 -1
  26. package/.next/server/app/index.html +1 -1
  27. package/.next/server/app/index.rsc +4 -4
  28. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  29. package/.next/server/app/index.segments/_full.segment.rsc +4 -4
  30. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  31. package/.next/server/app/index.segments/_index.segment.rsc +2 -2
  32. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  33. package/.next/server/app/page.js +2 -2
  34. package/.next/server/app/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/recover.html +1 -1
  37. package/.next/server/app/recover.rsc +2 -2
  38. package/.next/server/app/recover.segments/_full.segment.rsc +2 -2
  39. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/recover.segments/_index.segment.rsc +2 -2
  41. package/.next/server/app/recover.segments/_tree.segment.rsc +1 -1
  42. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
  43. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  44. package/.next/server/app-paths-manifest.json +8 -8
  45. package/.next/server/middleware-build-manifest.js +1 -1
  46. package/.next/server/pages/404.html +1 -1
  47. package/.next/server/pages/500.html +1 -1
  48. package/.next/server/server-reference-manifest.json +1 -1
  49. package/.next/static/chunks/app/{layout-43a56002b0fb773b.js → layout-5d694d9fc13701e0.js} +1 -1
  50. package/.next/static/chunks/app/{page-952f237df95e7ee4.js → page-8351ec13279453b5.js} +2 -2
  51. package/.next/trace +104 -104
  52. package/.next/trace-build +1 -1
  53. package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
  54. package/Tools/OMP_Global_Config/agent/extensions/lib/mcp-selection.ts +5 -5
  55. package/Tools/OMP_Global_Config/agent/rules/verdict.md +4 -0
  56. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +77 -0
  57. package/package.json +1 -1
  58. /package/.next/static/{9IHPWkHderLIQA0fYAPmt → HIeC4quKEySGkt_zoRmeC}/_buildManifest.js +0 -0
  59. /package/.next/static/{9IHPWkHderLIQA0fYAPmt → HIeC4quKEySGkt_zoRmeC}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":112659218,"timestamp":1523617,"id":14,"parentId":1,"tags":{},"startTime":1790663252437,"traceId":"77a3b221ab262a20"},{"name":"run-typescript","duration":18223387,"timestamp":114510306,"id":10654,"parentId":1,"tags":{},"startTime":1790663365423,"traceId":"77a3b221ab262a20"},{"name":"static-check","duration":4660226,"timestamp":132827360,"id":10657,"parentId":1,"tags":{},"startTime":1790663383740,"traceId":"77a3b221ab262a20"},{"name":"static-generation","duration":11719246,"timestamp":137596287,"id":10805,"parentId":1,"tags":{},"startTime":1790663388509,"traceId":"77a3b221ab262a20"},{"name":"collect-build-traces","duration":21618905,"timestamp":137556220,"id":10802,"parentId":1,"tags":{},"startTime":1790663388469,"traceId":"77a3b221ab262a20"},{"name":"telemetry-flush","duration":86,"timestamp":159180650,"id":10814,"parentId":1,"tags":{},"startTime":1790663410093,"traceId":"77a3b221ab262a20"},{"name":"next-build","duration":157906518,"timestamp":1274245,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1790663252188,"traceId":"77a3b221ab262a20"}]
1
+ [{"name":"run-webpack","duration":102325300,"timestamp":676377,"id":14,"parentId":1,"tags":{},"startTime":1790672698486,"traceId":"51e0a5145bb3dd72"},{"name":"run-typescript","duration":17377606,"timestamp":103372919,"id":10654,"parentId":1,"tags":{},"startTime":1790672801184,"traceId":"51e0a5145bb3dd72"},{"name":"static-check","duration":3989332,"timestamp":120852472,"id":10657,"parentId":1,"tags":{},"startTime":1790672818664,"traceId":"51e0a5145bb3dd72"},{"name":"static-generation","duration":13226163,"timestamp":124932986,"id":10805,"parentId":1,"tags":{},"startTime":1790672822745,"traceId":"51e0a5145bb3dd72"},{"name":"collect-build-traces","duration":23388052,"timestamp":124915070,"id":10802,"parentId":1,"tags":{},"startTime":1790672822727,"traceId":"51e0a5145bb3dd72"},{"name":"telemetry-flush","duration":79,"timestamp":148307360,"id":10814,"parentId":1,"tags":{},"startTime":1790672846120,"traceId":"51e0a5145bb3dd72"},{"name":"next-build","duration":147739947,"timestamp":567516,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1790672698377,"traceId":"51e0a5145bb3dd72"}]
@@ -9,7 +9,7 @@ const MEMORY_RE = /(const phase1Model = await resolveMemoryModel\(\{[^}]*?fallba
9
9
  const MEMORY_DONE = /const phase1Model = await resolveMemoryModel\(\{[^}]*?fallbackRole: "smol"/;
10
10
  const EXPECTED = {
11
11
  name: 'cuelo',
12
- version: '0.6.1',
12
+ version: '0.6.2',
13
13
  distribution: 'cuelo',
14
14
  coreVersion: '18.4.3',
15
15
  };
@@ -34,7 +34,7 @@ export interface CatalogEntry {
34
34
  capability: string;
35
35
  source: string;
36
36
  url: string;
37
- auth: string;
37
+ authDescription: string;
38
38
  }
39
39
 
40
40
  /**
@@ -47,21 +47,21 @@ export const VERIFIED_CATALOG: readonly CatalogEntry[] = [
47
47
  capability: "Official Microsoft documentation and code sample search (.NET, C#, VB.NET, WinForms, SQL Server, Azure, Windows APIs).",
48
48
  source: "https://github.com/MicrosoftDocs/mcp",
49
49
  url: "https://learn.microsoft.com/api/mcp",
50
- auth: "인증 없음(공식 README)",
50
+ authDescription: "인증 없음(공식 README)",
51
51
  },
52
52
  {
53
53
  name: "github",
54
54
  capability: "GitHub repositories, issues, pull requests, and Actions workflow runs: read and manage.",
55
55
  source: "https://github.com/github/github-mcp-server",
56
56
  url: "https://api.githubcopilot.com/mcp/",
57
- auth: "GitHub OAuth 또는 PAT 필요 — 토큰 발급·권한 범위는 승인 요청 대상, 본인 로그인·제공자 동의는 사용자",
57
+ authDescription: "GitHub OAuth 또는 PAT 필요 — 토큰 발급·권한 범위는 승인 요청 대상, 본인 로그인·제공자 동의는 사용자",
58
58
  },
59
59
  {
60
60
  name: "cloudflare-docs",
61
61
  capability: "Up-to-date Cloudflare reference documentation (Workers, Pages, KV, D1, R2, wrangler).",
62
62
  source: "https://github.com/cloudflare/mcp-server-cloudflare",
63
63
  url: "https://docs.mcp.cloudflare.com/mcp",
64
- auth: "공식 README에 인증 요구가 명시돼 있지 않다 — 연결 시 로그인을 요구하면 그 로그인만 사용자 본인",
64
+ authDescription: "공식 README에 인증 요구가 명시돼 있지 않다 — 연결 시 로그인을 요구하면 그 로그인만 사용자 본인",
65
65
  },
66
66
  ];
67
67
 
@@ -330,7 +330,7 @@ export function planSelection(input: {
330
330
  ? `이 프로젝트 권장: \`${installCommand(entry, "project")}\``
331
331
  : `범위 판단 보류 — 전역 \`${installCommand(entry, "user")}\` 또는 프로젝트 \`${installCommand(entry, "project")}\` 중 선택`;
332
332
  lines.push(
333
- `- 설치 제안(아직 실행 안 함): \`${entry.name}\` — 공식 출처 ${entry.source}. 설치·인증·권한은 먼저 사용자 승인을 요청하고 승인 후 Main 에이전트가 실행: ${where} (${entry.auth})`,
333
+ `- 설치 제안(아직 실행 안 함): \`${entry.name}\` — 공식 출처 ${entry.source}. 설치·인증·권한은 먼저 사용자 승인을 요청하고 승인 후 Main 에이전트가 실행: ${where} (${entry.authDescription})`,
334
334
  );
335
335
  break;
336
336
  }
@@ -174,6 +174,10 @@ Main은 근거가 있는 finding을 각각 다음 중 하나로 닫는다.
174
174
  어긴 실행 실수면 기존 규칙 적용을 교정하고, 규칙·Skill 누락일 때만 해당 정본을 보완한다.
175
175
  미확정 가설이나 실패율 임계값으로 규칙을 자동 생성·변경하지 않는다. `learn`은 Main 전용이다.
176
176
  Maker는 종료 보고에 교훈 후보를 싣고, Main이 저장·기존 교훈 연결·기각을 정한다.
177
+ 전역 `autolearn`도 켜져 있다. 도구 호출 8회 이상 턴이 끝나면 core의 별도 capture Agent가
178
+ (`learn`·`manage_skill`만 가진 채) 교훈을 따로 저장하고, 저장한 경우에만 대화에
179
+ `[교훈 자동 저장]`(`autolearn-saved`) 메시지를 남긴다. 이건 보조일 뿐 Main의 직접 저장 책임은 그대로다.
180
+ 교훈 저장 여부를 물으면 이 메시지 유무로 답하고, 없으면 자동 저장이 없었다고 말한 뒤 그 자리에서 저장한다.
177
181
  - **다음 유사 작업의 같은 도구·경계에 진입하기 전** 적용되는 교훈을 현재 문맥이나 `recall`로 확인해
178
182
  실행 방식에 반영한다. 이미 문맥에 있는 내용을 또 조회하지 않는다. Maker 첫 턴에는 그 작업 brief로
179
183
  회상한 `<memories>`가 `(id: …)`와 함께 실린다. 위임 attempt가 실제로 적용한 교훈은
@@ -6421,6 +6421,83 @@ export interface McpSelectEventResult {
6421
6421
  }
6422
6422
  `,
6423
6423
  },
6424
+ {
6425
+ // 교훈 자동 저장 표시(2026-09-29 사용자 지적 "교훈 저장이 안 뜬다"): autolearn capture Agent는 본 대화와
6426
+ // 분리돼 저장해도 화면·다음 턴 문맥에 아무것도 남지 않았다. 성공한 learn·manage_skill만 요약해 돌려준다.
6427
+ file: "src/sdk.ts",
6428
+ marker: `export function summarizeAutoLearnSaved(`,
6429
+ anchor: ` createSessionId?: () => string;
6430
+ }
6431
+
6432
+ /** Build a private capture runner over a detached message snapshot and provider session. */`,
6433
+ patched: ` createSessionId?: () => string;
6434
+ /** Receives the capture run's successful \`learn\`/\`manage_skill\` saves so the session can show them. */
6435
+ onCaptured?: (saved: string[]) => void;
6436
+ }
6437
+
6438
+ /**
6439
+ * Summarize a capture run's successful \`learn\`/\`manage_skill\` calls. Each call is paired with its
6440
+ * result, so a rejected or failed save is never reported as stored.
6441
+ */
6442
+ export function summarizeAutoLearnSaved(messages: readonly AgentMessage[], from: number): string[] {
6443
+ const text = (value: unknown): string => (typeof value === "string" ? value.replace(/\\s+/g, " ").trim() : "");
6444
+ const calls = new Map<string, { name: string; args: Record<string, unknown> }>();
6445
+ const saved: string[] = [];
6446
+ for (const message of messages.slice(from)) {
6447
+ if (message.role === "assistant") {
6448
+ for (const block of message.content) {
6449
+ if (block.type === "toolCall") {
6450
+ calls.set(block.id, { name: block.name, args: (block.arguments ?? {}) as Record<string, unknown> });
6451
+ }
6452
+ }
6453
+ continue;
6454
+ }
6455
+ if (message.role !== "toolResult" || message.isError) continue;
6456
+ const call = calls.get(message.toolCallId);
6457
+ if (!call) continue;
6458
+ if (call.name === "learn") {
6459
+ const memory = text(call.args.memory);
6460
+ const skill = call.args.skill as { action?: unknown; name?: unknown } | undefined;
6461
+ const skillNote = skill ? " (스킬 " + text(skill.action) + " " + text(skill.name) + ")" : "";
6462
+ saved.push("교훈: " + (memory.length > 160 ? memory.slice(0, 160) + "…" : memory) + skillNote);
6463
+ } else if (call.name === "manage_skill") {
6464
+ saved.push("스킬 " + text(call.args.action) + ": " + text(call.args.name));
6465
+ }
6466
+ }
6467
+ return saved;
6468
+ }
6469
+
6470
+ /** Build a private capture runner over a detached message snapshot and provider session. */`,
6471
+ },
6472
+ {
6473
+ // capture가 중간에 실패·중단돼도 이미 저장된 항목은 알린다(finally).
6474
+ file: "src/sdk.ts",
6475
+ marker: ` const saved = summarizeAutoLearnSaved(captureAgent.state.messages, captureMessages.length);`,
6476
+ anchor: ` } finally {
6477
+ signal?.removeEventListener("abort", abortCapture);`,
6478
+ patched: ` } finally {
6479
+ signal?.removeEventListener("abort", abortCapture);
6480
+ const saved = summarizeAutoLearnSaved(captureAgent.state.messages, captureMessages.length);
6481
+ if (saved.length > 0) options.onCaptured?.(saved);`,
6482
+ },
6483
+ {
6484
+ // 저장 결과를 보이는 custom 메시지로 남긴다. idle이면 턴을 시작하지 않고 붙이고, 진행 중이면 aside로 끼운다.
6485
+ file: "src/sdk.ts",
6486
+ marker: ` { customType: "autolearn-saved", content, display: true, attribution: "agent" },`,
6487
+ anchor: ` const runAutoLearnCapture = createAutoLearnCaptureRunner({
6488
+ sourceAgent: agent,`,
6489
+ patched: ` const runAutoLearnCapture = createAutoLearnCaptureRunner({
6490
+ sourceAgent: agent,
6491
+ onCaptured: saved => {
6492
+ const content = ["[교훈 자동 저장] 이번 턴이 끝난 뒤 별도 capture가 저장했다.", ...saved.map(line => "- " + line)].join("\\n");
6493
+ void session
6494
+ .sendCustomMessage(
6495
+ { customType: "autolearn-saved", content, display: true, attribution: "agent" },
6496
+ session.isStreaming ? { deliverAs: "aside" } : undefined,
6497
+ )
6498
+ .catch(error => logger.warn("Failed to show auto-learn capture result", { error: String(error) }));
6499
+ },`,
6500
+ },
6424
6501
  ];
6425
6502
  // EDITS 문자열의 줄 끝을 LF로 통일한다. 이 파일의 작업 사본이 CRLF여도 core 파일(LF)과
6426
6503
  // 비교·치환이 어긋나지 않는다. core 파일 자체의 줄 끝은 건드리지 않는다.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cuelo",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "CUELO — open-source AI coding agent workspace and harness for omp (oh-my-pi)",
5
5
  "homepage": "https://github.com/gim47656-ship-it/CUELO#readme",
6
6
  "repository": {