create-claude-context 1.0.0 → 1.2.1
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 +21 -21
- package/README.md +169 -146
- package/bin/create-claude-context.js +75 -61
- package/lib/ai-orchestrator.js +423 -0
- package/lib/call-tracer.js +444 -0
- package/lib/detector.js +456 -373
- package/lib/environment-detector.js +239 -0
- package/lib/index.js +271 -170
- package/lib/installer.js +371 -362
- package/lib/placeholder.js +269 -208
- package/lib/prompts.js +287 -287
- package/lib/spinner.js +60 -60
- package/lib/static-analyzer.js +729 -0
- package/lib/template-populator.js +835 -0
- package/lib/validate.js +147 -147
- package/package.json +59 -59
- package/templates/CLAUDE.md.template +235 -235
- package/templates/base/README.md +257 -257
- package/templates/base/RPI_WORKFLOW_PLAN.md +320 -320
- package/templates/base/agents/api-developer.md +76 -76
- package/templates/base/agents/context-engineer.md +525 -525
- package/templates/base/agents/core-architect.md +76 -76
- package/templates/base/agents/database-ops.md +76 -76
- package/templates/base/agents/deployment-ops.md +76 -76
- package/templates/base/agents/integration-hub.md +76 -76
- package/templates/base/analytics/README.md +114 -114
- package/templates/base/automation/config.json +58 -0
- package/templates/base/automation/generators/code-mapper.js +308 -0
- package/templates/base/automation/generators/index-builder.js +321 -0
- package/templates/base/automation/hooks/post-commit.sh +83 -0
- package/templates/base/automation/hooks/pre-commit.sh +103 -0
- package/templates/base/ci-templates/README.md +108 -108
- package/templates/base/ci-templates/github-actions/context-check.yml +144 -144
- package/templates/base/ci-templates/github-actions/validate-docs.yml +105 -105
- package/templates/base/commands/analytics.md +238 -238
- package/templates/base/commands/auto-sync.md +172 -0
- package/templates/base/commands/collab.md +194 -194
- package/templates/base/commands/help.md +450 -450
- package/templates/base/commands/rpi-implement.md +115 -115
- package/templates/base/commands/rpi-plan.md +93 -93
- package/templates/base/commands/rpi-research.md +88 -88
- package/templates/base/commands/session-resume.md +144 -0
- package/templates/base/commands/session-save.md +112 -0
- package/templates/base/commands/validate-all.md +77 -77
- package/templates/base/commands/verify-docs-current.md +86 -86
- package/templates/base/config/base.json +57 -57
- package/templates/base/config/environments/development.json +13 -13
- package/templates/base/config/environments/production.json +17 -17
- package/templates/base/config/environments/staging.json +13 -13
- package/templates/base/config/local.json.example +21 -21
- package/templates/base/context/.meta/generated-at.json +18 -0
- package/templates/base/context/ARCHITECTURE_SNAPSHOT.md +156 -156
- package/templates/base/context/CODE_TO_WORKFLOW_MAP.md +94 -94
- package/templates/base/context/FILE_OWNERSHIP.md +57 -0
- package/templates/base/context/INTEGRATION_POINTS.md +92 -0
- package/templates/base/context/KNOWN_GOTCHAS.md +195 -195
- package/templates/base/context/TESTING_MAP.md +95 -0
- package/templates/base/context/WORKFLOW_INDEX.md +129 -129
- package/templates/base/context/workflows/WORKFLOW_TEMPLATE.md +294 -294
- package/templates/base/indexes/agents/CAPABILITY_MATRIX.md +255 -255
- package/templates/base/indexes/agents/CATEGORY_INDEX.md +44 -44
- package/templates/base/indexes/code/CATEGORY_INDEX.md +38 -38
- package/templates/base/indexes/routing/CATEGORY_INDEX.md +39 -39
- package/templates/base/indexes/search/CATEGORY_INDEX.md +39 -39
- package/templates/base/indexes/workflows/CATEGORY_INDEX.md +38 -38
- package/templates/base/knowledge/README.md +98 -98
- package/templates/base/knowledge/sessions/README.md +88 -88
- package/templates/base/knowledge/sessions/TEMPLATE.md +150 -150
- package/templates/base/knowledge/shared/decisions/0001-adopt-context-engineering.md +144 -144
- package/templates/base/knowledge/shared/decisions/README.md +49 -49
- package/templates/base/knowledge/shared/decisions/TEMPLATE.md +123 -123
- package/templates/base/knowledge/shared/patterns/README.md +62 -62
- package/templates/base/knowledge/shared/patterns/TEMPLATE.md +120 -120
- package/templates/base/plans/PLAN_TEMPLATE.md +250 -250
- package/templates/base/research/RESEARCH_TEMPLATE.md +153 -153
- package/templates/base/schemas/agent.schema.json +141 -141
- package/templates/base/schemas/anchors.schema.json +54 -0
- package/templates/base/schemas/automation.schema.json +93 -0
- package/templates/base/schemas/command.schema.json +134 -134
- package/templates/base/schemas/hashes.schema.json +40 -0
- package/templates/base/schemas/manifest.schema.json +117 -117
- package/templates/base/schemas/plan.schema.json +136 -136
- package/templates/base/schemas/research.schema.json +115 -115
- package/templates/base/schemas/roles.schema.json +34 -0
- package/templates/base/schemas/session.schema.json +77 -0
- package/templates/base/schemas/settings.schema.json +244 -244
- package/templates/base/schemas/staleness.schema.json +53 -0
- package/templates/base/schemas/team-config.schema.json +42 -0
- package/templates/base/schemas/workflow.schema.json +126 -126
- package/templates/base/session/checkpoints/.gitkeep +2 -0
- package/templates/base/session/current/state.json +20 -0
- package/templates/base/session/history/.gitkeep +2 -0
- package/templates/base/settings.json +3 -57
- package/templates/base/standards/COMPATIBILITY.md +219 -219
- package/templates/base/standards/EXTENSION_GUIDELINES.md +280 -280
- package/templates/base/standards/QUALITY_CHECKLIST.md +211 -211
- package/templates/base/standards/README.md +66 -66
- package/templates/base/sync/anchors.json +6 -0
- package/templates/base/sync/hashes.json +6 -0
- package/templates/base/sync/staleness.json +10 -0
- package/templates/base/team/README.md +168 -168
- package/templates/base/team/config.json +79 -79
- package/templates/base/team/roles.json +145 -145
- package/templates/base/tools/bin/claude-context.js +151 -151
- package/templates/base/tools/lib/anchor-resolver.js +276 -0
- package/templates/base/tools/lib/config-loader.js +363 -363
- package/templates/base/tools/lib/detector.js +350 -350
- package/templates/base/tools/lib/diagnose.js +206 -206
- package/templates/base/tools/lib/drift-detector.js +373 -0
- package/templates/base/tools/lib/errors.js +199 -199
- package/templates/base/tools/lib/index.js +36 -24
- package/templates/base/tools/lib/init.js +192 -192
- package/templates/base/tools/lib/logger.js +230 -230
- package/templates/base/tools/lib/placeholder.js +201 -201
- package/templates/base/tools/lib/session-manager.js +354 -0
- package/templates/base/tools/lib/validate.js +521 -521
- package/templates/base/tools/package.json +49 -49
|
@@ -1,199 +1,199 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Claude Context Engineering - Error Classes
|
|
3
|
-
*
|
|
4
|
-
* Structured error handling for the context engineering system.
|
|
5
|
-
* All errors are categorized and include recovery information.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Base error class for all Claude Context errors
|
|
10
|
-
*/
|
|
11
|
-
class ClaudeContextError extends Error {
|
|
12
|
-
constructor(message, code, recoverable = true, details = {}) {
|
|
13
|
-
super(message);
|
|
14
|
-
this.name = 'ClaudeContextError';
|
|
15
|
-
this.code = code;
|
|
16
|
-
this.recoverable = recoverable;
|
|
17
|
-
this.details = details;
|
|
18
|
-
this.timestamp = new Date().toISOString();
|
|
19
|
-
|
|
20
|
-
// Capture stack trace
|
|
21
|
-
if (Error.captureStackTrace) {
|
|
22
|
-
Error.captureStackTrace(this, this.constructor);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
toJSON() {
|
|
27
|
-
return {
|
|
28
|
-
name: this.name,
|
|
29
|
-
message: this.message,
|
|
30
|
-
code: this.code,
|
|
31
|
-
recoverable: this.recoverable,
|
|
32
|
-
details: this.details,
|
|
33
|
-
timestamp: this.timestamp,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Configuration-related errors
|
|
40
|
-
*/
|
|
41
|
-
class ConfigurationError extends ClaudeContextError {
|
|
42
|
-
constructor(message, details = {}) {
|
|
43
|
-
super(message, ConfigurationError.codes[details.type] || 'E001', true, details);
|
|
44
|
-
this.name = 'ConfigurationError';
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
static codes = {
|
|
48
|
-
MISSING: 'E001',
|
|
49
|
-
INVALID: 'E002',
|
|
50
|
-
SCHEMA_VIOLATION: 'E003',
|
|
51
|
-
MERGE_CONFLICT: 'E004',
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Validation-related errors
|
|
57
|
-
*/
|
|
58
|
-
class ValidationError extends ClaudeContextError {
|
|
59
|
-
constructor(message, details = {}) {
|
|
60
|
-
super(message, ValidationError.codes[details.type] || 'E010', true, details);
|
|
61
|
-
this.name = 'ValidationError';
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static codes = {
|
|
65
|
-
SCHEMA: 'E010',
|
|
66
|
-
LINK_BROKEN: 'E011',
|
|
67
|
-
PLACEHOLDER_REMAINING: 'E012',
|
|
68
|
-
LINE_NUMBER_STALE: 'E013',
|
|
69
|
-
STRUCTURE: 'E014',
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* File system-related errors
|
|
75
|
-
*/
|
|
76
|
-
class FileSystemError extends ClaudeContextError {
|
|
77
|
-
constructor(message, details = {}) {
|
|
78
|
-
super(message, FileSystemError.codes[details.type] || 'E020', true, details);
|
|
79
|
-
this.name = 'FileSystemError';
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
static codes = {
|
|
83
|
-
NOT_FOUND: 'E020',
|
|
84
|
-
PERMISSION_DENIED: 'E021',
|
|
85
|
-
READ_ERROR: 'E022',
|
|
86
|
-
WRITE_ERROR: 'E023',
|
|
87
|
-
DIRECTORY_ERROR: 'E024',
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Initialization-related errors
|
|
93
|
-
*/
|
|
94
|
-
class InitializationError extends ClaudeContextError {
|
|
95
|
-
constructor(message, details = {}) {
|
|
96
|
-
super(message, InitializationError.codes[details.type] || 'E030', true, details);
|
|
97
|
-
this.name = 'InitializationError';
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
static codes = {
|
|
101
|
-
INCOMPLETE: 'E030',
|
|
102
|
-
TECH_STACK_UNKNOWN: 'E031',
|
|
103
|
-
WORKFLOW_DISCOVERY_FAILED: 'E032',
|
|
104
|
-
PLACEHOLDER_REPLACEMENT_FAILED: 'E033',
|
|
105
|
-
ALREADY_INITIALIZED: 'E034',
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Agent/Command execution errors
|
|
111
|
-
*/
|
|
112
|
-
class ExecutionError extends ClaudeContextError {
|
|
113
|
-
constructor(message, details = {}) {
|
|
114
|
-
super(message, ExecutionError.codes[details.type] || 'E040', details.recoverable ?? true, details);
|
|
115
|
-
this.name = 'ExecutionError';
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
static codes = {
|
|
119
|
-
AGENT_NOT_FOUND: 'E040',
|
|
120
|
-
COMMAND_NOT_FOUND: 'E041',
|
|
121
|
-
TIMEOUT: 'E042',
|
|
122
|
-
CONTEXT_EXCEEDED: 'E043',
|
|
123
|
-
DEPENDENCY_MISSING: 'E044',
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Error code reference table
|
|
129
|
-
*/
|
|
130
|
-
const ERROR_CODES = {
|
|
131
|
-
// Configuration (E001-E009)
|
|
132
|
-
E001: { name: 'CONFIG_MISSING', description: 'Configuration file not found' },
|
|
133
|
-
E002: { name: 'CONFIG_INVALID', description: 'Configuration file is invalid JSON' },
|
|
134
|
-
E003: { name: 'SCHEMA_VIOLATION', description: 'Configuration does not match schema' },
|
|
135
|
-
E004: { name: 'MERGE_CONFLICT', description: 'Configuration merge conflict' },
|
|
136
|
-
|
|
137
|
-
// Validation (E010-E019)
|
|
138
|
-
E010: { name: 'SCHEMA_ERROR', description: 'JSON schema validation failed' },
|
|
139
|
-
E011: { name: 'LINK_BROKEN', description: 'Markdown link does not resolve' },
|
|
140
|
-
E012: { name: 'PLACEHOLDER_REMAINING', description: 'Unresolved {{PLACEHOLDER}} found' },
|
|
141
|
-
E013: { name: 'LINE_NUMBER_STALE', description: 'Line number reference is outdated' },
|
|
142
|
-
E014: { name: 'STRUCTURE_ERROR', description: 'Required file or directory missing' },
|
|
143
|
-
|
|
144
|
-
// File System (E020-E029)
|
|
145
|
-
E020: { name: 'FILE_NOT_FOUND', description: 'File does not exist' },
|
|
146
|
-
E021: { name: 'PERMISSION_DENIED', description: 'Insufficient permissions' },
|
|
147
|
-
E022: { name: 'READ_ERROR', description: 'Failed to read file' },
|
|
148
|
-
E023: { name: 'WRITE_ERROR', description: 'Failed to write file' },
|
|
149
|
-
E024: { name: 'DIRECTORY_ERROR', description: 'Directory operation failed' },
|
|
150
|
-
|
|
151
|
-
// Initialization (E030-E039)
|
|
152
|
-
E030: { name: 'INIT_INCOMPLETE', description: 'Initialization did not complete' },
|
|
153
|
-
E031: { name: 'TECH_STACK_UNKNOWN', description: 'Could not detect technology stack' },
|
|
154
|
-
E032: { name: 'WORKFLOW_DISCOVERY_FAILED', description: 'Failed to discover workflows' },
|
|
155
|
-
E033: { name: 'PLACEHOLDER_REPLACEMENT_FAILED', description: 'Failed to replace placeholders' },
|
|
156
|
-
E034: { name: 'ALREADY_INITIALIZED', description: 'System already initialized' },
|
|
157
|
-
|
|
158
|
-
// Execution (E040-E049)
|
|
159
|
-
E040: { name: 'AGENT_NOT_FOUND', description: 'Agent not found' },
|
|
160
|
-
E041: { name: 'COMMAND_NOT_FOUND', description: 'Command not found' },
|
|
161
|
-
E042: { name: 'TIMEOUT', description: 'Operation timed out' },
|
|
162
|
-
E043: { name: 'CONTEXT_EXCEEDED', description: 'Context budget exceeded' },
|
|
163
|
-
E044: { name: 'DEPENDENCY_MISSING', description: 'Required dependency not available' },
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Get error details by code
|
|
168
|
-
*/
|
|
169
|
-
function getErrorInfo(code) {
|
|
170
|
-
return ERROR_CODES[code] || { name: 'UNKNOWN', description: 'Unknown error' };
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Format error for display
|
|
175
|
-
*/
|
|
176
|
-
function formatError(error) {
|
|
177
|
-
if (error instanceof ClaudeContextError) {
|
|
178
|
-
const info = getErrorInfo(error.code);
|
|
179
|
-
return `[${error.code}] ${error.name}: ${error.message}\n` +
|
|
180
|
-
` Type: ${info.name}\n` +
|
|
181
|
-
` Recoverable: ${error.recoverable ? 'Yes' : 'No'}\n` +
|
|
182
|
-
(Object.keys(error.details).length > 0
|
|
183
|
-
? ` Details: ${JSON.stringify(error.details, null, 2)}\n`
|
|
184
|
-
: '');
|
|
185
|
-
}
|
|
186
|
-
return error.toString();
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
module.exports = {
|
|
190
|
-
ClaudeContextError,
|
|
191
|
-
ConfigurationError,
|
|
192
|
-
ValidationError,
|
|
193
|
-
FileSystemError,
|
|
194
|
-
InitializationError,
|
|
195
|
-
ExecutionError,
|
|
196
|
-
ERROR_CODES,
|
|
197
|
-
getErrorInfo,
|
|
198
|
-
formatError,
|
|
199
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* Claude Context Engineering - Error Classes
|
|
3
|
+
*
|
|
4
|
+
* Structured error handling for the context engineering system.
|
|
5
|
+
* All errors are categorized and include recovery information.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Base error class for all Claude Context errors
|
|
10
|
+
*/
|
|
11
|
+
class ClaudeContextError extends Error {
|
|
12
|
+
constructor(message, code, recoverable = true, details = {}) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'ClaudeContextError';
|
|
15
|
+
this.code = code;
|
|
16
|
+
this.recoverable = recoverable;
|
|
17
|
+
this.details = details;
|
|
18
|
+
this.timestamp = new Date().toISOString();
|
|
19
|
+
|
|
20
|
+
// Capture stack trace
|
|
21
|
+
if (Error.captureStackTrace) {
|
|
22
|
+
Error.captureStackTrace(this, this.constructor);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
toJSON() {
|
|
27
|
+
return {
|
|
28
|
+
name: this.name,
|
|
29
|
+
message: this.message,
|
|
30
|
+
code: this.code,
|
|
31
|
+
recoverable: this.recoverable,
|
|
32
|
+
details: this.details,
|
|
33
|
+
timestamp: this.timestamp,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Configuration-related errors
|
|
40
|
+
*/
|
|
41
|
+
class ConfigurationError extends ClaudeContextError {
|
|
42
|
+
constructor(message, details = {}) {
|
|
43
|
+
super(message, ConfigurationError.codes[details.type] || 'E001', true, details);
|
|
44
|
+
this.name = 'ConfigurationError';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static codes = {
|
|
48
|
+
MISSING: 'E001',
|
|
49
|
+
INVALID: 'E002',
|
|
50
|
+
SCHEMA_VIOLATION: 'E003',
|
|
51
|
+
MERGE_CONFLICT: 'E004',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Validation-related errors
|
|
57
|
+
*/
|
|
58
|
+
class ValidationError extends ClaudeContextError {
|
|
59
|
+
constructor(message, details = {}) {
|
|
60
|
+
super(message, ValidationError.codes[details.type] || 'E010', true, details);
|
|
61
|
+
this.name = 'ValidationError';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static codes = {
|
|
65
|
+
SCHEMA: 'E010',
|
|
66
|
+
LINK_BROKEN: 'E011',
|
|
67
|
+
PLACEHOLDER_REMAINING: 'E012',
|
|
68
|
+
LINE_NUMBER_STALE: 'E013',
|
|
69
|
+
STRUCTURE: 'E014',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* File system-related errors
|
|
75
|
+
*/
|
|
76
|
+
class FileSystemError extends ClaudeContextError {
|
|
77
|
+
constructor(message, details = {}) {
|
|
78
|
+
super(message, FileSystemError.codes[details.type] || 'E020', true, details);
|
|
79
|
+
this.name = 'FileSystemError';
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static codes = {
|
|
83
|
+
NOT_FOUND: 'E020',
|
|
84
|
+
PERMISSION_DENIED: 'E021',
|
|
85
|
+
READ_ERROR: 'E022',
|
|
86
|
+
WRITE_ERROR: 'E023',
|
|
87
|
+
DIRECTORY_ERROR: 'E024',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Initialization-related errors
|
|
93
|
+
*/
|
|
94
|
+
class InitializationError extends ClaudeContextError {
|
|
95
|
+
constructor(message, details = {}) {
|
|
96
|
+
super(message, InitializationError.codes[details.type] || 'E030', true, details);
|
|
97
|
+
this.name = 'InitializationError';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
static codes = {
|
|
101
|
+
INCOMPLETE: 'E030',
|
|
102
|
+
TECH_STACK_UNKNOWN: 'E031',
|
|
103
|
+
WORKFLOW_DISCOVERY_FAILED: 'E032',
|
|
104
|
+
PLACEHOLDER_REPLACEMENT_FAILED: 'E033',
|
|
105
|
+
ALREADY_INITIALIZED: 'E034',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Agent/Command execution errors
|
|
111
|
+
*/
|
|
112
|
+
class ExecutionError extends ClaudeContextError {
|
|
113
|
+
constructor(message, details = {}) {
|
|
114
|
+
super(message, ExecutionError.codes[details.type] || 'E040', details.recoverable ?? true, details);
|
|
115
|
+
this.name = 'ExecutionError';
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
static codes = {
|
|
119
|
+
AGENT_NOT_FOUND: 'E040',
|
|
120
|
+
COMMAND_NOT_FOUND: 'E041',
|
|
121
|
+
TIMEOUT: 'E042',
|
|
122
|
+
CONTEXT_EXCEEDED: 'E043',
|
|
123
|
+
DEPENDENCY_MISSING: 'E044',
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Error code reference table
|
|
129
|
+
*/
|
|
130
|
+
const ERROR_CODES = {
|
|
131
|
+
// Configuration (E001-E009)
|
|
132
|
+
E001: { name: 'CONFIG_MISSING', description: 'Configuration file not found' },
|
|
133
|
+
E002: { name: 'CONFIG_INVALID', description: 'Configuration file is invalid JSON' },
|
|
134
|
+
E003: { name: 'SCHEMA_VIOLATION', description: 'Configuration does not match schema' },
|
|
135
|
+
E004: { name: 'MERGE_CONFLICT', description: 'Configuration merge conflict' },
|
|
136
|
+
|
|
137
|
+
// Validation (E010-E019)
|
|
138
|
+
E010: { name: 'SCHEMA_ERROR', description: 'JSON schema validation failed' },
|
|
139
|
+
E011: { name: 'LINK_BROKEN', description: 'Markdown link does not resolve' },
|
|
140
|
+
E012: { name: 'PLACEHOLDER_REMAINING', description: 'Unresolved {{PLACEHOLDER}} found' },
|
|
141
|
+
E013: { name: 'LINE_NUMBER_STALE', description: 'Line number reference is outdated' },
|
|
142
|
+
E014: { name: 'STRUCTURE_ERROR', description: 'Required file or directory missing' },
|
|
143
|
+
|
|
144
|
+
// File System (E020-E029)
|
|
145
|
+
E020: { name: 'FILE_NOT_FOUND', description: 'File does not exist' },
|
|
146
|
+
E021: { name: 'PERMISSION_DENIED', description: 'Insufficient permissions' },
|
|
147
|
+
E022: { name: 'READ_ERROR', description: 'Failed to read file' },
|
|
148
|
+
E023: { name: 'WRITE_ERROR', description: 'Failed to write file' },
|
|
149
|
+
E024: { name: 'DIRECTORY_ERROR', description: 'Directory operation failed' },
|
|
150
|
+
|
|
151
|
+
// Initialization (E030-E039)
|
|
152
|
+
E030: { name: 'INIT_INCOMPLETE', description: 'Initialization did not complete' },
|
|
153
|
+
E031: { name: 'TECH_STACK_UNKNOWN', description: 'Could not detect technology stack' },
|
|
154
|
+
E032: { name: 'WORKFLOW_DISCOVERY_FAILED', description: 'Failed to discover workflows' },
|
|
155
|
+
E033: { name: 'PLACEHOLDER_REPLACEMENT_FAILED', description: 'Failed to replace placeholders' },
|
|
156
|
+
E034: { name: 'ALREADY_INITIALIZED', description: 'System already initialized' },
|
|
157
|
+
|
|
158
|
+
// Execution (E040-E049)
|
|
159
|
+
E040: { name: 'AGENT_NOT_FOUND', description: 'Agent not found' },
|
|
160
|
+
E041: { name: 'COMMAND_NOT_FOUND', description: 'Command not found' },
|
|
161
|
+
E042: { name: 'TIMEOUT', description: 'Operation timed out' },
|
|
162
|
+
E043: { name: 'CONTEXT_EXCEEDED', description: 'Context budget exceeded' },
|
|
163
|
+
E044: { name: 'DEPENDENCY_MISSING', description: 'Required dependency not available' },
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Get error details by code
|
|
168
|
+
*/
|
|
169
|
+
function getErrorInfo(code) {
|
|
170
|
+
return ERROR_CODES[code] || { name: 'UNKNOWN', description: 'Unknown error' };
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Format error for display
|
|
175
|
+
*/
|
|
176
|
+
function formatError(error) {
|
|
177
|
+
if (error instanceof ClaudeContextError) {
|
|
178
|
+
const info = getErrorInfo(error.code);
|
|
179
|
+
return `[${error.code}] ${error.name}: ${error.message}\n` +
|
|
180
|
+
` Type: ${info.name}\n` +
|
|
181
|
+
` Recoverable: ${error.recoverable ? 'Yes' : 'No'}\n` +
|
|
182
|
+
(Object.keys(error.details).length > 0
|
|
183
|
+
? ` Details: ${JSON.stringify(error.details, null, 2)}\n`
|
|
184
|
+
: '');
|
|
185
|
+
}
|
|
186
|
+
return error.toString();
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
module.exports = {
|
|
190
|
+
ClaudeContextError,
|
|
191
|
+
ConfigurationError,
|
|
192
|
+
ValidationError,
|
|
193
|
+
FileSystemError,
|
|
194
|
+
InitializationError,
|
|
195
|
+
ExecutionError,
|
|
196
|
+
ERROR_CODES,
|
|
197
|
+
getErrorInfo,
|
|
198
|
+
formatError,
|
|
199
|
+
};
|
|
@@ -1,24 +1,36 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Claude Context Engineering Tools - Main Entry
|
|
3
|
-
*
|
|
4
|
-
* Exports all public APIs from the tools library.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const { init } = require('./init');
|
|
8
|
-
const { validate } = require('./validate');
|
|
9
|
-
const { diagnose } = require('./diagnose');
|
|
10
|
-
const { configLoader } = require('./config-loader');
|
|
11
|
-
const { logger } = require('./logger');
|
|
12
|
-
const errors = require('./errors');
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Claude Context Engineering Tools - Main Entry
|
|
3
|
+
*
|
|
4
|
+
* Exports all public APIs from the tools library.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
const { init } = require('./init');
|
|
8
|
+
const { validate } = require('./validate');
|
|
9
|
+
const { diagnose } = require('./diagnose');
|
|
10
|
+
const { configLoader } = require('./config-loader');
|
|
11
|
+
const { logger } = require('./logger');
|
|
12
|
+
const errors = require('./errors');
|
|
13
|
+
|
|
14
|
+
// Self-sustaining automation modules
|
|
15
|
+
const sessionManager = require('./session-manager');
|
|
16
|
+
const anchorResolver = require('./anchor-resolver');
|
|
17
|
+
const driftDetector = require('./drift-detector');
|
|
18
|
+
|
|
19
|
+
module.exports = {
|
|
20
|
+
// Commands
|
|
21
|
+
init,
|
|
22
|
+
validate,
|
|
23
|
+
diagnose,
|
|
24
|
+
|
|
25
|
+
// Utilities
|
|
26
|
+
configLoader,
|
|
27
|
+
logger,
|
|
28
|
+
errors,
|
|
29
|
+
|
|
30
|
+
// Session Management
|
|
31
|
+
sessionManager,
|
|
32
|
+
|
|
33
|
+
// Synchronization
|
|
34
|
+
anchorResolver,
|
|
35
|
+
driftDetector,
|
|
36
|
+
};
|