@litfamily/litopencode 1.0.14 → 1.0.16

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/CHANGELOG.md CHANGED
@@ -5,6 +5,14 @@ are tracked separately from this product history.
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## 1.0.16 - 2026-10-01
9
+
10
+ - Automatic handoff now finds the handoff it asked for after compaction even when the model formats the marker line, for example as a bullet, in backticks or in bold. A handoff written by another session is still ignored.
11
+
12
+ ## 1.0.15 - 2026-09-30
13
+
14
+ - `gpt-6.1-sol` is now the recommended coding-lead alternative, because OpenAI lists `gpt-6-sol` as the previous generation. The installer model menu offers it as the coding lead and keeps `gpt-6-sol` listed as the previous generation, and the reference describes both. Routes that already use `gpt-6-sol` keep working, and `litopencode doctor` still accepts them.
15
+
8
16
  ## 1.0.14 - 2026-09-30
9
17
 
10
18
  - Add an optional automatic handoff. It is off until you turn it on, and you choose the context percent; LitOpenCode has no default percent. When the conversation reaches your percent and the turn ends, LitOpenCode asks the model to write a handoff, checks that the file was saved, compacts the conversation, and puts the start of the handoff back in front of the model once. On OpenCode every one of those steps runs by itself. If OpenCode cannot start the compaction, a toast says "Handoff saved. Run /compact now."
package/README-Ko-KR.md CHANGED
@@ -1,6 +1,6 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitOpenCode 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/cover-motion.webp" width="100%" alt="LitFamily 모션 커버: 다섯 로봇 패널이 차례로 켜지고, LitOpenCode 로봇의 눈과 테두리가 빛난 뒤 LITFAMILY와 KEEP THE WORK LIT. 문구가 밝아지는 영상" /></picture></p>
2
2
 
3
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/ascii-readme.svg" width="480" alt="LIT ASCII B 마크" /></p>
3
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/ascii-readme.svg" width="480" alt="LIT ASCII B 마크" /></p>
4
4
 
5
5
  <details>
6
6
  <summary>ASCII 로고 복사</summary>
@@ -32,14 +32,14 @@
32
32
 
33
33
  # LitOpenCode
34
34
 
35
- [English](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/README.md) · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/README-Ko-KR.md)
35
+ [English](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/README.md) · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/README-Ko-KR.md)
36
36
 
37
37
  > **불씨를 건네받았다.**<br>
38
38
  > **이제, 당신의 작업에 옮길 차례다.**
39
39
 
40
40
  <p align="center">
41
- <a href="#설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/badge-version.svg" alt="1.0.14" /></a>
42
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
41
+ <a href="#설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/badge-version.svg" alt="1.0.16" /></a>
42
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
43
43
  </p>
44
44
 
45
45
  LitOpenCode는 OpenCode에 워크플로 agent, 슬래시 명령, 로컬 근거 기록을 더합니다.
@@ -99,7 +99,7 @@ OpenAI 제공자를 쓰면 새로 설치했을 때 계획과 검토는 GPT-6 Ast
99
99
  - planner는 계획만 세웁니다. `lit-plan`은 `edit`, `bash`, `task` 권한이 거부되어 있고, 더 느슨한 `balanced`나 `yolo` 모드를 직접 골라도 그대로입니다.
100
100
  - LitOpenCode는 대화형으로 시작할 때와 install이나 doctor가 성공한 뒤에 스스로 업데이트할 수 있습니다. 끄려면 `--no-auto-update`를 붙이거나 `LITOPENCODE_NO_AUTO_UPDATE=1`을 설정하세요.
101
101
  - 스킬 학습 기능은 제거되었습니다. 이전 릴리스가 프로젝트의 `.litopencode` 폴더에 남긴 학습 기록은 더 이상 쓰이지 않으니, 남겨 두든 지우든 편한 대로 하면 됩니다.
