@kimuson/claude-code-viewer 0.5.6 → 0.5.7

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/dist/main.js CHANGED
@@ -7,7 +7,7 @@ import { Effect as Effect49 } from "effect";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "@kimuson/claude-code-viewer",
10
- version: "0.5.6",
10
+ version: "0.5.7",
11
11
  description: "A full-featured web-based Claude Code client that provides complete interactive functionality for managing Claude Code projects.",
12
12
  type: "module",
13
13
  license: "MIT",
@@ -51,89 +51,89 @@ var package_default = {
51
51
  prepare: "lefthook install"
52
52
  },
53
53
  dependencies: {
54
- "@anthropic-ai/claude-agent-sdk": "0.2.2",
54
+ "@anthropic-ai/claude-agent-sdk": "0.2.19",
55
55
  "@anthropic-ai/claude-code": "2.0.24",
56
56
  "@anthropic-ai/sdk": "0.71.2",
57
- "@effect/cluster": "0.55.0",
58
- "@effect/experimental": "0.57.11",
59
- "@effect/platform": "0.93.6",
60
- "@effect/platform-node": "0.103.0",
61
- "@effect/rpc": "0.72.2",
62
- "@effect/sql": "0.48.6",
63
- "@effect/workflow": "0.15.1",
64
- "@hono/node-server": "1.19.5",
57
+ "@effect/cluster": "0.56.1",
58
+ "@effect/experimental": "0.58.0",
59
+ "@effect/platform": "0.94.2",
60
+ "@effect/platform-node": "0.104.1",
61
+ "@effect/rpc": "0.73.0",
62
+ "@effect/sql": "0.49.0",
63
+ "@effect/workflow": "0.16.0",
64
+ "@hono/node-server": "1.19.9",
65
65
  "@hono/zod-validator": "0.7.6",
66
- "@lingui/core": "5.5.1",
67
- "@lingui/react": "5.5.1",
68
- "@radix-ui/react-avatar": "1.1.10",
66
+ "@lingui/core": "5.9.0",
67
+ "@lingui/react": "5.9.0",
68
+ "@radix-ui/react-avatar": "1.1.11",
69
69
  "@radix-ui/react-checkbox": "1.3.3",
70
70
  "@radix-ui/react-collapsible": "1.1.12",
71
71
  "@radix-ui/react-dialog": "1.1.15",
72
72
  "@radix-ui/react-hover-card": "1.1.15",
73
73
  "@radix-ui/react-popover": "1.1.15",
74
74
  "@radix-ui/react-select": "2.2.6",
75
- "@radix-ui/react-slot": "1.2.3",
75
+ "@radix-ui/react-slot": "1.2.4",
76
76
  "@radix-ui/react-tabs": "1.1.13",
77
77
  "@radix-ui/react-tooltip": "1.2.8",
78
- "@tailwindcss/vite": "4.1.16",
79
- "@tanstack/react-devtools": "0.7.8",
80
- "@tanstack/react-query": "5.90.5",
81
- "@tanstack/react-router": "1.133.32",
82
- "@tanstack/react-router-devtools": "1.133.32",
78
+ "@tailwindcss/vite": "4.1.18",
79
+ "@tanstack/react-devtools": "0.9.2",
80
+ "@tanstack/react-query": "5.90.20",
81
+ "@tanstack/react-router": "1.156.0",
82
+ "@tanstack/react-router-devtools": "1.156.0",
83
83
  "class-variance-authority": "0.7.1",
84
84
  clsx: "2.1.1",
85
85
  commander: "^14.0.2",
86
86
  "date-fns": "4.1.0",
87
- effect: "3.19.9",
88
- "es-toolkit": "1.41.0",
89
- hono: "4.10.3",
90
- jotai: "2.15.0",
91
- "lucide-react": "0.548.0",
87
+ effect: "3.19.15",
88
+ "es-toolkit": "1.44.0",
89
+ hono: "4.11.5",
90
+ jotai: "2.16.2",
91
+ "lucide-react": "0.563.0",
92
92
  minisearch: "7.2.0",
93
93
  "parse-git-diff": "0.0.19",
94
94
  prexit: "2.3.0",
95
- react: "19.2.0",
96
- "react-dom": "19.2.0",
97
- "react-error-boundary": "6.0.0",
95
+ react: "19.2.3",
96
+ "react-dom": "19.2.3",
97
+ "react-error-boundary": "6.1.0",
98
98
  "react-markdown": "10.1.0",
99
- "react-syntax-highlighter": "15.6.6",
99
+ "react-syntax-highlighter": "16.1.0",
100
100
  "remark-gfm": "4.0.1",
101
101
  sonner: "2.0.7",
102
- "tailwind-merge": "3.3.1",
103
- ulid: "3.0.1",
104
- zod: "4.1.13"
102
+ "tailwind-merge": "3.4.0",
103
+ ulid: "3.0.2",
104
+ zod: "4.3.6"
105
105
  },
