@litfamily/litopencode 1.0.0 → 1.0.1

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,12 @@ are tracked separately from this product history.
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## 1.0.1
9
+
10
+ - Remove the runtime host-plugin dependency chain from consumer installs. LitOpenCode now ships
11
+ its own `zod@4.1.8` tool schema helper, so Node 22.22.0 installs no longer warn or fail strict
12
+ engine checks on transitive `effect`/`ini` packages while OpenCode tool registration remains intact.
13
+
8
14
  ## 1.0.0
9
15
 
10
16
  - Prepare `@litfamily/litopencode` for independent OpenCode installation. The executable,
package/README-Ko-KR.md CHANGED
@@ -1,4 +1,4 @@
1
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/cover.webp" width="100%" alt="LitOpenCode v5 armory cover" /></p>
1
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/cover.webp" width="100%" alt="LitOpenCode v5 armory cover" /></p>
2
2
 
3
3
  # LitOpenCode
4
4
 
@@ -6,8 +6,8 @@
6
6
 
7
7
  **Keep the work lit.**
8
8
 
9
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/litopencode-wordmark.svg" width="480" alt="LITOPENCODE 디스플레이 타입" /></p>
10
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/litopencode-clay-icon.png" width="160" alt="LitOpenCode 클레이 마크" /></p>
9
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/litopencode-wordmark.svg" width="480" alt="LITOPENCODE 디스플레이 타입" /></p>
10
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/litopencode-clay-icon.png" width="160" alt="LitOpenCode 클레이 마크" /></p>
11
11
 
12
12
  > **불씨를 건네받았다.**<br>
13
13
  > **이제, 당신의 작업에 옮길 차례다.**
@@ -57,7 +57,7 @@ canonical 경로를 사용합니다. 번호가 붙은 license·provenance 파일
57
57
 
58
58
  `lit` 또는 `/lit`으로 범위가 정해진 작업을 시작하고, `handoff` 또는 `/lit-handoff`로 확인한 결과와 다음 단계를 건넵니다. `lit-plan`은 계획을 준비하고, `/start-work <승인된 계획>`은 승인한 계획을 실행하며, `/review-work`는 변경과 근거를 검토하고, `/litresearch`는 제공된 출처 기반 조사 경로를 사용합니다. 기대하는 효과는 다음 세션이 이어갈 수 있는 프로젝트별 목표·근거·다음 단계 기록입니다. 호스트 제약도 분명합니다. 모델 실행과 권한 질문은 OpenCode가 담당하고 plugin은 경로와 기록을 제공하므로, 경로를 선택했다는 사실만으로 실행이나 화면 확인을 증명할 수 없습니다.
59
59
 
60
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/litopencode-ignition-1600.webp" width="48%" alt="LitOpenCode 점화 장치" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/litopencode-continuity-1600.webp" width="48%" alt="LitOpenCode 연속 장치" /></p>
60
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/litopencode-ignition-1600.webp" width="48%" alt="LitOpenCode 점화 장치" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/litopencode-continuity-1600.webp" width="48%" alt="LitOpenCode 연속 장치" /></p>
61
61
 
62
62
  <p align="center"><a href="docs/assets/readme/ignition-film.mp4"><img src="docs/assets/readme/poster.png" width="720" alt="Ignition 모션 포스터" /></a></p>
63
63
 
@@ -91,7 +91,7 @@ route 파일은 `~/.config/opencode/litopencode.json`이며 `XDG_CONFIG_HOME`을
91
91
  설정 루트가 달라집니다. 기존 custom route는 사용자 소유로 유지됩니다.
