Sign In

@paretools/shared

Package Overview
Dependencies
Maintainers
1
Versions
35
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@paretools/shared - npm Package Compare versions

Comparing version
0.10.2
to
0.11.0
+99
dist/errors.d.ts
import { z } from "zod";
import type { RunResult } from "./runner.js";
import type { ToolOutput } from "./types.js";
/**
* Zod schema for the set of error categories a Pare tool can return.
*
* Each category maps to a class of failure an AI agent can programmatically
* match on, enabling automated recovery strategies without parsing free-text
* error messages.
*/
export declare const PareErrorCategory: z.ZodEnum<{
"command-not-found": "command-not-found";
"permission-denied": "permission-denied";
timeout: "timeout";
"invalid-input": "invalid-input";
"not-found": "not-found";
"network-error": "network-error";
"authentication-error": "authentication-error";
conflict: "conflict";
"configuration-error": "configuration-error";
"already-exists": "already-exists";
"command-failed": "command-failed";
}>;
export type PareErrorCategoryType = z.infer<typeof PareErrorCategory>;
/** Zod schema for the structured error every Pare tool can return. */
export declare const PareErrorSchema: z.ZodObject<{
isError: z.ZodLiteral<true>;
category: z.ZodEnum<{
"command-not-found": "command-not-found";
"permission-denied": "permission-denied";
timeout: "timeout";
"invalid-input": "invalid-input";
"not-found": "not-found";
"network-error": "network-error";
"authentication-error": "authentication-error";
conflict: "conflict";
"configuration-error": "configuration-error";
"already-exists": "already-exists";
"command-failed": "command-failed";
}>;
message: z.ZodString;
command: z.ZodOptional<z.ZodString>;
exitCode: z.ZodOptional<z.ZodNumber>;
suggestion: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type PareError = z.infer<typeof PareErrorSchema>;
/** Returns true when stderr / error text indicates the command was not found. */
export declare function isCommandNotFound(text: string): boolean;
/** Returns true when stderr indicates a permission / access error. */
export declare function isPermissionDenied(text: string): boolean;
/** Returns true when stderr indicates a timeout. */
export declare function isTimeout(text: string): boolean;
/** Returns true when stderr indicates a network connectivity problem. */
export declare function isNetworkError(text: string): boolean;
/** Returns true when stderr indicates an authentication / authorisation failure. */
export declare function isAuthError(text: string): boolean;
/** Returns true when stderr indicates a conflict (merge, lock, etc.). */
export declare function isConflict(text: string): boolean;
/** Returns true when stderr indicates a resource was not found. */
export declare function isNotFound(text: string): boolean;
/** Returns true when stderr indicates a resource already exists. */
export declare function isAlreadyExists(text: string): boolean;
/** Returns true when stderr indicates a configuration problem. */
export declare function isConfigurationError(text: string): boolean;
/**
* Classifies a failed {@link RunResult} into a structured {@link PareError}.
*
* The function inspects stderr (and stdout when stderr is empty), the exit
* code, and well-known patterns to determine the most specific category.
* When no pattern matches, the category falls back to `"command-failed"`.
*
* @param result - The {@link RunResult} returned by the command runner.
* @param command - A human-readable label for the command (e.g. `"git tag"`).
* @returns A fully populated {@link PareError}.
*/
export declare function classifyError(result: RunResult, command: string): PareError;
/**
* Creates a dual-output error response that can be returned directly from a
* tool handler. The response carries both human-readable text (`content`) and
* structured JSON (`structuredContent`) with `isError: true` so the MCP
* client knows the call did not succeed.
*
* Usage:
* ```ts
* if (result.exitCode !== 0) {
* return errorOutput(classifyError(result, "git tag"));
* }
* ```
*/
export declare function errorOutput(error: PareError): ToolOutput<PareError>;
/**
* Convenience: creates a {@link PareError} for input-validation failures and
* returns it as a dual-output response. Useful in `inputSchema` guards before
* the CLI command is even invoked.
*
* @param message - Description of what was wrong with the input.
*/
export declare function invalidInputError(message: string): ToolOutput<PareError>;
//# sourceMappingURL=errors.d.ts.map
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAY5B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAMtE,sEAAsE;AACtE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;iBAO1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAMxD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASvD;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASxD;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYpD;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAcjD;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAShD;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUhD;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAY3E;AAgFD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAMnE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAOxE"}
import { z } from "zod";
// ---------------------------------------------------------------------------
// Error categories
// ---------------------------------------------------------------------------
/**
* Zod schema for the set of error categories a Pare tool can return.
*
* Each category maps to a class of failure an AI agent can programmatically
* match on, enabling automated recovery strategies without parsing free-text
* error messages.
*/
export const PareErrorCategory = z.enum([
"command-not-found", // CLI tool not installed or not in PATH
"permission-denied", // Insufficient OS/filesystem permissions
"timeout", // Command exceeded its time limit
"invalid-input", // Validation failure on user-supplied input
"not-found", // Requested resource does not exist
"network-error", // Network connectivity / DNS failure
"authentication-error", // Auth / credential failure
"conflict", // Merge conflict, lock contention, etc.
"configuration-error", // Missing or invalid config file
"already-exists", // Resource already exists
"command-failed", // Generic catch-all for unrecognised failures
]);
// ---------------------------------------------------------------------------
// Structured error object
// ---------------------------------------------------------------------------
/** Zod schema for the structured error every Pare tool can return. */
export const PareErrorSchema = z.object({
isError: z.literal(true),
category: PareErrorCategory,
message: z.string(),
command: z.string().optional(),
exitCode: z.number().optional(),
suggestion: z.string().optional(),
});
// ---------------------------------------------------------------------------
// Pattern-matching helpers
// ---------------------------------------------------------------------------
/** Returns true when stderr / error text indicates the command was not found. */
export function isCommandNotFound(text) {
const lower = text.toLowerCase();
return (lower.includes("command not found") ||
lower.includes("not recognized") ||
lower.includes("enoent") ||
lower.includes("no such file or directory") ||
/is not recognized as an internal or external command/.test(lower));
}
/** Returns true when stderr indicates a permission / access error. */
export function isPermissionDenied(text) {
const lower = text.toLowerCase();
return (lower.includes("permission denied") ||
lower.includes("eacces") ||
lower.includes("eperm") ||
lower.includes("access denied") ||
lower.includes("operation not permitted"));
}
/** Returns true when stderr indicates a timeout. */
export function isTimeout(text) {
const lower = text.toLowerCase();
return lower.includes("timed out") || lower.includes("timeout");
}
/** Returns true when stderr indicates a network connectivity problem. */
export function isNetworkError(text) {
const lower = text.toLowerCase();
return (lower.includes("connection refused") ||
lower.includes("econnrefused") ||
lower.includes("etimedout") ||
lower.includes("econnreset") ||
lower.includes("enetunreach") ||
lower.includes("could not resolve host") ||
lower.includes("network is unreachable") ||
lower.includes("dns resolution failed"));
}
/** Returns true when stderr indicates an authentication / authorisation failure. */
export function isAuthError(text) {
const lower = text.toLowerCase();
return (lower.includes("authentication") ||
lower.includes("authenticated") ||
lower.includes("credential") ||
lower.includes("unauthorized") ||
/ 401[ :]/.test(lower) ||
/ 403[ :]/.test(lower) ||
lower.includes("permission denied (publickey") ||
lower.includes("invalid credentials") ||
lower.includes("bad credentials") ||
lower.includes("login required"));
}
/** Returns true when stderr indicates a conflict (merge, lock, etc.). */
export function isConflict(text) {
const lower = text.toLowerCase();
return (lower.includes("merge conflict") ||
lower.includes("conflict") ||
lower.includes("lock file") ||
lower.includes("locked") ||
lower.includes("already locked"));
}
/** Returns true when stderr indicates a resource was not found. */
export function isNotFound(text) {
const lower = text.toLowerCase();
return (lower.includes("not found") ||
lower.includes("does not exist") ||
lower.includes("no such") ||
/ 404[ :]/.test(lower) ||
lower.includes("unknown revision") ||
lower.includes("pathspec"));
}
/** Returns true when stderr indicates a resource already exists. */
export function isAlreadyExists(text) {
const lower = text.toLowerCase();
return lower.includes("already exists") || lower.includes("already exist");
}
/** Returns true when stderr indicates a configuration problem. */
export function isConfigurationError(text) {
const lower = text.toLowerCase();
return (lower.includes("missing config") ||
lower.includes("configuration error") ||
lower.includes("config file not found") ||
lower.includes("invalid configuration") ||
lower.includes("no configuration") ||
lower.includes(".eslintrc") ||
lower.includes("tsconfig") ||
lower.includes("could not read config"));
}
// ---------------------------------------------------------------------------
// Classifier
// ---------------------------------------------------------------------------
/**
* Classifies a failed {@link RunResult} into a structured {@link PareError}.
*
* The function inspects stderr (and stdout when stderr is empty), the exit
* code, and well-known patterns to determine the most specific category.
* When no pattern matches, the category falls back to `"command-failed"`.
*
* @param result - The {@link RunResult} returned by the command runner.
* @param command - A human-readable label for the command (e.g. `"git tag"`).
* @returns A fully populated {@link PareError}.
*/
export function classifyError(result, command) {
const text = result.stderr || result.stdout;
const category = classifyText(text, result.exitCode);
return {
isError: true,
category,
message: text.trim() || `${command} failed with exit code ${result.exitCode}`,
command,
exitCode: result.exitCode,
suggestion: suggestRecovery(category, command),
};
}
/**
* Determines the error category from combined error text and exit code.
*
* Order matters — more specific patterns are checked before generic ones.
* For example `"permission denied (publickey)"` should match
* `authentication-error` rather than `permission-denied`.
*/
function classifyText(text, exitCode) {
// Timeout (often signalled by exit code 124 from `timeout(1)`)
if (exitCode === 124 || isTimeout(text))
return "timeout";
// Command not found
if (isCommandNotFound(text))
return "command-not-found";
// Auth — checked before permission-denied because some auth errors
// contain the substring "permission denied"
if (isAuthError(text))
return "authentication-error";
// Permission
if (isPermissionDenied(text))
return "permission-denied";
// Network
if (isNetworkError(text))
return "network-error";
// Already exists
if (isAlreadyExists(text))
return "already-exists";
// Configuration
if (isConfigurationError(text))
return "configuration-error";
// Conflict — checked before not-found because conflict messages sometimes
// contain path references that include "not found"
if (isConflict(text))
return "conflict";
// Not found
if (isNotFound(text))
return "not-found";
// Catch-all
return "command-failed";
}
// ---------------------------------------------------------------------------
// Suggestions
// ---------------------------------------------------------------------------
const SUGGESTION_MAP = {
"command-not-found": (cmd) => `Ensure "${cmd}" is installed and available in your PATH.`,
"permission-denied": () => "Check file/directory permissions or run with elevated privileges.",
timeout: () => "The command took too long. Retry with a longer timeout or a smaller scope.",
"invalid-input": () => "Check the input parameters and try again.",
"not-found": () => "Verify the resource (file, branch, ref, etc.) exists.",
"network-error": () => "Check your network connection and try again.",
"authentication-error": () => "Verify your credentials or tokens are valid and not expired.",
conflict: () => "Resolve the conflict or release the lock and retry.",
"configuration-error": () => "Check that all required config files exist and are valid.",
"already-exists": () => "The resource already exists. Use a different name or remove it first.",
"command-failed": (cmd) => `Inspect the error message from "${cmd}" for more details.`,
};
function suggestRecovery(category, command) {
return SUGGESTION_MAP[category](command);
}
// ---------------------------------------------------------------------------
// Error output helper
// ---------------------------------------------------------------------------
/**
* Formats a {@link PareError} as human-readable text for the `content` field.
*/
function formatPareError(error) {
const lines = [`Error [${error.category}]: ${error.message}`];
if (error.command)
lines.push(`Command: ${error.command}`);
if (error.exitCode !== undefined)
lines.push(`Exit code: ${error.exitCode}`);
if (error.suggestion)
lines.push(`Suggestion: ${error.suggestion}`);
return lines.join("\n");
}
/**
* Creates a dual-output error response that can be returned directly from a
* tool handler. The response carries both human-readable text (`content`) and
* structured JSON (`structuredContent`) with `isError: true` so the MCP
* client knows the call did not succeed.
*
* Usage:
* ```ts
* if (result.exitCode !== 0) {
* return errorOutput(classifyError(result, "git tag"));
* }
* ```
*/
export function errorOutput(error) {
return {
content: [{ type: "text", text: formatPareError(error) }],
structuredContent: error,
isError: true,
};
}
/**
* Convenience: creates a {@link PareError} for input-validation failures and
* returns it as a dual-output response. Useful in `inputSchema` guards before
* the CLI command is even invoked.
*
* @param message - Description of what was wrong with the input.
*/
export function invalidInputError(message) {
return errorOutput({
isError: true,
category: "invalid-input",
message,
suggestion: "Check the input parameters and try again.",
});
}
//# sourceMappingURL=errors.js.map
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
/**
* Shared Zod input schemas for common tool parameters.
*
* These schemas centralize definitions that were previously duplicated
* across every server package (e.g. `compact`, `path`, `fix`).
*
* - **Constants** are used when the schema is identical everywhere.
* - **Factories** are used when only the `.describe()` text varies.
*/
import { z } from "zod";
/** `compact: z.boolean().optional().default(true).describe("Prefer compact output")` */
export declare const compactInput: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
/** `path` for servers whose root concept is a project (go, lint, build, make, cargo, python, test, npm). */
export declare const projectPathInput: z.ZodOptional<z.ZodString>;
/** `path` for servers whose root concept is a repository (git, github, security). */
export declare const repoPathInput: z.ZodOptional<z.ZodString>;
/** `path` for servers whose root concept is a working directory (docker, http, process, search). */
export declare const cwdPathInput: z.ZodOptional<z.ZodString>;
/** `fix: z.boolean().optional().default(false).describe("Auto-fix problems")` */
export declare const fixInput: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
/** Generic optional path string — use when none of the constants above fit. */
export declare const pathInput: (desc: string) => z.ZodOptional<z.ZodString>;
/** Optional config-file path. */
export declare const configInput: (desc: string) => z.ZodOptional<z.ZodString>;
/** Optional array of file-path patterns with INPUT_LIMITS applied. */
export declare const filePatternsInput: (desc: string, defaultValue?: string[]) => z.ZodOptional<z.ZodArray<z.ZodString>> | z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
//# sourceMappingURL=input-schemas.d.ts.map
{"version":3,"file":"input-schemas.d.ts","sourceRoot":"","sources":["../src/input-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,wFAAwF;AACxF,eAAO,MAAM,YAAY,2CAAyE,CAAC;AAEnG,4GAA4G;AAC5G,eAAO,MAAM,gBAAgB,4BAIG,CAAC;AAEjC,qFAAqF;AACrF,eAAO,MAAM,aAAa,4BAII,CAAC;AAE/B,oGAAoG;AACpG,eAAO,MAAM,YAAY,4BAIO,CAAC;AAEjC,iFAAiF;AACjF,eAAO,MAAM,QAAQ,2CAAsE,CAAC;AAM5F,+EAA+E;AAC/E,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,+BAC2B,CAAC;AAElE,iCAAiC;AACjC,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,+BACyB,CAAC;AAElE,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,eAAe,MAAM,EAAE,kGAMtE,CAAC"}
/**
* Shared Zod input schemas for common tool parameters.
*
* These schemas centralize definitions that were previously duplicated
* across every server package (e.g. `compact`, `path`, `fix`).
*
* - **Constants** are used when the schema is identical everywhere.
* - **Factories** are used when only the `.describe()` text varies.
*/
import { z } from "zod";
import { INPUT_LIMITS } from "./limits.js";
// ---------------------------------------------------------------------------
// Constants (zero variation across servers)
// ---------------------------------------------------------------------------
/** `compact: z.boolean().optional().default(true).describe("Prefer compact output")` */
export const compactInput = z.boolean().optional().default(true).describe("Prefer compact output");
/** `path` for servers whose root concept is a project (go, lint, build, make, cargo, python, test, npm). */
export const projectPathInput = z
.string()
.max(INPUT_LIMITS.PATH_MAX)
.optional()
.describe("Project root path");
/** `path` for servers whose root concept is a repository (git, github, security). */
export const repoPathInput = z
.string()
.max(INPUT_LIMITS.PATH_MAX)
.optional()
.describe("Repository path");
/** `path` for servers whose root concept is a working directory (docker, http, process, search). */
export const cwdPathInput = z
.string()
.max(INPUT_LIMITS.PATH_MAX)
.optional()
.describe("Working directory");
/** `fix: z.boolean().optional().default(false).describe("Auto-fix problems")` */
export const fixInput = z.boolean().optional().default(false).describe("Auto-fix problems");
// ---------------------------------------------------------------------------
// Factories (same shape, varied descriptions)
// ---------------------------------------------------------------------------
/** Generic optional path string — use when none of the constants above fit. */
export const pathInput = (desc) => z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe(desc);
/** Optional config-file path. */
export const configInput = (desc) => z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe(desc);
/** Optional array of file-path patterns with INPUT_LIMITS applied. */
export const filePatternsInput = (desc, defaultValue) => {
const base = z
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
.max(INPUT_LIMITS.ARRAY_MAX)
.optional();
return defaultValue ? base.default(defaultValue).describe(desc) : base.describe(desc);
};
//# sourceMappingURL=input-schemas.js.map
{"version":3,"file":"input-schemas.js","sourceRoot":"","sources":["../src/input-schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,8EAA8E;AAC9E,4CAA4C;AAC5C,8EAA8E;AAE9E,wFAAwF;AACxF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAEnG,4GAA4G;AAC5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,EAAE;KACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;KAC1B,QAAQ,EAAE;KACV,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEjC,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;KAC1B,QAAQ,EAAE;KACV,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE/B,oGAAoG;AACpG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;KAC1B,QAAQ,EAAE;KACV,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEjC,iFAAiF;AACjF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAE5F,8EAA8E;AAC9E,8CAA8C;AAC9C,8EAA8E;AAE9E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CACxC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElE,iCAAiC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAElE,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,YAAuB,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;SAC5C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;SAC3B,QAAQ,EAAE,CAAC;IACd,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxF,CAAC,CAAC"}
+3
-0

@@ -6,2 +6,3 @@ export { dualOutput, estimateTokens, compactDualOutput } from "./output.js";

export { INPUT_LIMITS } from "./limits.js";
export { compactInput, projectPathInput, repoPathInput, cwdPathInput, fixInput, pathInput, configInput, filePatternsInput, } from "./input-schemas.js";
export { sanitizeErrorOutput } from "./sanitize.js";

@@ -13,2 +14,4 @@ export { shouldRegisterTool, _resetProfileCache } from "./tool-filter.js";

export type { ToolOutput } from "./types.js";
export { PareErrorCategory, PareErrorSchema, classifyError, errorOutput, invalidInputError, isCommandNotFound, isPermissionDenied, isTimeout, isNetworkError, isAuthError, isConflict, isNotFound, isAlreadyExists, isConfigurationError, } from "./errors.js";
export type { PareErrorCategoryType, PareError } from "./errors.js";
//# sourceMappingURL=index.d.ts.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}

@@ -6,2 +6,3 @@ export { dualOutput, estimateTokens, compactDualOutput } from "./output.js";

export { INPUT_LIMITS } from "./limits.js";
export { compactInput, projectPathInput, repoPathInput, cwdPathInput, fixInput, pathInput, configInput, filePatternsInput, } from "./input-schemas.js";
export { sanitizeErrorOutput } from "./sanitize.js";

@@ -11,2 +12,3 @@ export { shouldRegisterTool, _resetProfileCache } from "./tool-filter.js";

export { assertAllowedByPolicy, assertAllowedRoot, assertNoPathQualifiedCommand, } from "./policy.js";
export { PareErrorCategory, PareErrorSchema, classifyError, errorOutput, invalidInputError, isCommandNotFound, isPermissionDenied, isTimeout, isNetworkError, isAuthError, isConflict, isNotFound, isAlreadyExists, isConfigurationError, } from "./errors.js";
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAmC,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,aAAa,CAAC"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,YAAY,EAAmC,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
{
"name": "@paretools/shared",
"version": "0.10.2",
"version": "0.11.0",
"description": "Shared utilities for Pare MCP servers",

@@ -5,0 +5,0 @@ "license": "MIT",