@dollhousemcp/mcp-server 2.0.29 → 2.0.31
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/CHANGELOG.md +10 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/handlers/mcp-aql/OperationSchema.js +2 -2
- package/dist/handlers/mcp-aql/evaluatePermission.d.ts.map +1 -1
- package/dist/handlers/mcp-aql/evaluatePermission.js +6 -3
- package/dist/services/BuildInfoService.d.ts +5 -0
- package/dist/services/BuildInfoService.d.ts.map +1 -1
- package/dist/services/BuildInfoService.js +44 -8
- package/dist/utils/permissionHookInstallers.d.ts +27 -0
- package/dist/utils/permissionHookInstallers.d.ts.map +1 -0
- package/dist/utils/permissionHookInstallers.js +465 -0
- package/dist/utils/permissionHookShared.d.ts +165 -0
- package/dist/utils/permissionHookShared.d.ts.map +1 -0
- package/dist/utils/permissionHookShared.js +425 -0
- package/dist/utils/permissionHookStatus.d.ts +10 -0
- package/dist/utils/permissionHookStatus.d.ts.map +1 -0
- package/dist/utils/permissionHookStatus.js +260 -0
- package/dist/utils/permissionHooks.d.ts +3 -91
- package/dist/utils/permissionHooks.d.ts.map +1 -1
- package/dist/utils/permissionHooks.js +4 -947
- package/dist/web/routes/healthRoutes.d.ts +3 -0
- package/dist/web/routes/healthRoutes.d.ts.map +1 -1
- package/dist/web/routes/healthRoutes.js +24 -2
- package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
- package/dist/web/routes/permissionRoutes.js +21 -2
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +9 -2
- package/package.json +3 -1
- package/scripts/permission-hook-config.sh +67 -0
- package/scripts/pretooluse-dollhouse.sh +185 -38
- package/scripts/pretooluse-vscode.sh +23 -10
- package/scripts/pretooluse-windsurf.sh +6 -6
- package/server.json +2 -2
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
export interface PermissionHookMarker {
|
|
2
|
+
host: string;
|
|
3
|
+
scriptPath: string;
|
|
4
|
+
settingsPath?: string;
|
|
5
|
+
additionalPaths?: string[];
|
|
6
|
+
configured?: boolean;
|
|
7
|
+
assetsPrepared?: boolean;
|
|
8
|
+
installedAt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface PermissionHookStatus {
|
|
11
|
+
installed: boolean;
|
|
12
|
+
configured?: boolean;
|
|
13
|
+
assetsPrepared?: boolean;
|
|
14
|
+
assetsCurrent?: boolean;
|
|
15
|
+
autoRepaired?: boolean;
|
|
16
|
+
needsRepair?: boolean;
|
|
17
|
+
repairError?: string;
|
|
18
|
+
host?: string;
|
|
19
|
+
scriptPath?: string;
|
|
20
|
+
settingsPath?: string;
|
|
21
|
+
additionalPaths?: string[];
|
|
22
|
+
}
|
|
23
|
+
/** Latest JSONL diagnostic event emitted by a local permission hook wrapper. */
|
|
24
|
+
export interface PermissionHookDiagnosticRecord {
|
|
25
|
+
timestamp: string;
|
|
26
|
+
invocationId: string;
|
|
27
|
+
event: string;
|
|
28
|
+
platform: string;
|
|
29
|
+
stage: string;
|
|
30
|
+
outcome?: string;
|
|
31
|
+
reason?: string;
|
|
32
|
+
hookPath?: string;
|
|
33
|
+
diagnosticsLogPath?: string;
|
|
34
|
+
sessionId?: string;
|
|
35
|
+
toolName?: string;
|
|
36
|
+
toolInput?: string;
|
|
37
|
+
rawInput?: string;
|
|
38
|
+
authorityHost?: string;
|
|
39
|
+
authorityMode?: string;
|
|
40
|
+
endpoint?: string;
|
|
41
|
+
port?: string;
|
|
42
|
+
payload?: string;
|
|
43
|
+
response?: string;
|
|
44
|
+
normalizedResponse?: string;
|
|
45
|
+
emittedResponse?: string;
|
|
46
|
+
attempt?: string;
|
|
47
|
+
maxRetries?: string;
|
|
48
|
+
timeoutSeconds?: string;
|
|
49
|
+
curlExit?: string;
|
|
50
|
+
rawInputLength?: number;
|
|
51
|
+
normalizedResponseLength?: number;
|
|
52
|
+
emittedResponseLength?: number;
|
|
53
|
+
responseLength?: number;
|
|
54
|
+
}
|
|
55
|
+
export interface InstallPermissionHookResult {
|
|
56
|
+
supported: boolean;
|
|
57
|
+
installed: boolean;
|
|
58
|
+
configured: boolean;
|
|
59
|
+
assetsPrepared?: boolean;
|
|
60
|
+
host: string;
|
|
61
|
+
scriptPath?: string;
|
|
62
|
+
settingsPath?: string;
|
|
63
|
+
additionalPaths?: string[];
|
|
64
|
+
markerPath?: string;
|
|
65
|
+
backupPath?: string;
|
|
66
|
+
message: string;
|
|
67
|
+
}
|
|
68
|
+
export interface InstallPermissionHookOptions {
|
|
69
|
+
homeDir?: string;
|
|
70
|
+
sourceScriptPath?: string;
|
|
71
|
+
now?: Date;
|
|
72
|
+
}
|
|
73
|
+
export interface ReconcilePermissionHookOptions {
|
|
74
|
+
homeDir?: string;
|
|
75
|
+
sourceScriptPath?: string;
|
|
76
|
+
autoRepair?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/** Aggregate health and repair state for all managed local hook hosts. */
|
|
79
|
+
export interface PermissionHookAuditSummary {
|
|
80
|
+
installedHosts: string[];
|
|
81
|
+
currentHosts: string[];
|
|
82
|
+
repairedHosts: string[];
|
|
83
|
+
needsRepairHosts: string[];
|
|
84
|
+
diagnosticsPath: string;
|
|
85
|
+
lastDiagnostic: PermissionHookDiagnosticRecord | null;
|
|
86
|
+
lastStartupRepair: PermissionHookStartupRepairSummary | null;
|
|
87
|
+
}
|
|
88
|
+
/** Condensed health view surfaced in setup, permissions, and build info. */
|
|
89
|
+
export interface PermissionHookHealthSummary {
|
|
90
|
+
status: 'ok' | 'warning' | 'error';
|
|
91
|
+
message: string;
|
|
92
|
+
repairedCount: number;
|
|
93
|
+
needsRepairCount: number;
|
|
94
|
+
lastCheckedAt?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface PermissionHookStartupRepairHostResult extends PermissionHookStatus {
|
|
97
|
+
host: string;
|
|
98
|
+
outcome: 'current' | 'repaired' | 'needs_repair' | 'not_installed' | 'error';
|
|
99
|
+
}
|
|
100
|
+
/** Result summary for the most recent startup-time hook asset repair pass. */
|
|
101
|
+
export interface PermissionHookStartupRepairSummary {
|
|
102
|
+
startedAt: string;
|
|
103
|
+
completedAt: string;
|
|
104
|
+
durationMs: number;
|
|
105
|
+
repairedCount: number;
|
|
106
|
+
needsRepairCount: number;
|
|
107
|
+
hostResults: PermissionHookStartupRepairHostResult[];
|
|
108
|
+
}
|
|
109
|
+
export interface HookAssetDescriptor {
|
|
110
|
+
kind: 'bridge' | 'port-helper' | 'config-helper' | 'wrapper';
|
|
111
|
+
sourcePath: string;
|
|
112
|
+
targetPath: string;
|
|
113
|
+
}
|
|
114
|
+
export interface HookAssetAuditResult {
|
|
115
|
+
assetsPrepared: boolean;
|
|
116
|
+
assetsCurrent: boolean;
|
|
117
|
+
staleAssets: HookAssetDescriptor[];
|
|
118
|
+
}
|
|
119
|
+
export declare const MANAGED_HOOK_WRAPPER_BASENAMES: {
|
|
120
|
+
readonly vscode: "pretooluse-vscode.sh";
|
|
121
|
+
readonly cursor: "pretooluse-cursor.sh";
|
|
122
|
+
readonly windsurf: "pretooluse-windsurf.sh";
|
|
123
|
+
readonly 'gemini-cli': "pretooluse-gemini.sh";
|
|
124
|
+
readonly codex: "pretooluse-codex.sh";
|
|
125
|
+
};
|
|
126
|
+
export declare const WRAPPER_HOOK_HOSTS: Array<keyof typeof MANAGED_HOOK_WRAPPER_BASENAMES>;
|
|
127
|
+
export declare const AUTO_REPAIRABLE_HOOK_HOSTS: readonly ["claude-code", ...("cursor" | "vscode" | "windsurf" | "gemini-cli" | "codex")[]];
|
|
128
|
+
export declare function isMissingFileError(error: unknown): boolean;
|
|
129
|
+
export declare function detectIndent(raw: string): number | string;
|
|
130
|
+
export declare function getPermissionHookScriptPath(homeDir?: string): string;
|
|
131
|
+
export declare function getPermissionHookDiagnosticsPath(homeDir?: string): string;
|
|
132
|
+
export declare function normalizeHookHost(host: string): string;
|
|
133
|
+
export declare function readHostSpecificHookStatus(homeDir: string, host: string): PermissionHookStatus;
|
|
134
|
+
export declare function collectHookMarkerPaths(homeDir: string): Set<string>;
|
|
135
|
+
export declare function collectHookMarkerPathsAsync(homeDir: string): Promise<Set<string>>;
|
|
136
|
+
export declare function summarizeMarkerStatuses(markerPaths: Iterable<string>): PermissionHookStatus;
|
|
137
|
+
export declare function getHookWrapperBasename(host: string): string | null;
|
|
138
|
+
export declare function getHookWrapperPath(host: string, homeDir?: string): string | null;
|
|
139
|
+
export declare function getHookSourcePath(host: string): string;
|
|
140
|
+
export declare function supportsManagedHookAssets(host: string): boolean;
|
|
141
|
+
export declare function getPrimaryHookScriptPath(host: string, homeDir?: string): string;
|
|
142
|
+
export declare function readLastPermissionHookDiagnostic(homeDir?: string): Promise<PermissionHookDiagnosticRecord | null>;
|
|
143
|
+
export declare function getManagedHookAssets(host: string, homeDir?: string, sourceScriptPath?: string): HookAssetDescriptor[];
|
|
144
|
+
export declare function auditHookAssets(host: string, homeDir?: string, sourceScriptPath?: string): Promise<HookAssetAuditResult>;
|
|
145
|
+
export declare function getPermissionHookMarkerPath(homeDir?: string, host?: string): string;
|
|
146
|
+
export declare function getClaudeHookSettingsPath(homeDir?: string): string;
|
|
147
|
+
export declare function getVsCodeHookSettingsPath(homeDir?: string): string;
|
|
148
|
+
export declare function getVsCodeUserSettingsPath(homeDir?: string): string;
|
|
149
|
+
export declare function getGeminiHookSettingsPath(homeDir?: string): string;
|
|
150
|
+
export declare function getCursorHookSettingsPath(homeDir?: string): string;
|
|
151
|
+
export declare function getWindsurfHookSettingsPath(homeDir?: string): string;
|
|
152
|
+
export declare function getCodexHookSettingsPath(homeDir?: string): string;
|
|
153
|
+
export declare function getCodexConfigPath(homeDir?: string): string;
|
|
154
|
+
export declare function normalizeHooksRoot(parsed: Record<string, unknown>): Record<string, unknown[]>;
|
|
155
|
+
export declare function ensureCommandHook(parsed: Record<string, unknown>, eventName: string, command: string, matcher: string, extraHookFields?: Record<string, unknown>): {
|
|
156
|
+
changed: boolean;
|
|
157
|
+
parsed: Record<string, unknown>;
|
|
158
|
+
};
|
|
159
|
+
export declare function readOptionalUtf8(filePath: string, fallback: string): Promise<string>;
|
|
160
|
+
export declare function writeBackupIfPresent(filePath: string, raw: string): Promise<string | undefined>;
|
|
161
|
+
export declare function writeHookMarker(homeDir: string, marker: PermissionHookMarker): Promise<string>;
|
|
162
|
+
export declare function installHookAssetsForHost(client: string, homeDir: string, sourceScriptPath?: string): Promise<{
|
|
163
|
+
scriptPath: string;
|
|
164
|
+
}>;
|
|
165
|
+
//# sourceMappingURL=permissionHookShared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissionHookShared.d.ts","sourceRoot":"","sources":["../../src/utils/permissionHookShared.ts"],"names":[],"mappings":"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"}
|