@claude-studio/server 0.1.2 → 0.2.0

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.
@@ -0,0 +1,2 @@
1
+ export declare function logClaudeEnvironment(): void;
2
+ //# sourceMappingURL=env-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-check.d.ts","sourceRoot":"","sources":["../src/env-check.ts"],"names":[],"mappings":"AAuBA,wBAAgB,oBAAoB,IAAI,IAAI,CAqD3C"}
@@ -0,0 +1,62 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ import { log } from "./logger.js";
5
+ import { config } from "./config.js";
6
+ function readJson(filePath) {
7
+ if (!existsSync(filePath))
8
+ return null;
9
+ try {
10
+ return JSON.parse(readFileSync(filePath, "utf8"));
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
16
+ export function logClaudeEnvironment() {
17
+ const globalDir = path.join(os.homedir(), ".claude");
18
+ const projectDir = path.join(config.projectDir, ".claude");
19
+ // --- Plugins ---
20
+ const globalSettings = readJson(path.join(globalDir, "settings.json"));
21
+ const projectSettings = readJson(path.join(projectDir, "settings.json"));
22
+ const globalPlugins = Object.entries(globalSettings?.enabledPlugins ?? {})
23
+ .filter(([, v]) => v)
24
+ .map(([k]) => k);
25
+ const projectPlugins = Object.entries(projectSettings?.enabledPlugins ?? {})
26
+ .filter(([, v]) => v)
27
+ .map(([k]) => k);
28
+ const allPlugins = [...new Set([...globalPlugins, ...projectPlugins])];
29
+ if (allPlugins.length === 0) {
30
+ log.dim("ENV", "Plugins: none");
31
+ }
32
+ else {
33
+ for (const plugin of allPlugins) {
34
+ const scope = globalPlugins.includes(plugin) && projectPlugins.includes(plugin)
35
+ ? "global+project"
36
+ : globalPlugins.includes(plugin)
37
+ ? "global"
38
+ : "project";
39
+ log.dim("ENV", `Plugin: ${plugin} (${scope})`);
40
+ }
41
+ }
42
+ // --- MCP Servers ---
43
+ const globalMcp = readJson(path.join(globalDir, ".mcp.json"));
44
+ const projectMcp = readJson(path.join(config.projectDir, ".mcp.json"));
45
+ const globalMcpServers = Object.keys(globalMcp?.mcpServers ?? {});
46
+ const projectMcpServers = Object.keys(projectMcp?.mcpServers ?? {});
47
+ const allMcp = [...new Set([...globalMcpServers, ...projectMcpServers])];
48
+ if (allMcp.length === 0) {
49
+ log.dim("ENV", "MCP servers: none");
50
+ }
51
+ else {
52
+ for (const srv of allMcp) {
53
+ const scope = globalMcpServers.includes(srv) && projectMcpServers.includes(srv)
54
+ ? "global+project"
55
+ : globalMcpServers.includes(srv)
56
+ ? "global"
57
+ : "project";
58
+ log.dim("ENV", `MCP: ${srv} (${scope})`);
59
+ }
60
+ }
61
+ }
62
+ //# sourceMappingURL=env-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-check.js","sourceRoot":"","sources":["../src/env-check.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ import { ConnectionManager } from "./connection-manager.js";
6
6
  import { ClaudeSessionManager } from "./claude-session.js";
7
7
  import { handleConnection } from "./ws-handler.js";
8
8
  import { log } from "./logger.js";
9
+ import { logClaudeEnvironment } from "./env-check.js";
9
10
  const app = express();
10
11
  const server = createServer(app);
11
12
  const wss = new WebSocketServer({ server });
@@ -22,5 +23,6 @@ server.listen(config.port, () => {
22
23
  log.dim("SRV", `Health: http://localhost:${config.port}/health`);
23
24
  log.dim("SRV", `WebSocket: ws://localhost:${config.port}`);
24
25
  log.dim("SRV", `Project: ${config.projectDir}`);
26
+ logClaudeEnvironment();
25
27
  });
26
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;AACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;AAChC,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAC3C,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAA;AAC3C,MAAM,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAA;AAEzC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAA;AAEF,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;IAC1B,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,4BAA4B,MAAM,CAAC,IAAI,SAAS,CAAC,CAAA;IAChE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1D,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAErD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;AACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;AAChC,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;AAC3C,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAA;AAC3C,MAAM,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAA;AAEzC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;IAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAA;AAEF,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;IAC1B,gBAAgB,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,4BAA4B,MAAM,CAAC,IAAI,SAAS,CAAC,CAAA;IAChE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1D,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;IAC/C,oBAAoB,EAAE,CAAA;AACxB,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-studio/server",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -9,14 +9,9 @@
9
9
  "exports": {
10
10
  ".": "./dist/index.js"
11
11
  },
12
- "scripts": {
13
- "dev": "tsx watch src/index.ts",
14
- "build": "tsc",
15
- "test": "vitest run"
16
- },
17
12
  "dependencies": {
18
13
  "@anthropic-ai/claude-agent-sdk": "^0.2.90",
19
- "@claude-studio/shared": "^0.1.0",
14
+ "@claude-studio/shared": "^0.2.0",
20
15
  "dotenv": "^16.0.0",
21
16
  "express": "^4.0.0",
22
17
  "ws": "^8.0.0"
@@ -27,5 +22,10 @@
27
22
  "tsx": "^4.0.0",
28
23
  "typescript": "^5.0.0",
29
24
  "vitest": "^3.0.0"
25
+ },
26
+ "scripts": {
27
+ "dev": "tsx watch src/index.ts",
28
+ "build": "tsc",
29
+ "test": "vitest run"
30
30
  }
31
- }
31
+ }