@mainwp/control 1.0.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.
- package/LICENSE +674 -0
- package/README.md +583 -0
- package/bin/_exit.js +12 -0
- package/bin/dev.js +7 -0
- package/bin/run.js +7 -0
- package/dist/chat/chat-engine.d.ts +213 -0
- package/dist/chat/chat-engine.d.ts.map +1 -0
- package/dist/chat/chat-engine.js +636 -0
- package/dist/chat/chat-engine.js.map +1 -0
- package/dist/chat/index.d.ts +10 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +14 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/providers/anthropic.d.ts +52 -0
- package/dist/chat/providers/anthropic.d.ts.map +1 -0
- package/dist/chat/providers/anthropic.js +292 -0
- package/dist/chat/providers/anthropic.js.map +1 -0
- package/dist/chat/providers/gemini.d.ts +52 -0
- package/dist/chat/providers/gemini.d.ts.map +1 -0
- package/dist/chat/providers/gemini.js +284 -0
- package/dist/chat/providers/gemini.js.map +1 -0
- package/dist/chat/providers/index.d.ts +19 -0
- package/dist/chat/providers/index.d.ts.map +1 -0
- package/dist/chat/providers/index.js +23 -0
- package/dist/chat/providers/index.js.map +1 -0
- package/dist/chat/providers/local.d.ts +37 -0
- package/dist/chat/providers/local.d.ts.map +1 -0
- package/dist/chat/providers/local.js +130 -0
- package/dist/chat/providers/local.js.map +1 -0
- package/dist/chat/providers/openai-compatible.d.ts +155 -0
- package/dist/chat/providers/openai-compatible.d.ts.map +1 -0
- package/dist/chat/providers/openai-compatible.js +264 -0
- package/dist/chat/providers/openai-compatible.js.map +1 -0
- package/dist/chat/providers/openai.d.ts +24 -0
- package/dist/chat/providers/openai.d.ts.map +1 -0
- package/dist/chat/providers/openai.js +62 -0
- package/dist/chat/providers/openai.js.map +1 -0
- package/dist/chat/providers/openrouter.d.ts +26 -0
- package/dist/chat/providers/openrouter.d.ts.map +1 -0
- package/dist/chat/providers/openrouter.js +65 -0
- package/dist/chat/providers/openrouter.js.map +1 -0
- package/dist/chat/providers/provider-fetch.d.ts +15 -0
- package/dist/chat/providers/provider-fetch.d.ts.map +1 -0
- package/dist/chat/providers/provider-fetch.js +35 -0
- package/dist/chat/providers/provider-fetch.js.map +1 -0
- package/dist/chat/providers/provider.d.ts +214 -0
- package/dist/chat/providers/provider.d.ts.map +1 -0
- package/dist/chat/providers/provider.js +166 -0
- package/dist/chat/providers/provider.js.map +1 -0
- package/dist/chat/providers/sse-reader.d.ts +21 -0
- package/dist/chat/providers/sse-reader.d.ts.map +1 -0
- package/dist/chat/providers/sse-reader.js +48 -0
- package/dist/chat/providers/sse-reader.js.map +1 -0
- package/dist/chat/system-prompt.d.ts +33 -0
- package/dist/chat/system-prompt.d.ts.map +1 -0
- package/dist/chat/system-prompt.js +166 -0
- package/dist/chat/system-prompt.js.map +1 -0
- package/dist/chat/tool-envelope.d.ts +72 -0
- package/dist/chat/tool-envelope.d.ts.map +1 -0
- package/dist/chat/tool-envelope.js +263 -0
- package/dist/chat/tool-envelope.js.map +1 -0
- package/dist/commands/abilities/info.d.ts +21 -0
- package/dist/commands/abilities/info.d.ts.map +1 -0
- package/dist/commands/abilities/info.js +80 -0
- package/dist/commands/abilities/info.js.map +1 -0
- package/dist/commands/abilities/list.d.ts +19 -0
- package/dist/commands/abilities/list.d.ts.map +1 -0
- package/dist/commands/abilities/list.js +98 -0
- package/dist/commands/abilities/list.js.map +1 -0
- package/dist/commands/abilities/run.d.ts +75 -0
- package/dist/commands/abilities/run.d.ts.map +1 -0
- package/dist/commands/abilities/run.js +468 -0
- package/dist/commands/abilities/run.js.map +1 -0
- package/dist/commands/chat.d.ts +54 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +384 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config/show.d.ts +54 -0
- package/dist/commands/config/show.d.ts.map +1 -0
- package/dist/commands/config/show.js +324 -0
- package/dist/commands/config/show.js.map +1 -0
- package/dist/commands/doctor.d.ts +77 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +412 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/jobs/watch.d.ts +50 -0
- package/dist/commands/jobs/watch.d.ts.map +1 -0
- package/dist/commands/jobs/watch.js +269 -0
- package/dist/commands/jobs/watch.js.map +1 -0
- package/dist/commands/login.d.ts +25 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +165 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/profile/delete.d.ts +22 -0
- package/dist/commands/profile/delete.d.ts.map +1 -0
- package/dist/commands/profile/delete.js +57 -0
- package/dist/commands/profile/delete.js.map +1 -0
- package/dist/commands/profile/list.d.ts +19 -0
- package/dist/commands/profile/list.d.ts.map +1 -0
- package/dist/commands/profile/list.js +53 -0
- package/dist/commands/profile/list.js.map +1 -0
- package/dist/commands/profile/use.d.ts +22 -0
- package/dist/commands/profile/use.d.ts.map +1 -0
- package/dist/commands/profile/use.js +46 -0
- package/dist/commands/profile/use.js.map +1 -0
- package/dist/config/fs-utils.d.ts +14 -0
- package/dist/config/fs-utils.d.ts.map +1 -0
- package/dist/config/fs-utils.js +31 -0
- package/dist/config/fs-utils.js.map +1 -0
- package/dist/config/keychain.d.ts +53 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +175 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/profile-store.d.ts +85 -0
- package/dist/config/profile-store.d.ts.map +1 -0
- package/dist/config/profile-store.js +228 -0
- package/dist/config/profile-store.js.map +1 -0
- package/dist/config/settings.d.ts +71 -0
- package/dist/config/settings.d.ts.map +1 -0
- package/dist/config/settings.js +151 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/core/abilities-executor.d.ts +126 -0
- package/dist/core/abilities-executor.d.ts.map +1 -0
- package/dist/core/abilities-executor.js +264 -0
- package/dist/core/abilities-executor.js.map +1 -0
- package/dist/core/batch-manager.d.ts +113 -0
- package/dist/core/batch-manager.d.ts.map +1 -0
- package/dist/core/batch-manager.js +244 -0
- package/dist/core/batch-manager.js.map +1 -0
- package/dist/core/http-client.d.ts +111 -0
- package/dist/core/http-client.d.ts.map +1 -0
- package/dist/core/http-client.js +329 -0
- package/dist/core/http-client.js.map +1 -0
- package/dist/core/safety-controller.d.ts +114 -0
- package/dist/core/safety-controller.d.ts.map +1 -0
- package/dist/core/safety-controller.js +229 -0
- package/dist/core/safety-controller.js.map +1 -0
- package/dist/hooks/command-not-found.d.ts +12 -0
- package/dist/hooks/command-not-found.d.ts.map +1 -0
- package/dist/hooks/command-not-found.js +58 -0
- package/dist/hooks/command-not-found.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/base-command.d.ts +123 -0
- package/dist/lib/base-command.d.ts.map +1 -0
- package/dist/lib/base-command.js +285 -0
- package/dist/lib/base-command.js.map +1 -0
- package/dist/output/formatter.d.ts +48 -0
- package/dist/output/formatter.d.ts.map +1 -0
- package/dist/output/formatter.js +138 -0
- package/dist/output/formatter.js.map +1 -0
- package/dist/output/json-envelope.d.ts +43 -0
- package/dist/output/json-envelope.d.ts.map +1 -0
- package/dist/output/json-envelope.js +73 -0
- package/dist/output/json-envelope.js.map +1 -0
- package/dist/utils/audit-logger.d.ts +97 -0
- package/dist/utils/audit-logger.d.ts.map +1 -0
- package/dist/utils/audit-logger.js +169 -0
- package/dist/utils/audit-logger.js.map +1 -0
- package/dist/utils/colors.d.ts +29 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/colors.js +36 -0
- package/dist/utils/colors.js.map +1 -0
- package/dist/utils/errors.d.ts +107 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +149 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/exit-codes.d.ts +21 -0
- package/dist/utils/exit-codes.d.ts.map +1 -0
- package/dist/utils/exit-codes.js +20 -0
- package/dist/utils/exit-codes.js.map +1 -0
- package/dist/utils/format.d.ts +64 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +69 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/prompt.d.ts +34 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +132 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/retry.d.ts +59 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +96 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/terminal-sanitizer.d.ts +60 -0
- package/dist/utils/terminal-sanitizer.d.ts.map +1 -0
- package/dist/utils/terminal-sanitizer.js +166 -0
- package/dist/utils/terminal-sanitizer.js.map +1 -0
- package/dist/validation/input-sanitizer.d.ts +76 -0
- package/dist/validation/input-sanitizer.d.ts.map +1 -0
- package/dist/validation/input-sanitizer.js +199 -0
- package/dist/validation/input-sanitizer.js.map +1 -0
- package/dist/validation/schema-validator.d.ts +75 -0
- package/dist/validation/schema-validator.d.ts.map +1 -0
- package/dist/validation/schema-validator.js +147 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/oclif.manifest.json +857 -0
- package/package.json +101 -0
- package/scripts/completions/README.md +221 -0
- package/scripts/completions/mainwpcontrol.bash +193 -0
- package/scripts/completions/mainwpcontrol.zsh +267 -0
- package/scripts/completions/profile-completer.sh +35 -0
- package/scripts/completions/regenerate.sh +78 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema Validator for mainwpcontrol
|
|
3
|
+
*
|
|
4
|
+
* AJV-based input validation against ability JSON schemas.
|
|
5
|
+
* Caches compiled schemas for performance.
|
|
6
|
+
*/
|
|
7
|
+
import AjvModule from 'ajv';
|
|
8
|
+
import { SchemaValidationError } from '../utils/errors.js';
|
|
9
|
+
// Handle ESM default export
|
|
10
|
+
const Ajv = AjvModule.default ?? AjvModule;
|
|
11
|
+
/**
|
|
12
|
+
* Schema Validator class
|
|
13
|
+
*/
|
|
14
|
+
export class SchemaValidator {
|
|
15
|
+
ajv;
|
|
16
|
+
schemaCache = new Map();
|
|
17
|
+
constructor() {
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
19
|
+
this.ajv = new Ajv({
|
|
20
|
+
allErrors: true, // Collect all errors, not just first
|
|
21
|
+
strict: false, // Allow unknown keywords (for ability schema extensions)
|
|
22
|
+
coerceTypes: true, // Coerce strings to numbers, etc.
|
|
23
|
+
useDefaults: true, // Apply default values from schema
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validate input against a JSON schema
|
|
28
|
+
*
|
|
29
|
+
* @param input - The input data to validate
|
|
30
|
+
* @param schema - The JSON schema to validate against
|
|
31
|
+
* @param schemaId - Optional ID for caching compiled schema
|
|
32
|
+
* @returns Validation result with any errors
|
|
33
|
+
*/
|
|
34
|
+
validate(input, schema, schemaId) {
|
|
35
|
+
const validate = this.getCompiledSchema(schema, schemaId);
|
|
36
|
+
// Clone input so AJV coerceTypes/useDefaults mutates the clone, not the caller's object
|
|
37
|
+
const coerced = structuredClone(input);
|
|
38
|
+
const valid = validate(coerced);
|
|
39
|
+
if (valid) {
|
|
40
|
+
return { valid: true, coerced };
|
|
41
|
+
}
|
|
42
|
+
const errors = this.formatErrors(validate.errors ?? []);
|
|
43
|
+
return { valid: false, errors, coerced };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validate input and throw if invalid
|
|
47
|
+
*
|
|
48
|
+
* @param input - The input data to validate
|
|
49
|
+
* @param schema - The JSON schema to validate against
|
|
50
|
+
* @param abilityName - Name of the ability (for error message)
|
|
51
|
+
* @throws SchemaValidationError if validation fails
|
|
52
|
+
*/
|
|
53
|
+
validateOrThrow(input, schema, abilityName) {
|
|
54
|
+
const result = this.validate(input, schema, abilityName);
|
|
55
|
+
if (!result.valid && result.errors) {
|
|
56
|
+
const errorMessages = result.errors.map((e) => `${e.path}: ${e.message}`).join('; ');
|
|
57
|
+
throw new SchemaValidationError(`Invalid input for ability "${abilityName}": ${errorMessages}`, result.errors, `Check the ability schema with \`mainwpcontrol abilities info ${abilityName}\` for required fields and types`);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Check if input would be valid (without detailed errors)
|
|
63
|
+
*/
|
|
64
|
+
isValid(input, schema, schemaId) {
|
|
65
|
+
const validate = this.getCompiledSchema(schema, schemaId);
|
|
66
|
+
return validate(structuredClone(input));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get or compile schema
|
|
70
|
+
*/
|
|
71
|
+
getCompiledSchema(schema, schemaId) {
|
|
72
|
+
// Try cache if ID provided
|
|
73
|
+
if (schemaId) {
|
|
74
|
+
const cached = this.schemaCache.get(schemaId);
|
|
75
|
+
if (cached) {
|
|
76
|
+
return cached;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Compile schema
|
|
80
|
+
const compiled = this.ajv.compile(schema);
|
|
81
|
+
// Cache if ID provided
|
|
82
|
+
if (schemaId) {
|
|
83
|
+
this.schemaCache.set(schemaId, compiled);
|
|
84
|
+
}
|
|
85
|
+
return compiled;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Format AJV errors into structured errors
|
|
89
|
+
*/
|
|
90
|
+
formatErrors(ajvErrors) {
|
|
91
|
+
return ajvErrors.map((error) => ({
|
|
92
|
+
path: error.instancePath || '/',
|
|
93
|
+
message: this.formatErrorMessage(error),
|
|
94
|
+
keyword: error.keyword,
|
|
95
|
+
params: error.params,
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Format a single error into a human-readable message
|
|
100
|
+
*/
|
|
101
|
+
formatErrorMessage(error) {
|
|
102
|
+
switch (error.keyword) {
|
|
103
|
+
case 'required':
|
|
104
|
+
return `Missing required property: ${error.params['missingProperty']}`;
|
|
105
|
+
case 'type':
|
|
106
|
+
return `Expected ${error.params['type']}, got ${typeof error.data}`;
|
|
107
|
+
case 'enum':
|
|
108
|
+
return `Must be one of: ${error.params['allowedValues'].join(', ')}`;
|
|
109
|
+
case 'minLength':
|
|
110
|
+
return `Must be at least ${error.params['limit']} characters`;
|
|
111
|
+
case 'maxLength':
|
|
112
|
+
return `Must be at most ${error.params['limit']} characters`;
|
|
113
|
+
case 'minimum':
|
|
114
|
+
return `Must be >= ${error.params['limit']}`;
|
|
115
|
+
case 'maximum':
|
|
116
|
+
return `Must be <= ${error.params['limit']}`;
|
|
117
|
+
case 'pattern':
|
|
118
|
+
return `Must match pattern: ${error.params['pattern']}`;
|
|
119
|
+
case 'format':
|
|
120
|
+
return `Must be a valid ${error.params['format']}`;
|
|
121
|
+
case 'additionalProperties':
|
|
122
|
+
return `Unknown property: ${error.params['additionalProperty']}`;
|
|
123
|
+
default:
|
|
124
|
+
return error.message ?? 'Validation failed';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Clear the schema cache
|
|
129
|
+
*/
|
|
130
|
+
clearCache() {
|
|
131
|
+
this.schemaCache.clear();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Singleton instance
|
|
136
|
+
*/
|
|
137
|
+
let instance = null;
|
|
138
|
+
/**
|
|
139
|
+
* Get the schema validator singleton
|
|
140
|
+
*/
|
|
141
|
+
export function getSchemaValidator() {
|
|
142
|
+
if (!instance) {
|
|
143
|
+
instance = new SchemaValidator();
|
|
144
|
+
}
|
|
145
|
+
return instance;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=schema-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../src/validation/schema-validator.ts"],"names":[],"mappings":"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"}
|