refactor: drop skill file, rework client #3
+2
-13
@@ -4,6 +4,7 @@ import { createRequire } from "node:module";
|
|||||||
import { promisify } from "node:util";
|
import { promisify } from "node:util";
|
||||||
import { extractEmail, type Email } from "../utils/extract_email.ts";
|
import { extractEmail, type Email } from "../utils/extract_email.ts";
|
||||||
import { extractFolders, type Folder } from "../utils/extract_folder.ts";
|
import { extractFolders, type Folder } from "../utils/extract_folder.ts";
|
||||||
|
import { initDataDir } from "../utils/data.ts";
|
||||||
import {
|
import {
|
||||||
loadConfig,
|
loadConfig,
|
||||||
saveConfig,
|
saveConfig,
|
||||||
@@ -11,9 +12,8 @@ import {
|
|||||||
setPassword,
|
setPassword,
|
||||||
getPassword,
|
getPassword,
|
||||||
hasPassword,
|
hasPassword,
|
||||||
initDataDir,
|
|
||||||
type LoginConfig,
|
type LoginConfig,
|
||||||
} from "../utils/config.ts";
|
} from "../utils/login.ts";
|
||||||
|
|
||||||
const ntlm: any = createRequire(import.meta.url)("httpntlm");
|
const ntlm: any = createRequire(import.meta.url)("httpntlm");
|
||||||
const postAsync = promisify(ntlm.post.bind(ntlm));
|
const postAsync = promisify(ntlm.post.bind(ntlm));
|
||||||
@@ -482,14 +482,3 @@ ${mailboxDataXml}
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-export for backward compatibility
|
|
||||||
export {
|
|
||||||
initDataDir,
|
|
||||||
loadConfig,
|
|
||||||
saveConfig,
|
|
||||||
clearConfig,
|
|
||||||
setPassword,
|
|
||||||
getPassword,
|
|
||||||
hasPassword,
|
|
||||||
} from "../utils/config.ts";
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|||||||
import { Command } from "commander";
|
import { Command } from "commander";
|
||||||
import crypto from "node:crypto";
|
import crypto from "node:crypto";
|
||||||
import http from "node:http";
|
import http from "node:http";
|
||||||
import { initDataDir } from "./client/ews_client.ts";
|
import { initDataDir } from "./utils/data.ts";
|
||||||
import { registerAuthTools } from "./tools/auth.ts";
|
import { registerAuthTools } from "./tools/auth.ts";
|
||||||
import { registerAvailabilityTools } from "./tools/availability.ts";
|
import { registerAvailabilityTools } from "./tools/availability.ts";
|
||||||
import { registerCalendarTools } from "./tools/calendar.ts";
|
import { registerCalendarTools } from "./tools/calendar.ts";
|
||||||
|
|||||||
+3
-9
@@ -1,14 +1,8 @@
|
|||||||
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
||||||
import { z } from "zod/v4";
|
import { z } from "zod/v4";
|
||||||
import {
|
import { clearConfig, hasPassword, loadConfig, saveConfig, setPassword } from "../utils/login.ts";
|
||||||
clearConfig,
|
import { EwsClient } from "../client/ews_client.ts";
|
||||||
EwsClient,
|
import { type LoginConfig } from "../utils/login.ts";
|
||||||
hasPassword,
|
|
||||||
loadConfig,
|
|
||||||
saveConfig,
|
|
||||||
setPassword,
|
|
||||||
} from "../client/ews_client.ts";
|
|
||||||
import { type LoginConfig } from "../utils/config.ts";
|
|
||||||
|
|
||||||
export function registerAuthTools(server: McpServer): void {
|
export function registerAuthTools(server: McpServer): void {
|
||||||
server.registerTool(
|
server.registerTool(
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
||||||
import { z } from "zod/v4";
|
import { z } from "zod/v4";
|
||||||
import { EwsClient, loadConfig } from "../client/ews_client.ts";
|
import { loadConfig } from "../utils/login.ts";
|
||||||
|
import { EwsClient } from "../client/ews_client.ts";
|
||||||
|
|
||||||
export function registerAvailabilityTools(server: McpServer): void {
|
export function registerAvailabilityTools(server: McpServer): void {
|
||||||
server.registerTool(
|
server.registerTool(
|
||||||
|
|||||||
+2
-1
@@ -2,7 +2,8 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|||||||
import fs from "node:fs";
|
import fs from "node:fs";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { z } from "zod/v4";
|
import { z } from "zod/v4";
|
||||||
import { EwsClient, loadConfig } from "../client/ews_client.ts";
|
import { loadConfig } from "../utils/login.ts";
|
||||||
|
import { EwsClient } from "../client/ews_client.ts";
|
||||||
|
|
||||||
export function registerCalendarTools(server: McpServer): void {
|
export function registerCalendarTools(server: McpServer): void {
|
||||||
server.registerTool(
|
server.registerTool(
|
||||||
|
|||||||
+2
-1
@@ -2,7 +2,8 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|||||||
import fs from "node:fs";
|
import fs from "node:fs";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { z } from "zod/v4";
|
import { z } from "zod/v4";
|
||||||
import { EwsClient, loadConfig } from "../client/ews_client.ts";
|
import { loadConfig } from "../utils/login.ts";
|
||||||
|
import { EwsClient } from "../client/ews_client.ts";
|
||||||
|
|
||||||
function getClient(): EwsClient {
|
function getClient(): EwsClient {
|
||||||
return new EwsClient(loadConfig());
|
return new EwsClient(loadConfig());
|
||||||
|
|||||||
+2
-1
@@ -1,6 +1,7 @@
|
|||||||
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
||||||
import { z } from "zod/v4";
|
import { z } from "zod/v4";
|
||||||
import { EwsClient, loadConfig } from "../client/ews_client.ts";
|
import { loadConfig } from "../utils/login.ts";
|
||||||
|
import { EwsClient } from "../client/ews_client.ts";
|
||||||
|
|
||||||
export function registerFolderTools(server: McpServer): void {
|
export function registerFolderTools(server: McpServer): void {
|
||||||
server.registerTool(
|
server.registerTool(
|
||||||
|
|||||||
+2
-1
@@ -1,6 +1,7 @@
|
|||||||
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
||||||
import { z } from "zod/v4";
|
import { z } from "zod/v4";
|
||||||
import { EwsClient, loadConfig } from "../client/ews_client.ts";
|
import { loadConfig } from "../utils/login.ts";
|
||||||
|
import { EwsClient } from "../client/ews_client.ts";
|
||||||
|
|
||||||
export function registerPeopleTools(server: McpServer): void {
|
export function registerPeopleTools(server: McpServer): void {
|
||||||
server.registerTool(
|
server.registerTool(
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import fs from "node:fs";
|
||||||
|
import path from "node:path";
|
||||||
|
|
||||||
|
let dataDir: string = "./data";
|
||||||
|
|
||||||
|
export function initDataDir(dir: string): void {
|
||||||
|
dataDir = path.resolve(dir);
|
||||||
|
fs.mkdirSync(dataDir, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
export function configFilePath(): string {
|
||||||
|
return path.join(dataDir, "config.json");
|
||||||
|
}
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
import fs from "node:fs";
|
||||||
|
import { configFilePath, initDataDir } from "./data.ts";
|
||||||
|
|
||||||
|
// Re-export for backward compatibility
|
||||||
|
export { initDataDir };
|
||||||
|
|
||||||
export interface LoginConfig {
|
export interface LoginConfig {
|
||||||
serverUrl: string;
|
serverUrl: string;
|
||||||
email: string;
|
email: string;
|
||||||
@@ -5,16 +11,6 @@ export interface LoginConfig {
|
|||||||
domain?: string;
|
domain?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
import fs from "node:fs";
|
|
||||||
import path from "node:path";
|
|
||||||
|
|
||||||
let dataDir: string = "./data";
|
|
||||||
|
|
||||||
export function initDataDir(dir: string): void {
|
|
||||||
dataDir = path.resolve(dir);
|
|
||||||
fs.mkdirSync(dataDir, { recursive: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
let inMemoryPassword: string | null = null;
|
let inMemoryPassword: string | null = null;
|
||||||
|
|
||||||
export function setPassword(password: string): void {
|
export function setPassword(password: string): void {
|
||||||
@@ -33,10 +29,6 @@ export function clearPassword(): void {
|
|||||||
inMemoryPassword = null;
|
inMemoryPassword = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function configFilePath(): string {
|
|
||||||
return path.join(dataDir, "config.json");
|
|
||||||
}
|
|
||||||
|
|
||||||
export function loadConfig(): LoginConfig {
|
export function loadConfig(): LoginConfig {
|
||||||
const filePath = configFilePath();
|
const filePath = configFilePath();
|
||||||
if (!fs.existsSync(filePath)) {
|
if (!fs.existsSync(filePath)) {
|
||||||
Reference in New Issue
Block a user