cuelo 0.10.3 → 0.10.4
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +12 -12
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/updates/route.js +1 -1
- package/.next/server/app/api/web6/consults/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/office/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview/page_client-reference-manifest.js +1 -1
- package/.next/server/app/office-preview.html +1 -1
- package/.next/server/app/office-preview.rsc +2 -2
- package/.next/server/app/office-preview.segments/_full.segment.rsc +2 -2
- package/.next/server/app/office-preview.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/_index.segment.rsc +2 -2
- package/.next/server/app/office-preview.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/office-preview/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/office-preview.segments/office-preview.segment.rsc +1 -1
- package/.next/server/app/office.html +1 -1
- package/.next/server/app/office.rsc +4 -4
- package/.next/server/app/office.segments/_full.segment.rsc +4 -4
- package/.next/server/app/office.segments/_head.segment.rsc +1 -1
- package/.next/server/app/office.segments/_index.segment.rsc +2 -2
- package/.next/server/app/office.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/office.segments/office/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/office.segments/office.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover.html +1 -1
- package/.next/server/app/recover.rsc +2 -2
- package/.next/server/app/recover.segments/_full.segment.rsc +2 -2
- package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
- package/.next/server/app/recover.segments/_index.segment.rsc +2 -2
- package/.next/server/app/recover.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +12 -12
- package/.next/server/chunks/5489.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/{9575-1c8a5b26e8a14373.js → 9575-c7186831a3bfe17c.js} +2 -2
- package/.next/static/chunks/app/{layout-3b14a00bf951db3a.js → layout-bfc26328305a8fac.js} +1 -1
- package/.next/trace +108 -108
- package/.next/trace-build +1 -1
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
- package/Tools/OMP_Global_Config/agent/tools/windows-build/index.ts +5 -3
- package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +133 -0
- package/package.json +3 -2
- /package/.next/static/{A_r0uYOELdy8wTQbOhBCg → HCr7GGX3_oM-hKknNcPSW}/_buildManifest.js +0 -0
- /package/.next/static/{A_r0uYOELdy8wTQbOhBCg → HCr7GGX3_oM-hKknNcPSW}/_ssgManifest.js +0 -0
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-webpack","duration":
|
|
1
|
+
[{"name":"run-webpack","duration":80845889,"timestamp":575464,"id":14,"parentId":1,"tags":{},"startTime":1791525988965,"traceId":"87321b73e1bed0b6"},{"name":"run-typescript","duration":14113679,"timestamp":81770294,"id":11087,"parentId":1,"tags":{},"startTime":1791526070160,"traceId":"87321b73e1bed0b6"},{"name":"static-check","duration":13806050,"timestamp":96923925,"id":11090,"parentId":1,"tags":{},"startTime":1791526085314,"traceId":"87321b73e1bed0b6"},{"name":"static-generation","duration":7186106,"timestamp":110810204,"id":11262,"parentId":1,"tags":{},"startTime":1791526099200,"traceId":"87321b73e1bed0b6"},{"name":"collect-build-traces","duration":15963218,"timestamp":110789328,"id":11259,"parentId":1,"tags":{},"startTime":1791526099179,"traceId":"87321b73e1bed0b6"},{"name":"telemetry-flush","duration":62,"timestamp":126756523,"id":11271,"parentId":1,"tags":{},"startTime":1791526115146,"traceId":"87321b73e1bed0b6"},{"name":"next-build","duration":126260310,"timestamp":496297,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1791525988886,"traceId":"87321b73e1bed0b6"}]
|
|
@@ -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.10.
|
|
12
|
+
version: '0.10.4',
|
|
13
13
|
distribution: 'cuelo',
|
|
14
14
|
coreVersion: '18.8.6',
|
|
15
15
|
};
|
|
@@ -14,7 +14,7 @@ export interface WindowsBuildParams {
|
|
|
14
14
|
configuration?: string;
|
|
15
15
|
platform?: string;
|
|
16
16
|
target?: string;
|
|
17
|
-
|
|
17
|
+
msbuildProperties?: Record<string, string>;
|
|
18
18
|
restore?: boolean;
|
|
19
19
|
maxErrors?: number;
|
|
20
20
|
timeoutSeconds?: number;
|
|
@@ -116,7 +116,7 @@ export function buildMsbuildArgs(params: Omit<WindowsBuildParams, "project">, pr
|
|
|
116
116
|
const properties: Array<[string, string]> = [];
|
|
117
117
|
if (params.configuration !== undefined) properties.push(["Configuration", validateToken("configuration", params.configuration, /^[\w .+-]+$/)]);
|
|
118
118
|
if (params.platform !== undefined) properties.push(["Platform", validateToken("platform", params.platform, /^[\w .+-]+$/)]);
|
|
119
|
-
for (const [name, value] of Object.entries(params.
|
|
119
|
+
for (const [name, value] of Object.entries(params.msbuildProperties ?? {})) {
|
|
120
120
|
if (!/^[A-Za-z_][\w.]*$/.test(name)) throw new Error(`windows_build: 속성 이름이 올바르지 않다: ${JSON.stringify(name)}`);
|
|
121
121
|
if (DENIED_PROPERTIES[name.toLowerCase()]) throw new Error(`windows_build: 빌드만 허용하므로 속성 ${name}은 쓸 수 없다.`);
|
|
122
122
|
if (/[\r\n\0]/.test(value)) throw new Error(`windows_build: 속성 ${name} 값에 줄바꿈이 있다.`);
|
|
@@ -305,7 +305,9 @@ const factory: CustomToolFactory = (pi) => ({
|
|
|
305
305
|
configuration: pi.zod.string().optional().describe("Configuration property, e.g. Debug or Release"),
|
|
306
306
|
platform: pi.zod.string().optional().describe("Platform property, e.g. x86, x64, Any CPU"),
|
|
307
307
|
target: pi.zod.string().optional().describe("MSBuild target(s), e.g. Rebuild or Clean;Build. Run/Deploy/Publish/Install are rejected"),
|
|
308
|
-
properties
|
|
308
|
+
// Not named `properties`: the core wire-schema pass turns the empty `properties` map of a
|
|
309
|
+
// parameter with that name into `true`, and Anthropic/OpenAI then reject the whole request.
|
|
310
|
+
msbuildProperties: pi.zod.record(pi.zod.string()).optional().describe("Extra -p:Name=Value properties"),
|
|
309
311
|
restore: pi.zod.boolean().optional().describe("Add -restore before building (default false)"),
|
|
310
312
|
maxErrors: pi.zod.number().optional().describe("Number of error lines to return (default 20, max 200)"),
|
|
311
313
|
timeoutSeconds: pi.zod.number().optional().describe("Build time limit in seconds (default 600, max 3600)"),
|
|
@@ -1262,6 +1262,21 @@ Project-wide validation is the main agent's job, run once after all subagents la
|
|
|
1262
1262
|
anchor: `- \`app.relay: true\`: drive the user's Chrome through the omp relay. \`app.target\` selects a tab by URL/title substring; without it, the visible tab is adopted. Opening with \`url\` navigates that adopted tab.`,
|
|
1263
1263
|
patched: `- \`app.relay: true\`: drive the user's Chrome through the omp relay. \`app.target\` selects a tab by URL/title substring; without it, the relay opens a new tab for this \`name\` and leaves the user's tabs alone. Reopening the same \`name\` reuses that tab; closing it releases the tab without closing the page.`,
|
|
1264
1264
|
},
|
|
1265
|
+
{
|
|
1266
|
+
// 2026-10-09 사용자 결정: computer 승인 창은 control.acquire에서만 뜬다. 모델이
|
|
1267
|
+
// BackgroundUnavailable을 우회하려고 acquire를 불러 매번 승인을 묻게 됐다(Windows 시절
|
|
1268
|
+
// 세션은 동작별 takeover만 썼다). 승인 게이트는 그대로 두고, 동작별 takeover를 먼저 쓰게 안내한다.
|
|
1269
|
+
file: "src/prompts/tools/computer.md",
|
|
1270
|
+
marker: "NEVER acquire control to work around",
|
|
1271
|
+
anchor: "- `computer.control.acquire({reason})` requires live human confirmation for task-scoped foreground control;",
|
|
1272
|
+
patched: "- NEVER acquire control to work around `BackgroundUnavailable` or a background no-op: retry that one call with `{ takeover: true }`, which needs no confirmation. Acquire only when the user asks for sustained foreground control.\n- `computer.control.acquire({reason})` requires live human confirmation for task-scoped foreground control;",
|
|
1273
|
+
},
|
|
1274
|
+
{
|
|
1275
|
+
file: "src/prompts/system/computer-use.md",
|
|
1276
|
+
marker: "Per-call `takeover: true`",
|
|
1277
|
+
anchor: "- Task-scoped control requires live human confirmation; release it when finished.",
|
|
1278
|
+
patched: "- Per-call `takeover: true` after `BackgroundUnavailable` needs no confirmation; use it instead of `computer.control.acquire`. Acquired control requires live human confirmation; acquire only on user request and release it when finished.",
|
|
1279
|
+
},
|
|
1265
1280
|
{
|
|
1266
1281
|
// 빚의 정체(어느 steer 메시지인가)를 표현하는 최소 타입.
|
|
1267
1282
|
file: "src/session/irc-bridge.ts",
|
|
@@ -4737,6 +4752,95 @@ class LocalTextBackend implements TextBackend {`,
|
|
|
4737
4752
|
patched: `import type { Settings } from "../config/settings";
|
|
4738
4753
|
import { cfgJudgmentProvider } from "../config/model-settings";`,
|
|
4739
4754
|
},
|
|
4755
|
+
{
|
|
4756
|
+
// 2026-10-09 WSL 회귀 감사 3.5: JEV `find` 판정이 typesafe 경로에서 23.8% 400("Invalid decision request.
|
|
4757
|
+
// Send only model, state, and bounded typed questions; ...")으로 실패하고 openrouter 로 넘어갔다. typesafe
|
|
4758
|
+
// provider 는 Experiential Labs gateway(models.yml)로 가고, 그 decoder 는 요청당 질문을 32개까지만 받는다
|
|
4759
|
+
// (experientiallabs/experiential exp/runtime/gateway/decisions_contracts.py MAX_DECISION_QUESTIONS = 32).
|
|
4760
|
+
// find 는 한 요청에 최대 64(NAME_BATCH·DIR_BATCH)·48(SKETCH_CARDS_MAX)개를 보낸다. 세션 기록에서 400 62건은
|
|
4761
|
+
// 전부 35문항 이상, 성공 184건은 전부 30문항 이하였다. 질문은 같은 state 에 대해 서로 독립으로 판정되므로
|
|
4762
|
+
// 32개씩 나눠 같은 state 로 병렬 전송하고 응답을 합친다. jfind 배치 상수와 벤치마크한 state 배치는 그대로다.
|
|
4763
|
+
// 32개 이하 요청은 본문 바이트가 그대로이고, openrouter-decisions 경로(61문항도 받았다)는 나누지 않는다.
|
|
4764
|
+
// 검증: core-typesafe-split-test.ts.
|
|
4765
|
+
file: "../pi-ai/src/judgment/typesafe.ts",
|
|
4766
|
+
marker: "const TYPESAFE_MAX_QUESTIONS = 32;",
|
|
4767
|
+
anchor: "\treturn Math.min(BACKOFF_BASE_MS * 2 ** attempt, BACKOFF_MAX_MS);\n}\n\nexport class TypeSafeJudge implements Judge {\n",
|
|
4768
|
+
patched: [
|
|
4769
|
+
"\treturn Math.min(BACKOFF_BASE_MS * 2 ** attempt, BACKOFF_MAX_MS);",
|
|
4770
|
+
"}",
|
|
4771
|
+
"",
|
|
4772
|
+
"/**",
|
|
4773
|
+
" * CUELO: questions per request on the `typesafe` route. CUELO points that route at the Experiential Labs",
|
|
4774
|
+
" * gateway, whose decoder admits at most 32 questions (`MAX_DECISION_QUESTIONS`) and answers a larger set",
|
|
4775
|
+
" * with 400 \"Invalid decision request\". Questions are judged independently against the shared state, so a",
|
|
4776
|
+
" * larger set goes out as parts that each repeat the state.",
|
|
4777
|
+
" */",
|
|
4778
|
+
"const TYPESAFE_MAX_QUESTIONS = 32;",
|
|
4779
|
+
"",
|
|
4780
|
+
"/** `questions` itself when it has at most `max` entries, else parts of at most `max` in insertion order. */",
|
|
4781
|
+
"function questionParts(questions: Questions, max: number): Questions[] {",
|
|
4782
|
+
"\tconst ids = Object.keys(questions);",
|
|
4783
|
+
"\tif (ids.length <= max) return [questions];",
|
|
4784
|
+
"\tconst parts: Questions[] = [];",
|
|
4785
|
+
"\tfor (let start = 0; start < ids.length; start += max) {",
|
|
4786
|
+
"\t\tconst part: Questions = {};",
|
|
4787
|
+
"\t\tfor (const id of ids.slice(start, start + max)) part[id] = questions[id]!;",
|
|
4788
|
+
"\t\tparts.push(part);",
|
|
4789
|
+
"\t}",
|
|
4790
|
+
"\treturn parts;",
|
|
4791
|
+
"}",
|
|
4792
|
+
"",
|
|
4793
|
+
"/** The parts' responses as one: answers merged, token counts and billed cost summed where reported. */",
|
|
4794
|
+
"function mergeResponses(responses: SystemOneResponse[]): SystemOneResponse {",
|
|
4795
|
+
"\tif (responses.length === 1) return responses[0]!;",
|
|
4796
|
+
"\tconst total = (pick: (usage: SystemOneResponse[\"usage\"]) => number | undefined): number | undefined => {",
|
|
4797
|
+
"\t\tlet sum: number | undefined;",
|
|
4798
|
+
"\t\tfor (const response of responses) {",
|
|
4799
|
+
"\t\t\tconst value = pick(response.usage);",
|
|
4800
|
+
"\t\t\tif (value !== undefined) sum = (sum ?? 0) + value;",
|
|
4801
|
+
"\t\t}",
|
|
4802
|
+
"\t\treturn sum;",
|
|
4803
|
+
"\t};",
|
|
4804
|
+
"\treturn {",
|
|
4805
|
+
"\t\tmodel: responses[0]!.model,",
|
|
4806
|
+
"\t\tanswers: Object.assign({}, ...responses.map(response => response.answers)),",
|
|
4807
|
+
"\t\tusage: {",
|
|
4808
|
+
"\t\t\tinput_tokens: total(usage => usage.input_tokens),",
|
|
4809
|
+
"\t\t\toutput_tokens: total(usage => usage.output_tokens),",
|
|
4810
|
+
"\t\t\tcost: total(usage => usage.cost),",
|
|
4811
|
+
"\t\t},",
|
|
4812
|
+
"\t};",
|
|
4813
|
+
"}",
|
|
4814
|
+
"",
|
|
4815
|
+
"export class TypeSafeJudge implements Judge {",
|
|
4816
|
+
"",
|
|
4817
|
+
].join("\n"),
|
|
4818
|
+
},
|
|
4819
|
+
{
|
|
4820
|
+
// 위 항목과 짝: judge 가 질문 묶음을 나눠 보내고 응답을 합친다. 나누지 않으면 parts 는 request.questions
|
|
4821
|
+
// 그 객체 하나라 본문이 원래 식 `{ state, model, questions }` 과 바이트까지 같다.
|
|
4822
|
+
file: "../pi-ai/src/judgment/typesafe.ts",
|
|
4823
|
+
marker: "// CUELO: past the typesafe question bound",
|
|
4824
|
+
anchor: "\t\tconst body = JSON.stringify({ state: request.state, model: this.model, questions: request.questions });\n\t\tconst signal = options?.signal;\n\t\tconst response = await withAuth(\n\t\t\tthis.#apiKey,\n\t\t\tkey => this.#attempt<SystemOneResponse>(JUDGMENT_ROUTES[this.api], body, key, signal),\n\t\t\t{ signal },\n\t\t);\n",
|
|
4825
|
+
patched: [
|
|
4826
|
+
"\t\tconst signal = options?.signal;",
|
|
4827
|
+
"\t\t// CUELO: past the typesafe question bound the parts run in parallel and merge into one response.",
|
|
4828
|
+
"\t\tconst parts = questionParts(request.questions, this.api === TYPESAFE_PROVIDER ? TYPESAFE_MAX_QUESTIONS : Infinity);",
|
|
4829
|
+
"\t\tconst response = mergeResponses(",
|
|
4830
|
+
"\t\t\tawait Promise.all(",
|
|
4831
|
+
"\t\t\t\tparts.map(questions => {",
|
|
4832
|
+
"\t\t\t\t\tconst body = JSON.stringify({ state: request.state, model: this.model, questions });",
|
|
4833
|
+
"\t\t\t\t\treturn withAuth(",
|
|
4834
|
+
"\t\t\t\t\t\tthis.#apiKey,",
|
|
4835
|
+
"\t\t\t\t\t\tkey => this.#attempt<SystemOneResponse>(JUDGMENT_ROUTES[this.api], body, key, signal),",
|
|
4836
|
+
"\t\t\t\t\t\t{ signal },",
|
|
4837
|
+
"\t\t\t\t\t);",
|
|
4838
|
+
"\t\t\t\t}),",
|
|
4839
|
+
"\t\t\t),",
|
|
4840
|
+
"\t\t);",
|
|
4841
|
+
"",
|
|
4842
|
+
].join("\n"),
|
|
4843
|
+
},
|
|
4740
4844
|
{
|
|
4741
4845
|
// 18.2.7 에는 `providers.judgmentProvider` schema 항목 자체가 없다(legacy key 목록에만
|
|
4742
4846
|
// 남아 migration 이 소비한다). 이 빌드의 로컬 선택 설정으로 최소 enum 만 되살린다:
|
|
@@ -6070,6 +6174,35 @@ export function hostNextServerEnvUnsets(
|
|
|
6070
6174
|
pty: ptyRequest,
|
|
6071
6175
|
`,
|
|
6072
6176
|
},
|
|
6177
|
+
{
|
|
6178
|
+
// 2026-10-09 WSL 회귀 감사 3.3: WSL bash 도구에서 wsl.exe 자체 메시지가 UTF-16LE 로 나와 NUL·U+FFFD 로 깨졌다.
|
|
6179
|
+
// bash 출력은 pi-natives(Rust)가 손실 UTF-8 로 풀어 문자열로 넘기므로 JS 에서는 원래 바이트를 되살릴 수 없다.
|
|
6180
|
+
// wsl.exe 는 WSL_UTF8=1 이면 UTF-8 로 쓰지만, Linux 변수는 WSLENV 에 이름이 있어야 Windows 프로세스에 닿는다
|
|
6181
|
+
// (실측: `WSL_UTF8=1 wsl.exe --version` 은 그대로 UTF-16LE, `WSLENV=WSL_UTF8` 을 더하면 UTF-8, `WSL_UTF8/u` 는 UTF-16LE).
|
|
6182
|
+
// linux 이고 WSL_DISTRO_NAME 이 있으면 기존 WSLENV 항목은 남긴 채 WSL_UTF8 을 한 번 덧붙인다. 서버 env 나 호출자가
|
|
6183
|
+
// 정한 WSL_UTF8 은 그 값을 그대로 넘기고, 없을 때만 1 로 둔다(서비스 env 가 WSL_UTF8=1 만 정해도 이 경로로 닿는다).
|
|
6184
|
+
// 호출자가 넘긴 WSLENV 는 그대로 이긴다. 비WSL·win32 경로는 그대로다.
|
|
6185
|
+
// PowerShell 등의 CP949 콘솔 출력은 범위 밖이다(Main 결정: iconv 안내 유지). 검증: core-wsl-utf8-env-test.ts.
|
|
6186
|
+
file: "src/exec/non-interactive-env.ts",
|
|
6187
|
+
marker: "// CUELO: on WSL, wsl.exe writes its own messages as UTF-16LE",
|
|
6188
|
+
anchor: "\tif (platform !== \"win32\") {\n\t\treturn overrides ? { ...base, ...overrides } : base;\n\t}\n",
|
|
6189
|
+
patched: [
|
|
6190
|
+
"\tif (platform !== \"win32\") {",
|
|
6191
|
+
"\t\t// CUELO: on WSL, wsl.exe writes its own messages as UTF-16LE, which the bash tool shows as NUL/U+FFFD",
|
|
6192
|
+
"\t\t// mojibake, unless WSL_UTF8=1 reaches it. Windows processes see only the Linux variables WSLENV names, so",
|
|
6193
|
+
"\t\t// WSL_UTF8 is listed there; a value the server env or the caller already set is forwarded as is.",
|
|
6194
|
+
"\t\t// A caller WSLENV still wins.",
|
|
6195
|
+
"\t\tif (platform === \"linux\" && baseEnv.WSL_DISTRO_NAME) {",
|
|
6196
|
+
"\t\t\tconst shared = (baseEnv.WSLENV ?? \"\").split(\":\").filter(name => name.length > 0);",
|
|
6197
|
+
"\t\t\tif (!shared.some(name => name.split(\"/\")[0] === \"WSL_UTF8\")) shared.push(\"WSL_UTF8\");",
|
|
6198
|
+
"\t\t\tconst utf8 = hasEnvValue(baseEnv, \"WSL_UTF8\", platform) ? {} : { WSL_UTF8: \"1\" };",
|
|
6199
|
+
"\t\t\treturn { ...base, ...utf8, WSLENV: shared.join(\":\"), ...overrides };",
|
|
6200
|
+
"\t\t}",
|
|
6201
|
+
"\t\treturn overrides ? { ...base, ...overrides } : base;",
|
|
6202
|
+
"\t}",
|
|
6203
|
+
"",
|
|
6204
|
+
].join("\n"),
|
|
6205
|
+
},
|
|
6073
6206
|
{
|
|
6074
6207
|
// 2026-09-29: 이름 있는 bash service 는 bash-executor 를 거치지 않는다. daemon broker 가
|
|
6075
6208
|
// `workerEnvFromParent(spec.env)` 로 띄우는데, 이 함수는 broker 자신의 env 위에 overlay 를 덧씌우기만
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cuelo",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.4",
|
|
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": {
|
|
@@ -139,6 +139,7 @@
|
|
|
139
139
|
"remark-math": "^6.0.0",
|
|
140
140
|
"tailwindcss": "^4.3.3",
|
|
141
141
|
"three": "^0.186.1",
|
|
142
|
-
"typescript": "^5.9.3"
|
|
142
|
+
"typescript": "^5.9.3",
|
|
143
|
+
"typescript-language-server": "^6.0.1"
|
|
143
144
|
}
|
|
144
145
|
}
|
|
File without changes
|
|
File without changes
|