92
92
  custom root, 모델 선택, 터미널 정책, 무인 설치는 [상세 안내](docs/reference-Ko-KR.md#설치)를 참고하세요.
93
93
 
94
- 이 checkout의 패키지는 `@litfamily/litopencode@1.0.0`입니다. registry의 `@latest`는 다를 수 있으므로
94
+ 이 checkout의 패키지는 `@litfamily/litopencode@1.0.1`입니다. registry의 `@latest`는 다를 수 있으므로
95
95
  정확한 버전이 필요하면 `npm view @litfamily/litopencode version`으로 확인하세요.
96
96
 
97
97
  ## 처음 사용하기
@@ -149,8 +149,8 @@ primitive가 없으므로 이 프로젝트별 로컬 기록으로 작업을 재
149
149
  </details>
150
150
 
151
151
  <p align="center">
152
- <a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/badge-version.svg" alt="1.0.0" /></a>
153
- <a href="LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
152
+ <a href="#30초-설치"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/badge-version.svg" alt="1.0.1" /></a>
153
+ <a href="LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/badge-license.svg" alt="MIT 라이선스" /></a>
154
154
  </p>
155
155
 
156
156
  <p align="center">
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/cover.webp" width="100%" alt="LitOpenCode v5 armory cover" /></p>
1
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/cover.webp" width="100%" alt="LitOpenCode v5 armory cover" /></p>
2
2
 
3
3
  # LitOpenCode
4
4
 
@@ -6,8 +6,8 @@
6
6
 
7
7
  **Keep the work lit.**
8
8
 
9
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/litopencode-wordmark.svg" width="480" alt="LITOPENCODE display type" /></p>
10
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/litopencode-clay-icon.png" width="160" alt="LitOpenCode clay mark" /></p>
9
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/litopencode-wordmark.svg" width="480" alt="LITOPENCODE display type" /></p>
10
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/litopencode-clay-icon.png" width="160" alt="LitOpenCode clay mark" /></p>
11
11
 
12
12
  > **The spark is yours.**<br>
13
13
  > **Bring it to your work.**
@@ -57,7 +57,7 @@ remain source-attribution records.
57
57
 
58
58
  Use `lit` or `/lit` to start a bounded task; `handoff` or `/lit-handoff` carries the checked result and next step; `lit-plan` prepares a plan; `/start-work <approved-plan>` executes an approved plan; `/review-work` checks the change and its evidence; and `/litresearch` uses the shipped source-backed research route. The expected effect is a project-local goal, evidence, and next-step record that another session can resume. The host limit is explicit: OpenCode owns model execution and permission prompts, while the plugin supplies routes and records; selecting a route does not prove execution or a visual check.
59
59
 
60
- <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/litopencode-ignition-1600.webp" width="48%" alt="LitOpenCode ignition apparatus" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/litopencode-continuity-1600.webp" width="48%" alt="LitOpenCode continuity apparatus" /></p>
60
+ <p align="center"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/litopencode-ignition-1600.webp" width="48%" alt="LitOpenCode ignition apparatus" /><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/litopencode-continuity-1600.webp" width="48%" alt="LitOpenCode continuity apparatus" /></p>
61
61
 
62
62
  <p align="center"><a href="docs/assets/readme/ignition-film.mp4"><img src="docs/assets/readme/poster.png" width="720" alt="Ignition motion poster" /></a></p>
63
63
 
@@ -92,7 +92,7 @@ changes that root. Existing custom routes remain user-owned. See the
92
92
  [installation and model reference](docs/reference.md#install) for custom roots,
93
93
  provider choices, terminal policy, and unattended setup.
94
94
 
95
- This checkout is `@litfamily/litopencode@1.0.0`. Registry `@latest` can differ; inspect it with
95
+ This checkout is `@litfamily/litopencode@1.0.1`. Registry `@latest` can differ; inspect it with
96
96
  `npm view @litfamily/litopencode version` when an exact version matters.
97
97
 
98
98
  ## First use
@@ -150,8 +150,8 @@ skills provide guidance when their documented routes select them.
150
150
  </details>
151
151
 
152
152
  <p align="center">
153
- <a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/badge-version.svg" alt="1.0.0" /></a>
154
- <a href="LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.0/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
153
+ <a href="#install-in-30-seconds"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/badge-version.svg" alt="1.0.1" /></a>
154
+ <a href="LICENSE"><img src="https://cdn.jsdelivr.net/npm/@litfamily/litopencode@1.0.1/docs/assets/readme/badge-license.svg" alt="MIT license" /></a>
155
155
  </p>
156
156
 
157
157
  <p align="center">
@@ -1,26 +1,23 @@
1
1
  import type { ToolContext, ToolResult } from "@opencode-ai/plugin";
2
- type StringSchema = {
3
- readonly type: "string";
4
- readonly description?: string;
5
- describe(description: string): StringSchema;
6
- optional(): OptionalStringSchema;
7
- };
8
- type OptionalStringSchema = {
9
- readonly type: "optional";
10
- readonly innerType: StringSchema;
11
- };
12
- type ToolFactory = (<Args extends Record<string, unknown>>(input: {
2
+ type ToolInput<Args extends Record<string, unknown>> = {
13
3
  readonly description: string;
14
4
  readonly args: Args;
15
5
  execute(args: Record<string, unknown>, context: ToolContext): Promise<ToolResult>;
16
- }) => {
6
+ };
7
+ type ToolSchema = {
8
+ string(): {
9
+ optional(): unknown;
10
+ describe(description: string): {
11
+ optional(): unknown;
12
+ };
13
+ };
14
+ };
15
+ type ToolFactory = (<Args extends Record<string, unknown>>(input: {
17
16
  readonly description: string;
18
17
  readonly args: Args;
19
18
  execute(args: Record<string, unknown>, context: ToolContext): Promise<ToolResult>;
20
- }) & {
21
- readonly schema: {
22
- string(): StringSchema;
23
- };
19
+ }) => ToolInput<Args>) & {
20
+ readonly schema: ToolSchema;
24
21
  };
25
22
  export declare const tool: ToolFactory;
26
23
  export declare function projectRootFromContext(context: ToolContext): string;
package/dist/tool-kit.js CHANGED
@@ -1,42 +1,11 @@
1
- function createFallbackStringSchema(description) {
2
- return {
3
- type: "string",
4
- ...(description === undefined ? {} : { description }),
5
- describe(nextDescription) {
6
- return createFallbackStringSchema(nextDescription);
7
- },
8
- optional() {
9
- return {
10
- type: "optional",
11
- innerType: createFallbackStringSchema(description)
12
- };
13
- }
14
- };
15
- }
16
- function createFallbackToolFactory() {
17
- const factory = ((input) => input);
18
- Object.defineProperty(factory, "schema", {
19
- value: {
20
- string() {
21
- return createFallbackStringSchema();
22
- }
23
- }
24
- });
25
- return factory;
26
- }
27
- async function loadToolFactory() {
28
- try {
29
- const plugin = await import("@opencode-ai/plugin");
30
- if (typeof plugin.tool === "function") {
31
- return plugin.tool;
32
- }
33
- }
34
- catch {
35
- // Packed-artifact import probes run before dependencies are installed.
36
- }
37
- return createFallbackToolFactory();
38
- }
39
- export const tool = await loadToolFactory();
1
+ import { z } from "zod";
2
+ // OpenCode's runtime helper is intentionally only an identity function with a
3
+ // zod namespace attached. Keeping both pieces local removes the host package's
4
+ // effect/ini dependency chain from packed consumers. A missing zod dependency
5
+ // must fail the import instead of silently downgrading to an unvalidated schema.
6
+ const toolFactory = ((input) => input);
7
+ Object.assign(toolFactory, { schema: z });
8
+ export const tool = toolFactory;
40
9
  export function projectRootFromContext(context) {
41
10
  const worktree = context.worktree?.trim();
42
11
  if (worktree !== undefined && worktree !== "" && worktree !== "/")
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.0"><title>release: 1.0.0</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.0</text></g></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="146" height="20" role="img" aria-label="release: 1.0.1"><title>release: 1.0.1</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.1</text></g></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@litfamily/litopencode",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "LitOpenCode OpenCode plugin bootstrap package.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -43,10 +43,11 @@
43
43
  "typecheck": "node tools/run-typecheck.mjs"
44
44
  },
45
45
  "dependencies": {
46
- "@opencode-ai/plugin": "^1.17.6",
47
- "yaml": "^2.9.0"
46
+ "yaml": "^2.9.0",
47
+ "zod": "4.1.8"
48
48
  },
49
49
  "devDependencies": {
50
+ "@opencode-ai/plugin": "^1.17.6",
50
51
  "@types/node": "^24.12.2",
51
52
  "picomatch": "^4.0.5",
52
53
  "typescript": "^5.9.3"
@@ -11,13 +11,13 @@
11
11
  {
12
12
  "path": "README-Ko-KR.md",
13
13
  "kind": "pinned",
14
- "occurrences": 1,
14
+ "occurrences": 9,
15
15
  "why": "The landing page identifies the current checkout version; the repository-owned cover is version-free."
16
16
  },
17
17
  {
18
18
  "path": "README.md",
19
19
  "kind": "pinned",
20
- "occurrences": 1,
20
+ "occurrences": 9,
21
21
  "why": "The landing page identifies the current checkout version; the repository-owned cover is version-free."
22
22
  },
23
23
  {
@@ -45,10 +45,10 @@
45
45
  "why": "This package manifest is the source of truth used by the lockstep guard."
46
46
  },
47
47
  {
48
- "path": "test/pack-payload.test.mjs",
48
+ "path": "test/docs.test.mjs",
49
49
  "kind": "pinned",
50
50
  "occurrences": 1,
51
- "why": "Pre-existing generic pack-boundary fixture happens to match the release version. Retain its fixture version; remove this inventory entry when it no longer matches the current release."
51
+ "why": "The landing-cover assertion pins the jsDelivr URL to the published package version, so it advances with the README image pins."
52
52
  },
53
53
  {
54
54
  "path": "test/package-identity.test.mjs",