@cyber-dash-tech/revela 0.18.13 → 0.18.15

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **English** | [中文](README.zh-CN.md)
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/@cyber-dash-tech/revela)](https://www.npmjs.com/package/@cyber-dash-tech/revela) [![license](https://img.shields.io/npm/l/@cyber-dash-tech/revela)](LICENSE) [![tests](https://img.shields.io/badge/tests-729%20passing-brightgreen)](tests/) [![Codex MCP](https://img.shields.io/badge/Codex-MCP-blue)](https://github.com/openai/codex) [![Bun](https://img.shields.io/badge/Bun-%E2%89%A51.0-orange)](https://bun.sh)
5
+ [![npm version](https://img.shields.io/npm/v/@cyber-dash-tech/revela)](https://www.npmjs.com/package/@cyber-dash-tech/revela) [![license](https://img.shields.io/npm/l/@cyber-dash-tech/revela)](LICENSE) [![tests](https://img.shields.io/badge/tests-730%20passing-brightgreen)](tests/) [![Codex MCP](https://img.shields.io/badge/Codex-MCP-blue)](https://github.com/openai/codex) [![Bun](https://img.shields.io/badge/Bun-%E2%89%A51.0-orange)](https://bun.sh)
6
6
 
7
7
  <p align="center">
8
8
  <img src="assets/img/logo-wordmark.png" alt="Revela" width="320" />
@@ -19,7 +19,7 @@ In your local workspace, Revela reviews materials, saves source-linked research,
19
19
  Requirements:
20
20
 
21
21
  - The Codex CLI must be installed and the `codex` command must be available in your shell.
22
- - Your environment must be able to run `npx`; Revela uses `npx -y @cyber-dash-tech/revela@0.18.13 mcp` to start the MCP server.
22
+ - Your environment must be able to run `bun`; Revela uses `bun ./mcp/revela-server.ts` from the installed Codex plugin cache to start the MCP server.
23
23
  - For interactive Review Apply actions, `codex exec` must also work because the Review UI uses it after saved comments are applied.
24
24
 
25
25
  Optional preflight:
@@ -27,10 +27,10 @@ Optional preflight:
27
27
  ```bash
28
28
  codex --version
29
29
  codex exec --help
30
- npx --version
30
+ bun --version
31
31
  ```
32
32
 
33
- If `npx` fails with an npm cache permission error, repair the cache ownership or use a writable cache for local checks:
33
+ If npm package checks fail with an npm cache permission error, repair the cache ownership or use a writable cache for local checks:
34
34
 
35
35
  ```bash
36
36
  sudo chown -R "$(id -u):$(id -g)" ~/.npm
@@ -40,11 +40,11 @@ npm_config_cache=/tmp/revela-npm-cache bun run smoke:mcp-pack
40
40
  Install Revela through the Codex Git marketplace:
41
41
 
42
42
  ```bash
43
- codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.18.13
43
+ codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.18.15
44
44
  codex plugin add revela@revela
45
45
  ```
46
46
 
47
- The Git marketplace install provides the Codex plugin shell, skills, hooks, and MCP configuration. When Codex starts the Revela MCP server for the first time, it runs `npx -y @cyber-dash-tech/revela@0.18.13 mcp` so npm can fetch the published package and its dependencies.
47
+ The Git marketplace install provides the Codex plugin shell, skills, hooks, and MCP configuration. When Codex starts the Revela MCP server, it runs `bun ./mcp/revela-server.ts` from the installed plugin cache and resolves the checked-out marketplace runtime.
48
48
 
49
49
  You do not need to run `bun install` inside the Codex marketplace clone.
50
50
 
@@ -52,7 +52,7 @@ Start a new Codex thread after installing so Codex loads the Revela skills, MCP
52
52
 
53
53
  Codex uses nine Revela skills: `revela` for routing the next workflow step, `revela-spec` for writing root-level `spec.md`, `revela-helper` for status and active design/domain, `revela-design` for custom design creation/validation/activation, `revela-domain` for custom narrative domain creation/validation/activation, `revela-research` for local and web research saved under `researches/` plus the design-aware `deck-plan.md` handoff, `revela-make-deck` for generating `decks/*.html` from an existing plan, `revela-review` for the Review UI, and `revela-export` for PDF/PPTX/PNG.
54
54
 
55
- For release-aligned local validation, run `bun run smoke:mcp-pack`. It packs the current checkout to a temporary npm tarball and starts the MCP server through `npx`, matching the published Codex launcher path without requiring a registry publish.
55
+ For release-aligned local validation, run `bun run smoke:mcp-pack`. It packs the current checkout to a temporary npm tarball, extracts it, and starts the MCP server through the packaged Codex plugin launcher path without requiring a registry publish.
56
56
 
57
57
  #### Codex Upgrade
58
58
 
@@ -74,7 +74,7 @@ codex plugin marketplace upgrade revela
74
74
  codex plugin add revela@revela
75
75
  ```
76
76
 
77
- The Git marketplace ref and `.mcp.json` npm pin are part of the same release artifact. Start a new Codex thread after upgrading so Codex reloads the Revela skills, MCP tools, hooks, and runtime pin.
77
+ The Git marketplace ref and `.mcp.json` plugin launcher are part of the same release artifact. Start a new Codex thread after upgrading so Codex reloads the Revela skills, MCP tools, hooks, and runtime launcher.
78
78
 
79
79
  ## Built-In Designs
80
80
 
@@ -108,7 +108,7 @@ Revela includes built-in deck designs:
108
108
 
109
109
  To switch designs in Codex, ask:
110
110
 
111
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), use summit as the design.
111
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), use summit as the design.
112
112
 
113
113
  In Codex, ask Revela to list or switch designs; the plugin uses the active design when making decks.
114
114
 
@@ -116,7 +116,7 @@ In Codex, ask Revela to list or switch designs; the plugin uses the active desig
116
116
 
117
117
  Domains add topic-specific communication guidance, such as consulting, product, or investor communication. Use them when you want Revela to adapt deck framing to a specific context.
118
118
 
119
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), list available domains.
119
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), list available domains.
120
120
 
121
121
  In Codex, ask Revela to list or switch domains; the active domain guides deck framing during init, research, and planning.
122
122
 
@@ -126,57 +126,57 @@ Use these prompts in Codex from the workspace that contains your source material
126
126
 
127
127
  1. Choose the narrative domain before authoring so Revela frames the audience, decision, risks, and objections for your context.
128
128
 
129
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), use consulting as the domain.
129
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), use consulting as the domain.
130
130
 
131
131
  2. Choose the deck design before rendering so generated artifacts use the intended visual language.
132
132
 
133
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), use summit as the design.
133
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), use summit as the design.
134
134
 
135
135
  3. Create a custom design when you want a different visual direction.
136
136
 
137
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), create a new design named neon-finance with a crisp financial-dashboard style: dark surfaces, precise grids, and bright green accents.
137
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), create a new design named neon-finance with a crisp financial-dashboard style: dark surfaces, precise grids, and bright green accents.
138
138
 
139
139
  Revela may ask for references or constraints, then creates and validates the design. When it is ready, switch to it:
140
140
 
141
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), use neon-finance as the design.
141
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), use neon-finance as the design.
142
142
 
143
143
  4. Initialize local material intake. Init scans, extracts, and reviews workspace sources; it does not create a Narrative Vault.
144
144
 
145
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), help me init this workspace from the local materials.
145
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), help me init this workspace from the local materials.
146
146
 
147
147
  5. Research source-linked deck inputs and save findings.
148
148
 
149
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), research the public evidence and examples needed for this deck.
149
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), research the public evidence and examples needed for this deck.
150
150
 
151
151
  6. Create or update the deck plan before generating HTML so slide order, chapter structure, source links, unresolved inputs, source limitations, and visual intent are explicit.
152
152
 
153
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), create or update the deck plan before generating HTML.
153
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), create or update the deck plan before generating HTML.
154
154
 
155
155
  7. Make an HTML deck from the current deck plan.
156
156
 
157
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), make the deck from the current deck plan.
157
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), make the deck from the current deck plan.
158
158
 
159
159
  8. Review the generated deck for Artifact QA and targeted edits.
160
160
 
161
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), review the generated deck.
161
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), review the generated deck.
162
162
 
163
163
  9. Export a PDF after deck QA passes.
164
164
 
165
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), export the deck to PDF.
165
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), export the deck to PDF.
166
166
 
167
167
  10. Export an editable PPTX after deck QA passes.
168
168
 
169
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), export the deck to PPTX.
169
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), export the deck to PPTX.
170
170
 
171
171
  11. Export per-slide PNG files after deck QA passes.
172
172
 
173
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), export the deck to PNG.
173
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), export the deck to PNG.
174
174
 
175
175
  ## Review A Deck
176
176
 
177
177
  Use Review after generating an HTML deck:
178
178
 
179
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md), review the generated deck.
179
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md), review the generated deck.
180
180
 
181
181
  <p align="center">
182
182
  <img src="assets/img/review-ui.png" alt="Revela Review UI showing @ref comments and deck QA" width="900" />
package/README.zh-CN.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [English](README.md) | **中文**
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/@cyber-dash-tech/revela)](https://www.npmjs.com/package/@cyber-dash-tech/revela) [![license](https://img.shields.io/npm/l/@cyber-dash-tech/revela)](LICENSE) [![tests](https://img.shields.io/badge/tests-729%20passing-brightgreen)](tests/) [![Codex MCP](https://img.shields.io/badge/Codex-MCP-blue)](https://github.com/openai/codex) [![Bun](https://img.shields.io/badge/Bun-%E2%89%A51.0-orange)](https://bun.sh)
5
+ [![npm version](https://img.shields.io/npm/v/@cyber-dash-tech/revela)](https://www.npmjs.com/package/@cyber-dash-tech/revela) [![license](https://img.shields.io/npm/l/@cyber-dash-tech/revela)](LICENSE) [![tests](https://img.shields.io/badge/tests-730%20passing-brightgreen)](tests/) [![Codex MCP](https://img.shields.io/badge/Codex-MCP-blue)](https://github.com/openai/codex) [![Bun](https://img.shields.io/badge/Bun-%E2%89%A51.0-orange)](https://bun.sh)
6
6
 
7
7
  <p align="center">
8
8
  <img src="assets/img/logo-wordmark.png" alt="Revela" width="320" />
@@ -19,7 +19,7 @@ Revela 是 Codex plugin,用来把来源材料、调研、数据和用户意图
19
19
  环境要求:
20
20
 
21
21
  - 需要已安装 Codex CLI,并且 shell 中可以执行 `codex`。
22
- - 环境中需要可以执行 `npx`;Revela 会用 `npx -y @cyber-dash-tech/revela@0.18.13 mcp` 启动 MCP server。
22
+ - 环境中需要可以执行 `bun`;Revela 会从已安装的 Codex plugin cache 中运行 `bun ./mcp/revela-server.ts` 来启动 MCP server。
23
23
  - 如果使用 Review UI 的 Apply,需要 `codex exec` 可用;评论会先保存,点击 Apply 后才执行修复。
24
24
 
25
25
  可选的安装前检查:
@@ -27,10 +27,10 @@ Revela 是 Codex plugin,用来把来源材料、调研、数据和用户意图
27
27
  ```bash
28
28
  codex --version
29
29
  codex exec --help
30
- npx --version
30
+ bun --version
31
31
  ```
32
32
 
33
- 如果 `npx` npm cache 权限错误,可以修复 cache owner,或在本地检查时使用可写 cache:
33
+ 如果 npm package 检查时报 npm cache 权限错误,可以修复 cache owner,或在本地检查时使用可写 cache:
34
34
 
35
35
  ```bash
36
36
  sudo chown -R "$(id -u):$(id -g)" ~/.npm
@@ -40,11 +40,11 @@ npm_config_cache=/tmp/revela-npm-cache bun run smoke:mcp-pack
40
40
  通过 Codex Git marketplace 安装 Revela:
41
41
 
42
42
  ```bash
43
- codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.18.13
43
+ codex plugin marketplace add https://github.com/cyber-dash-tech/revela --ref v0.18.15
44
44
  codex plugin add revela@revela
45
45
  ```
46
46
 
47
- Git marketplace 安装的是 Codex plugin 壳、skills、hooks 和 MCP 配置。Codex 第一次启动 Revela MCP server 时,会运行 `npx -y @cyber-dash-tech/revela@0.18.13 mcp`,由 npm 获取已发布 package 及其 dependencies
47
+ Git marketplace 安装的是 Codex plugin 壳、skills、hooks 和 MCP 配置。Codex 启动 Revela MCP server 时,会从已安装的 plugin cache 中运行 `bun ./mcp/revela-server.ts`,并解析该 marketplace checkout 中的 runtime
48
48
 
49
49
  不需要在 Codex marketplace clone 里运行 `bun install`。
50
50
 
@@ -52,7 +52,7 @@ Git marketplace 安装的是 Codex plugin 壳、skills、hooks 和 MCP 配置。
52
52
 
53
53
  Codex 使用九个 Revela skills:`revela` 路由下一步 workflow,`revela-spec` 产出根目录 `spec.md`,`revela-helper` 查看状态和 active design/domain,`revela-design` 创建、验证、激活 custom design,`revela-domain` 创建、验证、激活 custom narrative domain,`revela-research` 调研本地与网络资料、保存到 `researches/`,并产出 design-aware `deck-plan.md` handoff;`revela-make-deck` 基于已有 plan 生成 `decks/*.html`,`revela-review` 打开 Review UI,`revela-export` 导出 PDF/PPTX/PNG。
54
54
 
55
- 如果要按发布路径做本地验证,运行 `bun run smoke:mcp-pack`。它会把当前 checkout 打成临时 npm tarball,再通过 `npx` 启动 MCP server,不需要先发布到 registry。
55
+ 如果要按发布路径做本地验证,运行 `bun run smoke:mcp-pack`。它会把当前 checkout 打成临时 npm tarball,解包后通过打包出的 Codex plugin launcher 路径启动 MCP server,不需要先发布到 registry。
56
56
 
57
57
  #### Codex 升级
58
58
 
@@ -74,7 +74,7 @@ codex plugin marketplace upgrade revela
74
74
  codex plugin add revela@revela
75
75
  ```
76
76
 
77
- Git marketplace ref 和 `.mcp.json` npm pin 属于同一个 release artifact。升级后开启一个新的 Codex thread,让 Codex 重新加载 Revela skills、MCP tools、hooks 和 runtime pin
77
+ Git marketplace ref 和 `.mcp.json` plugin launcher 属于同一个 release artifact。升级后开启一个新的 Codex thread,让 Codex 重新加载 Revela skills、MCP tools、hooks 和 runtime launcher
78
78
 
79
79
  ## 内置设计
80
80
 
@@ -108,7 +108,7 @@ Revela 内置多个 deck design:
108
108
 
109
109
  在 Codex 中切换 design,可以这样问:
110
110
 
111
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),use summit as design.
111
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),use summit as design.
112
112
 
113
113
  在 Codex 中,可以直接让 Revela 列出或切换 design;生成 deck 时会使用 active design。
114
114
 
@@ -116,7 +116,7 @@ Revela 内置多个 deck design:
116
116
 
117
117
  Domain 提供特定场景的沟通 guidance,例如 consulting、product 或 investor communication。需要让 Revela 按具体沟通场景调整 deck framing 时使用。
118
118
 
119
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),列出 available domains。
119
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),列出 available domains。
120
120
 
121
121
  在 Codex 中,可以直接让 Revela 列出或切换 domain;active domain 会用于 init、research 和 deck planning 阶段的 framing。
122
122
 
@@ -126,57 +126,57 @@ Domain 提供特定场景的沟通 guidance,例如 consulting、product 或 in
126
126
 
127
127
  1. 先选择 domain,让 Revela 按你的沟通场景 framing 受众、决策、风险和潜在质疑。
128
128
 
129
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),use consulting as domain.
129
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),use consulting as domain.
130
130
 
131
131
  2. 再选择 design,让后续生成的 deck 使用指定视觉风格。
132
132
 
133
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),use summit as design.
133
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),use summit as design.
134
134
 
135
135
  3. 如果需要不同的视觉方向,可以创建一个自定义 design。
136
136
 
137
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),创建一个名为 neon-finance 的新 design:金融仪表盘风格,深色界面、精密网格、亮绿色重点色。
137
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),创建一个名为 neon-finance 的新 design:金融仪表盘风格,深色界面、精密网格、亮绿色重点色。
138
138
 
139
139
  Revela 可能会继续询问参考图、风格约束或禁忌项,然后创建并校验 design。创建完成后再切换使用:
140
140
 
141
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),使用 neon-finance 作为 design。
141
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),使用 neon-finance 作为 design。
142
142
 
143
143
  4. 初始化本地 material intake。Init 会扫描、抽取并审阅 workspace source;它不会创建 Narrative Vault。
144
144
 
145
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),帮我 init 这个 workspace,先读本地材料。
145
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),帮我 init 这个 workspace,先读本地材料。
146
146
 
147
147
  5. 针对 deck 所需输入做 research,并保存带来源的 findings。
148
148
 
149
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),research 这个 deck 需要的公开证据、案例和 source。
149
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),research 这个 deck 需要的公开证据、案例和 source。
150
150
 
151
151
  6. 先创建或更新 deck plan,明确 slide 顺序、章节结构、source links、unresolved inputs、source limitations 和 visual intent,再生成 HTML。
152
152
 
153
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),生成 HTML 前先 create or update deck plan。
153
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),生成 HTML 前先 create or update deck plan。
154
154
 
155
155
  7. 基于当前 deck plan 生成 HTML deck。
156
156
 
157
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),基于当前 deck plan make deck。
157
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),基于当前 deck plan make deck。
158
158
 
159
159
  8. Review 生成后的 deck,检查 Artifact QA,并做定向修改。
160
160
 
161
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),review 生成好的 deck。
161
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),review 生成好的 deck。
162
162
 
163
163
  9. QA 通过后导出 PDF。
164
164
 
165
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),把 deck export 成 PDF。
165
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),把 deck export 成 PDF。
166
166
 
167
167
  10. QA 通过后导出可编辑 PPTX。
168
168
 
169
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),把 deck export 成 PPTX。
169
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),把 deck export 成 PPTX。
170
170
 
171
171
  11. QA 通过后导出每页 PNG。
172
172
 
173
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),把 deck export 成 PNG。
173
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),把 deck export 成 PNG。
174
174
 
175
175
  ## Review Deck
176
176
 
177
177
  生成 HTML deck 后可以进入 Review:
178
178
 
179
- > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.1.0+codex.20260524164007/skills/revela/SKILL.md),review 生成好的 deck。
179
+ > [$revela:revela](/Users/mengdigao/.codex/plugins/cache/revela/revela/0.18.15/skills/revela/SKILL.md),review 生成好的 deck。
180
180
 
181
181
  <p align="center">
182
182
  <img src="assets/img/review-ui.png" alt="Revela Review UI showing @ref comments and deck QA" width="900" />
package/bin/revela.ts CHANGED
File without changes
@@ -22,6 +22,10 @@ import { annotateVisualEditTargets, applyVisualTargetChanges, type VisualEditTar
22
22
  const TOKEN_BYTES = 24
23
23
  const SESSION_TTL_MS = 2 * 60 * 60 * 1000
24
24
  const IDLE_STOP_MS = 30 * 60 * 1000
25
+ const REVIEW_UI_ASSET_ROUTE = "/__revela_ui_asset"
26
+ const REVIEW_UI_ASSETS = new Map<string, string>([
27
+ ["/logo-wordmark.png", resolve(dirname(fileURLToPath(import.meta.url)), "../../assets/img/logo-wordmark.png")],
28
+ ])
25
29
  export const REVIEW_REF_LABEL_MAX_DISPLAY_CHARS = 32
26
30
  export const LIVE_EDITOR_IDLE_MS = 10 * 1000
27
31
 
@@ -199,6 +203,10 @@ async function handleRequest(req: Request): Promise<Response> {
199
203
 
200
204
  if (url.pathname === "/health") return textResponse("ok")
201
205
 
206
+ if (url.pathname.startsWith(`${REVIEW_UI_ASSET_ROUTE}/`) && (req.method === "GET" || req.method === "HEAD")) {
207
+ return handleReviewUiAsset(url.pathname, req.method)
208
+ }
209
+
202
210
  if (url.pathname === "/refine" && req.method === "GET") {
203
211
  const session = validateSession(url.searchParams.get("token"))
204
212
  if (!session.ok) return session.response
@@ -608,6 +616,21 @@ function handleAsset(session: EditSession, id: string | null, method: string): R
608
616
  return new Response(new Uint8Array(readFileSync(asset.absoluteFile)), { status: 200, headers })
609
617
  }
610
618
 
619
+ function handleReviewUiAsset(pathname: string, method: string): Response {
620
+ const assetPath = pathname.slice(REVIEW_UI_ASSET_ROUTE.length)
621
+ const absoluteFile = REVIEW_UI_ASSETS.get(assetPath)
622
+ if (!absoluteFile || !existsSync(absoluteFile) || !statSync(absoluteFile).isFile()) {
623
+ return textResponse("Asset not found", 404)
624
+ }
625
+
626
+ const headers = {
627
+ "content-type": mimeTypeForPath(absoluteFile),
628
+ "cache-control": "no-store, max-age=0",
629
+ }
630
+ if (method === "HEAD") return new Response(null, { status: 200, headers })
631
+ return new Response(new Uint8Array(readFileSync(absoluteFile)), { status: 200, headers })
632
+ }
633
+
611
634
  function rewriteLocalAssetRefs(content: string, input: { session: EditSession; sourceFile: string; contentType: "html" | "css" }): string {
612
635
  const baseDir = dirname(input.sourceFile)
613
636
  let rewritten = rewriteCssUrls(content, input.session, baseDir)
@@ -1367,7 +1390,7 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1367
1390
  body { margin: 0; background: #f8fafc; color: #111827; height: 100vh; overflow: hidden; }
1368
1391
  body.resizing { cursor: col-resize; user-select: none; }
1369
1392
  body.resizing iframe, body.resizing .hitbox { pointer-events: none; }
1370
- .app { --editor-width: 376px; position: relative; display: grid; grid-template-columns: minmax(0, 1fr) var(--editor-width); height: 100vh; }
1393
+ .app { --editor-width: 620px; position: relative; display: grid; grid-template-columns: minmax(0, 1fr) var(--editor-width); height: 100vh; }
1371
1394
  .preview { position: relative; min-width: 0; background: #eef2f7; }
1372
1395
  .resize-handle { position: absolute; top: 0; bottom: 0; right: calc(var(--editor-width) - 7px); width: 14px; z-index: 5; cursor: col-resize; background: transparent; }
1373
1396
  .resize-handle::before { content: ""; position: absolute; left: 50%; top: 50%; width: 4px; height: 44px; border-radius: 999px; transform: translate(-50%, -50%); background: rgba(148,163,184,.34); box-shadow: 0 1px 2px rgba(15,23,42,.06); transition: background .16s ease, height .16s ease, box-shadow .16s ease; }
@@ -1392,7 +1415,8 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1392
1415
  aside { position: relative; display: flex; flex-direction: column; gap: 16px; padding: 18px; background: #ffffff; overflow: hidden; border-left: 1px solid #e2e8f0; box-shadow: -10px 0 28px rgba(15,23,42,.06); }
1393
1416
  aside button, aside input, aside select, aside textarea, aside .comment-editor { font-family: inherit; }
1394
1417
  h1 { margin: 0; font-size: 17px; line-height: 1.2; letter-spacing: 0; color: #0f172a; }
1395
- .wordmark { font-family: inherit; font-size: 17px; letter-spacing: 0; font-weight: 800; }
1418
+ .review-brand { display: inline-flex; align-items: center; min-width: 0; max-width: 100%; }
1419
+ .wordmark-logo { display: block; width: auto; height: 30px; max-width: min(210px, 82%); object-fit: contain; flex: 0 1 auto; }
1396
1420
  .panel { display: flex; flex-direction: column; gap: 10px; }
1397
1421
  .tabs { display: flex; gap: 4px; padding: 3px; border: 1px solid #e2e8f0; border-radius: 999px; background: #f8fafc; }
1398
1422
  .tab { width: auto; min-width: 112px; padding: 8px 16px; border: 1px solid transparent; border-radius: 999px; background: transparent; color: #64748b; box-shadow: none; font-weight: 750; }
@@ -1558,7 +1582,7 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1558
1582
  <div id="resizeHandle" class="resize-handle" role="separator" aria-label="Resize editor panel" aria-orientation="vertical" title="Drag to resize editor. Double-click to reset."></div>
1559
1583
  <aside>
1560
1584
  <div>
1561
- <h1><span class="wordmark">REVELA</span> Review</h1>
1585
+ <h1 class="review-brand" aria-label="Revela Review"><img class="wordmark-logo" src="${REVIEW_UI_ASSET_ROUTE}/logo-wordmark.png" alt="Revela" /></h1>
1562
1586
  </div>
1563
1587
  <div id="selectionSummary" class="selection-summary sr-only" aria-live="polite"><strong>Selection</strong><span>No references selected.</span><div id="selectionChips" class="selection-chips"></div></div>
1564
1588
  <div class="tabs" role="tablist" aria-label="Review mode">
@@ -1629,7 +1653,7 @@ export function renderRefineShell(token: string, defaultMode: RefineMode = "edit
1629
1653
  const codexReview = reviewSurface === 'codex';
1630
1654
  const COMMENT_STALE_MS = 60000;
1631
1655
  const EDITOR_WIDTH_KEY = 'revela-edit-editor-width';
1632
- const DEFAULT_EDITOR_WIDTH = 376;
1656
+ const DEFAULT_EDITOR_WIDTH = 620;
1633
1657
  const MIN_EDITOR_WIDTH = 320;
1634
1658
  const MAX_EDITOR_WIDTH = 620;
1635
1659
  const REFERENCE_COLORS = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyber-dash-tech/revela",
3
- "version": "0.18.13",
3
+ "version": "0.18.15",
4
4
  "description": "Codex-first CLI/MCP workspace for trusted narrative artifacts from local sources, research, and evidence",
5
5
  "type": "module",
6
6
  "main": "./index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revela",
3
- "version": "0.1.0+codex.20260524164007",
3
+ "version": "0.18.15",
4
4
  "description": "Use Revela in Codex to specify, research, plan, make, review, and export trusted narrative decision artifacts.",
5
5
  "author": {
6
6
  "name": "cyber-dash-tech",
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "mcpServers": {
3
3
  "revela": {
4
- "command": "npx",
5
- "args": ["-y", "@cyber-dash-tech/revela@0.18.13", "mcp"]
4
+ "cwd": ".",
5
+ "command": "bun",
6
+ "args": ["./mcp/revela-server.ts"]
6
7
  }
7
8
  }
8
9
  }
@@ -395,7 +395,7 @@ async function handle(req: JsonRpcRequest): Promise<any | undefined> {
395
395
  return result(req.id, {
396
396
  protocolVersion: req.params?.protocolVersion || "2024-11-05",
397
397
  capabilities: { tools: {} },
398
- serverInfo: { name: "revela", version: "0.1.0" },
398
+ serverInfo: { name: "revela", version: "0.18.15" },
399
399
  })
400
400
  }
401
401
  if (req.method === "tools/list") {