102
- - Jev 스킬 힌트는 선택 기능이고 기본값은 꺼짐입니다. 켜면 조건에 맞는 프롬프트가 TypeSafe로 전송되니, 먼저 [Jev 스킬 힌트 참조 문서](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference-Ko-KR.md#jev-스킬-힌트-선택)를 읽어 보세요. 알림과 doctor 줄이 어떻게 보이는지는 [GitHub 페이지](https://github.com/wjgoarxiv/litopencode/blob/master/README-Ko-KR.md#화면에서-보이는-것)에서 볼 수 있습니다.
102
+ - Jev 스킬 힌트는 선택 기능이고 기본값은 꺼짐입니다. 켜면 조건에 맞는 프롬프트가 TypeSafe로 전송되니, 먼저 [Jev 스킬 힌트 참조 문서](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference-Ko-KR.md#jev-스킬-힌트-선택)를 읽어 보세요. 알림과 doctor 줄이 어떻게 보이는지는 [GitHub 페이지](https://github.com/wjgoarxiv/litopencode/blob/master/README-Ko-KR.md#화면에서-보이는-것)에서 볼 수 있습니다.
103
103
  - 뭔가 이상하면 `npm exec --package @litfamily/litopencode@latest -- litopencode doctor`로 패키지와 설정 상태를 확인하세요.
104
104
 
105
105
  ## 제거
@@ -110,11 +110,11 @@ OpenAI 제공자를 쓰면 새로 설치했을 때 계획과 검토는 GPT-6 Ast
110
110
  npm uninstall -g @litfamily/litopencode
111
111
  ```
112
112
 
113
- 남겨 둘 만한 설치 파일과 기록은 [제거 상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference-Ko-KR.md#제거)에 정리되어 있습니다.
113
+ 남겨 둘 만한 설치 파일과 기록은 [제거 상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference-Ko-KR.md#제거)에 정리되어 있습니다.
114
114
 
115
115
  ## 더 보기
116
116
 
117
117
  - [GitHub 전체 안내](https://github.com/wjgoarxiv/litopencode/blob/master/README-Ko-KR.md)
118
- - [워크플로 상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference-Ko-KR.md) · [English reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference.md)
119
- - [마이그레이션 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/migration.md) · [Changelog](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/CHANGELOG.md) · [개인정보와 네트워크 동작](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/privacy.md)
120
- - [MIT 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/LICENSE) · [ASCII 글꼴 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/JetBrainsMono-OFL.txt)
118
+ - [워크플로 상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference-Ko-KR.md) · [English reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference.md)
119
+ - [마이그레이션 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/migration.md) · [Changelog](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/CHANGELOG.md) · [개인정보와 네트워크 동작](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/privacy.md)
120
+ - [MIT 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/LICENSE) · [ASCII 글꼴 라이선스](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/JetBrainsMono-OFL.txt)
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitOpenCode robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
1
+ <p align="center"><picture><source media="(prefers-reduced-motion: reduce)" srcset="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/cover-motion-still.webp" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/cover-motion.webp" width="100%" alt="LitFamily motion cover: five armored robots power on one by one, the LitOpenCode robot wakes with glowing eyes and a lit frame, then LITFAMILY and KEEP THE WORK LIT. light up." /></picture></p>
2
2
 
3
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/ascii-readme.svg" width="480" alt="LIT ASCII B mark" /></p>
3
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/ascii-readme.svg" width="480" alt="LIT ASCII B mark" /></p>
4
4
 
5
5
  <details>
6
6
  <summary>Copy ASCII logo</summary>
@@ -32,13 +32,13 @@
32
32
 
33
33
  # LitOpenCode
34
34
 
35
- [English](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/README.md) · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/README-Ko-KR.md)
35
+ [English](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/README.md) · [한국어](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/README-Ko-KR.md)
36
36
 
37
37
  **Keep the work lit.**
38
38
 
39
39
  <p align="center">
40
- <a href="#install"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/badge-version.svg" alt="1.0.14" /></a>
41
- <a href="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
40
+ <a href="#install"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/badge-version.svg" alt="1.0.16" /></a>
41
+ <a href="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
42
42
  </p>
43
43
 
44
44
  LitOpenCode adds workflow agents, slash commands, and a local evidence ledger to OpenCode.
@@ -98,7 +98,7 @@ With the OpenAI provider, a fresh install uses GPT-6 Astra (`gpt-6-astra`) at `x
98
98
  - The planner only plans. `lit-plan` has `edit`, `bash` and `task` denied, and it stays that way even if you choose the looser `balanced` or `yolo` mode.
99
99
  - LitOpenCode can update itself when it starts interactively and after an install or doctor run succeeds. To turn that off, pass `--no-auto-update` or set `LITOPENCODE_NO_AUTO_UPDATE=1`.
100
100
  - Skill learning has been removed. Learning records an earlier release left in a project's `.litopencode` folder are no longer used; keep or delete them as you like.
101
- - The Jev skill hint is optional and off by default. Turning it on sends eligible prompts to TypeSafe, so read the [Jev skill hint reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference.md#jev-skill-hint-optional) first. The GitHub page shows [what the toast and the doctor line look like](https://github.com/wjgoarxiv/litopencode#what-you-will-see).
101
+ - The Jev skill hint is optional and off by default. Turning it on sends eligible prompts to TypeSafe, so read the [Jev skill hint reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference.md#jev-skill-hint-optional) first. The GitHub page shows [what the toast and the doctor line look like](https://github.com/wjgoarxiv/litopencode#what-you-will-see).
102
102
  - If something seems off, `npm exec --package @litfamily/litopencode@latest -- litopencode doctor` checks the package and your configuration.
103
103
 
104
104
  ## Uninstall
@@ -109,11 +109,11 @@ There's no uninstall command. Remove the `@litfamily/litopencode` entry from the
109
109
  npm uninstall -g @litfamily/litopencode
110
110
  ```
111
111
 
112
- The [removal reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference.md#remove) covers the installed files and records you may want to keep.
112
+ The [removal reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference.md#remove) covers the installed files and records you may want to keep.
113
113
 
114
114
  ## More
115
115
 
116
116
  - [Full guide on GitHub](https://github.com/wjgoarxiv/litopencode#readme)
117
- - [Workflow reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference.md) · [한국어 상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/reference-Ko-KR.md)
118
- - [Migration notes](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/migration.md) · [Changelog](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/CHANGELOG.md) · [Privacy and network behavior](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/privacy.md)
119
- - [MIT license](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/LICENSE) · [ASCII font license](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.14/docs/assets/readme/JetBrainsMono-OFL.txt)
117
+ - [Workflow reference](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference.md) · [한국어 상세 안내](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/reference-Ko-KR.md)
118
+ - [Migration notes](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/migration.md) · [Changelog](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/CHANGELOG.md) · [Privacy and network behavior](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/privacy.md)
119
+ - [MIT license](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/LICENSE) · [ASCII font license](https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.16/docs/assets/readme/JetBrainsMono-OFL.txt)
@@ -283,6 +283,39 @@ export function autoHandoffDirective(percent, marker) {
283
283
  const handoffCandidates = Object.freeze(["HANDOFF.md", path.join(".handoff", "HANDOFF.md")]);
284
284
  const handoffSizeLimitBytes = 1_048_576;
285
285
  const mtimeToleranceMs = 2000;
286
+ /**
287
+ * One line with its Markdown decoration removed: list bullet, quote marker, emphasis, backticks and an
288
+ * HTML comment wrapper. Underscores are dropped only where they open or close a word, so the one inside
289
+ * a session id stays.
290
+ */
291
+ function plainLine(line) {
292
+ let text = line.replace(/<!--|-->/gu, " ").replace(/[*`]/gu, "");
293
+ text = text.replace(/(^|\s)_+/gu, "$1").replace(/_+(?=\s|$)/gu, "");
294
+ for (;;) {
295
+ const stripped = text.replace(/^\s*(?:>\s*|[-+]\s+|\d+[.)]\s+)/u, "");
296
+ if (stripped === text)
297
+ break;
298
+ text = stripped;
299
+ }
300
+ return text.replace(/\s+/gu, " ").trim();
301
+ }
302
+ const markerWordCharacter = /[0-9A-Za-z_-]/u;
303
+ /** The exact marker on some line, with no word character glued directly before or after it. */
304
+ function carriesMarker(text, marker) {
305
+ const wanted = plainLine(marker);
306
+ if (wanted === "")
307
+ return false;
308
+ for (const line of text.split(/\r?\n/u)) {
309
+ const plain = plainLine(line);
310
+ for (let at = plain.indexOf(wanted); at !== -1; at = plain.indexOf(wanted, at + 1)) {
311
+ const before = at === 0 ? "" : plain[at - 1];
312
+ const after = plain.slice(at + wanted.length, at + wanted.length + 1);
313
+ if (!markerWordCharacter.test(before) && !markerWordCharacter.test(after))
314
+ return true;
315
+ }
316
+ }
317
+ return false;
318
+ }
286
319
  /**
287
320
  * A handoff counts only when it carries the marker this session's trigger produced and the file was
288
321
  * written after the trigger. A file left by an earlier run, another session, or a person does not.
@@ -297,7 +330,7 @@ export async function readFreshHandoff(projectRoot, marker, firedAt) {
297
330
  if (stat.mtimeMs < firedAt - mtimeToleranceMs)
298
331
  continue;
299
332
  const text = await fs.readFile(file, "utf8");
300
- if (text.includes(marker))
333
+ if (carriesMarker(text, marker))
301
334
  return { relativePath, text };
302
335
  }
303
336
  catch {
@@ -29,9 +29,12 @@ export declare const defaultOpenAiRoutes: Readonly<{
29
29
  }>;
30
30
  export declare const newGenerationOpenAiModels: Readonly<{
31
31
  readonly astra: "gpt-6-astra";
32
- readonly sol: "gpt-6-sol";
32
+ readonly sol: "gpt-6.1-sol";
33
33
  readonly luna: "gpt-6-luna";
34
34
  }>;
35
+ export declare const previousGpt6OpenAiModels: Readonly<{
36
+ readonly sol: "gpt-6-sol";
37
+ }>;
35
38
  export declare const previousGenerationOpenAiModels: Readonly<{
36
39
  readonly sol: "gpt-5.6-sol";
37
40
  readonly terra: "gpt-5.6-terra";
@@ -49,6 +52,12 @@ export declare const openaiProviderModels: Readonly<{
49
52
  temperature: false;
50
53
  tool_call: true;
51
54
  }>;
55
+ "gpt-6.1-sol": Readonly<{
56
+ name: "GPT-6.1 Sol";
57
+ reasoning: true;
58
+ temperature: false;
59
+ tool_call: true;
60
+ }>;
52
61
  "gpt-6-sol": Readonly<{
53
62
  name: "GPT-6 Sol";
54
63
  reasoning: true;
@@ -14,9 +14,14 @@ export const defaultOpenAiRoutes = Object.freeze({
14
14
  });
15
15
  export const newGenerationOpenAiModels = Object.freeze({
16
16
  astra: defaultOpenAiRoutes.lead.model,
17
- sol: "gpt-6-sol",
17
+ sol: "gpt-6.1-sol",
18
18
  luna: defaultOpenAiRoutes.helper.model
19
19
  });
20
+ // gpt-6-sol stays accepted for existing configs. Like the GPT-5.6 ids it is a
21
+ // previous generation, but it keeps exact-id semantics: no inferred -fast alias.
22
+ export const previousGpt6OpenAiModels = Object.freeze({
23
+ sol: "gpt-6-sol"
24
+ });
20
25
  export const previousGenerationOpenAiModels = Object.freeze({
21
26
  sol: "gpt-5.6-sol",
22
27
  terra: "gpt-5.6-terra",
@@ -41,6 +46,7 @@ export const openaiRows = [
41
46
  { provider: "openai", model: defaultOpenAiRoutes.lead.model, effort: defaultOpenAiRoutes.lead.effort, efforts: installModelEfforts, hint: "frontier reasoning (recommended lead)" },
42
47
  { provider: "openai", model: newGenerationOpenAiModels.sol, effort: "xhigh", efforts: installModelEfforts, hint: "coding lead (recommended alternative)" },
43
48
  { provider: "openai", model: defaultOpenAiRoutes.helper.model, effort: defaultOpenAiRoutes.helper.effort, efforts: installModelEfforts.slice(0, 5), hint: "balanced (recommended helper)" },
49
+ { provider: "openai", model: previousGpt6OpenAiModels.sol, effort: "xhigh", efforts: installModelEfforts, hint: "coding lead, previous generation" },
44
50
  { provider: "openai", model: previousGenerationOpenAiModels.sol, effort: "xhigh", efforts: ["high", "xhigh", "max"], hint: "deepest reasoning, previous generation" },
45
51
  { provider: "openai", model: previousGenerationOpenAiModels.luna, effort: "max", efforts: ["high", "max"], hint: "balanced, previous generation" },
46
52
  { provider: "openai", model: previousGenerationOpenAiModels.family, effort: "high", efforts: ["high", "xhigh", "max"], hint: "previous generation" },
@@ -48,7 +54,8 @@ export const openaiRows = [
48
54
  ];
49
55
  export const openaiProviderModels = Object.freeze({
50
56
  [newGenerationOpenAiModels.astra]: Object.freeze({ name: "GPT-6 Astra", reasoning: true, temperature: false, tool_call: true }),
51
- [newGenerationOpenAiModels.sol]: Object.freeze({ name: "GPT-6 Sol", reasoning: true, temperature: false, tool_call: true }),
57
+ [newGenerationOpenAiModels.sol]: Object.freeze({ name: "GPT-6.1 Sol", reasoning: true, temperature: false, tool_call: true }),
58
+ [previousGpt6OpenAiModels.sol]: Object.freeze({ name: "GPT-6 Sol", reasoning: true, temperature: false, tool_call: true }),
52
59
  [newGenerationOpenAiModels.luna]: Object.freeze({ name: "GPT-6 Luna", reasoning: true, temperature: false, tool_call: true })
53
60
  });
54
61
  export function openAiModelRow(model) {
@@ -1,5 +1,5 @@
1
1
  import { effectiveAgentConfig } from "./config.js";
2
- import { defaultOpenAiRoutes, newGenerationOpenAiModels, openAiModelEfforts, previousGenerationOpenAiModels, stripFastSuffix } from "./cli/model-catalog.js";
2
+ import { defaultOpenAiRoutes, newGenerationOpenAiModels, openAiModelEfforts, previousGenerationOpenAiModels, previousGpt6OpenAiModels, stripFastSuffix } from "./cli/model-catalog.js";
3
3
  const safeLunaEfforts = new Set(openAiModelEfforts(previousGenerationOpenAiModels.luna));
4
4
  const safeTerraEfforts = new Set(openAiModelEfforts(previousGenerationOpenAiModels.terra));
5
5
  const safeAstraEfforts = new Set(openAiModelEfforts(defaultOpenAiRoutes.lead.model));
@@ -53,7 +53,7 @@ export function diagnoseModelRoutes(routes) {
53
53
  }
54
54
  continue;
55
55
  }
56
- if (modelId === newGenerationOpenAiModels.sol || modelId === newGenerationOpenAiModels.luna) {
56
+ if (modelId === newGenerationOpenAiModels.sol || modelId === previousGpt6OpenAiModels.sol || modelId === newGenerationOpenAiModels.luna) {
57
57
  const supported = new Set(openAiModelEfforts(modelId));
58
58
  const variantUnsafe = route.variant !== undefined && !supported.has(route.variant);
59
59
  const reasoningUnsafe = route.reasoningEffort !== undefined && !supported.has(route.reasoningEffort);
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.14"><title>release: 1.0.14</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.14</text></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.16"><title>release: 1.0.16</title><g shape-rendering="crispEdges"><rect width="49" height="20" fill="#080d14"/><rect x="49" width="97" height="20" fill="#ff6337"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text x="255" y="140" textLength="390" transform="scale(.1)">release</text><text x="965" y="140" textLength="870" transform="scale(.1)" fill="#080D14">1.0.16</text></g></svg>
@@ -87,8 +87,9 @@ CI와 비대화형 터미널에서는 자동 질문을 생략하며, 명시한
87
87
  `NO_COLOR`에서도 출력 스타일을 직접 선택할 수 있지만 색상·커서 이스케이프는 출력하지
88
88
  않습니다. `TERM=dumb`이나 UTF-8이 아닌 로케일에서는 ANSI 장식 없이 `LIT` 문자를 표시합니다.
89
89
  새로 설치하거나 초기화하면 계획·검토 및 `lit-loop`는 `openai/gpt-6-astra`/`xhigh`,
90
- 실행·연구 helper는 새 기본값인 `openai/gpt-6-luna`/`max`를 사용합니다. `gpt-6-sol`/`xhigh`는
91
- 코딩 리드 대안입니다. GPT-6 Astra와 GPT-6 Sol은 `low`, `medium`, `high`, `xhigh`, `max`, `ultra`를
90
+ 실행·연구 helper는 새 기본값인 `openai/gpt-6-luna`/`max`를 사용합니다. `gpt-6.1-sol`/`xhigh`는
91
+ 코딩 리드 대안입니다. `gpt-6-sol`은 이전 세대로 계속 선택할 수 있어 이 모델을 쓰는 기존 설정도 그대로 동작하며,
92
+ 같은 추론 수준을 지원하고 `-fast` 별칭은 없습니다. GPT-6 Astra와 GPT-6 Sol은 `low`, `medium`, `high`, `xhigh`, `max`, `ultra`를
92
93
  모두 지원합니다. GPT-6 Luna는 `low`, `medium`, `high`, `xhigh`, `max`를 지원하지만 `ultra`는
93
94
  지원하지 않습니다. 이전 세대 `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`는 계속 선택할 수 있고,
94
95
  현재 호스트 카탈로그에는 이 모델들의 지원 종료일이 등록되어 있지 않습니다. GPT-5.6 Luna는
package/docs/reference.md CHANGED
@@ -88,8 +88,9 @@ The interactive picker (`--model-prompt`, or a fresh TTY install) asks for a pro
88
88
  (the OpenAI GPT-6 family or the previous GPT-5.6 generation, or xAI Grok), a LEAD model for the
89
89
  planning/review categories, and a HELPER model for the execution/research categories; the helper
90
90
  may use a different provider. New installs default to GPT-6 Astra/xhigh for lead, planning, and
91
- review roles; GPT-6 Sol/xhigh is the coding-lead alternative, and GPT-6 Luna/max is the helper
92
- default for execution, research, and ordinary workers.
91
+ review roles; GPT-6.1 Sol/xhigh (`gpt-6.1-sol`) is the coding-lead alternative, and GPT-6 Luna/max is the helper
92
+ default for execution, research, and ordinary workers. `gpt-6-sol` stays selectable as the previous
93
+ generation, so existing configs that name it keep working; it accepts the same efforts and has no `-fast` alias.
93
94
  GPT-6 Astra and Sol accept `low`, `medium`, `high`, `xhigh`, `max`, and `ultra`. GPT-6 Luna accepts
94
95
  `low`, `medium`, `high`, `xhigh`, and `max`, but not `ultra`. The previous-generation
95
96
  `gpt-5.6-sol`, `gpt-5.6-terra`, and `gpt-5.6-luna` remain selectable, and the current host catalog
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litfamily/litopencode",
3
- "version": "1.0.14",
3
+ "version": "1.0.16",
4
4
  "description": "LitOpenCode OpenCode plugin bootstrap package.",
5
5
  "license": "MIT",
6
6
  "repository": {