agentic-lang 0.2.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/COMMUNITY.md +220 -0
- package/CONTRIBUTING.md +194 -0
- package/FINAL_REPORT.md +398 -0
- package/FOR_OTHER_LLMS.md +286 -0
- package/IMPROVEMENTS.md +319 -0
- package/LAUNCH_GUIDE.md +388 -0
- package/LICENSE +21 -0
- package/NPM_PUBLISH.md +257 -0
- package/PROJECT_COMPLETE.md +414 -0
- package/PROJECT_OVERVIEW.md +265 -0
- package/PROJECT_TREE.txt +228 -0
- package/PUBLISHING_GUIDE.md +426 -0
- package/PUBLISH_NOW.md +337 -0
- package/QUICKSTART.md +207 -0
- package/README.md +195 -0
- package/README_ENHANCED.md +329 -0
- package/READY_TO_LAUNCH.txt +56 -0
- package/REFACTOR_PLAN.md +179 -0
- package/ROADMAP.md +201 -0
- package/SUMMARY.md +315 -0
- package/bin/agentic.js +3 -0
- package/blog/001-introducing-agentic.md +382 -0
- package/blog/002-confidence-driven-development.md +490 -0
- package/blog/003-formal-verification.md +427 -0
- package/blog/004-multi-agent-production.md +436 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +151 -0
- package/dist/cli.js.map +1 -0
- package/dist/diagnostics/diagnostic.d.ts +115 -0
- package/dist/diagnostics/diagnostic.d.ts.map +1 -0
- package/dist/diagnostics/diagnostic.js +101 -0
- package/dist/diagnostics/diagnostic.js.map +1 -0
- package/dist/diagnostics/formatter.d.ts +36 -0
- package/dist/diagnostics/formatter.d.ts.map +1 -0
- package/dist/diagnostics/formatter.js +263 -0
- package/dist/diagnostics/formatter.js.map +1 -0
- package/dist/effects/effect-system.d.ts +64 -0
- package/dist/effects/effect-system.d.ts.map +1 -0
- package/dist/effects/effect-system.js +197 -0
- package/dist/effects/effect-system.js.map +1 -0
- package/dist/generator/typescript-generator.d.ts +31 -0
- package/dist/generator/typescript-generator.d.ts.map +1 -0
- package/dist/generator/typescript-generator.js +308 -0
- package/dist/generator/typescript-generator.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/lean4/exporter.d.ts +24 -0
- package/dist/lean4/exporter.d.ts.map +1 -0
- package/dist/lean4/exporter.js +142 -0
- package/dist/lean4/exporter.js.map +1 -0
- package/dist/lsp/server.d.ts +6 -0
- package/dist/lsp/server.d.ts.map +1 -0
- package/dist/lsp/server.js +131 -0
- package/dist/lsp/server.js.map +1 -0
- package/dist/parser/lexer.d.ts +79 -0
- package/dist/parser/lexer.d.ts.map +1 -0
- package/dist/parser/lexer.js +296 -0
- package/dist/parser/lexer.js.map +1 -0
- package/dist/parser/parser-enhanced.d.ts +12 -0
- package/dist/parser/parser-enhanced.d.ts.map +1 -0
- package/dist/parser/parser-enhanced.js +206 -0
- package/dist/parser/parser-enhanced.js.map +1 -0
- package/dist/parser/parser.d.ts +34 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +507 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/property-tests/generator-enhanced.d.ts +27 -0
- package/dist/property-tests/generator-enhanced.d.ts.map +1 -0
- package/dist/property-tests/generator-enhanced.js +209 -0
- package/dist/property-tests/generator-enhanced.js.map +1 -0
- package/dist/property-tests/generator-fixed.d.ts +2 -0
- package/dist/property-tests/generator-fixed.d.ts.map +1 -0
- package/dist/property-tests/generator-fixed.js +7 -0
- package/dist/property-tests/generator-fixed.js.map +1 -0
- package/dist/property-tests/generator.d.ts +28 -0
- package/dist/property-tests/generator.d.ts.map +1 -0
- package/dist/property-tests/generator.js +284 -0
- package/dist/property-tests/generator.js.map +1 -0
- package/dist/refinements/refinement-types.d.ts +96 -0
- package/dist/refinements/refinement-types.d.ts.map +1 -0
- package/dist/refinements/refinement-types.js +234 -0
- package/dist/refinements/refinement-types.js.map +1 -0
- package/dist/repl.d.ts +21 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +317 -0
- package/dist/repl.js.map +1 -0
- package/dist/runtime/agents.d.ts +97 -0
- package/dist/runtime/agents.d.ts.map +1 -0
- package/dist/runtime/agents.js +258 -0
- package/dist/runtime/agents.js.map +1 -0
- package/dist/runtime/index.d.ts +98 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +253 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/types-extended.d.ts +197 -0
- package/dist/types-extended.d.ts.map +1 -0
- package/dist/types-extended.js +7 -0
- package/dist/types-extended.js.map +1 -0
- package/dist/types.d.ts +129 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/verification/z3-engine.d.ts +75 -0
- package/dist/verification/z3-engine.d.ts.map +1 -0
- package/dist/verification/z3-engine.js +234 -0
- package/dist/verification/z3-engine.js.map +1 -0
- package/examples/advanced-features.agentic +98 -0
- package/examples/annotations.agentic +37 -0
- package/examples/auth.agentic +53 -0
- package/examples/enterprise-example.agentic +360 -0
- package/examples/minimal.agentic +3 -0
- package/examples/minimal.ts +7 -0
- package/examples/ml-pipeline.agentic +350 -0
- package/examples/multi-agent-example.agentic +212 -0
- package/examples/onboarding-tutorial.agentic +263 -0
- package/examples/production-api.agentic +304 -0
- package/examples/real-world-chatbot.agentic +351 -0
- package/examples/result-handling.agentic +34 -0
- package/examples/runtime.ts +24 -0
- package/examples/showcase.agentic +22 -0
- package/examples/showcase.ts +28 -0
- package/examples/simple-test.agentic +4 -0
- package/examples/simple-test.ts +7 -0
- package/examples/simple.agentic +20 -0
- package/examples/test2.agentic +4 -0
- package/examples/test2.ts +9 -0
- package/examples/test3.agentic +4 -0
- package/examples/test3.ts +9 -0
- package/package.json +70 -0
- package/playground/index.html +221 -0
- package/playground/playground.js +291 -0
- package/registry/package-registry.ts +319 -0
- package/scripts/build.js +50 -0
- package/scripts/validate-confidence-mutation.ts +112 -0
- package/stdlib/async/promise.agentic +216 -0
- package/stdlib/database/pool.agentic +235 -0
- package/stdlib/file/io.agentic +194 -0
- package/stdlib/http/client.agentic +168 -0
- package/video-scripts/001-agentic-in-100-seconds.md +175 -0
- package/vscode-extension/README.md +67 -0
- package/vscode-extension/language-configuration.json +31 -0
- package/vscode-extension/package.json +46 -0
- package/vscode-extension/syntaxes/agentic.tmLanguage.json +134 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Diagnostic System for Agentic
|
|
3
|
+
* Based on Rust compiler diagnostics with AI-agent enhancements
|
|
4
|
+
*/
|
|
5
|
+
export declare enum DiagnosticSeverity {
|
|
6
|
+
Error = "error",
|
|
7
|
+
Warning = "warning",
|
|
8
|
+
Info = "info",
|
|
9
|
+
Hint = "hint"
|
|
10
|
+
}
|
|
11
|
+
export declare enum DiagnosticCode {
|
|
12
|
+
L001_UNEXPECTED_CHARACTER = "L001",
|
|
13
|
+
L002_UNTERMINATED_STRING = "L002",
|
|
14
|
+
L003_INVALID_NUMBER = "L003",
|
|
15
|
+
P001_UNEXPECTED_TOKEN = "P001",
|
|
16
|
+
P002_EXPECTED_TOKEN = "P002",
|
|
17
|
+
P003_INVALID_SYNTAX = "P003",
|
|
18
|
+
P004_MISSING_ANNOTATION_ARG = "P004",
|
|
19
|
+
P005_INVALID_MATCH_PATTERN = "P005",
|
|
20
|
+
T001_TYPE_MISMATCH = "T001",
|
|
21
|
+
T002_UNDEFINED_IDENTIFIER = "T002",
|
|
22
|
+
T003_INVALID_RESULT_TYPE = "T003",
|
|
23
|
+
T004_MISSING_TYPE_ANNOTATION = "T004",
|
|
24
|
+
A001_UNKNOWN_ANNOTATION = "A001",
|
|
25
|
+
A002_INVALID_CONFIDENCE_VALUE = "A002",
|
|
26
|
+
A003_MISSING_DEPENDENCY = "A003",
|
|
27
|
+
A004_INVALID_STAGE = "A004",
|
|
28
|
+
A005_LOW_CONFIDENCE = "A005"
|
|
29
|
+
}
|
|
30
|
+
export interface SourceLocation {
|
|
31
|
+
line: number;
|
|
32
|
+
column: number;
|
|
33
|
+
offset: number;
|
|
34
|
+
}
|
|
35
|
+
export interface SourceRange {
|
|
36
|
+
start: SourceLocation;
|
|
37
|
+
end: SourceLocation;
|
|
38
|
+
source?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface DiagnosticFix {
|
|
41
|
+
description: string;
|
|
42
|
+
command?: string;
|
|
43
|
+
edit?: {
|
|
44
|
+
range: SourceRange;
|
|
45
|
+
newText: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export interface Diagnostic {
|
|
49
|
+
code: DiagnosticCode;
|
|
50
|
+
severity: DiagnosticSeverity;
|
|
51
|
+
message: string;
|
|
52
|
+
location: SourceRange;
|
|
53
|
+
help?: string;
|
|
54
|
+
note?: string;
|
|
55
|
+
url?: string;
|
|
56
|
+
suggestedFixes?: DiagnosticFix[];
|
|
57
|
+
possibleCauses?: string[];
|
|
58
|
+
relatedInformation?: Array<{
|
|
59
|
+
location: SourceRange;
|
|
60
|
+
message: string;
|
|
61
|
+
}>;
|
|
62
|
+
context?: {
|
|
63
|
+
expectedToken?: string;
|
|
64
|
+
actualToken?: string;
|
|
65
|
+
availableIdentifiers?: string[];
|
|
66
|
+
[key: string]: any;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export declare class DiagnosticBuilder {
|
|
70
|
+
private diagnostic;
|
|
71
|
+
constructor(code: DiagnosticCode);
|
|
72
|
+
at(location: SourceRange): this;
|
|
73
|
+
withMessage(message: string): this;
|
|
74
|
+
withHelp(help: string): this;
|
|
75
|
+
withNote(note: string): this;
|
|
76
|
+
withUrl(url: string): this;
|
|
77
|
+
suggestFix(fix: DiagnosticFix): this;
|
|
78
|
+
addCause(cause: string): this;
|
|
79
|
+
withContext(context: Record<string, any>): this;
|
|
80
|
+
asSeverity(severity: DiagnosticSeverity): this;
|
|
81
|
+
build(): Diagnostic;
|
|
82
|
+
}
|
|
83
|
+
export declare function diagnostic(code: DiagnosticCode): DiagnosticBuilder;
|
|
84
|
+
export interface AgentDiagnostic {
|
|
85
|
+
type: 'compilation_error';
|
|
86
|
+
code: string;
|
|
87
|
+
severity: string;
|
|
88
|
+
message: string;
|
|
89
|
+
location: {
|
|
90
|
+
file: string;
|
|
91
|
+
line: number;
|
|
92
|
+
column: number;
|
|
93
|
+
snippet: string;
|
|
94
|
+
};
|
|
95
|
+
analysis: {
|
|
96
|
+
possibleCauses: string[];
|
|
97
|
+
suggestedFixes: Array<{
|
|
98
|
+
description: string;
|
|
99
|
+
command?: string;
|
|
100
|
+
code_edit?: {
|
|
101
|
+
before: string;
|
|
102
|
+
after: string;
|
|
103
|
+
};
|
|
104
|
+
}>;
|
|
105
|
+
relatedErrors?: string[];
|
|
106
|
+
confidence: number;
|
|
107
|
+
};
|
|
108
|
+
machineReadable: {
|
|
109
|
+
errorCategory: string;
|
|
110
|
+
canAutoFix: boolean;
|
|
111
|
+
fixable: boolean;
|
|
112
|
+
breakingChange: boolean;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=diagnostic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../src/diagnostics/diagnostic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Structured Diagnostic System for Agentic
|
|
4
|
+
* Based on Rust compiler diagnostics with AI-agent enhancements
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DiagnosticBuilder = exports.DiagnosticCode = exports.DiagnosticSeverity = void 0;
|
|
8
|
+
exports.diagnostic = diagnostic;
|
|
9
|
+
var DiagnosticSeverity;
|
|
10
|
+
(function (DiagnosticSeverity) {
|
|
11
|
+
DiagnosticSeverity["Error"] = "error";
|
|
12
|
+
DiagnosticSeverity["Warning"] = "warning";
|
|
13
|
+
DiagnosticSeverity["Info"] = "info";
|
|
14
|
+
DiagnosticSeverity["Hint"] = "hint";
|
|
15
|
+
})(DiagnosticSeverity || (exports.DiagnosticSeverity = DiagnosticSeverity = {}));
|
|
16
|
+
var DiagnosticCode;
|
|
17
|
+
(function (DiagnosticCode) {
|
|
18
|
+
// Lexer errors (L-series)
|
|
19
|
+
DiagnosticCode["L001_UNEXPECTED_CHARACTER"] = "L001";
|
|
20
|
+
DiagnosticCode["L002_UNTERMINATED_STRING"] = "L002";
|
|
21
|
+
DiagnosticCode["L003_INVALID_NUMBER"] = "L003";
|
|
22
|
+
// Parser errors (P-series)
|
|
23
|
+
DiagnosticCode["P001_UNEXPECTED_TOKEN"] = "P001";
|
|
24
|
+
DiagnosticCode["P002_EXPECTED_TOKEN"] = "P002";
|
|
25
|
+
DiagnosticCode["P003_INVALID_SYNTAX"] = "P003";
|
|
26
|
+
DiagnosticCode["P004_MISSING_ANNOTATION_ARG"] = "P004";
|
|
27
|
+
DiagnosticCode["P005_INVALID_MATCH_PATTERN"] = "P005";
|
|
28
|
+
// Type errors (T-series)
|
|
29
|
+
DiagnosticCode["T001_TYPE_MISMATCH"] = "T001";
|
|
30
|
+
DiagnosticCode["T002_UNDEFINED_IDENTIFIER"] = "T002";
|
|
31
|
+
DiagnosticCode["T003_INVALID_RESULT_TYPE"] = "T003";
|
|
32
|
+
DiagnosticCode["T004_MISSING_TYPE_ANNOTATION"] = "T004";
|
|
33
|
+
// Annotation errors (A-series)
|
|
34
|
+
DiagnosticCode["A001_UNKNOWN_ANNOTATION"] = "A001";
|
|
35
|
+
DiagnosticCode["A002_INVALID_CONFIDENCE_VALUE"] = "A002";
|
|
36
|
+
DiagnosticCode["A003_MISSING_DEPENDENCY"] = "A003";
|
|
37
|
+
DiagnosticCode["A004_INVALID_STAGE"] = "A004";
|
|
38
|
+
DiagnosticCode["A005_LOW_CONFIDENCE"] = "A005";
|
|
39
|
+
})(DiagnosticCode || (exports.DiagnosticCode = DiagnosticCode = {}));
|
|
40
|
+
class DiagnosticBuilder {
|
|
41
|
+
constructor(code) {
|
|
42
|
+
this.diagnostic = {
|
|
43
|
+
code,
|
|
44
|
+
severity: DiagnosticSeverity.Error,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
at(location) {
|
|
48
|
+
this.diagnostic.location = location;
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
withMessage(message) {
|
|
52
|
+
this.diagnostic.message = message;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
withHelp(help) {
|
|
56
|
+
this.diagnostic.help = help;
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
withNote(note) {
|
|
60
|
+
this.diagnostic.note = note;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
withUrl(url) {
|
|
64
|
+
this.diagnostic.url = url;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
suggestFix(fix) {
|
|
68
|
+
if (!this.diagnostic.suggestedFixes) {
|
|
69
|
+
this.diagnostic.suggestedFixes = [];
|
|
70
|
+
}
|
|
71
|
+
this.diagnostic.suggestedFixes.push(fix);
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
addCause(cause) {
|
|
75
|
+
if (!this.diagnostic.possibleCauses) {
|
|
76
|
+
this.diagnostic.possibleCauses = [];
|
|
77
|
+
}
|
|
78
|
+
this.diagnostic.possibleCauses.push(cause);
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
withContext(context) {
|
|
82
|
+
this.diagnostic.context = { ...this.diagnostic.context, ...context };
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
asSeverity(severity) {
|
|
86
|
+
this.diagnostic.severity = severity;
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
build() {
|
|
90
|
+
if (!this.diagnostic.location || !this.diagnostic.message) {
|
|
91
|
+
throw new Error('Diagnostic must have location and message');
|
|
92
|
+
}
|
|
93
|
+
return this.diagnostic;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.DiagnosticBuilder = DiagnosticBuilder;
|
|
97
|
+
// Convenience function
|
|
98
|
+
function diagnostic(code) {
|
|
99
|
+
return new DiagnosticBuilder(code);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=diagnostic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/diagnostics/diagnostic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console Formatter for Diagnostics
|
|
3
|
+
* Rust-inspired beautiful error messages with colors
|
|
4
|
+
*/
|
|
5
|
+
import { Diagnostic, AgentDiagnostic } from './diagnostic';
|
|
6
|
+
export interface FormatterOptions {
|
|
7
|
+
colors: boolean;
|
|
8
|
+
snippetContext: number;
|
|
9
|
+
showUrl: boolean;
|
|
10
|
+
showFixes: boolean;
|
|
11
|
+
format: 'human' | 'json' | 'compact';
|
|
12
|
+
}
|
|
13
|
+
export declare class DiagnosticFormatter {
|
|
14
|
+
private options;
|
|
15
|
+
constructor(options?: FormatterOptions);
|
|
16
|
+
format(diagnostic: Diagnostic): string;
|
|
17
|
+
formatMany(diagnostics: Diagnostic[]): string;
|
|
18
|
+
private formatHuman;
|
|
19
|
+
private formatHeader;
|
|
20
|
+
private formatLocation;
|
|
21
|
+
private formatSnippet;
|
|
22
|
+
private formatNotes;
|
|
23
|
+
private formatFixes;
|
|
24
|
+
private formatUrl;
|
|
25
|
+
private formatJson;
|
|
26
|
+
private formatCompact;
|
|
27
|
+
}
|
|
28
|
+
export declare class AgentFormatter {
|
|
29
|
+
formatForAgent(diagnostic: Diagnostic, filePath: string): AgentDiagnostic;
|
|
30
|
+
private categorizeError;
|
|
31
|
+
private canAutoFix;
|
|
32
|
+
private calculateFixConfidence;
|
|
33
|
+
private extractSnippet;
|
|
34
|
+
private getBeforeText;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/diagnostics/formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAsB,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AA0BD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,OAAO;gBAAP,OAAO,GAAE,gBAAkC;IAE/D,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IAUtC,UAAU,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM;IAU7C,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,aAAa;IAwDrB,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;CAItB;AAGD,qBAAa,cAAc;IACzB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe;IAkCzE,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;CAStB"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Console Formatter for Diagnostics
|
|
4
|
+
* Rust-inspired beautiful error messages with colors
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AgentFormatter = exports.DiagnosticFormatter = void 0;
|
|
8
|
+
const diagnostic_1 = require("./diagnostic");
|
|
9
|
+
const DEFAULT_OPTIONS = {
|
|
10
|
+
colors: true,
|
|
11
|
+
snippetContext: 2,
|
|
12
|
+
showUrl: true,
|
|
13
|
+
showFixes: true,
|
|
14
|
+
format: 'human',
|
|
15
|
+
};
|
|
16
|
+
// ANSI color codes
|
|
17
|
+
const colors = {
|
|
18
|
+
reset: '\x1b[0m',
|
|
19
|
+
bold: '\x1b[1m',
|
|
20
|
+
red: '\x1b[31m',
|
|
21
|
+
boldRed: '\x1b[1;31m',
|
|
22
|
+
green: '\x1b[32m',
|
|
23
|
+
yellow: '\x1b[33m',
|
|
24
|
+
blue: '\x1b[34m',
|
|
25
|
+
magenta: '\x1b[35m',
|
|
26
|
+
boldMagenta: '\x1b[1;35m',
|
|
27
|
+
cyan: '\x1b[36m',
|
|
28
|
+
boldCyan: '\x1b[1;36m',
|
|
29
|
+
white: '\x1b[37m',
|
|
30
|
+
};
|
|
31
|
+
class DiagnosticFormatter {
|
|
32
|
+
constructor(options = DEFAULT_OPTIONS) {
|
|
33
|
+
this.options = options;
|
|
34
|
+
}
|
|
35
|
+
format(diagnostic) {
|
|
36
|
+
if (this.options.format === 'json') {
|
|
37
|
+
return this.formatJson(diagnostic);
|
|
38
|
+
}
|
|
39
|
+
if (this.options.format === 'compact') {
|
|
40
|
+
return this.formatCompact(diagnostic);
|
|
41
|
+
}
|
|
42
|
+
return this.formatHuman(diagnostic);
|
|
43
|
+
}
|
|
44
|
+
formatMany(diagnostics) {
|
|
45
|
+
if (this.options.format === 'json') {
|
|
46
|
+
return JSON.stringify(diagnostics, null, 2);
|
|
47
|
+
}
|
|
48
|
+
return diagnostics
|
|
49
|
+
.map((d) => this.format(d))
|
|
50
|
+
.join('\n\n');
|
|
51
|
+
}
|
|
52
|
+
formatHuman(d) {
|
|
53
|
+
const { colors: useColors } = this.options;
|
|
54
|
+
// Header: error[P001]: expected `;`, found `}`
|
|
55
|
+
const header = this.formatHeader(d, useColors);
|
|
56
|
+
// Location: --> example.agentic:5:20
|
|
57
|
+
const location = this.formatLocation(d, useColors);
|
|
58
|
+
// Code snippet with highlighting
|
|
59
|
+
const snippet = this.formatSnippet(d, useColors);
|
|
60
|
+
// Help/Note
|
|
61
|
+
const notes = this.formatNotes(d, useColors);
|
|
62
|
+
// Suggested fixes
|
|
63
|
+
const fixes = this.options.showFixes && d.suggestedFixes
|
|
64
|
+
? this.formatFixes(d, useColors)
|
|
65
|
+
: '';
|
|
66
|
+
// URL
|
|
67
|
+
const url = this.options.showUrl && d.url
|
|
68
|
+
? this.formatUrl(d, useColors)
|
|
69
|
+
: '';
|
|
70
|
+
return [header, location, snippet, notes, fixes, url]
|
|
71
|
+
.filter(Boolean)
|
|
72
|
+
.join('\n');
|
|
73
|
+
}
|
|
74
|
+
formatHeader(d, useColors) {
|
|
75
|
+
const severityStr = d.severity;
|
|
76
|
+
const codeStr = `[${d.code}]`;
|
|
77
|
+
const messageStr = d.message;
|
|
78
|
+
if (!useColors) {
|
|
79
|
+
return `${severityStr}${codeStr}: ${messageStr}`;
|
|
80
|
+
}
|
|
81
|
+
let colorCode = colors.boldRed;
|
|
82
|
+
if (d.severity === diagnostic_1.DiagnosticSeverity.Warning) {
|
|
83
|
+
colorCode = colors.boldMagenta;
|
|
84
|
+
}
|
|
85
|
+
else if (d.severity === diagnostic_1.DiagnosticSeverity.Info) {
|
|
86
|
+
colorCode = colors.boldCyan;
|
|
87
|
+
}
|
|
88
|
+
return `${colorCode}${severityStr}${codeStr}${colors.reset}: ${colors.bold}${messageStr}${colors.reset}`;
|
|
89
|
+
}
|
|
90
|
+
formatLocation(d, useColors) {
|
|
91
|
+
const loc = d.location;
|
|
92
|
+
const locStr = `${loc.start.line}:${loc.start.column}`;
|
|
93
|
+
if (!useColors) {
|
|
94
|
+
return ` --> ${locStr}`;
|
|
95
|
+
}
|
|
96
|
+
return `${colors.blue} -->${colors.reset} ${colors.white}${locStr}${colors.reset}`;
|
|
97
|
+
}
|
|
98
|
+
formatSnippet(d, useColors) {
|
|
99
|
+
if (!d.location.source)
|
|
100
|
+
return '';
|
|
101
|
+
const lines = d.location.source.split('\n');
|
|
102
|
+
const errorLine = d.location.start.line - 1;
|
|
103
|
+
const start = Math.max(0, errorLine - this.options.snippetContext);
|
|
104
|
+
const end = Math.min(lines.length, errorLine + this.options.snippetContext + 1);
|
|
105
|
+
const maxLineNum = end.toString().length;
|
|
106
|
+
const result = [useColors ? `${colors.blue} |${colors.reset}` : ' |'];
|
|
107
|
+
for (let i = start; i < end; i++) {
|
|
108
|
+
const lineNum = (i + 1).toString().padStart(maxLineNum, ' ');
|
|
109
|
+
const line = lines[i];
|
|
110
|
+
if (i === errorLine) {
|
|
111
|
+
// Highlight error line
|
|
112
|
+
result.push(useColors
|
|
113
|
+
? `${colors.blue} ${lineNum} |${colors.reset} ${line}`
|
|
114
|
+
: ` ${lineNum} | ${line}`);
|
|
115
|
+
// Add caret line
|
|
116
|
+
const col = d.location.start.column;
|
|
117
|
+
const len = d.location.end.column - d.location.start.column;
|
|
118
|
+
const caret = ' '.repeat(col) + '^'.repeat(Math.max(1, len));
|
|
119
|
+
result.push(useColors
|
|
120
|
+
? `${colors.blue} |${colors.reset} ${colors.boldRed}${caret}${colors.reset}`
|
|
121
|
+
: ` | ${caret}`);
|
|
122
|
+
// Add help on caret line if present
|
|
123
|
+
if (d.help) {
|
|
124
|
+
const helpStr = useColors
|
|
125
|
+
? `${colors.blue} |${colors.reset} ${colors.cyan}help: ${d.help}${colors.reset}`
|
|
126
|
+
: ` | help: ${d.help}`;
|
|
127
|
+
result.push(helpStr);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
result.push(useColors
|
|
132
|
+
? `${colors.blue} ${lineNum} |${colors.reset} ${line}`
|
|
133
|
+
: ` ${lineNum} | ${line}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
result.push(useColors ? `${colors.blue} |${colors.reset}` : ' |');
|
|
137
|
+
return result.join('\n');
|
|
138
|
+
}
|
|
139
|
+
formatNotes(d, useColors) {
|
|
140
|
+
const notes = [];
|
|
141
|
+
if (d.note) {
|
|
142
|
+
const noteStr = useColors
|
|
143
|
+
? `${colors.boldCyan} = note:${colors.reset} ${d.note}`
|
|
144
|
+
: ` = note: ${d.note}`;
|
|
145
|
+
notes.push(noteStr);
|
|
146
|
+
}
|
|
147
|
+
if (d.possibleCauses && d.possibleCauses.length > 0) {
|
|
148
|
+
const header = useColors
|
|
149
|
+
? `${colors.yellow}${colors.bold} = possible causes:${colors.reset}`
|
|
150
|
+
: ' = possible causes:';
|
|
151
|
+
notes.push(header);
|
|
152
|
+
d.possibleCauses.forEach((cause) => {
|
|
153
|
+
notes.push(` - ${cause}`);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return notes.join('\n');
|
|
157
|
+
}
|
|
158
|
+
formatFixes(d, useColors) {
|
|
159
|
+
if (!d.suggestedFixes || d.suggestedFixes.length === 0) {
|
|
160
|
+
return '';
|
|
161
|
+
}
|
|
162
|
+
const header = useColors
|
|
163
|
+
? `${colors.green}${colors.bold} = suggested fixes:${colors.reset}`
|
|
164
|
+
: ' = suggested fixes:';
|
|
165
|
+
const fixes = d.suggestedFixes.map((fix, i) => {
|
|
166
|
+
const num = `${i + 1}.`;
|
|
167
|
+
const desc = fix.description;
|
|
168
|
+
const cmd = fix.command ? `\n $ ${fix.command}` : '';
|
|
169
|
+
return ` ${num} ${desc}${cmd}`;
|
|
170
|
+
});
|
|
171
|
+
return [header, ...fixes].join('\n');
|
|
172
|
+
}
|
|
173
|
+
formatUrl(d, useColors) {
|
|
174
|
+
if (!d.url)
|
|
175
|
+
return '';
|
|
176
|
+
const prefix = useColors
|
|
177
|
+
? `${colors.blue} = see:${colors.reset} `
|
|
178
|
+
: ' = see: ';
|
|
179
|
+
return prefix + d.url;
|
|
180
|
+
}
|
|
181
|
+
formatJson(d) {
|
|
182
|
+
return JSON.stringify(d, null, 2);
|
|
183
|
+
}
|
|
184
|
+
formatCompact(d) {
|
|
185
|
+
const loc = d.location;
|
|
186
|
+
return `${d.severity}[${d.code}]: ${d.message} (${loc.start.line}:${loc.start.column})`;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
exports.DiagnosticFormatter = DiagnosticFormatter;
|
|
190
|
+
// AI-friendly formatter
|
|
191
|
+
class AgentFormatter {
|
|
192
|
+
formatForAgent(diagnostic, filePath) {
|
|
193
|
+
return {
|
|
194
|
+
type: 'compilation_error',
|
|
195
|
+
code: diagnostic.code,
|
|
196
|
+
severity: diagnostic.severity,
|
|
197
|
+
message: diagnostic.message,
|
|
198
|
+
location: {
|
|
199
|
+
file: filePath,
|
|
200
|
+
line: diagnostic.location.start.line,
|
|
201
|
+
column: diagnostic.location.start.column,
|
|
202
|
+
snippet: this.extractSnippet(diagnostic),
|
|
203
|
+
},
|
|
204
|
+
analysis: {
|
|
205
|
+
possibleCauses: diagnostic.possibleCauses || [],
|
|
206
|
+
suggestedFixes: (diagnostic.suggestedFixes || []).map((fix) => ({
|
|
207
|
+
description: fix.description,
|
|
208
|
+
command: fix.command,
|
|
209
|
+
code_edit: fix.edit ? {
|
|
210
|
+
before: this.getBeforeText(diagnostic, fix),
|
|
211
|
+
after: fix.edit.newText,
|
|
212
|
+
} : undefined,
|
|
213
|
+
})),
|
|
214
|
+
relatedErrors: [],
|
|
215
|
+
confidence: this.calculateFixConfidence(diagnostic),
|
|
216
|
+
},
|
|
217
|
+
machineReadable: {
|
|
218
|
+
errorCategory: this.categorizeError(diagnostic.code),
|
|
219
|
+
canAutoFix: this.canAutoFix(diagnostic),
|
|
220
|
+
fixable: !!diagnostic.suggestedFixes && diagnostic.suggestedFixes.length > 0,
|
|
221
|
+
breakingChange: false,
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
categorizeError(code) {
|
|
226
|
+
if (code.startsWith('L'))
|
|
227
|
+
return 'lexical';
|
|
228
|
+
if (code.startsWith('P'))
|
|
229
|
+
return 'syntax';
|
|
230
|
+
if (code.startsWith('T'))
|
|
231
|
+
return 'type';
|
|
232
|
+
if (code.startsWith('A'))
|
|
233
|
+
return 'annotation';
|
|
234
|
+
return 'semantic';
|
|
235
|
+
}
|
|
236
|
+
canAutoFix(diagnostic) {
|
|
237
|
+
const autoFixableCodes = ['P002', 'L002', 'A002'];
|
|
238
|
+
return autoFixableCodes.some(code => diagnostic.code.includes(code));
|
|
239
|
+
}
|
|
240
|
+
calculateFixConfidence(diagnostic) {
|
|
241
|
+
if (diagnostic.code.includes('P002'))
|
|
242
|
+
return 0.95; // Missing token - high confidence
|
|
243
|
+
if (diagnostic.suggestedFixes && diagnostic.suggestedFixes.length === 1)
|
|
244
|
+
return 0.85;
|
|
245
|
+
return 0.60;
|
|
246
|
+
}
|
|
247
|
+
extractSnippet(diagnostic) {
|
|
248
|
+
if (!diagnostic.location.source)
|
|
249
|
+
return '';
|
|
250
|
+
const lines = diagnostic.location.source.split('\n');
|
|
251
|
+
const errorLine = diagnostic.location.start.line - 1;
|
|
252
|
+
return lines[errorLine] || '';
|
|
253
|
+
}
|
|
254
|
+
getBeforeText(diagnostic, fix) {
|
|
255
|
+
if (!fix.edit || !diagnostic.location.source)
|
|
256
|
+
return '';
|
|
257
|
+
const lines = diagnostic.location.source.split('\n');
|
|
258
|
+
const line = lines[diagnostic.location.start.line - 1];
|
|
259
|
+
return line?.substring(fix.edit.range.start.column, fix.edit.range.end.column) || '';
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
exports.AgentFormatter = AgentFormatter;
|
|
263
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/diagnostics/formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect System for Agentic
|
|
3
|
+
* Tracks side effects at type level (inspired by Koka, Eff, Unison)
|
|
4
|
+
*/
|
|
5
|
+
import * as AST from '../types';
|
|
6
|
+
export type Effect = 'pure' | 'io' | 'state' | 'async' | 'network' | 'database' | 'llm_call' | 'human_interaction' | 'file_system' | 'random' | 'exception';
|
|
7
|
+
export interface EffectSet {
|
|
8
|
+
effects: Set<Effect>;
|
|
9
|
+
}
|
|
10
|
+
export interface FunctionSignatureWithEffects {
|
|
11
|
+
name: string;
|
|
12
|
+
params: AST.Parameter[];
|
|
13
|
+
returnType: AST.TypeAnnotation | null;
|
|
14
|
+
effects: EffectSet;
|
|
15
|
+
annotations: AST.Annotation[];
|
|
16
|
+
}
|
|
17
|
+
export declare class EffectInferenceEngine {
|
|
18
|
+
private functionEffects;
|
|
19
|
+
/**
|
|
20
|
+
* Infer effects from function body
|
|
21
|
+
*/
|
|
22
|
+
inferEffects(func: AST.FunctionDeclaration): EffectSet;
|
|
23
|
+
private analyzeNode;
|
|
24
|
+
private analyzeCallExpression;
|
|
25
|
+
/**
|
|
26
|
+
* Check if function effects are compatible with declared effects
|
|
27
|
+
*/
|
|
28
|
+
validateEffects(func: AST.FunctionDeclaration, inferredEffects: EffectSet): {
|
|
29
|
+
valid: boolean;
|
|
30
|
+
violations: string[];
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Combine effects from multiple functions (for composition)
|
|
34
|
+
*/
|
|
35
|
+
combineEffects(effects1: EffectSet, effects2: EffectSet): EffectSet;
|
|
36
|
+
/**
|
|
37
|
+
* Check if function is pure (no effects)
|
|
38
|
+
*/
|
|
39
|
+
isPure(effectSet: EffectSet): boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface EffectHandler<E extends Effect> {
|
|
42
|
+
effect: E;
|
|
43
|
+
handle: (operation: any) => any;
|
|
44
|
+
}
|
|
45
|
+
export declare class EffectHandlerRegistry {
|
|
46
|
+
private handlers;
|
|
47
|
+
register<E extends Effect>(handler: EffectHandler<E>): void;
|
|
48
|
+
get<E extends Effect>(effect: E): EffectHandler<E> | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Execute function with custom effect handlers
|
|
51
|
+
*/
|
|
52
|
+
withHandlers<T>(fn: () => T, handlers: EffectHandler<any>[]): Promise<T>;
|
|
53
|
+
}
|
|
54
|
+
export declare const consoleHandler: EffectHandler<'io'>;
|
|
55
|
+
export declare const mockDatabaseHandler: EffectHandler<'database'>;
|
|
56
|
+
export declare class EffectCostTracker {
|
|
57
|
+
private costs;
|
|
58
|
+
estimateCost(effectSet: EffectSet): number;
|
|
59
|
+
setCost(effect: Effect, cost: number): void;
|
|
60
|
+
}
|
|
61
|
+
export declare const effectInference: EffectInferenceEngine;
|
|
62
|
+
export declare const effectHandlers: EffectHandlerRegistry;
|
|
63
|
+
export declare const effectCostTracker: EffectCostTracker;
|
|
64
|
+
//# sourceMappingURL=effect-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect-system.d.ts","sourceRoot":"","sources":["../../src/effects/effect-system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAGhC,MAAM,MAAM,MAAM,GACd,MAAM,GACN,IAAI,GACJ,OAAO,GACP,OAAO,GACP,SAAS,GACT,UAAU,GACV,UAAU,GACV,mBAAmB,GACnB,aAAa,GACb,QAAQ,GACR,WAAW,CAAC;AAGhB,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB;AAGD,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IACxB,UAAU,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,SAAS,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;CAC/B;AAGD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAAgC;IAEvD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,mBAAmB,GAAG,SAAS;IAoBtD,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,qBAAqB;IAiC7B;;OAEG;IACH,eAAe,CACb,IAAI,EAAE,GAAG,CAAC,mBAAmB,EAC7B,eAAe,EAAE,SAAS,GACzB;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;IAgC3C;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS;IAQnE;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;CAItC;AAGD,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM;IAC7C,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC;CACjC;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAyC;IAEzD,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3D,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS;IAI9D;;OAEG;IACG,YAAY,CAAC,CAAC,EAClB,EAAE,EAAE,MAAM,CAAC,EACX,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,GAC7B,OAAO,CAAC,CAAC,CAAC;CAWd;AAGD,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,IAAI,CAK9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,UAAU,CAMzD,CAAC;AAGF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAYX;IAEF,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAQ1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAG5C;AAGD,eAAO,MAAM,eAAe,uBAA8B,CAAC;AAC3D,eAAO,MAAM,cAAc,uBAA8B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|