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,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lean4 Theorem Prover Export
|
|
3
|
+
* Converts Agentic functions to Lean4 for formal verification
|
|
4
|
+
*/
|
|
5
|
+
import * as AST from '../types';
|
|
6
|
+
export interface Lean4Export {
|
|
7
|
+
definitions: string[];
|
|
8
|
+
theorems: string[];
|
|
9
|
+
proofs: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare class Lean4Exporter {
|
|
12
|
+
export(ast: AST.ASTNode[]): Lean4Export;
|
|
13
|
+
private exportFunction;
|
|
14
|
+
private exportTheorem;
|
|
15
|
+
private contractToProposition;
|
|
16
|
+
private generateLean4Params;
|
|
17
|
+
private generateLean4Type;
|
|
18
|
+
private translateToLean4Logic;
|
|
19
|
+
/**
|
|
20
|
+
* Generate complete Lean4 file with all necessary imports
|
|
21
|
+
*/
|
|
22
|
+
generateLean4File(ast: AST.ASTNode[], moduleName: string): string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/lean4/exporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW;IAyBvC,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;CAyBlE"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Lean4 Theorem Prover Export
|
|
4
|
+
* Converts Agentic functions to Lean4 for formal verification
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.Lean4Exporter = void 0;
|
|
8
|
+
class Lean4Exporter {
|
|
9
|
+
export(ast) {
|
|
10
|
+
const definitions = [];
|
|
11
|
+
const theorems = [];
|
|
12
|
+
const proofs = [];
|
|
13
|
+
for (const node of ast) {
|
|
14
|
+
if (node.type === 'FunctionDeclaration') {
|
|
15
|
+
const func = node;
|
|
16
|
+
// Only export @complete functions
|
|
17
|
+
if (func.annotations.some(a => a.name === 'complete')) {
|
|
18
|
+
definitions.push(this.exportFunction(func));
|
|
19
|
+
// Generate theorem from contracts
|
|
20
|
+
const contractAnnotation = func.annotations.find(a => a.name === 'contract');
|
|
21
|
+
if (contractAnnotation) {
|
|
22
|
+
theorems.push(this.exportTheorem(func, contractAnnotation));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return { definitions, theorems, proofs };
|
|
28
|
+
}
|
|
29
|
+
exportFunction(func) {
|
|
30
|
+
const params = this.generateLean4Params(func.params);
|
|
31
|
+
const returnType = this.generateLean4Type(func.returnType);
|
|
32
|
+
return `
|
|
33
|
+
def ${func.name} ${params} : ${returnType} :=
|
|
34
|
+
sorry -- Implementation or proof goes here
|
|
35
|
+
|
|
36
|
+
`;
|
|
37
|
+
}
|
|
38
|
+
exportTheorem(func, contractAnnotation) {
|
|
39
|
+
const params = this.generateLean4Params(func.params);
|
|
40
|
+
const proposition = this.contractToProposition(func, contractAnnotation);
|
|
41
|
+
return `
|
|
42
|
+
theorem ${func.name}_correct ${params} :
|
|
43
|
+
${proposition} := by
|
|
44
|
+
sorry -- Proof obligation
|
|
45
|
+
|
|
46
|
+
`;
|
|
47
|
+
}
|
|
48
|
+
contractToProposition(func, contract) {
|
|
49
|
+
const requires = contract.args.requires || [];
|
|
50
|
+
const ensures = contract.args.ensures || [];
|
|
51
|
+
const preconditions = Array.isArray(requires)
|
|
52
|
+
? requires.map(r => this.translateToLean4Logic(r))
|
|
53
|
+
: [];
|
|
54
|
+
const postconditions = Array.isArray(ensures)
|
|
55
|
+
? ensures.map(e => this.translateToLean4Logic(e))
|
|
56
|
+
: [];
|
|
57
|
+
// Build proposition: ∀ params, precondition → postcondition
|
|
58
|
+
const paramNames = func.params.map(p => p.name).join(' ');
|
|
59
|
+
if (preconditions.length === 0) {
|
|
60
|
+
return postconditions.join(' ∧ ');
|
|
61
|
+
}
|
|
62
|
+
const preCondition = preconditions.join(' ∧ ');
|
|
63
|
+
const postCondition = postconditions.join(' ∧ ');
|
|
64
|
+
return `${preCondition} → ${postCondition}`;
|
|
65
|
+
}
|
|
66
|
+
generateLean4Params(params) {
|
|
67
|
+
return ('(' +
|
|
68
|
+
params
|
|
69
|
+
.map(p => {
|
|
70
|
+
const type = this.generateLean4Type(p.typeAnnotation);
|
|
71
|
+
return `${p.name} : ${type}`;
|
|
72
|
+
})
|
|
73
|
+
.join(') (') +
|
|
74
|
+
')');
|
|
75
|
+
}
|
|
76
|
+
generateLean4Type(typeAnnotation) {
|
|
77
|
+
if (!typeAnnotation) {
|
|
78
|
+
return 'Unit'; // void in Lean4
|
|
79
|
+
}
|
|
80
|
+
switch (typeAnnotation.kind) {
|
|
81
|
+
case 'primitive':
|
|
82
|
+
if (typeAnnotation.value === 'number')
|
|
83
|
+
return 'ℝ'; // Real numbers
|
|
84
|
+
if (typeAnnotation.value === 'string')
|
|
85
|
+
return 'String';
|
|
86
|
+
if (typeAnnotation.value === 'boolean')
|
|
87
|
+
return 'Bool';
|
|
88
|
+
if (typeAnnotation.value === 'void')
|
|
89
|
+
return 'Unit';
|
|
90
|
+
return 'α'; // Generic type
|
|
91
|
+
case 'result':
|
|
92
|
+
// Result<T, E> -> Except E T in Lean4
|
|
93
|
+
if (Array.isArray(typeAnnotation.value) && typeAnnotation.value.length >= 2) {
|
|
94
|
+
const okType = this.generateLean4Type(typeAnnotation.value[0]);
|
|
95
|
+
const errType = this.generateLean4Type(typeAnnotation.value[1]);
|
|
96
|
+
return `Except ${errType} ${okType}`;
|
|
97
|
+
}
|
|
98
|
+
return 'Except String α';
|
|
99
|
+
default:
|
|
100
|
+
return 'α'; // Generic fallback
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
translateToLean4Logic(expression) {
|
|
104
|
+
// Translate common mathematical expressions to Lean4 syntax
|
|
105
|
+
return expression
|
|
106
|
+
.replace(/&&/g, '∧')
|
|
107
|
+
.replace(/\|\|/g, '∨')
|
|
108
|
+
.replace(/!=/g, '≠')
|
|
109
|
+
.replace(/>=/g, '≥')
|
|
110
|
+
.replace(/<=/g, '≤')
|
|
111
|
+
.replace(/==/g, '=')
|
|
112
|
+
.replace(/!/g, '¬');
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Generate complete Lean4 file with all necessary imports
|
|
116
|
+
*/
|
|
117
|
+
generateLean4File(ast, moduleName) {
|
|
118
|
+
const exported = this.export(ast);
|
|
119
|
+
let lean4Code = `-- Auto-generated from Agentic
|
|
120
|
+
-- Module: ${moduleName}
|
|
121
|
+
|
|
122
|
+
import Mathlib.Data.Real.Basic
|
|
123
|
+
import Mathlib.Logic.Basic
|
|
124
|
+
|
|
125
|
+
`;
|
|
126
|
+
// Add definitions
|
|
127
|
+
if (exported.definitions.length > 0) {
|
|
128
|
+
lean4Code += '-- Function Definitions\n';
|
|
129
|
+
lean4Code += exported.definitions.join('\n');
|
|
130
|
+
}
|
|
131
|
+
// Add theorems
|
|
132
|
+
if (exported.theorems.length > 0) {
|
|
133
|
+
lean4Code += '\n-- Theorems\n';
|
|
134
|
+
lean4Code += exported.theorems.join('\n');
|
|
135
|
+
}
|
|
136
|
+
return lean4Code;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.Lean4Exporter = Lean4Exporter;
|
|
140
|
+
// Example usage in CLI:
|
|
141
|
+
// agentic export --target lean4 myfile.agentic --output myfile.lean
|
|
142
|
+
//# sourceMappingURL=exporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.js","sourceRoot":"","sources":["../../src/lean4/exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agentic Language Server Protocol Implementation
|
|
4
|
+
* Based on rust-analyzer and TypeScript Language Server architecture
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const node_1 = require("vscode-languageserver/node");
|
|
8
|
+
const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
|
|
9
|
+
// Create LSP connection
|
|
10
|
+
const connection = (0, node_1.createConnection)(node_1.ProposedFeatures.all);
|
|
11
|
+
// Document manager
|
|
12
|
+
const documents = new node_1.TextDocuments(vscode_languageserver_textdocument_1.TextDocument);
|
|
13
|
+
// Server state
|
|
14
|
+
let hasConfigurationCapability = false;
|
|
15
|
+
let hasWorkspaceFolderCapability = false;
|
|
16
|
+
connection.onInitialize((params) => {
|
|
17
|
+
const capabilities = params.capabilities;
|
|
18
|
+
hasConfigurationCapability = !!(capabilities.workspace && !!capabilities.workspace.configuration);
|
|
19
|
+
hasWorkspaceFolderCapability = !!(capabilities.workspace && !!capabilities.workspace.workspaceFolders);
|
|
20
|
+
return {
|
|
21
|
+
capabilities: {
|
|
22
|
+
textDocumentSync: node_1.TextDocumentSyncKind.Incremental,
|
|
23
|
+
completionProvider: {
|
|
24
|
+
resolveProvider: true,
|
|
25
|
+
triggerCharacters: ['@', '.', ':'],
|
|
26
|
+
},
|
|
27
|
+
hoverProvider: true,
|
|
28
|
+
definitionProvider: true,
|
|
29
|
+
referencesProvider: true,
|
|
30
|
+
documentSymbolProvider: true,
|
|
31
|
+
workspaceSymbolProvider: true,
|
|
32
|
+
semanticTokensProvider: {
|
|
33
|
+
legend: {
|
|
34
|
+
tokenTypes: [
|
|
35
|
+
'function',
|
|
36
|
+
'parameter',
|
|
37
|
+
'variable',
|
|
38
|
+
'type',
|
|
39
|
+
'annotation',
|
|
40
|
+
'confidenceLow',
|
|
41
|
+
'confidenceHigh',
|
|
42
|
+
'stageStub',
|
|
43
|
+
'stagePartial',
|
|
44
|
+
'stageComplete',
|
|
45
|
+
],
|
|
46
|
+
tokenModifiers: ['declaration', 'readonly', 'deprecated', 'uncertain'],
|
|
47
|
+
},
|
|
48
|
+
full: true,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
connection.onInitialized(() => {
|
|
54
|
+
if (hasConfigurationCapability) {
|
|
55
|
+
// Register for configuration changes
|
|
56
|
+
// connection.client.register('workspace/didChangeConfiguration');
|
|
57
|
+
}
|
|
58
|
+
if (hasWorkspaceFolderCapability) {
|
|
59
|
+
connection.workspace.onDidChangeWorkspaceFolders(() => {
|
|
60
|
+
connection.console.log('Workspace folder change event received.');
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
// Document change handler
|
|
65
|
+
documents.onDidChangeContent(change => {
|
|
66
|
+
validateDocument(change.document);
|
|
67
|
+
});
|
|
68
|
+
// Validation function
|
|
69
|
+
async function validateDocument(textDocument) {
|
|
70
|
+
const text = textDocument.getText();
|
|
71
|
+
const diagnostics = [];
|
|
72
|
+
try {
|
|
73
|
+
// Parse the document
|
|
74
|
+
// const { ast, diagnostics: agenticDiags } = parse(text);
|
|
75
|
+
// Convert Agentic diagnostics to LSP diagnostics
|
|
76
|
+
// diagnostics.push(...convertDiagnostics(agenticDiags));
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
// Handle parse errors
|
|
80
|
+
connection.console.error(`Parse error: ${error}`);
|
|
81
|
+
}
|
|
82
|
+
// Send diagnostics to client
|
|
83
|
+
connection.sendDiagnostics({ uri: textDocument.uri, diagnostics });
|
|
84
|
+
}
|
|
85
|
+
// Completion provider
|
|
86
|
+
connection.onCompletion((textDocumentPosition) => {
|
|
87
|
+
// Return Agentic-specific completions
|
|
88
|
+
return [
|
|
89
|
+
{
|
|
90
|
+
label: '@confidence',
|
|
91
|
+
kind: node_1.CompletionItemKind.Keyword,
|
|
92
|
+
insertText: '@confidence(${1:0.90})',
|
|
93
|
+
detail: 'Declare confidence level (0.0 - 1.0)',
|
|
94
|
+
documentation: 'Add a confidence annotation to track uncertainty',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
label: '@needs',
|
|
98
|
+
kind: node_1.CompletionItemKind.Keyword,
|
|
99
|
+
insertText: '@needs(${1:dependency})',
|
|
100
|
+
detail: 'Declare required context',
|
|
101
|
+
documentation: 'Specify dependencies required by this function',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
label: '@stub',
|
|
105
|
+
kind: node_1.CompletionItemKind.Keyword,
|
|
106
|
+
detail: 'Mark function as stub (not implemented)',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
label: '@partial',
|
|
110
|
+
kind: node_1.CompletionItemKind.Keyword,
|
|
111
|
+
detail: 'Mark function as partially implemented',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
label: '@complete',
|
|
115
|
+
kind: node_1.CompletionItemKind.Keyword,
|
|
116
|
+
detail: 'Mark function as fully implemented',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
label: 'Result',
|
|
120
|
+
kind: node_1.CompletionItemKind.TypeParameter,
|
|
121
|
+
insertText: 'Result<${1:T}, ${2:E}>',
|
|
122
|
+
detail: 'Result type for error handling',
|
|
123
|
+
},
|
|
124
|
+
];
|
|
125
|
+
});
|
|
126
|
+
// Make the text document manager listen on the connection
|
|
127
|
+
documents.listen(connection);
|
|
128
|
+
// Listen on the connection
|
|
129
|
+
connection.listen();
|
|
130
|
+
console.log('Agentic Language Server started');
|
|
131
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/lsp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple regex-based lexer for Agentic language
|
|
3
|
+
* For MVP - full Tree-sitter parser can be added later
|
|
4
|
+
*/
|
|
5
|
+
export declare enum TokenType {
|
|
6
|
+
FUNC = "FUNC",
|
|
7
|
+
RETURN = "RETURN",
|
|
8
|
+
IF = "IF",
|
|
9
|
+
ELSE = "ELSE",
|
|
10
|
+
MATCH = "MATCH",
|
|
11
|
+
OR = "OR",
|
|
12
|
+
ERROR = "ERROR",
|
|
13
|
+
NUMBER = "NUMBER",
|
|
14
|
+
STRING = "STRING",
|
|
15
|
+
BOOLEAN = "BOOLEAN",
|
|
16
|
+
NULL = "NULL",
|
|
17
|
+
IDENTIFIER = "IDENTIFIER",
|
|
18
|
+
ARROW = "ARROW",// ->
|
|
19
|
+
FAT_ARROW = "FAT_ARROW",// =>
|
|
20
|
+
PIPE = "PIPE",// |
|
|
21
|
+
DOT = "DOT",
|
|
22
|
+
COMMA = "COMMA",
|
|
23
|
+
COLON = "COLON",
|
|
24
|
+
SEMICOLON = "SEMICOLON",
|
|
25
|
+
PLUS = "PLUS",// +
|
|
26
|
+
MINUS = "MINUS",// -
|
|
27
|
+
STAR = "STAR",// *
|
|
28
|
+
SLASH = "SLASH",// /
|
|
29
|
+
PERCENT = "PERCENT",// %
|
|
30
|
+
EQ = "EQ",// ==
|
|
31
|
+
NEQ = "NEQ",// !=
|
|
32
|
+
LT = "LT",
|
|
33
|
+
GT = "GT",
|
|
34
|
+
LTE = "LTE",
|
|
35
|
+
GTE = "GTE",
|
|
36
|
+
LPAREN = "LPAREN",
|
|
37
|
+
RPAREN = "RPAREN",
|
|
38
|
+
LBRACE = "LBRACE",
|
|
39
|
+
RBRACE = "RBRACE",
|
|
40
|
+
LBRACKET = "LBRACKET",
|
|
41
|
+
RBRACKET = "RBRACKET",
|
|
42
|
+
AT = "AT",// @
|
|
43
|
+
NEWLINE = "NEWLINE",
|
|
44
|
+
EOF = "EOF",
|
|
45
|
+
UNKNOWN = "UNKNOWN"
|
|
46
|
+
}
|
|
47
|
+
export interface Token {
|
|
48
|
+
type: TokenType;
|
|
49
|
+
value: string;
|
|
50
|
+
line: number;
|
|
51
|
+
column: number;
|
|
52
|
+
offset: number;
|
|
53
|
+
}
|
|
54
|
+
export declare class Lexer {
|
|
55
|
+
private source;
|
|
56
|
+
private pos;
|
|
57
|
+
private line;
|
|
58
|
+
private column;
|
|
59
|
+
private tokens;
|
|
60
|
+
constructor(source: string);
|
|
61
|
+
tokenize(): Token[];
|
|
62
|
+
private nextToken;
|
|
63
|
+
private scanAnnotation;
|
|
64
|
+
private scanString;
|
|
65
|
+
private scanNumber;
|
|
66
|
+
private scanIdentifier;
|
|
67
|
+
private scanOperator;
|
|
68
|
+
private skipWhitespace;
|
|
69
|
+
private skipLineComment;
|
|
70
|
+
private skipBlockComment;
|
|
71
|
+
private peek;
|
|
72
|
+
private advance;
|
|
73
|
+
private isAtEnd;
|
|
74
|
+
private isDigit;
|
|
75
|
+
private isAlpha;
|
|
76
|
+
private isAlphaNumeric;
|
|
77
|
+
private createToken;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=lexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/parser/lexer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAY,SAAS;IAEnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,EAAE,OAAO;IACT,IAAI,SAAS;IACb,KAAK,UAAU;IACf,EAAE,OAAO;IACT,KAAK,UAAU;IAGf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IAGb,UAAU,eAAe;IAGzB,KAAK,UAAU,CAAE,KAAK;IACtB,SAAS,cAAc,CAAE,KAAK;IAC9B,IAAI,SAAS,CAAE,IAAI;IACnB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS,CAAE,IAAI;IACnB,KAAK,UAAU,CAAE,IAAI;IACrB,IAAI,SAAS,CAAE,IAAI;IACnB,KAAK,UAAU,CAAE,IAAI;IACrB,OAAO,YAAY,CAAE,IAAI;IAGzB,EAAE,OAAO,CAAE,KAAK;IAChB,GAAG,QAAQ,CAAE,KAAK;IAClB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;IAGX,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IAGrB,EAAE,OAAO,CAAE,IAAI;IAGf,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAeD,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,MAAM;IAI1B,QAAQ,IAAI,KAAK,EAAE;IA6BnB,OAAO,CAAC,SAAS;IA2BjB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;IA2EpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,WAAW;CASpB"}
|