@bramblex/codex-workbench 0.1.2 → 0.1.3
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 +7 -1
- package/package.json +1 -1
- package/src/cli.js +27 -4
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ codex-workbench archive <session>
|
|
|
50
50
|
codex-workbench unarchive <session>
|
|
51
51
|
codex-workbench hide <session>
|
|
52
52
|
codex-workbench unhide <session>
|
|
53
|
-
codex-workbench delete <session> [--force]
|
|
53
|
+
codex-workbench delete <session> [--force] [--file]
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
Run without arguments to open the interactive UI:
|
|
@@ -82,6 +82,12 @@ codex-workbench unhide <session>
|
|
|
82
82
|
codex-workbench list --all
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
+
Use `delete --file` only for broken sessions that Codex can no longer remove. It deletes the local session JSONL file directly:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
codex-workbench delete <session> --file
|
|
89
|
+
```
|
|
90
|
+
|
|
85
91
|
Use `doctor` to check which Codex executable the CLI will launch:
|
|
86
92
|
|
|
87
93
|
```sh
|
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -29,7 +29,7 @@ Usage:
|
|
|
29
29
|
codex-workbench unarchive <session>
|
|
30
30
|
codex-workbench hide <session>
|
|
31
31
|
codex-workbench unhide <session>
|
|
32
|
-
codex-workbench delete <session> [--force]
|
|
32
|
+
codex-workbench delete <session> [--force] [--file]
|
|
33
33
|
|
|
34
34
|
Environment:
|
|
35
35
|
CODEX_HOME default: ~/.codex
|
|
@@ -246,6 +246,18 @@ function updateMetadata(session, patch) {
|
|
|
246
246
|
writeJson(META_PATH, meta);
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
+
function removeMetadata(session) {
|
|
250
|
+
const meta = loadMeta();
|
|
251
|
+
delete meta.sessions[session.id];
|
|
252
|
+
meta.updatedAt = new Date().toISOString();
|
|
253
|
+
writeJson(META_PATH, meta);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function deleteSessionFile(session) {
|
|
257
|
+
fs.unlinkSync(session.file);
|
|
258
|
+
removeMetadata(session);
|
|
259
|
+
}
|
|
260
|
+
|
|
249
261
|
function usableCwd(dir) {
|
|
250
262
|
const candidates = [dir, process.cwd(), HOME];
|
|
251
263
|
for (const candidate of candidates) {
|
|
@@ -305,6 +317,7 @@ function parseFlags(args) {
|
|
|
305
317
|
if (arg === '--json') out.json = true;
|
|
306
318
|
else if (arg === '--all') out.all = true;
|
|
307
319
|
else if (arg === '--force') out.force = true;
|
|
320
|
+
else if (arg === '--file') out.file = true;
|
|
308
321
|
else if (arg === '--cwd') {
|
|
309
322
|
if (i + 1 >= args.length) throw new Error('--cwd requires a directory.');
|
|
310
323
|
out.cwd = args[++i];
|
|
@@ -717,8 +730,14 @@ async function ui() {
|
|
|
717
730
|
}
|
|
718
731
|
const status = runCodexAndReturn('delete', session, ['--force'], `Deleted ${shortId(session.id)}.`);
|
|
719
732
|
if (status !== 0) {
|
|
720
|
-
const
|
|
721
|
-
if (
|
|
733
|
+
const removeFile = await askConfirm(`Codex could not delete ${shortId(session.id)}. Delete its session file?`);
|
|
734
|
+
if (removeFile) {
|
|
735
|
+
deleteSessionFile(session);
|
|
736
|
+
refreshAfterAction(`Deleted file for ${shortId(session.id)}.`);
|
|
737
|
+
return;
|
|
738
|
+
}
|
|
739
|
+
const hideSession = await askConfirm(`Hide ${shortId(session.id)} from workbench instead?`);
|
|
740
|
+
if (hideSession) {
|
|
722
741
|
updateMetadata(session, { hidden: true });
|
|
723
742
|
refreshAfterAction(`Hidden ${shortId(session.id)}.`);
|
|
724
743
|
}
|
|
@@ -751,7 +770,11 @@ async function main() {
|
|
|
751
770
|
if (cmd === 'unarchive') return codexCommand('unarchive', resolveSession(flags._[0], sessions));
|
|
752
771
|
if (cmd === 'hide') return updateMetadata(resolveSession(flags._[0], sessions), { hidden: true });
|
|
753
772
|
if (cmd === 'unhide') return updateMetadata(resolveSession(flags._[0], sessions), { hidden: false });
|
|
754
|
-
if (cmd === 'delete')
|
|
773
|
+
if (cmd === 'delete') {
|
|
774
|
+
const session = resolveSession(flags._[0], sessions);
|
|
775
|
+
if (flags.file) return deleteSessionFile(session);
|
|
776
|
+
return codexCommand('delete', session, flags.force ? ['--force'] : []);
|
|
777
|
+
}
|
|
755
778
|
|
|
756
779
|
usage();
|
|
757
780
|
process.exitCode = 2;
|