106
106
  devDependencies: {
107
- "@biomejs/biome": "2.3.1",
108
- "@effect/language-service": "0.60.0",
109
- "@lingui/cli": "5.5.1",
110
- "@lingui/conf": "5.5.1",
111
- "@lingui/format-json": "5.5.1",
112
- "@lingui/loader": "5.5.1",
113
- "@lingui/vite-plugin": "5.5.1",
114
- "@tailwindcss/postcss": "4.1.16",
115
- "@tanstack/router-plugin": "1.133.32",
116
- "@tsconfig/strictest": "2.0.6",
117
- "@types/node": "24.9.1",
118
- "@types/react": "19.2.2",
119
- "@types/react-dom": "19.2.2",
107
+ "@biomejs/biome": "2.3.12",
108
+ "@effect/language-service": "0.72.0",
109
+ "@lingui/cli": "5.9.0",
110
+ "@lingui/conf": "5.9.0",
111
+ "@lingui/format-json": "5.9.0",
112
+ "@lingui/loader": "5.9.0",
113
+ "@lingui/vite-plugin": "5.9.0",
114
+ "@tailwindcss/postcss": "4.1.18",
115
+ "@tanstack/router-plugin": "1.156.0",
116
+ "@tsconfig/strictest": "2.0.8",
117
+ "@types/node": "25.0.10",
118
+ "@types/react": "19.2.9",
119
+ "@types/react-dom": "19.2.3",
120
120
  "@types/react-syntax-highlighter": "15.5.13",
121
- "@vitejs/plugin-react-swc": "4.2.0",
121
+ "@vitejs/plugin-react-swc": "4.2.2",
122
122
  dotenv: "17.2.3",
123
- esbuild: "0.25.11",
124
- lefthook: "2.0.8",
123
+ esbuild: "0.27.2",
124
+ lefthook: "2.0.15",
125
125
  "npm-run-all2": "8.0.4",
126
- playwright: "1.56.1",
127
- "release-it": "19.0.5",
126
+ playwright: "1.58.0",
127
+ "release-it": "19.2.4",
128
128
  "release-it-pnpm": "4.6.6",
129
- tailwindcss: "4.1.16",
130
- tsx: "4.20.6",
129
+ tailwindcss: "4.1.18",
130
+ tsx: "4.21.0",
131
131
  "tw-animate-css": "1.4.0",
132
132
  typescript: "5.9.3",
133
- vite: "7.1.12",
134
- vitest: "4.0.3"
133
+ vite: "7.3.1",
134
+ vitest: "4.0.18"
135
135
  },
136
- packageManager: "pnpm@10.18.3+sha512.bbd16e6d7286fd7e01f6b3c0b3c932cda2965c06a908328f74663f10a9aea51f1129eea615134bf992831b009eabe167ecb7008b597f40ff9bc75946aadfb08d"
136
+ packageManager: "pnpm@10.28.1+sha512.7d7dbbca9e99447b7c3bf7a73286afaaf6be99251eb9498baefa7d406892f67b879adb3a1d7e687fc4ccc1a388c7175fbaae567a26ab44d1067b54fcb0d6a316"
137
137
  };
138
138
 
139
139
  // src/server/core/platform/services/DeprecatedEnvDetector.ts
@@ -2649,17 +2649,28 @@ var fallbackSdkMessage = (message) => {
2649
2649
  plugins: []
2650
2650
  };
2651
2651
  }
