mirror of
https://github.com/aljazceru/claude-code-viewer.git
synced 2026-01-23 23:44:21 +01:00
refactor: add platform effects
This commit is contained in:
@@ -4,9 +4,10 @@ import type { CommandExecutor } from "@effect/platform/CommandExecutor";
|
||||
import { Context, Effect, Layer, Runtime } from "effect";
|
||||
import { ulid } from "ulid";
|
||||
import { controllablePromise } from "../../../../lib/controllablePromise";
|
||||
import type { Config } from "../../../lib/config/config";
|
||||
import type { UserConfig } from "../../../lib/config/config";
|
||||
import type { InferEffect } from "../../../lib/effect/types";
|
||||
import { EventBus } from "../../events/services/EventBus";
|
||||
import type { EnvService } from "../../platform/services/EnvService";
|
||||
import { SessionRepository } from "../../session/infrastructure/SessionRepository";
|
||||
import { VirtualConversationDatabase } from "../../session/infrastructure/VirtualConversationDatabase";
|
||||
import type { SessionMetaService } from "../../session/services/SessionMetaService";
|
||||
@@ -36,6 +37,7 @@ const LayerImpl = Effect.gen(function* () {
|
||||
| VirtualConversationDatabase
|
||||
| SessionMetaService
|
||||
| ClaudeCodePermissionService
|
||||
| EnvService
|
||||
>();
|
||||
|
||||
const continueTask = (options: {
|
||||
@@ -78,7 +80,7 @@ const LayerImpl = Effect.gen(function* () {
|
||||
};
|
||||
|
||||
const startTask = (options: {
|
||||
config: Config;
|
||||
userConfig: UserConfig;
|
||||
baseSession: {
|
||||
cwd: string;
|
||||
projectId: string;
|
||||
@@ -86,7 +88,7 @@ const LayerImpl = Effect.gen(function* () {
|
||||
};
|
||||
message: string;
|
||||
}) => {
|
||||
const { baseSession, message, config } = options;
|
||||
const { baseSession, message, userConfig } = options;
|
||||
|
||||
return Effect.gen(function* () {
|
||||
const {
|
||||
@@ -258,7 +260,7 @@ const LayerImpl = Effect.gen(function* () {
|
||||
const permissionOptions =
|
||||
yield* permissionService.createCanUseToolRelatedOptions({
|
||||
taskId: task.def.taskId,
|
||||
config,
|
||||
userConfig,
|
||||
sessionId: task.def.baseSessionId,
|
||||
});
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import type {
|
||||
PermissionRequest,
|
||||
PermissionResponse,
|
||||
} from "../../../../types/permissions";
|
||||
import type { Config } from "../../../lib/config/config";
|
||||
import type { UserConfig } from "../../../lib/config/config";
|
||||
import type { InferEffect } from "../../../lib/effect/types";
|
||||
import { EventBus } from "../../events/services/EventBus";
|
||||
import * as ClaudeCode from "../models/ClaudeCode";
|
||||
@@ -51,10 +51,10 @@ const LayerImpl = Effect.gen(function* () {
|
||||
|
||||
const createCanUseToolRelatedOptions = (options: {
|
||||
taskId: string;
|
||||
config: Config;
|
||||
userConfig: UserConfig;
|
||||
sessionId?: string;
|
||||
}) => {
|
||||
const { taskId, config, sessionId } = options;
|
||||
const { taskId, userConfig, sessionId } = options;
|
||||
|
||||
return Effect.gen(function* () {
|
||||
const claudeCodeConfig = yield* ClaudeCode.Config;
|
||||
@@ -69,11 +69,11 @@ const LayerImpl = Effect.gen(function* () {
|
||||
}
|
||||
|
||||
const canUseTool: CanUseTool = async (toolName, toolInput, _options) => {
|
||||
if (config.permissionMode !== "default") {
|
||||
if (userConfig.permissionMode !== "default") {
|
||||
// Convert Claude Code permission modes to canUseTool behaviors
|
||||
if (
|
||||
config.permissionMode === "bypassPermissions" ||
|
||||
config.permissionMode === "acceptEdits"
|
||||
userConfig.permissionMode === "bypassPermissions" ||
|
||||
userConfig.permissionMode === "acceptEdits"
|
||||
) {
|
||||
return {
|
||||
behavior: "allow" as const,
|
||||
@@ -123,7 +123,7 @@ const LayerImpl = Effect.gen(function* () {
|
||||
|
||||
return {
|
||||
canUseTool,
|
||||
permissionMode: config.permissionMode,
|
||||
permissionMode: userConfig.permissionMode,
|
||||
} as const;
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user