@rcrsr/rill 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +187 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +69 -0
- package/dist/cli.js.map +1 -0
- package/dist/demo.d.ts +6 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +121 -0
- package/dist/demo.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer/errors.d.ts +9 -0
- package/dist/lexer/errors.d.ts.map +1 -0
- package/dist/lexer/errors.js +12 -0
- package/dist/lexer/errors.js.map +1 -0
- package/dist/lexer/helpers.d.ts +14 -0
- package/dist/lexer/helpers.d.ts.map +1 -0
- package/dist/lexer/helpers.js +30 -0
- package/dist/lexer/helpers.js.map +1 -0
- package/dist/lexer/index.d.ts +8 -0
- package/dist/lexer/index.d.ts.map +1 -0
- package/dist/lexer/index.js +8 -0
- package/dist/lexer/index.js.map +1 -0
- package/dist/lexer/operators.d.ts +11 -0
- package/dist/lexer/operators.d.ts.map +1 -0
- package/dist/lexer/operators.js +58 -0
- package/dist/lexer/operators.js.map +1 -0
- package/dist/lexer/readers.d.ts +12 -0
- package/dist/lexer/readers.d.ts.map +1 -0
- package/dist/lexer/readers.js +144 -0
- package/dist/lexer/readers.js.map +1 -0
- package/dist/lexer/state.d.ts +18 -0
- package/dist/lexer/state.d.ts.map +1 -0
- package/dist/lexer/state.js +37 -0
- package/dist/lexer/state.js.map +1 -0
- package/dist/lexer/tokenizer.d.ts +9 -0
- package/dist/lexer/tokenizer.d.ts.map +1 -0
- package/dist/lexer/tokenizer.js +100 -0
- package/dist/lexer/tokenizer.js.map +1 -0
- package/dist/lexer.d.ts +19 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +344 -0
- package/dist/lexer.js.map +1 -0
- package/dist/parser/arithmetic.d.ts +16 -0
- package/dist/parser/arithmetic.d.ts.map +1 -0
- package/dist/parser/arithmetic.js +128 -0
- package/dist/parser/arithmetic.js.map +1 -0
- package/dist/parser/boolean.d.ts +15 -0
- package/dist/parser/boolean.d.ts.map +1 -0
- package/dist/parser/boolean.js +20 -0
- package/dist/parser/boolean.js.map +1 -0
- package/dist/parser/control-flow.d.ts +56 -0
- package/dist/parser/control-flow.d.ts.map +1 -0
- package/dist/parser/control-flow.js +167 -0
- package/dist/parser/control-flow.js.map +1 -0
- package/dist/parser/expressions.d.ts +23 -0
- package/dist/parser/expressions.d.ts.map +1 -0
- package/dist/parser/expressions.js +950 -0
- package/dist/parser/expressions.js.map +1 -0
- package/dist/parser/extraction.d.ts +48 -0
- package/dist/parser/extraction.d.ts.map +1 -0
- package/dist/parser/extraction.js +279 -0
- package/dist/parser/extraction.js.map +1 -0
- package/dist/parser/functions.d.ts +20 -0
- package/dist/parser/functions.d.ts.map +1 -0
- package/dist/parser/functions.js +96 -0
- package/dist/parser/functions.js.map +1 -0
- package/dist/parser/helpers.d.ts +94 -0
- package/dist/parser/helpers.d.ts.map +1 -0
- package/dist/parser/helpers.js +225 -0
- package/dist/parser/helpers.js.map +1 -0
- package/dist/parser/index.d.ts +49 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +73 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/literals.d.ts +37 -0
- package/dist/parser/literals.d.ts.map +1 -0
- package/dist/parser/literals.js +373 -0
- package/dist/parser/literals.js.map +1 -0
- package/dist/parser/parser-collect.d.ts +16 -0
- package/dist/parser/parser-collect.d.ts.map +1 -0
- package/dist/parser/parser-collect.js +125 -0
- package/dist/parser/parser-collect.js.map +1 -0
- package/dist/parser/parser-control.d.ts +20 -0
- package/dist/parser/parser-control.d.ts.map +1 -0
- package/dist/parser/parser-control.js +120 -0
- package/dist/parser/parser-control.js.map +1 -0
- package/dist/parser/parser-expr.d.ts +37 -0
- package/dist/parser/parser-expr.d.ts.map +1 -0
- package/dist/parser/parser-expr.js +639 -0
- package/dist/parser/parser-expr.js.map +1 -0
- package/dist/parser/parser-extract.d.ts +17 -0
- package/dist/parser/parser-extract.d.ts.map +1 -0
- package/dist/parser/parser-extract.js +222 -0
- package/dist/parser/parser-extract.js.map +1 -0
- package/dist/parser/parser-functions.d.ts +21 -0
- package/dist/parser/parser-functions.d.ts.map +1 -0
- package/dist/parser/parser-functions.js +155 -0
- package/dist/parser/parser-functions.js.map +1 -0
- package/dist/parser/parser-literals.d.ts +22 -0
- package/dist/parser/parser-literals.d.ts.map +1 -0
- package/dist/parser/parser-literals.js +288 -0
- package/dist/parser/parser-literals.js.map +1 -0
- package/dist/parser/parser-script.d.ts +21 -0
- package/dist/parser/parser-script.d.ts.map +1 -0
- package/dist/parser/parser-script.js +174 -0
- package/dist/parser/parser-script.js.map +1 -0
- package/dist/parser/parser-variables.d.ts +20 -0
- package/dist/parser/parser-variables.d.ts.map +1 -0
- package/dist/parser/parser-variables.js +146 -0
- package/dist/parser/parser-variables.js.map +1 -0
- package/dist/parser/parser.d.ts +49 -0
- package/dist/parser/parser.d.ts.map +1 -0
- package/dist/parser/parser.js +54 -0
- package/dist/parser/parser.js.map +1 -0
- package/dist/parser/script.d.ts +14 -0
- package/dist/parser/script.d.ts.map +1 -0
- package/dist/parser/script.js +196 -0
- package/dist/parser/script.js.map +1 -0
- package/dist/parser/state.d.ts +40 -0
- package/dist/parser/state.d.ts.map +1 -0
- package/dist/parser/state.js +129 -0
- package/dist/parser/state.js.map +1 -0
- package/dist/parser/variables.d.ts +10 -0
- package/dist/parser/variables.d.ts.map +1 -0
- package/dist/parser/variables.js +215 -0
- package/dist/parser/variables.js.map +1 -0
- package/dist/runtime/ast-equals.d.ts +13 -0
- package/dist/runtime/ast-equals.d.ts.map +1 -0
- package/dist/runtime/ast-equals.js +447 -0
- package/dist/runtime/ast-equals.js.map +1 -0
- package/dist/runtime/builtins.d.ts +13 -0
- package/dist/runtime/builtins.d.ts.map +1 -0
- package/dist/runtime/builtins.js +180 -0
- package/dist/runtime/builtins.js.map +1 -0
- package/dist/runtime/callable.d.ts +88 -0
- package/dist/runtime/callable.d.ts.map +1 -0
- package/dist/runtime/callable.js +98 -0
- package/dist/runtime/callable.js.map +1 -0
- package/dist/runtime/context.d.ts +13 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +73 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/core/callable.d.ts +171 -0
- package/dist/runtime/core/callable.d.ts.map +1 -0
- package/dist/runtime/core/callable.js +246 -0
- package/dist/runtime/core/callable.js.map +1 -0
- package/dist/runtime/core/context.d.ts +29 -0
- package/dist/runtime/core/context.d.ts.map +1 -0
- package/dist/runtime/core/context.js +154 -0
- package/dist/runtime/core/context.js.map +1 -0
- package/dist/runtime/core/equals.d.ts +9 -0
- package/dist/runtime/core/equals.d.ts.map +1 -0
- package/dist/runtime/core/equals.js +381 -0
- package/dist/runtime/core/equals.js.map +1 -0
- package/dist/runtime/core/eval/base.d.ts +65 -0
- package/dist/runtime/core/eval/base.d.ts.map +1 -0
- package/dist/runtime/core/eval/base.js +112 -0
- package/dist/runtime/core/eval/base.js.map +1 -0
- package/dist/runtime/core/eval/evaluator.d.ts +47 -0
- package/dist/runtime/core/eval/evaluator.d.ts.map +1 -0
- package/dist/runtime/core/eval/evaluator.js +73 -0
- package/dist/runtime/core/eval/evaluator.js.map +1 -0
- package/dist/runtime/core/eval/index.d.ts +57 -0
- package/dist/runtime/core/eval/index.d.ts.map +1 -0
- package/dist/runtime/core/eval/index.js +95 -0
- package/dist/runtime/core/eval/index.js.map +1 -0
- package/dist/runtime/core/eval/mixins/annotations.d.ts +19 -0
- package/dist/runtime/core/eval/mixins/annotations.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/annotations.js +146 -0
- package/dist/runtime/core/eval/mixins/annotations.js.map +1 -0
- package/dist/runtime/core/eval/mixins/closures.d.ts +49 -0
- package/dist/runtime/core/eval/mixins/closures.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/closures.js +479 -0
- package/dist/runtime/core/eval/mixins/closures.js.map +1 -0
- package/dist/runtime/core/eval/mixins/collections.d.ts +24 -0
- package/dist/runtime/core/eval/mixins/collections.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/collections.js +466 -0
- package/dist/runtime/core/eval/mixins/collections.js.map +1 -0
- package/dist/runtime/core/eval/mixins/control-flow.d.ts +27 -0
- package/dist/runtime/core/eval/mixins/control-flow.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/control-flow.js +369 -0
- package/dist/runtime/core/eval/mixins/control-flow.js.map +1 -0
- package/dist/runtime/core/eval/mixins/core.d.ts +24 -0
- package/dist/runtime/core/eval/mixins/core.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/core.js +335 -0
- package/dist/runtime/core/eval/mixins/core.js.map +1 -0
- package/dist/runtime/core/eval/mixins/expressions.d.ts +19 -0
- package/dist/runtime/core/eval/mixins/expressions.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/expressions.js +202 -0
- package/dist/runtime/core/eval/mixins/expressions.js.map +1 -0
- package/dist/runtime/core/eval/mixins/extraction.d.ts +10 -0
- package/dist/runtime/core/eval/mixins/extraction.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/extraction.js +250 -0
- package/dist/runtime/core/eval/mixins/extraction.js.map +1 -0
- package/dist/runtime/core/eval/mixins/literals.d.ts +23 -0
- package/dist/runtime/core/eval/mixins/literals.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/literals.js +180 -0
- package/dist/runtime/core/eval/mixins/literals.js.map +1 -0
- package/dist/runtime/core/eval/mixins/types.d.ts +20 -0
- package/dist/runtime/core/eval/mixins/types.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/types.js +109 -0
- package/dist/runtime/core/eval/mixins/types.js.map +1 -0
- package/dist/runtime/core/eval/mixins/variables.d.ts +34 -0
- package/dist/runtime/core/eval/mixins/variables.d.ts.map +1 -0
- package/dist/runtime/core/eval/mixins/variables.js +247 -0
- package/dist/runtime/core/eval/mixins/variables.js.map +1 -0
- package/dist/runtime/core/eval/types.d.ts +41 -0
- package/dist/runtime/core/eval/types.d.ts.map +1 -0
- package/dist/runtime/core/eval/types.js +10 -0
- package/dist/runtime/core/eval/types.js.map +1 -0
- package/dist/runtime/core/evaluate.d.ts +42 -0
- package/dist/runtime/core/evaluate.d.ts.map +1 -0
- package/dist/runtime/core/evaluate.debug.js +1251 -0
- package/dist/runtime/core/evaluate.js +1913 -0
- package/dist/runtime/core/evaluate.js.map +1 -0
- package/dist/runtime/core/execute.d.ts +26 -0
- package/dist/runtime/core/execute.d.ts.map +1 -0
- package/dist/runtime/core/execute.js +177 -0
- package/dist/runtime/core/execute.js.map +1 -0
- package/dist/runtime/core/signals.d.ts +19 -0
- package/dist/runtime/core/signals.d.ts.map +1 -0
- package/dist/runtime/core/signals.js +26 -0
- package/dist/runtime/core/signals.js.map +1 -0
- package/dist/runtime/core/types.d.ts +177 -0
- package/dist/runtime/core/types.d.ts.map +1 -0
- package/dist/runtime/core/types.js +50 -0
- package/dist/runtime/core/types.js.map +1 -0
- package/dist/runtime/core/values.d.ts +66 -0
- package/dist/runtime/core/values.d.ts.map +1 -0
- package/dist/runtime/core/values.js +240 -0
- package/dist/runtime/core/values.js.map +1 -0
- package/dist/runtime/evaluate.d.ts +32 -0
- package/dist/runtime/evaluate.d.ts.map +1 -0
- package/dist/runtime/evaluate.js +1111 -0
- package/dist/runtime/evaluate.js.map +1 -0
- package/dist/runtime/execute.d.ts +26 -0
- package/dist/runtime/execute.d.ts.map +1 -0
- package/dist/runtime/execute.js +121 -0
- package/dist/runtime/execute.js.map +1 -0
- package/dist/runtime/ext/builtins.d.ts +16 -0
- package/dist/runtime/ext/builtins.d.ts.map +1 -0
- package/dist/runtime/ext/builtins.js +528 -0
- package/dist/runtime/ext/builtins.js.map +1 -0
- package/dist/runtime/ext/content-parser.d.ts +83 -0
- package/dist/runtime/ext/content-parser.d.ts.map +1 -0
- package/dist/runtime/ext/content-parser.js +536 -0
- package/dist/runtime/ext/content-parser.js.map +1 -0
- package/dist/runtime/index.d.ts +28 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +34 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/signals.d.ts +19 -0
- package/dist/runtime/signals.d.ts.map +1 -0
- package/dist/runtime/signals.js +26 -0
- package/dist/runtime/signals.js.map +1 -0
- package/dist/runtime/types.d.ts +169 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +50 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/values.d.ts +50 -0
- package/dist/runtime/values.d.ts.map +1 -0
- package/dist/runtime/values.js +209 -0
- package/dist/runtime/values.js.map +1 -0
- package/dist/runtime.d.ts +254 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +2014 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +752 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +189 -0
- package/dist/types.js.map +1 -0
- package/docs/00_INDEX.md +65 -0
- package/docs/01_guide.md +390 -0
- package/docs/02_types.md +399 -0
- package/docs/03_variables.md +314 -0
- package/docs/04_operators.md +551 -0
- package/docs/05_control-flow.md +350 -0
- package/docs/06_closures.md +353 -0
- package/docs/07_collections.md +686 -0
- package/docs/08_iterators.md +330 -0
- package/docs/09_strings.md +205 -0
- package/docs/10_parsing.md +366 -0
- package/docs/11_reference.md +350 -0
- package/docs/12_examples.md +771 -0
- package/docs/13_modules.md +519 -0
- package/docs/14_host-integration.md +826 -0
- package/docs/15_grammar.ebnf +693 -0
- package/docs/16_conventions.md +696 -0
- package/docs/99_llm-reference.txt +300 -0
- package/docs/assets/logo.png +0 -0
- package/package.json +70 -0
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Parser
|
|
3
|
+
*
|
|
4
|
+
* Auto-detects and extracts structured content from LLM responses.
|
|
5
|
+
* Handles markdown code blocks, raw JSON, XML tags, YAML frontmatter,
|
|
6
|
+
* checklists, and other common patterns.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================
|
|
9
|
+
// DETECTION PATTERNS
|
|
10
|
+
// ============================================================
|
|
11
|
+
const PATTERNS = {
|
|
12
|
+
// Frontmatter: starts with ---\n and ends with ---\n
|
|
13
|
+
frontmatter: /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/,
|
|
14
|
+
// Fenced code block: ```lang\ncontent\n```
|
|
15
|
+
fence: /```(\w*)\r?\n([\s\S]*?)```/,
|
|
16
|
+
fenceAll: /```(\w*)\r?\n([\s\S]*?)```/g,
|
|
17
|
+
// XML tags: <tag>content</tag>
|
|
18
|
+
xmlTag: /<(\w+)(?:\s[^>]*)?>[\s\S]*?<\/\1>/,
|
|
19
|
+
xmlTagNamed: (tag) => new RegExp(`<${tag}(?:\\s[^>]*)?>([\\s\\S]*?)</${tag}>`),
|
|
20
|
+
xmlTagAll: /<(\w+)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g,
|
|
21
|
+
// JSON object or array (with possible preamble)
|
|
22
|
+
jsonObject: /\{[\s\S]*\}/,
|
|
23
|
+
jsonArray: /\[[\s\S]*\]/,
|
|
24
|
+
// YAML-like key: value patterns
|
|
25
|
+
yaml: /^\w+:\s+.+$/m,
|
|
26
|
+
// Checklist items
|
|
27
|
+
checklist: /^[-*]\s*\[([ xX])\]\s*(.+)$/gm,
|
|
28
|
+
checklistSingle: /^[-*]\s*\[([ xX])\]\s*(.+)$/m,
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Attempt to repair common JSON formatting errors.
|
|
32
|
+
*/
|
|
33
|
+
function repairJson(text) {
|
|
34
|
+
const repairs = [];
|
|
35
|
+
let result = text;
|
|
36
|
+
// Remove trailing commas before } or ]
|
|
37
|
+
const trailingComma = /,(\s*[}\]])/g;
|
|
38
|
+
if (trailingComma.test(result)) {
|
|
39
|
+
result = result.replace(trailingComma, '$1');
|
|
40
|
+
repairs.push('removed trailing commas');
|
|
41
|
+
}
|
|
42
|
+
// Convert single quotes to double quotes (for string values)
|
|
43
|
+
// This is tricky - only convert quotes that look like string delimiters
|
|
44
|
+
const singleQuotePattern = /:\s*'([^']*?)'/g;
|
|
45
|
+
if (singleQuotePattern.test(result)) {
|
|
46
|
+
result = result.replace(singleQuotePattern, ': "$1"');
|
|
47
|
+
repairs.push('converted single quotes to double quotes');
|
|
48
|
+
}
|
|
49
|
+
// Quote unquoted keys
|
|
50
|
+
const unquotedKey = /([{,]\s*)(\w+)(\s*:)/g;
|
|
51
|
+
const needsQuoting = unquotedKey.test(result);
|
|
52
|
+
if (needsQuoting) {
|
|
53
|
+
result = result.replace(unquotedKey, '$1"$2"$3');
|
|
54
|
+
repairs.push('quoted unquoted keys');
|
|
55
|
+
}
|
|
56
|
+
// Try to close unclosed braces/brackets
|
|
57
|
+
let openBraces = 0;
|
|
58
|
+
let openBrackets = 0;
|
|
59
|
+
for (const char of result) {
|
|
60
|
+
if (char === '{')
|
|
61
|
+
openBraces++;
|
|
62
|
+
if (char === '}')
|
|
63
|
+
openBraces--;
|
|
64
|
+
if (char === '[')
|
|
65
|
+
openBrackets++;
|
|
66
|
+
if (char === ']')
|
|
67
|
+
openBrackets--;
|
|
68
|
+
}
|
|
69
|
+
if (openBraces > 0) {
|
|
70
|
+
result += '}'.repeat(openBraces);
|
|
71
|
+
repairs.push(`closed ${openBraces} unclosed brace(s)`);
|
|
72
|
+
}
|
|
73
|
+
if (openBrackets > 0) {
|
|
74
|
+
result += ']'.repeat(openBrackets);
|
|
75
|
+
repairs.push(`closed ${openBrackets} unclosed bracket(s)`);
|
|
76
|
+
}
|
|
77
|
+
return { text: result, repairs };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Extract and parse frontmatter from document.
|
|
81
|
+
*/
|
|
82
|
+
function extractFrontmatter(text, _options) {
|
|
83
|
+
const match = PATTERNS.frontmatter.exec(text);
|
|
84
|
+
if (!match)
|
|
85
|
+
return null;
|
|
86
|
+
const [, yamlContent, body] = match;
|
|
87
|
+
if (!yamlContent)
|
|
88
|
+
return null;
|
|
89
|
+
try {
|
|
90
|
+
// Parse YAML manually (simple key: value format)
|
|
91
|
+
const data = parseSimpleYaml(yamlContent);
|
|
92
|
+
return {
|
|
93
|
+
raw: yamlContent,
|
|
94
|
+
parsed: { meta: data, body: body?.trim() ?? '' },
|
|
95
|
+
confidence: 0.95,
|
|
96
|
+
repaired: false,
|
|
97
|
+
repairs: [],
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Extract content from fenced code blocks.
|
|
106
|
+
*/
|
|
107
|
+
function extractFence(text, options) {
|
|
108
|
+
const match = PATTERNS.fence.exec(text);
|
|
109
|
+
if (!match)
|
|
110
|
+
return null;
|
|
111
|
+
const [, lang, content] = match;
|
|
112
|
+
if (!content)
|
|
113
|
+
return null;
|
|
114
|
+
const trimmed = content.trim();
|
|
115
|
+
const langLower = (lang ?? '').toLowerCase();
|
|
116
|
+
// If JSON fence, parse as JSON
|
|
117
|
+
if (langLower === 'json') {
|
|
118
|
+
const jsonResult = parseJsonWithRepair(trimmed, !options.strict);
|
|
119
|
+
if (jsonResult) {
|
|
120
|
+
return {
|
|
121
|
+
raw: trimmed,
|
|
122
|
+
parsed: jsonResult.data,
|
|
123
|
+
confidence: jsonResult.repaired ? 0.85 : 0.98,
|
|
124
|
+
repaired: jsonResult.repaired,
|
|
125
|
+
repairs: jsonResult.repairs,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// If YAML fence, parse as YAML
|
|
130
|
+
if (langLower === 'yaml' || langLower === 'yml') {
|
|
131
|
+
try {
|
|
132
|
+
const data = parseSimpleYaml(trimmed);
|
|
133
|
+
return {
|
|
134
|
+
raw: trimmed,
|
|
135
|
+
parsed: data,
|
|
136
|
+
confidence: 0.95,
|
|
137
|
+
repaired: false,
|
|
138
|
+
repairs: [],
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// Fall through to return raw content
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Return raw content for other languages
|
|
146
|
+
return {
|
|
147
|
+
raw: trimmed,
|
|
148
|
+
parsed: trimmed,
|
|
149
|
+
confidence: 0.9,
|
|
150
|
+
repaired: false,
|
|
151
|
+
repairs: [],
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Extract content from XML tags.
|
|
156
|
+
*/
|
|
157
|
+
function extractXml(text, options) {
|
|
158
|
+
// If a specific tag is requested, extract just that
|
|
159
|
+
if (options.tag) {
|
|
160
|
+
const pattern = PATTERNS.xmlTagNamed(options.tag);
|
|
161
|
+
const match = pattern.exec(text);
|
|
162
|
+
if (!match || !match[1])
|
|
163
|
+
return null;
|
|
164
|
+
return {
|
|
165
|
+
raw: match[1].trim(),
|
|
166
|
+
parsed: match[1].trim(),
|
|
167
|
+
confidence: 0.95,
|
|
168
|
+
repaired: false,
|
|
169
|
+
repairs: [],
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// Find all XML tags and extract their content
|
|
173
|
+
const matches = text.match(PATTERNS.xmlTagAll);
|
|
174
|
+
if (!matches || matches.length === 0)
|
|
175
|
+
return null;
|
|
176
|
+
// Parse into a dict of tag -> content
|
|
177
|
+
const data = {};
|
|
178
|
+
let rawParts = [];
|
|
179
|
+
for (const fullMatch of matches) {
|
|
180
|
+
const tagMatch = /<(\w+)(?:\s[^>]*)?>/.exec(fullMatch);
|
|
181
|
+
if (!tagMatch || !tagMatch[1])
|
|
182
|
+
continue;
|
|
183
|
+
const tagName = tagMatch[1];
|
|
184
|
+
const contentPattern = PATTERNS.xmlTagNamed(tagName);
|
|
185
|
+
const contentMatch = contentPattern.exec(fullMatch);
|
|
186
|
+
if (contentMatch && contentMatch[1]) {
|
|
187
|
+
const content = contentMatch[1].trim();
|
|
188
|
+
data[tagName] = content;
|
|
189
|
+
rawParts.push(fullMatch);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (Object.keys(data).length === 0)
|
|
193
|
+
return null;
|
|
194
|
+
return {
|
|
195
|
+
raw: rawParts.join('\n'),
|
|
196
|
+
parsed: data,
|
|
197
|
+
confidence: 0.92,
|
|
198
|
+
repaired: false,
|
|
199
|
+
repairs: [],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Extract raw JSON from text (handling preamble/postamble).
|
|
204
|
+
*/
|
|
205
|
+
function extractJson(text, options) {
|
|
206
|
+
// Try to find JSON object
|
|
207
|
+
let match = PATTERNS.jsonObject.exec(text);
|
|
208
|
+
if (!match) {
|
|
209
|
+
// Try array
|
|
210
|
+
match = PATTERNS.jsonArray.exec(text);
|
|
211
|
+
}
|
|
212
|
+
if (!match)
|
|
213
|
+
return null;
|
|
214
|
+
const jsonText = match[0];
|
|
215
|
+
const result = parseJsonWithRepair(jsonText, !options.strict);
|
|
216
|
+
if (!result)
|
|
217
|
+
return null;
|
|
218
|
+
// Lower confidence if JSON was found with preamble/postamble
|
|
219
|
+
const hasPreamble = text.indexOf(jsonText) > 0;
|
|
220
|
+
const hasPostamble = text.indexOf(jsonText) + jsonText.length < text.length;
|
|
221
|
+
let confidence = result.repaired ? 0.8 : 0.9;
|
|
222
|
+
if (hasPreamble || hasPostamble) {
|
|
223
|
+
confidence -= 0.05;
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
raw: jsonText,
|
|
227
|
+
parsed: result.data,
|
|
228
|
+
confidence,
|
|
229
|
+
repaired: result.repaired,
|
|
230
|
+
repairs: result.repairs,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Extract checklist items.
|
|
235
|
+
*/
|
|
236
|
+
function extractChecklist(text, _options) {
|
|
237
|
+
const items = [];
|
|
238
|
+
const rawLines = [];
|
|
239
|
+
let match;
|
|
240
|
+
const pattern = new RegExp(PATTERNS.checklist.source, 'gm');
|
|
241
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
242
|
+
const checked = match[1]?.toLowerCase() === 'x';
|
|
243
|
+
const content = match[2]?.trim() ?? '';
|
|
244
|
+
items.push([checked, content]);
|
|
245
|
+
rawLines.push(match[0]);
|
|
246
|
+
}
|
|
247
|
+
if (items.length === 0)
|
|
248
|
+
return null;
|
|
249
|
+
return {
|
|
250
|
+
raw: rawLines.join('\n'),
|
|
251
|
+
parsed: items,
|
|
252
|
+
confidence: 0.92,
|
|
253
|
+
repaired: false,
|
|
254
|
+
repairs: [],
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Extract YAML content (without frontmatter delimiters).
|
|
259
|
+
*/
|
|
260
|
+
function extractYaml(text, _options) {
|
|
261
|
+
// Only try if it looks YAML-ish and not like other formats
|
|
262
|
+
if (!PATTERNS.yaml.test(text))
|
|
263
|
+
return null;
|
|
264
|
+
if (PATTERNS.jsonObject.test(text))
|
|
265
|
+
return null;
|
|
266
|
+
if (PATTERNS.xmlTag.test(text))
|
|
267
|
+
return null;
|
|
268
|
+
// Don't match YAML if text contains checklist items
|
|
269
|
+
if (PATTERNS.checklistSingle.test(text))
|
|
270
|
+
return null;
|
|
271
|
+
// Require multiple key: value lines to be confident it's YAML
|
|
272
|
+
const yamlLines = text
|
|
273
|
+
.split('\n')
|
|
274
|
+
.filter((line) => /^\w+:\s+.+$/.test(line.trim()));
|
|
275
|
+
if (yamlLines.length < 2)
|
|
276
|
+
return null;
|
|
277
|
+
try {
|
|
278
|
+
const data = parseSimpleYaml(text.trim());
|
|
279
|
+
return {
|
|
280
|
+
raw: text.trim(),
|
|
281
|
+
parsed: data,
|
|
282
|
+
confidence: 0.75, // Lower confidence for bare YAML
|
|
283
|
+
repaired: false,
|
|
284
|
+
repairs: [],
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Parse JSON with optional repair.
|
|
293
|
+
*/
|
|
294
|
+
function parseJsonWithRepair(text, attemptRepair) {
|
|
295
|
+
// Try parsing as-is
|
|
296
|
+
try {
|
|
297
|
+
const data = JSON.parse(text);
|
|
298
|
+
return { data, repaired: false, repairs: [] };
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
if (!attemptRepair)
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
// Attempt repair
|
|
305
|
+
const { text: repairedText, repairs } = repairJson(text);
|
|
306
|
+
if (repairs.length === 0)
|
|
307
|
+
return null;
|
|
308
|
+
try {
|
|
309
|
+
const data = JSON.parse(repairedText);
|
|
310
|
+
return { data, repaired: true, repairs };
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
return null;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Simple YAML parser for key: value format.
|
|
318
|
+
* Does not handle full YAML spec - just common LLM output patterns.
|
|
319
|
+
*/
|
|
320
|
+
function parseSimpleYaml(text) {
|
|
321
|
+
const result = {};
|
|
322
|
+
const lines = text.split('\n');
|
|
323
|
+
for (const line of lines) {
|
|
324
|
+
const trimmed = line.trim();
|
|
325
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
326
|
+
continue;
|
|
327
|
+
const colonIdx = trimmed.indexOf(':');
|
|
328
|
+
if (colonIdx === -1)
|
|
329
|
+
continue;
|
|
330
|
+
const key = trimmed.slice(0, colonIdx).trim();
|
|
331
|
+
let value = trimmed.slice(colonIdx + 1).trim();
|
|
332
|
+
// Parse value type
|
|
333
|
+
if (value === 'true')
|
|
334
|
+
value = true;
|
|
335
|
+
else if (value === 'false')
|
|
336
|
+
value = false;
|
|
337
|
+
else if (value === 'null' || value === '~')
|
|
338
|
+
value = null;
|
|
339
|
+
else if (/^-?\d+$/.test(value))
|
|
340
|
+
value = parseInt(value, 10);
|
|
341
|
+
else if (/^-?\d+\.\d+$/.test(value))
|
|
342
|
+
value = parseFloat(value);
|
|
343
|
+
else if (value.startsWith('[') && value.endsWith(']')) {
|
|
344
|
+
// Simple array: [a, b, c]
|
|
345
|
+
try {
|
|
346
|
+
value = JSON.parse(value);
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
// Keep as string if JSON parse fails
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
else if (value.startsWith('"') && value.endsWith('"')) {
|
|
353
|
+
value = value.slice(1, -1);
|
|
354
|
+
}
|
|
355
|
+
else if (value.startsWith("'") && value.endsWith("'")) {
|
|
356
|
+
value = value.slice(1, -1);
|
|
357
|
+
}
|
|
358
|
+
result[key] = value;
|
|
359
|
+
}
|
|
360
|
+
return result;
|
|
361
|
+
}
|
|
362
|
+
// ============================================================
|
|
363
|
+
// MAIN SMART PARSE FUNCTION
|
|
364
|
+
// ============================================================
|
|
365
|
+
/**
|
|
366
|
+
* Auto-detect and parse structured content from LLM output.
|
|
367
|
+
*
|
|
368
|
+
* Detection priority:
|
|
369
|
+
* 1. Frontmatter (---\n...\n---\n)
|
|
370
|
+
* 2. Fenced JSON/YAML (```json or ```yaml)
|
|
371
|
+
* 3. Other fenced blocks (```lang)
|
|
372
|
+
* 4. XML tags (<tag>...</tag>)
|
|
373
|
+
* 5. Raw JSON ({...} or [...])
|
|
374
|
+
* 6. Raw YAML (key: value patterns)
|
|
375
|
+
* 7. Checklist (- [ ] or - [x])
|
|
376
|
+
* 8. Plain text (fallback)
|
|
377
|
+
*/
|
|
378
|
+
export function parse(text, options = {}) {
|
|
379
|
+
const trimmed = text.trim();
|
|
380
|
+
// Detection order (most specific first)
|
|
381
|
+
const detectors = [
|
|
382
|
+
{ type: 'frontmatter', extract: extractFrontmatter },
|
|
383
|
+
{ type: 'fence', extract: extractFence },
|
|
384
|
+
{ type: 'xml', extract: extractXml },
|
|
385
|
+
{ type: 'json', extract: extractJson },
|
|
386
|
+
{ type: 'yaml', extract: extractYaml },
|
|
387
|
+
{ type: 'checklist', extract: extractChecklist },
|
|
388
|
+
];
|
|
389
|
+
// If a format is preferred, try it first
|
|
390
|
+
if (options.prefer) {
|
|
391
|
+
const preferred = detectors.find((d) => d.type === options.prefer);
|
|
392
|
+
if (preferred) {
|
|
393
|
+
const result = preferred.extract(trimmed, options);
|
|
394
|
+
if (result && (!options.strict || result.confidence >= 0.9)) {
|
|
395
|
+
return {
|
|
396
|
+
type: preferred.type === 'fence'
|
|
397
|
+
? detectFenceType(trimmed)
|
|
398
|
+
: preferred.type,
|
|
399
|
+
data: result.parsed,
|
|
400
|
+
raw: result.raw,
|
|
401
|
+
confidence: result.confidence,
|
|
402
|
+
repaired: result.repaired,
|
|
403
|
+
repairs: result.repairs,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
// Try each detector in order
|
|
409
|
+
for (const { type, extract } of detectors) {
|
|
410
|
+
const result = extract(trimmed, options);
|
|
411
|
+
if (result) {
|
|
412
|
+
// In strict mode, require higher confidence
|
|
413
|
+
if (options.strict && result.confidence < 0.9)
|
|
414
|
+
continue;
|
|
415
|
+
return {
|
|
416
|
+
type: type === 'fence' ? detectFenceType(trimmed) : type,
|
|
417
|
+
data: result.parsed,
|
|
418
|
+
raw: result.raw,
|
|
419
|
+
confidence: result.confidence,
|
|
420
|
+
repaired: result.repaired,
|
|
421
|
+
repairs: result.repairs,
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// Fallback: return as plain text
|
|
426
|
+
return {
|
|
427
|
+
type: 'text',
|
|
428
|
+
data: trimmed,
|
|
429
|
+
raw: trimmed,
|
|
430
|
+
confidence: 1.0,
|
|
431
|
+
repaired: false,
|
|
432
|
+
repairs: [],
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Detect the actual content type of a fenced block.
|
|
437
|
+
*/
|
|
438
|
+
function detectFenceType(text) {
|
|
439
|
+
const match = PATTERNS.fence.exec(text);
|
|
440
|
+
if (!match)
|
|
441
|
+
return 'fence';
|
|
442
|
+
const lang = (match[1] ?? '').toLowerCase();
|
|
443
|
+
if (lang === 'json')
|
|
444
|
+
return 'json';
|
|
445
|
+
if (lang === 'yaml' || lang === 'yml')
|
|
446
|
+
return 'yaml';
|
|
447
|
+
if (lang === 'xml')
|
|
448
|
+
return 'xml';
|
|
449
|
+
return 'fence';
|
|
450
|
+
}
|
|
451
|
+
// ============================================================
|
|
452
|
+
// CONVENIENCE EXTRACTORS
|
|
453
|
+
// ============================================================
|
|
454
|
+
/**
|
|
455
|
+
* Extract content from a specific fenced code block type.
|
|
456
|
+
*/
|
|
457
|
+
export function extractFenceByLang(text, lang) {
|
|
458
|
+
const pattern = new RegExp(`\`\`\`${lang}\\r?\\n([\\s\\S]*?)\`\`\``, 'i');
|
|
459
|
+
const match = pattern.exec(text);
|
|
460
|
+
return match ? (match[1]?.trim() ?? null) : null;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Extract all fenced code blocks with their language tags.
|
|
464
|
+
*/
|
|
465
|
+
export function extractAllFences(text) {
|
|
466
|
+
const results = [];
|
|
467
|
+
let match;
|
|
468
|
+
const pattern = new RegExp(PATTERNS.fenceAll.source, 'g');
|
|
469
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
470
|
+
results.push({
|
|
471
|
+
lang: match[1] ?? '',
|
|
472
|
+
content: match[2]?.trim() ?? '',
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
return results;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Extract content from a named XML tag.
|
|
479
|
+
*/
|
|
480
|
+
export function extractXmlTag(text, tagName) {
|
|
481
|
+
const pattern = PATTERNS.xmlTagNamed(tagName);
|
|
482
|
+
const match = pattern.exec(text);
|
|
483
|
+
return match ? (match[1]?.trim() ?? null) : null;
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Extract all instances of a named XML tag.
|
|
487
|
+
*/
|
|
488
|
+
export function extractAllXmlTags(text, tagName) {
|
|
489
|
+
const pattern = new RegExp(`<${tagName}(?:\\s[^>]*)?>([\\s\\S]*?)</${tagName}>`, 'g');
|
|
490
|
+
const results = [];
|
|
491
|
+
let match;
|
|
492
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
493
|
+
if (match[1]) {
|
|
494
|
+
results.push(match[1].trim());
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return results;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Parse JSON with automatic repair of common errors.
|
|
501
|
+
*/
|
|
502
|
+
export function parseJson(text, repair = true) {
|
|
503
|
+
const result = parseJsonWithRepair(text.trim(), repair);
|
|
504
|
+
return result ? result.data : null;
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Extract frontmatter and body from a document.
|
|
508
|
+
*/
|
|
509
|
+
export function parseFrontmatter(text) {
|
|
510
|
+
const match = PATTERNS.frontmatter.exec(text);
|
|
511
|
+
if (!match || !match[1])
|
|
512
|
+
return null;
|
|
513
|
+
try {
|
|
514
|
+
const meta = parseSimpleYaml(match[1]);
|
|
515
|
+
return { meta, body: (match[2] ?? '').trim() };
|
|
516
|
+
}
|
|
517
|
+
catch {
|
|
518
|
+
return null;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Parse checklist items.
|
|
523
|
+
*/
|
|
524
|
+
export function parseChecklist(text) {
|
|
525
|
+
const items = [];
|
|
526
|
+
let match;
|
|
527
|
+
const pattern = new RegExp(PATTERNS.checklist.source, 'gm');
|
|
528
|
+
while ((match = pattern.exec(text)) !== null) {
|
|
529
|
+
items.push({
|
|
530
|
+
checked: match[1]?.toLowerCase() === 'x',
|
|
531
|
+
text: match[2]?.trim() ?? '',
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
return items;
|
|
535
|
+
}
|
|
536
|
+
//# sourceMappingURL=content-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-parser.js","sourceRoot":"","sources":["../../../src/runtime/ext/content-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rill Runtime
|
|
3
|
+
*
|
|
4
|
+
* Public API for executing Rill scripts.
|
|
5
|
+
*
|
|
6
|
+
* Module Structure:
|
|
7
|
+
* - core/: Essential execution engine
|
|
8
|
+
* - types.ts: Public types (RuntimeContext, RuntimeOptions, etc.)
|
|
9
|
+
* - callable.ts: Callable types and type guards
|
|
10
|
+
* - values.ts: RillValue, RillTuple, and value utilities
|
|
11
|
+
* - signals.ts: Control flow signals (BreakSignal, ReturnSignal)
|
|
12
|
+
* - context.ts: Runtime context factory
|
|
13
|
+
* - execute.ts: Script execution (execute, createStepper)
|
|
14
|
+
* - evaluate.ts: AST evaluation (internal)
|
|
15
|
+
* - equals.ts: AST structural equality (internal)
|
|
16
|
+
* - ext/: Self-contained extensions
|
|
17
|
+
* - builtins.ts: Built-in functions and methods
|
|
18
|
+
* - content-parser.ts: LLM output parsing utilities
|
|
19
|
+
*/
|
|
20
|
+
export type { CaptureEvent, ErrorEvent, ExecutionResult, ExecutionStepper, HostCallEvent, FunctionReturnEvent, ObservabilityCallbacks, RuntimeCallbacks, RuntimeContext, RuntimeOptions, StepEndEvent, StepResult, StepStartEvent, } from './core/types.js';
|
|
21
|
+
export type { ApplicationCallable, CallableFn, HostFunctionDefinition, HostFunctionParam, RillCallable, RuntimeCallable, ScriptCallable, } from './core/callable.js';
|
|
22
|
+
export { callable, isApplicationCallable, isCallable, isDict, isRuntimeCallable, isScriptCallable, validateHostFunctionArgs, } from './core/callable.js';
|
|
23
|
+
export type { RillTuple, RillValue } from './core/values.js';
|
|
24
|
+
export { isTuple, isReservedMethod, RESERVED_DICT_METHODS, } from './core/values.js';
|
|
25
|
+
export { BreakSignal, ReturnSignal } from './core/signals.js';
|
|
26
|
+
export { createRuntimeContext } from './core/context.js';
|
|
27
|
+
export { createStepper, execute } from './core/execute.js';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,cAAc,GACf,MAAM,iBAAiB,CAAC;AAMzB,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAM5B,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAM9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAMzD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rill Runtime
|
|
3
|
+
*
|
|
4
|
+
* Public API for executing Rill scripts.
|
|
5
|
+
*
|
|
6
|
+
* Module Structure:
|
|
7
|
+
* - core/: Essential execution engine
|
|
8
|
+
* - types.ts: Public types (RuntimeContext, RuntimeOptions, etc.)
|
|
9
|
+
* - callable.ts: Callable types and type guards
|
|
10
|
+
* - values.ts: RillValue, RillTuple, and value utilities
|
|
11
|
+
* - signals.ts: Control flow signals (BreakSignal, ReturnSignal)
|
|
12
|
+
* - context.ts: Runtime context factory
|
|
13
|
+
* - execute.ts: Script execution (execute, createStepper)
|
|
14
|
+
* - evaluate.ts: AST evaluation (internal)
|
|
15
|
+
* - equals.ts: AST structural equality (internal)
|
|
16
|
+
* - ext/: Self-contained extensions
|
|
17
|
+
* - builtins.ts: Built-in functions and methods
|
|
18
|
+
* - content-parser.ts: LLM output parsing utilities
|
|
19
|
+
*/
|
|
20
|
+
export { callable, isApplicationCallable, isCallable, isDict, isRuntimeCallable, isScriptCallable, validateHostFunctionArgs, } from './core/callable.js';
|
|
21
|
+
export { isTuple, isReservedMethod, RESERVED_DICT_METHODS, } from './core/values.js';
|
|
22
|
+
// ============================================================
|
|
23
|
+
// CONTROL FLOW SIGNALS
|
|
24
|
+
// ============================================================
|
|
25
|
+
export { BreakSignal, ReturnSignal } from './core/signals.js';
|
|
26
|
+
// ============================================================
|
|
27
|
+
// CONTEXT FACTORY
|
|
28
|
+
// ============================================================
|
|
29
|
+
export { createRuntimeContext } from './core/context.js';
|
|
30
|
+
// ============================================================
|
|
31
|
+
// SCRIPT EXECUTION
|
|
32
|
+
// ============================================================
|
|
33
|
+
export { createStepper, execute } from './core/execute.js';
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAoCH,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9D,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Control Flow Signals
|
|
3
|
+
*
|
|
4
|
+
* Signals thrown to unwind the call stack for control flow.
|
|
5
|
+
* These are part of the public API for host applications that
|
|
6
|
+
* need to catch and handle control flow.
|
|
7
|
+
*/
|
|
8
|
+
import type { RillValue } from './values.js';
|
|
9
|
+
/** Signal thrown by `break` to exit loops */
|
|
10
|
+
export declare class BreakSignal extends Error {
|
|
11
|
+
readonly value: RillValue;
|
|
12
|
+
constructor(value: RillValue);
|
|
13
|
+
}
|
|
14
|
+
/** Signal thrown by `return` to exit blocks */
|
|
15
|
+
export declare class ReturnSignal extends Error {
|
|
16
|
+
readonly value: RillValue;
|
|
17
|
+
constructor(value: RillValue);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=signals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/runtime/signals.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,6CAA6C;AAC7C,qBAAa,WAAY,SAAQ,KAAK;aACR,KAAK,EAAE,SAAS;gBAAhB,KAAK,EAAE,SAAS;CAI7C;AAED,+CAA+C;AAC/C,qBAAa,YAAa,SAAQ,KAAK;aACT,KAAK,EAAE,SAAS;gBAAhB,KAAK,EAAE,SAAS;CAI7C"}
|