2652
+ if (message.subtype === "hook_response") {
2653
+ return {
2654
+ ...message
2655
+ };
2656
+ }
2652
2657
  return message;
2653
2658
  }
2654
2659
  if (message.type === "result") {
2655
2660
  if (message.subtype === "success") {
2656
2661
  return {
2657
- ...message
2662
+ ...message,
2663
+ modelUsage: {
2664
+ ...message.modelUsage
2665
+ }
2658
2666
  };
2659
2667
  }
2660
2668
  return {
2661
2669
  ...message,
2662
- errors: []
2670
+ errors: [],
2671
+ modelUsage: {
2672
+ ...message.modelUsage
2673
+ }
2663
2674
  };
2664
2675
  }
2665
2676
  return message;
@@ -5958,6 +5969,7 @@ var SearchController = class extends Context33.Tag("SearchController")() {
5958
5969
  };
5959
5970
 
5960
5971
  // src/server/core/session/presentation/SessionController.ts
5972
+ import { FileSystem as FileSystem14 } from "@effect/platform";
5961
5973
  import { Context as Context34, Effect as Effect43, Layer as Layer36 } from "effect";
5962
5974
 
5963
5975
  // src/server/core/session/services/ExportService.ts
@@ -6753,6 +6765,8 @@ var generateSessionHtml = (session, projectId) => Effect42.gen(function* () {
6753
6765
  // src/server/core/session/presentation/SessionController.ts
6754
6766
  var LayerImpl28 = Effect43.gen(function* () {
6755
6767
  const sessionRepository = yield* SessionRepository;
6768
+ const fs = yield* FileSystem14.FileSystem;
6769
+ const eventBus = yield* EventBus;
6756
6770
  const getSession = (options) => Effect43.gen(function* () {
6757
6771
  const { projectId, sessionId } = options;
6758
6772
  const { session } = yield* sessionRepository.getSession(
@@ -6782,9 +6796,41 @@ var LayerImpl28 = Effect43.gen(function* () {
6782
6796
  response: { html }
6783
6797
  };
6784
6798
  });
6799
+ const deleteSession = (options) => Effect43.gen(function* () {
6800
+ const { projectId, sessionId } = options;
6801
+ const sessionPath = decodeSessionId(projectId, sessionId);
6802
+ const exists = yield* fs.exists(sessionPath);
6803
+ if (!exists) {
6804
+ return {
6805
+ status: 404,
6806
+ response: { error: "Session not found" }
6807
+ };
6808
+ }
6809
+ const deleteResult = yield* fs.remove(sessionPath).pipe(
6810
+ Effect43.map(() => ({ success: true, error: null })),
6811
+ Effect43.catchAll(
6812
+ (error) => Effect43.succeed({
6813
+ success: false,
6814
+ error: `Failed to delete session: ${error.message}`
6815
+ })
6816
+ )
6817
+ );
6818
+ if (!deleteResult.success) {
6819
+ return {
6820
+ status: 500,
6821
+ response: { error: deleteResult.error }
6822
+ };
6823
+ }
6824
+ yield* eventBus.emit("sessionListChanged", { projectId });
6825
+ return {
6826
+ status: 200,
6827
+ response: { success: true }
6828
+ };
6829
+ });
6785
6830
  return {
6786
6831
  getSession,
6787
- exportSessionHtml
6832
+ exportSessionHtml,
6833
+ deleteSession
6788
6834
  };
6789
6835
  });
6790
6836
  var SessionController = class extends Context34.Tag("SessionController")() {
@@ -7289,7 +7335,13 @@ var routes = (app, options) => Effect47.gen(function* () {
7289
7335
  );
7290
7336
  return response;
7291
7337
  }
7292
- ).get(
7338
+ ).delete("/api/projects/:projectId/sessions/:sessionId", async (c) => {
7339
+ const response = await effectToResponse(
7340
+ c,
7341
+ sessionController.deleteSession({ ...c.req.param() }).pipe(Effect47.provide(runtime))
7342
+ );
7343
+ return response;
7344
+ }).get(
7293
7345
  "/api/projects/:projectId/agent-sessions/:agentId",
7294
7346
  zValidator("query", z29.object({ sessionId: z29.string().optional() })),
7295
7347
  async (c) => {