@work-bridge/work-bridge 0.1.4 → 0.1.5

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 (2) hide show
  1. package/README.md +141 -319
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,11 +1,16 @@
1
1
  # work-bridge
2
2
 
3
- > **Switching between Claude Code, Gemini CLI, OpenCode, and Codex on the same project because of LLM cost?**
4
- > Keep your project-scoped session context visible, export restart artifacts for the next tool, sync skills where supported, and validate MCP before you switch.
3
+ > **Switching between Claude Code, Gemini CLI, OpenCode, and Codex on the same project because of model cost or context limits?**
4
+ > Inspect the source session, then either apply a target-ready handoff directly into the project or export the same handoff into a separate output tree.
5
5
 
6
- `work-bridge` is a local-first portability layer for AI coding-agent workflows. It helps you inspect project-scoped sessions, compare skills across scopes, validate MCP server configs, and export starter artifacts for the next tool. It does not write directly into another tool's native session database.
6
+ `work-bridge` is a local-first handoff tool for AI coding-agent workflows. It reads a source session, normalizes the useful project context, and either:
7
7
 
8
- > **Stability:** `work-bridge` is still early and not fully stable yet. Some migration paths, especially importer-heavy flows in the TUI, are still under active crash triage. If the TUI is unreliable for your case, prefer the CLI subcommands and inspect/import/doctor/export flows directly.
8
+ - applies a target-ready state into project-native files
9
+ - exports the same target-ready state to a separate directory
10
+
11
+ It does **not** write into another tool's home-level session database.
12
+
13
+ > **Stability:** `work-bridge` is still early and not fully stable. Project-native apply and export paths are covered by tests, but some migration paths are still under active refinement. Use `--dry-run` first when trying a new source/target pair.
9
14
 
