@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.
- package/README.md +141 -319
- 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
|
|
4
|
-
>
|
|
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
|
|
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
|
-
|
|
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
|
[](https://golang.org)
|
|
11
16
|
[](https://opensource.org/licenses/MIT)
|
|
@@ -15,412 +20,229 @@
|
|
|
15
20
|
|
|
16
21
|
## Why work-bridge?
|
|
17
22
|
|
|
18
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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 |
|
|
34
|
-
|
|
35
|
-
| **Claude Code** | ✅ | ✅ | ✅ |
|
|
36
|
-
| **Gemini CLI** | ✅ | ✅ | ✅ |
|
|
37
|
-
| **OpenCode** | ✅ | ✅ | ✅ |
|
|
38
|
-
| **Codex CLI** | ✅ | ✅ | ✅ |
|
|
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-
|
|
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
|
-
##
|
|
55
|
+
## Install
|
|
45
56
|
|
|
46
|
-
###
|
|
57
|
+
### npm
|
|
47
58
|
|
|
48
59
|
```bash
|
|
49
60
|
npm install -g @work-bridge/work-bridge
|
|
50
|
-
work-bridge
|
|
51
61
|
```
|
|
52
62
|
|
|
53
|
-
###
|
|
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
|
-
###
|
|
69
|
+
### Binary
|
|
60
70
|
|
|
61
|
-
|
|
71
|
+
Download the latest release from [GitHub Releases](https://github.com/jaeyoung0509/work-bridge/releases).
|
|
62
72
|
|
|
63
73
|
---
|
|
64
74
|
|
|
65
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
94
|
+
### 3. Apply the handoff into the project
|
|
141
95
|
|
|
142
96
|
```bash
|
|
143
|
-
|
|
97
|
+
work-bridge switch \
|
|
98
|
+
--from gemini \
|
|
99
|
+
--session latest \
|
|
100
|
+
--to claude \
|
|
101
|
+
--project /path/to/repo
|
|
144
102
|
```
|
|
145
103
|
|
|
146
|
-
|
|
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
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
|
|
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
|
-
|
|
117
|
+
## What `switch` Applies
|
|
182
118
|
|
|
183
|
-
|
|
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
|
-
|
|
188
|
-
work-bridge unpack --file ./my-session.spkg --target codex --out ./out/
|
|
189
|
-
```
|
|
121
|
+
Managed session output:
|
|
190
122
|
|
|
191
|
-
|
|
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
|
-
|
|
194
|
-
# Auto-detect all installed tools and project artifacts
|
|
195
|
-
work-bridge detect
|
|
196
|
-
```
|
|
128
|
+
Managed skills output:
|
|
197
129
|
|
|
198
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
154
|
+
## What `export` Writes
|
|
252
155
|
|
|
253
|
-
|
|
156
|
+
`export` writes the same target-ready structure into a separate output root instead of modifying the source project.
|
|
254
157
|
|
|
255
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
297
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
194
|
+
User-facing statuses are simplified:
|
|
337
195
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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
|
-
|
|
213
|
+
Supported tools:
|
|
214
|
+
|
|
215
|
+
- `claude`
|
|
216
|
+
- `gemini`
|
|
217
|
+
- `codex`
|
|
218
|
+
- `opencode`
|
|
389
219
|
|
|
390
220
|
---
|
|
391
221
|
|
|
392
|
-
##
|
|
222
|
+
## Limits
|
|
393
223
|
|
|
394
|
-
|
|
224
|
+
Current non-goals in this slice:
|
|
395
225
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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
|
-
|
|
230
|
+
Current behavior to be aware of:
|
|
402
231
|
|
|
403
|
-
|
|
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
|
-
##
|
|
408
|
-
|
|
409
|
-
See [CONTRIBUTING.md](./CONTRIBUTING.md).
|
|
239
|
+
## Security and Redaction
|
|
410
240
|
|
|
411
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
248
|
+
Redactions stay visible as warnings in the normalized handoff so you can see what was intentionally omitted.
|
package/package.json
CHANGED