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.
Files changed (146) hide show
  1. package/COMMUNITY.md +220 -0
  2. package/CONTRIBUTING.md +194 -0
  3. package/FINAL_REPORT.md +398 -0
  4. package/FOR_OTHER_LLMS.md +286 -0
  5. package/IMPROVEMENTS.md +319 -0
  6. package/LAUNCH_GUIDE.md +388 -0
  7. package/LICENSE +21 -0
  8. package/NPM_PUBLISH.md +257 -0
  9. package/PROJECT_COMPLETE.md +414 -0
  10. package/PROJECT_OVERVIEW.md +265 -0
  11. package/PROJECT_TREE.txt +228 -0
  12. package/PUBLISHING_GUIDE.md +426 -0
  13. package/PUBLISH_NOW.md +337 -0
  14. package/QUICKSTART.md +207 -0
  15. package/README.md +195 -0
  16. package/README_ENHANCED.md +329 -0
  17. package/READY_TO_LAUNCH.txt +56 -0
  18. package/REFACTOR_PLAN.md +179 -0
  19. package/ROADMAP.md +201 -0
  20. package/SUMMARY.md +315 -0
  21. package/bin/agentic.js +3 -0
  22. package/blog/001-introducing-agentic.md +382 -0
  23. package/blog/002-confidence-driven-development.md +490 -0
  24. package/blog/003-formal-verification.md +427 -0
  25. package/blog/004-multi-agent-production.md +436 -0
  26. package/dist/cli.d.ts +7 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +151 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/diagnostics/diagnostic.d.ts +115 -0
  31. package/dist/diagnostics/diagnostic.d.ts.map +1 -0
  32. package/dist/diagnostics/diagnostic.js +101 -0
  33. package/dist/diagnostics/diagnostic.js.map +1 -0
  34. package/dist/diagnostics/formatter.d.ts +36 -0
  35. package/dist/diagnostics/formatter.d.ts.map +1 -0
  36. package/dist/diagnostics/formatter.js +263 -0
  37. package/dist/diagnostics/formatter.js.map +1 -0
  38. package/dist/effects/effect-system.d.ts +64 -0
  39. package/dist/effects/effect-system.d.ts.map +1 -0
  40. package/dist/effects/effect-system.js +197 -0
  41. package/dist/effects/effect-system.js.map +1 -0
  42. package/dist/generator/typescript-generator.d.ts +31 -0
  43. package/dist/generator/typescript-generator.d.ts.map +1 -0
  44. package/dist/generator/typescript-generator.js +308 -0
  45. package/dist/generator/typescript-generator.js.map +1 -0
  46. package/dist/index.d.ts +19 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +60 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/lean4/exporter.d.ts +24 -0
  51. package/dist/lean4/exporter.d.ts.map +1 -0
  52. package/dist/lean4/exporter.js +142 -0
  53. package/dist/lean4/exporter.js.map +1 -0
  54. package/dist/lsp/server.d.ts +6 -0
  55. package/dist/lsp/server.d.ts.map +1 -0
  56. package/dist/lsp/server.js +131 -0
  57. package/dist/lsp/server.js.map +1 -0
  58. package/dist/parser/lexer.d.ts +79 -0
  59. package/dist/parser/lexer.d.ts.map +1 -0
  60. package/dist/parser/lexer.js +296 -0
  61. package/dist/parser/lexer.js.map +1 -0
  62. package/dist/parser/parser-enhanced.d.ts +12 -0
  63. package/dist/parser/parser-enhanced.d.ts.map +1 -0
  64. package/dist/parser/parser-enhanced.js +206 -0
  65. package/dist/parser/parser-enhanced.js.map +1 -0
  66. package/dist/parser/parser.d.ts +34 -0
  67. package/dist/parser/parser.d.ts.map +1 -0
  68. package/dist/parser/parser.js +507 -0
  69. package/dist/parser/parser.js.map +1 -0
  70. package/dist/property-tests/generator-enhanced.d.ts +27 -0
  71. package/dist/property-tests/generator-enhanced.d.ts.map +1 -0
  72. package/dist/property-tests/generator-enhanced.js +209 -0
  73. package/dist/property-tests/generator-enhanced.js.map +1 -0
  74. package/dist/property-tests/generator-fixed.d.ts +2 -0
  75. package/dist/property-tests/generator-fixed.d.ts.map +1 -0
  76. package/dist/property-tests/generator-fixed.js +7 -0
  77. package/dist/property-tests/generator-fixed.js.map +1 -0
  78. package/dist/property-tests/generator.d.ts +28 -0
  79. package/dist/property-tests/generator.d.ts.map +1 -0
  80. package/dist/property-tests/generator.js +284 -0
  81. package/dist/property-tests/generator.js.map +1 -0
  82. package/dist/refinements/refinement-types.d.ts +96 -0
  83. package/dist/refinements/refinement-types.d.ts.map +1 -0
  84. package/dist/refinements/refinement-types.js +234 -0
  85. package/dist/refinements/refinement-types.js.map +1 -0
  86. package/dist/repl.d.ts +21 -0
  87. package/dist/repl.d.ts.map +1 -0
  88. package/dist/repl.js +317 -0
  89. package/dist/repl.js.map +1 -0
  90. package/dist/runtime/agents.d.ts +97 -0
  91. package/dist/runtime/agents.d.ts.map +1 -0
  92. package/dist/runtime/agents.js +258 -0
  93. package/dist/runtime/agents.js.map +1 -0
  94. package/dist/runtime/index.d.ts +98 -0
  95. package/dist/runtime/index.d.ts.map +1 -0
  96. package/dist/runtime/index.js +253 -0
  97. package/dist/runtime/index.js.map +1 -0
  98. package/dist/types-extended.d.ts +197 -0
  99. package/dist/types-extended.d.ts.map +1 -0
  100. package/dist/types-extended.js +7 -0
  101. package/dist/types-extended.js.map +1 -0
  102. package/dist/types.d.ts +129 -0
  103. package/dist/types.d.ts.map +1 -0
  104. package/dist/types.js +6 -0
  105. package/dist/types.js.map +1 -0
  106. package/dist/verification/z3-engine.d.ts +75 -0
  107. package/dist/verification/z3-engine.d.ts.map +1 -0
  108. package/dist/verification/z3-engine.js +234 -0
  109. package/dist/verification/z3-engine.js.map +1 -0
  110. package/examples/advanced-features.agentic +98 -0
  111. package/examples/annotations.agentic +37 -0
  112. package/examples/auth.agentic +53 -0
  113. package/examples/enterprise-example.agentic +360 -0
  114. package/examples/minimal.agentic +3 -0
  115. package/examples/minimal.ts +7 -0
  116. package/examples/ml-pipeline.agentic +350 -0
  117. package/examples/multi-agent-example.agentic +212 -0
  118. package/examples/onboarding-tutorial.agentic +263 -0
  119. package/examples/production-api.agentic +304 -0
  120. package/examples/real-world-chatbot.agentic +351 -0
  121. package/examples/result-handling.agentic +34 -0
  122. package/examples/runtime.ts +24 -0
  123. package/examples/showcase.agentic +22 -0
  124. package/examples/showcase.ts +28 -0
  125. package/examples/simple-test.agentic +4 -0
  126. package/examples/simple-test.ts +7 -0
  127. package/examples/simple.agentic +20 -0
  128. package/examples/test2.agentic +4 -0
  129. package/examples/test2.ts +9 -0
  130. package/examples/test3.agentic +4 -0
  131. package/examples/test3.ts +9 -0
  132. package/package.json +70 -0
  133. package/playground/index.html +221 -0
  134. package/playground/playground.js +291 -0
  135. package/registry/package-registry.ts +319 -0
  136. package/scripts/build.js +50 -0
  137. package/scripts/validate-confidence-mutation.ts +112 -0
  138. package/stdlib/async/promise.agentic +216 -0
  139. package/stdlib/database/pool.agentic +235 -0
  140. package/stdlib/file/io.agentic +194 -0
  141. package/stdlib/http/client.agentic +168 -0
  142. package/video-scripts/001-agentic-in-100-seconds.md +175 -0
  143. package/vscode-extension/README.md +67 -0
  144. package/vscode-extension/language-configuration.json +31 -0
  145. package/vscode-extension/package.json +46 -0
  146. 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"}