10
15
  [![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go)](https://golang.org)
11
16
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
@@ -15,412 +20,229 @@
15
20
 
16
21
  ## Why work-bridge?
17
22
 
18
- Modern AI coding agents store their state in incompatible formats:
23
+ Most coding-agent tools keep valuable context in incompatible formats. `work-bridge` keeps the useful project-facing parts portable:
24
+
25
+ | Preserved across tools | Notes |
26
+ |------------------------|-------|
27
+ | Task title and current goal | Normalized from the source session |
28
+ | Session summary and decisions | Added to the target-ready handoff |
29
+ | Project instruction context | Applied into `CLAUDE.md`, `GEMINI.md`, or `AGENTS.md` |
30
+ | Project-scoped skills | Materialized into `.work-bridge/<target>/skills/` |
31
+ | Effective MCP config | Materialized into `.work-bridge/<target>/mcp.json` and patched into supported target project config files |
32
+ | Portable settings context | Source secrets remain redacted |
19
33
 
20
- | What you lose when switching tools | What work-bridge preserves |
21
- |------------------------------------|---------------------------|
22
- | Current task title & goal | Task title & current goal |
23
- | Session summary & decisions | Summary, decisions, failures |
24
- | Project instruction files (AGENTS.md, CLAUDE.md, GEMINI.md…) | All instruction artifacts |
25
- | MCP server configurations | ✅ Inspected & validated MCP configs |
26
- | Portable settings (non-sensitive) | ✅ Settings snapshot (secrets stripped) |
27
- | Touched files & tool events | ✅ File touch history & event log |
34
+ The current design is intentionally simpler than the older import/export pipeline:
35
+
36
+ - `inspect` shows what can be handed off
37
+ - `switch` previews and applies directly into the project
38
+ - `export` writes the same target-ready state into a separate directory
28
39
 
29
40
  ---
30
41
 
31
42
  ## Supported Tools
32
43
 
33
- | Tool | Session import | Export artifacts | MCP inspect/probe | Skill sync target |
34
- |------|:--------------:|:----------------:|:-----------------:|:-----------------:|
35
- | **Claude Code** | ✅ | ✅ | ✅ | ✅ user scope |
36
- | **Gemini CLI** | ✅ | ✅ | ✅ | Not yet |
37
- | **OpenCode** | ✅ | ✅ | ✅ | ✅ user + global scope |
38
- | **Codex CLI** | ✅ | ✅ | ✅ | ✅ user scope |
44
+ | Tool | Inspect source sessions | Apply to project files | Export target-ready tree |
45
+ |------|:-----------------------:|:----------------------:|:------------------------:|
46
+ | **Claude Code** | ✅ | ✅ | ✅ |
47
+ | **Gemini CLI** | ✅ | ✅ | ✅ |
48
+ | **OpenCode** | ✅ | ✅ | ✅ |
49
+ | **Codex CLI** | ✅ | ✅ | ✅ |
39
50
 
40
- Project-local `skills/` and `.github/skills/` content is still discovered across tools. The table above only describes named per-tool sync targets exposed by the current TUI.
51
+ Project-native apply means files inside the project root only. `work-bridge` does **not** recreate native session state in `~/.codex`, `~/.gemini`, `~/.claude`, or `~/.config/opencode`.
41
52
 
42
53
  ---
43
54
 
44
- ## Quick Start
55
+ ## Install
45
56
 
46
- ### Install via npm (recommended)
57
+ ### npm
47
58
 
48
59
  ```bash
49
60
  npm install -g @work-bridge/work-bridge
50
- work-bridge
51
61
  ```
52
62
 
53
- ### Install via Go
63
+ ### Go
54
64
 
55
65
  ```bash
56
66
  go install github.com/jaeyoung0509/work-bridge/cmd/work-bridge@latest
57
67
  ```
58
68
 
59
- ### Download binary
69
+ ### Binary
60
70
 
61
- Grab the latest release binary from [GitHub Releases](https://github.com/jaeyoung0509/work-bridge/releases).
71
+ Download the latest release from [GitHub Releases](https://github.com/jaeyoung0509/work-bridge/releases).
62
72
 
63
73
  ---
64
74
 
65
- ## Usage
66
-
67
- ### TUI (Interactive Mode)
68
-
69
- Just run `work-bridge` in your terminal for the full interactive experience:
70
-
71
- ```bash
72
- work-bridge
73
- ```
74
-
75
- The TUI provides five panels:
76
-
77
- | Panel | What it does |
78
- |-------|-------------|
79
- | **Sessions** | Browse, inspect, import, doctor-check, and export sessions |
80
- | **Projects** | Index project roots from configured workspace roots |
81
- | **Skills** | Compare project/user/global skill coverage and sync across scopes |
82
- | **MCP** | Inspect config locations, merge effective scope, and run runtime validation |
83
- | **Logs** | View recent workspace actions and errors |
84
-
85
- **Mouse support:** pane focus · list selection · preview tab switching · scroll
86
-
87
- ### What It Does Today
88
-
89
- - `Projects` sets the active scope for `Sessions`, `Skills`, and `MCP`
90
- - `Sessions` lets you import, doctor-check, and export starter artifacts for another tool
91
- - `Skills` lets you compare project/user/global scopes and copy skills where a target path exists
92
- - `MCP` lets you inspect merged scope and run runtime probes for stdio, HTTP, and SSE servers
93
-
94
- Current non-goals:
95
-
96
- - No native session-store injection into another tool
97
- - No automatic MCP config rewrite or apply step
98
- - No Gemini-specific skill sync target yet
99
-
100
- ### Migration Workflow
75
+ ## Quick Start
101
76
 
102
- ```
103
- You were using Gemini CLI → now switching to Claude Code
104
- ```
77
+ ### 1. Inspect available source sessions
105
78
 
106
79
  ```bash
107
- # 1. Inspect what Gemini has
108
80
  work-bridge inspect gemini --limit 5
109
-
110
- # 2. Import the latest Gemini session into a portable bundle
111
- work-bridge import --from gemini --session latest --out ./bundle.json
112
-
113
- # 3. Check compatibility with Claude Code
114
- work-bridge doctor --from gemini --session latest --target claude
115
-
116
- # 4. Export Claude starter artifacts
117
- work-bridge export --bundle ./bundle.json --target claude --out ./out/
118
-
119
- # 5. Review the exported files and merge the supplement into your project's CLAUDE.md
120
- ls ./out/
121
81
  ```
122
82
 
123
- The exported `./out/` directory contains:
124
-
125
- - `CLAUDE.work-bridge.md` — project supplement to merge into `CLAUDE.md`
126
- - `MEMORY_NOTE.md` — summary and portability warnings
127
- - `STARTER_PROMPT.md` — copy-paste prompt to resume your task
128
- - `manifest.json` — export manifest with portability warnings
129
-
130
- For Gemini CLI exports, `work-bridge` writes `GEMINI.work-bridge.md` as a starter artifact. Gemini CLI's default context filename is `GEMINI.md`, so you still need to merge or rename the file, or configure Gemini's `context.fileName` explicitly.
131
-
132
- ### Claude E2E Shell Script
133
-
134
- Run a real `gemini -> claude` migration check against a local project without launching the TUI:
83
+ ### 2. Preview a handoff into another tool
135
84
 
136
85
  ```bash
137
- ./scripts/e2e_gemini_to_claude.sh /path/to/repo
86
+ work-bridge switch \
87
+ --from gemini \
88
+ --session latest \
89
+ --to claude \
90
+ --project /path/to/repo \
91
+ --dry-run
138
92
  ```
139
93
 
140
- Useful overrides:
94
+ ### 3. Apply the handoff into the project
141
95
 
142
96
  ```bash
143
- SESSION_ID=<gemini-session-id> OUT_DIR=/tmp/work-bridge-out ./scripts/e2e_gemini_to_claude.sh /path/to/repo
97
+ work-bridge switch \
98
+ --from gemini \
99
+ --session latest \
100
+ --to claude \
101
+ --project /path/to/repo
144
102
  ```
145
103
 
146
- The script will:
147
-
148
- 1. Run `work-bridge --format json inspect gemini`
149
- 2. Pick the latest Gemini session whose `project_root` matches the selected repo
150
- 3. Run `import`, `doctor --target claude`, and `export`
151
- 4. Print project markers, known skill directories, and MCP config locations
152
- 5. Save `inspect`, `detect`, `bundle`, and `doctor` JSON into a debug directory for follow-up
153
-
154
- This is the fastest way to debug real-user migration failures because it bypasses the TUI completely. If the latest Gemini session does not belong to the selected project, the script fails instead of silently using some other repo's session.
155
-
156
- ### Debugging TUI Crashes
157
-
158
- If the TUI exits immediately or appears to "just close", capture the full terminal transcript with `script`:
159
-
160
- ```bash
161
- script -q /tmp/work-bridge-tui.log zsh -lc 'work-bridge'
162
- ```
163
-
164
- This keeps the alternate-screen escape sequences and any panic trace in one file. It is the easiest way to confirm whether the failure happened in the TUI renderer or inside an importer/exporter command.
165
-
166
- To isolate the failing stage without the TUI, run the underlying commands directly:
104
+ ### 4. Or export the same target-ready tree without touching the project
167
105
 
168
106
  ```bash
169
- work-bridge inspect gemini --limit 10
170
- work-bridge import --from gemini --session <id> --out /tmp/bundle.json
171
- work-bridge doctor --from gemini --session <id> --target claude
172
- work-bridge export --bundle /tmp/bundle.json --target claude --out /tmp/out
107
+ work-bridge export \
108
+ --from gemini \
109
+ --session latest \
110
+ --to claude \
111
+ --project /path/to/repo \
112
+ --out /tmp/claude-handoff
173
113
  ```
174
114
 
175
- Known limitation:
176
-
177
- - Some importer paths are still under crash triage. If the TUI path is unstable, prefer the shell script or the direct CLI sequence above until the crash is fixed.
178
-
179
- ### Pack / Unpack (Portable Archives)
115
+ ---
180
116
 
181
- Share your session state across machines or teammates:
117
+ ## What `switch` Applies
182
118
 
183
- ```bash
184
- # Pack a session into a portable .spkg archive
185
- work-bridge pack --from claude --session latest --out ./my-session.spkg
119
+ `switch` writes a managed target state into the project.
186
120
 
187
- # Unpack on another machine and target a different tool
188
- work-bridge unpack --file ./my-session.spkg --target codex --out ./out/
189
- ```
121
+ Managed session output:
190
122
 
191
- ### Detect
123
+ - Claude: `CLAUDE.md` + `.work-bridge/claude/*`
124
+ - Gemini: `GEMINI.md` + `.work-bridge/gemini/*`
125
+ - Codex: `AGENTS.md` + `.work-bridge/codex/*`
126
+ - OpenCode: `AGENTS.md` + `.work-bridge/opencode/*`
192
127
 
193
- ```bash
194
- # Auto-detect all installed tools and project artifacts
195
- work-bridge detect
196
- ```
128
+ Managed skills output:
197
129
 
198
- ### CLI Reference
130
+ - `.work-bridge/<target>/skills/*.md`
131
+ - `.work-bridge/<target>/skills/index.json`
199
132
 
200
- ```
201
- work-bridge [flags]
202
- work-bridge detect
203
- work-bridge inspect <tool> [--limit N]
204
- work-bridge import --from <tool> [--session <id|latest>] [--out <path>]
205
- work-bridge doctor --from <tool> [--session <id|latest>] --target <tool>
206
- work-bridge export --bundle <path> --target <tool> [--out <dir>]
207
- work-bridge pack --from <tool> [--session <id|latest>] --out <path>
208
- work-bridge unpack --file <path> --target <tool> [--out <dir>]
209
- work-bridge version
210
- ```
133
+ Managed MCP output:
211
134
 
212
- **Supported tools:** `claude` · `gemini` · `codex` · `opencode`
135
+ - `.work-bridge/<target>/mcp.json`
136
+ - plus target project config patch where supported:
137
+ - Claude: `.claude/settings.local.json`
138
+ - Gemini: `.gemini/settings.json`
139
+ - OpenCode: `.opencode/opencode.jsonc`
140
+ - Codex: no separate project config patch
213
141
 
214
- ---
142
+ Instruction files are updated through a managed block:
215
143
 
216
- ## How It Works
217
-
218
- ```
219
- ┌─────────────────────────────────────────────────────────────────┐
220
- │ work-bridge │
221
- │ │
222
- │ detect/ ──► inspect/ ──► importer/ ──► domain.SessionBundle │
223
- │ │ │
224
- │ doctor/ │
225
- │ (compatibility check) │
226
- │ │ │
227
- │ exporter/ │
228
- │ (target-native artifacts) │
229
- └─────────────────────────────────────────────────────────────────┘
230
-
231
- SessionBundle fields:
232
- source_tool · source_session_id · project_root
233
- task_title · current_goal · summary
234
- instruction_artifacts (AGENTS.md, CLAUDE.md, GEMINI.md …)
235
- settings_snapshot (sensitive keys redacted automatically)
236
- tool_events · touched_files
237
- decisions · failures · resume_hints
238
- token_stats · provenance · redactions
144
+ ```md
145
+ <!-- work-bridge:start -->
146
+ ...
147
+ <!-- work-bridge:end -->
239
148
  ```
240
149
 
241
- ### Security & Redaction
242
-
243
- `work-bridge` automatically strips sensitive values during import:
244
-
245
- - Key-based: `secret`, `token`, `password`, `auth`, `oauth`, `credential`, `api_key`, `apikey`
246
- - Value-based heuristics: `sk-*`, `ghp_*`, `github_pat_*`, `AIza*` prefixes, and long random-looking strings
247
- - Redacted fields are listed in `bundle.redactions` for transparency — nothing is silently dropped
150
+ Re-running `switch` replaces that block instead of appending duplicate content.
248
151
 
249
152
  ---
250
153
 
251
- ## MCP Validation
154
+ ## What `export` Writes
252
155
 
253
- The **MCP** panel (and `inspect` output) runs a real runtime handshake for supported transports:
156
+ `export` writes the same target-ready structure into a separate output root instead of modifying the source project.
254
157
 
255
- 1. Spawns the server process (stdio) or connects (HTTP / SSE)
256
- 2. Sends `initialize` → waits for capability response
257
- 3. Sends `notifications/initialized`
258
- 4. Counts advertised `resources`, `resourceTemplates`, `tools`, and `prompts`
158
+ Example output for `--to claude --out /tmp/claude-handoff`:
259
159
 
260
- This catches config problems that a static lint pass would miss.
160
+ - `/tmp/claude-handoff/CLAUDE.md`
161
+ - `/tmp/claude-handoff/.claude/settings.local.json`
162
+ - `/tmp/claude-handoff/.work-bridge/claude/manifest.json`
163
+ - `/tmp/claude-handoff/.work-bridge/claude/mcp.json`
164
+ - `/tmp/claude-handoff/.work-bridge/claude/skills/index.json`
261
165
 
262
- `work-bridge` does not apply MCP configs to another tool yet. The current MCP flow is inspect, merge, and probe.
166
+ This is useful when you want a reviewable, portable handoff tree before applying anything to a live repo.
263
167
 
264
168
  ---
265
169
 
266
- ## Configuration
267
-
268
- Configuration is resolved in this priority order:
269
-
270
- 1. CLI flags
271
- 2. Environment variables (`WORK_BRIDGE_` prefix)
272
- 3. `--config <file>`
273
- 4. Auto-discovered config in CWD → then home directory
274
- 5. Built-in defaults
275
-
276
- ### Supported Config Files
277
-
278
- - `.work-bridge.yaml` / `.work-bridge.yml`
279
- - `.work-bridge.toml`
280
- - `.work-bridge.json`
281
-
282
- ### Key Config Fields
283
-
284
- ```yaml
285
- # .work-bridge.yaml
286
- workspace_roots:
287
- - ~/Projects
288
- - ~/work
170
+ ## TUI
289
171
 
290
- paths:
291
- codex: ~/.local/share/codex
292
- gemini: ~/.config/gemini
293
- claude: ~/.claude
294
- opencode: ~/.config/opencode
172
+ Run `work-bridge` without arguments to open the interactive migration console:
295
173
 
296
- output:
297
- export_dir: ./out/work-bridge
298
- package_path: ./session.spkg
299
- unpack_dir: ./out/unpacked
300
-
301
- redaction:
302
- detect_sensitive_values: true
303
- additional_sensitive_keys:
304
- - my_internal_token
174
+ ```bash
175
+ work-bridge
305
176
  ```
306
177
 
307
- ### JSON Example
308
-
309
- ```json
310
- {
311
- "format": "json",
312
- "workspace_roots": ["~/Projects", "~/work"],
313
- "paths": {
314
- "codex": "/Users/me/.local/share/codex"
315
- },
316
- "output": {
317
- "export_dir": "./out/work-bridge"
318
- }
319
- }
320
- ```
178
+ The TUI is now focused on one workflow:
321
179
 
322
- ### Environment Variables
180
+ - choose a source session from the current project
181
+ - choose a target tool
182
+ - preview the handoff
183
+ - apply or export
323
184
 
324
- | Variable | Config Key |
325
- |----------|-----------|
326
- | `WORK_BRIDGE_FORMAT` | `format` |
327
- | `WORK_BRIDGE_WORKSPACE_ROOTS` | `workspace_roots` |
328
- | `WORK_BRIDGE_PATHS_CODEX` | `paths.codex` |
329
- | `WORK_BRIDGE_PATHS_GEMINI` | `paths.gemini` |
330
- | `WORK_BRIDGE_PATHS_CLAUDE` | `paths.claude` |
331
- | `WORK_BRIDGE_PATHS_OPENCODE` | `paths.opencode` |
332
- | `WORK_BRIDGE_OUTPUT_EXPORT_DIR` | `output.export_dir` |
185
+ Key actions:
333
186
 
334
- ---
187
+ - `Enter` preview
188
+ - `a` apply into the project
189
+ - `e` export into `.work-bridge/exports/<target>/`
190
+ - `r` refresh
191
+ - `?` help
192
+ - `q` quit
335
193
 
336
- ## Repository Layout
194
+ User-facing statuses are simplified:
337
195
 
338
- ```
339
- cmd/work-bridge/ CLI entrypoint (main.go)
340
- internal/
341
- cli/ Cobra/Viper root command, TUI backend wiring
342
- app.go App struct, Run(), Config
343
- root_tui.go TUI launch logic and Backend wiring
344
- legacy_commands.go detect/inspect/import/doctor/export commands
345
- package_commands.go pack/unpack commands
346
- root_tui_backend.go All TUI backend action implementations
347
- tui/ Bubble Tea v2 interactive workspace
348
- domain/ Portable bundle types (SessionBundle, Tool, …)
349
- importer/ Tool-specific session importers
350
- claude.go / codex.go / gemini.go / opencode.go
351
- normalizer.go Signal extraction & normalization
352
- signals.go Decision/failure/hint signal detection
353
- exporter/ Target-native artifact generation
354
- detect/ Tool installation & project artifact detection
355
- inspect/ Session listing for each tool
356
- doctor/ Cross-tool compatibility analysis
357
- catalog/ Skills catalog (project/user/global scopes)
358
- capability/ MCP capability registry
359
- packagex/ .spkg pack/unpack (zip-based)
360
- platform/ FS, clock, archive, env, redact utilities
361
- testdata/ Fixtures and golden outputs
362
- scripts/
363
- install.cjs npm postinstall binary downloader
364
- ```
196
+ - `READY`
197
+ - `APPLIED`
198
+ - `PARTIAL`
199
+ - `ERROR`
365
200
 
366
201
  ---
367
202
 
368
- ## Building from Source
369
-
370
- ```bash
371
- git clone https://github.com/jaeyoung0509/work-bridge.git
372
- cd work-bridge
373
-
374
- # Build
375
- make build
376
- ./bin/work-bridge
377
-
378
- # Test
379
- make test
203
+ ## CLI Reference
380
204
 
381
- # Lint
382
- make lint
383
-
384
- # Format
385
- make fmt
205
+ ```text
206
+ work-bridge [flags]
207
+ work-bridge inspect <tool> [--limit N]
208
+ work-bridge switch --from <tool> --session <id|latest> --to <tool> --project <path> [--dry-run] [--no-skills] [--no-mcp] [--session-only]
209
+ work-bridge export --from <tool> --session <id|latest> --to <tool> --project <path> --out <dir> [--dry-run] [--no-skills] [--no-mcp] [--session-only]
210
+ work-bridge version
386
211
  ```
387
212
 
388
- **Requirements:** Go 1.21+
213
+ Supported tools:
214
+
215
+ - `claude`
216
+ - `gemini`
217
+ - `codex`
218
+ - `opencode`
389
219
 
390
220
  ---
391
221
 
392
- ## Publishing a Release
222
+ ## Limits
393
223
 
394
- Releases use [GoReleaser](https://goreleaser.com/). A GitHub Actions workflow triggers on version tags:
224
+ Current non-goals in this slice:
395
225
 
396
- ```bash
397
- git tag v0.1.0
398
- git push origin v0.1.0
399
- ```
226
+ - no home-level session-store injection
227
+ - no recreation of a target tool's private resume database
228
+ - no promise that every source-specific tool event becomes meaningful in every target
400
229
 
401
- GoReleaser builds cross-platform binaries (`darwin/amd64`, `darwin/arm64`, `linux/amd64`, `linux/arm64`, `windows/amd64`, `windows/arm64`) and uploads them as `.tar.gz` / `.zip` archives to the GitHub Release.
230
+ Current behavior to be aware of:
402
231
 
403
- The npm package wrapper then downloads the correct binary at install time via `scripts/install.cjs`.
232
+ - `switch` is project-native apply, not native session resurrection
233
+ - `export` is out-of-project handoff generation, not a bundle archive format
234
+ - `--session-only` disables skills and MCP materialization
235
+ - `--dry-run` is the safest first step for new tool pairs
404
236
 
405
237
  ---
406
238
 
407
- ## Contributing
408
-
409
- See [CONTRIBUTING.md](./CONTRIBUTING.md).
239
+ ## Security and Redaction
410
240
 
411
- **Good first areas:**
412
- - Add a new tool importer under `internal/importer/`
413
- - Extend `internal/exporter/` with a new target format
414
- - Improve MCP runtime validation for new transport types
415
- - Add fixture-backed tests for edge cases
241
+ Sensitive values are stripped during source import before a handoff is built.
416
242
 
417
- Principles:
418
- - Local-first, no network calls during normal operation
419
- - Deterministic output for fixture-backed tests
420
- - Sensitive data must never leave the machine unredacted
421
-
422
- ---
243
+ Examples include:
423
244
 
424
- ## License
245
+ - keys containing `secret`, `token`, `password`, `auth`, `credential`, `api_key`
246
+ - values matching common token-like patterns such as `sk-*`, `ghp_*`, `github_pat_*`, `AIza*`
425
247
 
426
- MIT © [jaeyoung0509](https://github.com/jaeyoung0509)
248
+ Redactions stay visible as warnings in the normalized handoff so you can see what was intentionally omitted.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@work-bridge/work-bridge",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Portable session migration CLI for Claude Code, Gemini CLI, OpenCode, and Codex CLI.",
5
5
  "homepage": "https://github.com/jaeyoung0509/work-bridge",
6
6
  "repository": {