@phuetz/code-buddy 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codebuddy/skills/bundled/brave-search/SKILL.md +490 -0
- package/.codebuddy/skills/bundled/exa-search/SKILL.md +1122 -0
- package/.codebuddy/skills/bundled/perplexity/SKILL.md +748 -0
- package/.codebuddy/skills/bundled/playwright/SKILL.md +520 -0
- package/.codebuddy/skills/bundled/puppeteer/SKILL.md +708 -0
- package/.codebuddy/skills/bundled/web-fetch/SKILL.md +1003 -0
- package/README.md +56 -0
- package/dist/agent/agent-state.d.ts +3 -3
- package/dist/agent/agent-state.js +6 -6
- package/dist/agent/agent-state.js.map +1 -1
- package/dist/agent/base-agent.d.ts +4 -4
- package/dist/agent/base-agent.js +22 -9
- package/dist/agent/base-agent.js.map +1 -1
- package/dist/agent/cache-trace.d.ts +56 -0
- package/dist/agent/cache-trace.js +98 -0
- package/dist/agent/cache-trace.js.map +1 -0
- package/dist/agent/codebuddy-agent.js +3 -2
- package/dist/agent/codebuddy-agent.js.map +1 -1
- package/dist/agent/execution/agent-executor.d.ts +4 -4
- package/dist/agent/execution/agent-executor.js +41 -7
- package/dist/agent/execution/agent-executor.js.map +1 -1
- package/dist/agent/facades/agent-context-facade.js +1 -3
- package/dist/agent/facades/agent-context-facade.js.map +1 -1
- package/dist/agent/facades/message-history-manager.js +14 -12
- package/dist/agent/facades/message-history-manager.js.map +1 -1
- package/dist/agent/facades/session-facade.d.ts +3 -3
- package/dist/agent/facades/session-facade.js +6 -6
- package/dist/agent/facades/session-facade.js.map +1 -1
- package/dist/agent/history-repair.d.ts +37 -0
- package/dist/agent/history-repair.js +124 -0
- package/dist/agent/history-repair.js.map +1 -0
- package/dist/agent/specialized/archive-agent.d.ts +3 -0
- package/dist/agent/specialized/archive-agent.js +71 -31
- package/dist/agent/specialized/archive-agent.js.map +1 -1
- package/dist/agent/specialized/security-review/agent.js +19 -8
- package/dist/agent/specialized/security-review/agent.js.map +1 -1
- package/dist/agent/tool-executor.js +5 -0
- package/dist/agent/tool-executor.js.map +1 -1
- package/dist/agent/turn-diff-tracker.d.ts +79 -0
- package/dist/agent/turn-diff-tracker.js +195 -0
- package/dist/agent/turn-diff-tracker.js.map +1 -0
- package/dist/checkpoints/checkpoint-versioning.js +78 -20
- package/dist/checkpoints/checkpoint-versioning.js.map +1 -1
- package/dist/cli/config-loader.js +2 -4
- package/dist/cli/config-loader.js.map +1 -1
- package/dist/commands/handlers/fcs-handlers.js +1 -1
- package/dist/commands/handlers/fcs-handlers.js.map +1 -1
- package/dist/commands/handlers/memory-handlers.js +2 -1
- package/dist/commands/handlers/memory-handlers.js.map +1 -1
- package/dist/commands/handlers/worktree-handlers.js +11 -0
- package/dist/commands/handlers/worktree-handlers.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -0
- package/dist/commands/mcp.js +66 -7
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/pipeline.js +25 -13
- package/dist/commands/pipeline.js.map +1 -1
- package/dist/config/model-tools.d.ts +41 -0
- package/dist/config/model-tools.js +194 -0
- package/dist/config/model-tools.js.map +1 -0
- package/dist/context/context-manager-v2.d.ts +2 -1
- package/dist/context/context-manager-v2.js +34 -5
- package/dist/context/context-manager-v2.js.map +1 -1
- package/dist/daemon/daemon-manager.js +23 -19
- package/dist/daemon/daemon-manager.js.map +1 -1
- package/dist/database/database-manager.d.ts +4 -0
- package/dist/database/database-manager.js +16 -7
- package/dist/database/database-manager.js.map +1 -1
- package/dist/desktop-automation/nutjs-provider.js +89 -0
- package/dist/desktop-automation/nutjs-provider.js.map +1 -1
- package/dist/fcs/builtins.d.ts +2 -6
- package/dist/fcs/builtins.js +2 -568
- package/dist/fcs/builtins.js.map +1 -1
- package/dist/fcs/codebuddy-bindings.d.ts +3 -43
- package/dist/fcs/codebuddy-bindings.js +2 -606
- package/dist/fcs/codebuddy-bindings.js.map +1 -1
- package/dist/fcs/index.d.ts +2 -27
- package/dist/fcs/index.js +2 -53
- package/dist/fcs/index.js.map +1 -1
- package/dist/fcs/lexer.d.ts +2 -37
- package/dist/fcs/lexer.js +2 -459
- package/dist/fcs/lexer.js.map +1 -1
- package/dist/fcs/parser.d.ts +2 -68
- package/dist/fcs/parser.js +2 -893
- package/dist/fcs/parser.js.map +1 -1
- package/dist/fcs/runtime.d.ts +2 -59
- package/dist/fcs/runtime.js +2 -623
- package/dist/fcs/runtime.js.map +1 -1
- package/dist/fcs/script-registry.d.ts +3 -69
- package/dist/fcs/script-registry.js +2 -219
- package/dist/fcs/script-registry.js.map +1 -1
- package/dist/fcs/sync-bindings.d.ts +3 -101
- package/dist/fcs/sync-bindings.js +2 -410
- package/dist/fcs/sync-bindings.js.map +1 -1
- package/dist/fcs/types.d.ts +2 -285
- package/dist/fcs/types.js +2 -103
- package/dist/fcs/types.js.map +1 -1
- package/dist/hooks/use-input-handler.d.ts +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/input/voice-control.js +11 -5
- package/dist/input/voice-control.js.map +1 -1
- package/dist/integrations/json-rpc/server.js +5 -5
- package/dist/integrations/json-rpc/server.js.map +1 -1
- package/dist/integrations/mcp/mcp-server.js +1 -1
- package/dist/integrations/mcp/mcp-server.js.map +1 -1
- package/dist/mcp/client.js +2 -1
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config.js +89 -5
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/mcp-client.js +65 -14
- package/dist/mcp/mcp-client.js.map +1 -1
- package/dist/mcp/transports.d.ts +0 -1
- package/dist/mcp/transports.js +1 -5
- package/dist/mcp/transports.js.map +1 -1
- package/dist/mcp/types.d.ts +2 -0
- package/dist/persistence/session-lock.d.ts +42 -0
- package/dist/persistence/session-lock.js +165 -0
- package/dist/persistence/session-lock.js.map +1 -0
- package/dist/persistence/session-store.d.ts +18 -3
- package/dist/persistence/session-store.js +90 -21
- package/dist/persistence/session-store.js.map +1 -1
- package/dist/plugins/isolated-plugin-runner.d.ts +6 -0
- package/dist/plugins/isolated-plugin-runner.js +19 -1
- package/dist/plugins/isolated-plugin-runner.js.map +1 -1
- package/dist/providers/local-llm-provider.js +21 -4
- package/dist/providers/local-llm-provider.js.map +1 -1
- package/dist/sandbox/docker-sandbox.js +7 -4
- package/dist/sandbox/docker-sandbox.js.map +1 -1
- package/dist/scripting/builtins.d.ts +8 -3
- package/dist/scripting/builtins.js +506 -355
- package/dist/scripting/builtins.js.map +1 -1
- package/dist/scripting/codebuddy-bindings.d.ts +47 -0
- package/dist/scripting/codebuddy-bindings.js +487 -0
- package/dist/scripting/codebuddy-bindings.js.map +1 -0
- package/dist/scripting/index.d.ts +33 -30
- package/dist/scripting/index.js +41 -36
- package/dist/scripting/index.js.map +1 -1
- package/dist/scripting/lexer.d.ts +31 -13
- package/dist/scripting/lexer.js +379 -292
- package/dist/scripting/lexer.js.map +1 -1
- package/dist/scripting/parser.d.ts +63 -44
- package/dist/scripting/parser.js +700 -473
- package/dist/scripting/parser.js.map +1 -1
- package/dist/scripting/runtime.d.ts +55 -24
- package/dist/scripting/runtime.js +600 -288
- package/dist/scripting/runtime.js.map +1 -1
- package/dist/scripting/script-registry.d.ts +54 -0
- package/dist/scripting/script-registry.js +202 -0
- package/dist/scripting/script-registry.js.map +1 -0
- package/dist/scripting/sync-bindings.d.ts +105 -0
- package/dist/scripting/sync-bindings.js +353 -0
- package/dist/scripting/sync-bindings.js.map +1 -0
- package/dist/scripting/types.d.ts +297 -199
- package/dist/scripting/types.js +86 -60
- package/dist/scripting/types.js.map +1 -1
- package/dist/search/usearch-index.js +42 -7
- package/dist/search/usearch-index.js.map +1 -1
- package/dist/security/bash-parser.d.ts +51 -0
- package/dist/security/bash-parser.js +327 -0
- package/dist/security/bash-parser.js.map +1 -0
- package/dist/security/skill-scanner.d.ts +36 -0
- package/dist/security/skill-scanner.js +149 -0
- package/dist/security/skill-scanner.js.map +1 -0
- package/dist/security/trust-folders.d.ts +1 -0
- package/dist/security/trust-folders.js +19 -1
- package/dist/security/trust-folders.js.map +1 -1
- package/dist/server/websocket/handler.js +15 -5
- package/dist/server/websocket/handler.js.map +1 -1
- package/dist/skills/eligibility.js +26 -4
- package/dist/skills/eligibility.js.map +1 -1
- package/dist/tasks/background-tasks.js +5 -1
- package/dist/tasks/background-tasks.js.map +1 -1
- package/dist/tools/apply-patch.d.ts +55 -0
- package/dist/tools/apply-patch.js +273 -0
- package/dist/tools/apply-patch.js.map +1 -0
- package/dist/tools/registry/bash-tools.js +6 -3
- package/dist/tools/registry/bash-tools.js.map +1 -1
- package/dist/tools/registry/misc-tools.js +1 -2
- package/dist/tools/registry/misc-tools.js.map +1 -1
- package/dist/tools/registry/search-tools.js +1 -1
- package/dist/tools/registry/search-tools.js.map +1 -1
- package/dist/tools/registry/text-editor-tools.js +1 -1
- package/dist/tools/registry/text-editor-tools.js.map +1 -1
- package/dist/tools/registry/todo-tools.js +37 -5
- package/dist/tools/registry/todo-tools.js.map +1 -1
- package/dist/tools/registry/tool-registry.js +5 -4
- package/dist/tools/registry/tool-registry.js.map +1 -1
- package/dist/tools/registry/web-tools.d.ts +1 -1
- package/dist/tools/registry/web-tools.js +28 -8
- package/dist/tools/registry/web-tools.js.map +1 -1
- package/dist/tools/text-editor.d.ts +1 -1
- package/dist/tools/text-editor.js +23 -5
- package/dist/tools/text-editor.js.map +1 -1
- package/dist/tools/web-search.d.ts +52 -37
- package/dist/tools/web-search.js +368 -163
- package/dist/tools/web-search.js.map +1 -1
- package/dist/ui/components/ChatInterface.d.ts +1 -1
- package/dist/utils/head-tail-truncation.d.ts +34 -0
- package/dist/utils/head-tail-truncation.js +98 -0
- package/dist/utils/head-tail-truncation.js.map +1 -0
- package/dist/utils/sanitize.d.ts +5 -0
- package/dist/utils/sanitize.js +19 -0
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/settings-manager.js +4 -4
- package/dist/utils/settings-manager.js.map +1 -1
- package/package.json +3 -1
package/dist/fcs/runtime.js
CHANGED
|
@@ -1,626 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* 100% compatible interpreter for FCS AST
|
|
2
|
+
* @deprecated Use src/scripting/runtime.ts instead. This file re-exports for backward compatibility.
|
|
5
3
|
*/
|
|
6
|
-
|
|
7
|
-
import { createFCSBuiltins } from './builtins.js';
|
|
8
|
-
import { createGrokBindings } from './codebuddy-bindings.js';
|
|
9
|
-
// Control flow signals
|
|
10
|
-
class ReturnSignal {
|
|
11
|
-
value;
|
|
12
|
-
constructor(value) {
|
|
13
|
-
this.value = value;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
class BreakSignal {
|
|
17
|
-
}
|
|
18
|
-
class ContinueSignal {
|
|
19
|
-
}
|
|
20
|
-
export class FCSRuntime {
|
|
21
|
-
config;
|
|
22
|
-
globalContext;
|
|
23
|
-
output = [];
|
|
24
|
-
startTime = 0;
|
|
25
|
-
testResults = [];
|
|
26
|
-
constructor(config = {}) {
|
|
27
|
-
this.config = { ...DEFAULT_FCS_CONFIG, ...config };
|
|
28
|
-
this.globalContext = {
|
|
29
|
-
variables: new Map(),
|
|
30
|
-
functions: new Map(),
|
|
31
|
-
};
|
|
32
|
-
this.initializeBuiltins();
|
|
33
|
-
}
|
|
34
|
-
initializeBuiltins() {
|
|
35
|
-
const printFn = (msg) => {
|
|
36
|
-
this.output.push(msg);
|
|
37
|
-
};
|
|
38
|
-
// Load standard FCS builtins
|
|
39
|
-
const builtins = createFCSBuiltins(this.config, printFn);
|
|
40
|
-
for (const [name, value] of Object.entries(builtins)) {
|
|
41
|
-
// Store in variables for lookup
|
|
42
|
-
this.globalContext.variables.set(name, value);
|
|
43
|
-
// Only store functions in the functions map
|
|
44
|
-
if (typeof value === 'function') {
|
|
45
|
-
this.globalContext.functions.set(name, value);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Load code-buddy bindings (grok, tool, context, agent, mcp, git, session)
|
|
49
|
-
const codebuddyBindings = createGrokBindings(this.config, printFn);
|
|
50
|
-
for (const [name, value] of Object.entries(codebuddyBindings)) {
|
|
51
|
-
this.globalContext.variables.set(name, value);
|
|
52
|
-
if (typeof value === 'function') {
|
|
53
|
-
this.globalContext.functions.set(name, value);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// Inject user variables
|
|
57
|
-
if (this.config.variables) {
|
|
58
|
-
for (const [name, value] of Object.entries(this.config.variables)) {
|
|
59
|
-
this.globalContext.variables.set(name, value);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
async execute(program) {
|
|
64
|
-
this.startTime = Date.now();
|
|
65
|
-
this.output = [];
|
|
66
|
-
this.testResults = [];
|
|
67
|
-
let returnValue = null;
|
|
68
|
-
let error;
|
|
69
|
-
try {
|
|
70
|
-
for (const statement of program.statements) {
|
|
71
|
-
const result = await this.executeNode(statement, this.globalContext);
|
|
72
|
-
if (result instanceof ReturnSignal) {
|
|
73
|
-
returnValue = result.value;
|
|
74
|
-
break;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
if (err instanceof ReturnSignal) {
|
|
80
|
-
returnValue = err.value;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
error = err instanceof Error ? err.message : String(err);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
success: !error,
|
|
88
|
-
output: this.output,
|
|
89
|
-
error,
|
|
90
|
-
returnValue,
|
|
91
|
-
duration: Date.now() - this.startTime,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
async executeNode(node, ctx) {
|
|
95
|
-
// Check timeout
|
|
96
|
-
if (Date.now() - this.startTime > this.config.timeout) {
|
|
97
|
-
throw new Error(`Script timeout after ${this.config.timeout}ms`);
|
|
98
|
-
}
|
|
99
|
-
switch (node.type) {
|
|
100
|
-
// Declarations
|
|
101
|
-
case 'VarDeclaration':
|
|
102
|
-
return this.executeVarDeclaration(node, ctx);
|
|
103
|
-
case 'FunctionDeclaration':
|
|
104
|
-
return this.executeFunctionDeclaration(node, ctx);
|
|
105
|
-
case 'ClassDeclaration':
|
|
106
|
-
return this.executeClassDeclaration(node, ctx);
|
|
107
|
-
case 'TestDeclaration':
|
|
108
|
-
return this.executeTestDeclaration(node, ctx);
|
|
109
|
-
// Statements
|
|
110
|
-
case 'Block':
|
|
111
|
-
return this.executeBlock(node, ctx);
|
|
112
|
-
case 'ExpressionStmt':
|
|
113
|
-
return this.evaluate(node.expression, ctx);
|
|
114
|
-
case 'If':
|
|
115
|
-
return this.executeIfStatement(node, ctx);
|
|
116
|
-
case 'While':
|
|
117
|
-
return this.executeWhileStatement(node, ctx);
|
|
118
|
-
case 'For':
|
|
119
|
-
return this.executeForStatement(node, ctx);
|
|
120
|
-
case 'Return':
|
|
121
|
-
return this.executeReturnStatement(node, ctx);
|
|
122
|
-
case 'Break':
|
|
123
|
-
return new BreakSignal();
|
|
124
|
-
case 'Continue':
|
|
125
|
-
return new ContinueSignal();
|
|
126
|
-
case 'Try':
|
|
127
|
-
return this.executeTryStatement(node, ctx);
|
|
128
|
-
case 'Throw':
|
|
129
|
-
return this.executeThrowStatement(node, ctx);
|
|
130
|
-
case 'Import':
|
|
131
|
-
return this.executeImportStatement(node, ctx);
|
|
132
|
-
case 'Assert':
|
|
133
|
-
return this.executeAssertStatement(node, ctx);
|
|
134
|
-
// Expressions (delegated to evaluate)
|
|
135
|
-
default:
|
|
136
|
-
return this.evaluate(node, ctx);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// ============================================
|
|
140
|
-
// Statement Execution
|
|
141
|
-
// ============================================
|
|
142
|
-
async executeVarDeclaration(node, ctx) {
|
|
143
|
-
const value = node.initializer
|
|
144
|
-
? await this.evaluate(node.initializer, ctx)
|
|
145
|
-
: null;
|
|
146
|
-
ctx.variables.set(node.name, value);
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
async executeFunctionDeclaration(node, ctx) {
|
|
150
|
-
const fn = async (...args) => {
|
|
151
|
-
const localCtx = {
|
|
152
|
-
variables: new Map(),
|
|
153
|
-
functions: new Map(ctx.functions),
|
|
154
|
-
parent: ctx,
|
|
155
|
-
};
|
|
156
|
-
// Bind parameters (with named args support)
|
|
157
|
-
const lastArg = args.length > 0 ? args[args.length - 1] : null;
|
|
158
|
-
const hasNamedArgs = lastArg !== null && typeof lastArg === 'object' && lastArg !== null && '__namedArgs' in lastArg;
|
|
159
|
-
const namedArgs = hasNamedArgs
|
|
160
|
-
? args.pop().__namedArgs
|
|
161
|
-
: {};
|
|
162
|
-
for (let i = 0; i < node.parameters.length; i++) {
|
|
163
|
-
const param = node.parameters[i];
|
|
164
|
-
let value;
|
|
165
|
-
if (namedArgs[param.name] !== undefined) {
|
|
166
|
-
value = namedArgs[param.name];
|
|
167
|
-
}
|
|
168
|
-
else if (args[i] !== undefined) {
|
|
169
|
-
value = args[i];
|
|
170
|
-
}
|
|
171
|
-
else if (param.defaultValue) {
|
|
172
|
-
value = await this.evaluate(param.defaultValue, ctx);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
value = null;
|
|
176
|
-
}
|
|
177
|
-
localCtx.variables.set(param.name, value);
|
|
178
|
-
}
|
|
179
|
-
try {
|
|
180
|
-
const result = await this.executeBlock(node.body, localCtx);
|
|
181
|
-
if (result instanceof ReturnSignal) {
|
|
182
|
-
return result.value;
|
|
183
|
-
}
|
|
184
|
-
return null;
|
|
185
|
-
}
|
|
186
|
-
catch (err) {
|
|
187
|
-
if (err instanceof ReturnSignal) {
|
|
188
|
-
return err.value;
|
|
189
|
-
}
|
|
190
|
-
throw err;
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
ctx.functions.set(node.name, fn);
|
|
194
|
-
ctx.variables.set(node.name, fn);
|
|
195
|
-
return null;
|
|
196
|
-
}
|
|
197
|
-
async executeClassDeclaration(node, ctx) {
|
|
198
|
-
// Create class constructor
|
|
199
|
-
const classConstructor = async (...args) => {
|
|
200
|
-
const instance = {};
|
|
201
|
-
// Initialize members
|
|
202
|
-
for (const member of node.members) {
|
|
203
|
-
if (member.type === 'VarDeclaration') {
|
|
204
|
-
const varDecl = member;
|
|
205
|
-
instance[varDecl.name] = varDecl.initializer
|
|
206
|
-
? await this.evaluate(varDecl.initializer, ctx)
|
|
207
|
-
: null;
|
|
208
|
-
}
|
|
209
|
-
else if (member.type === 'FunctionDeclaration') {
|
|
210
|
-
const fnDecl = member;
|
|
211
|
-
// Create method bound to instance
|
|
212
|
-
instance[fnDecl.name] = async (...methodArgs) => {
|
|
213
|
-
const methodCtx = {
|
|
214
|
-
variables: new Map([['this', instance]]),
|
|
215
|
-
functions: new Map(ctx.functions),
|
|
216
|
-
parent: ctx,
|
|
217
|
-
};
|
|
218
|
-
for (let i = 0; i < fnDecl.parameters.length; i++) {
|
|
219
|
-
methodCtx.variables.set(fnDecl.parameters[i].name, methodArgs[i]);
|
|
220
|
-
}
|
|
221
|
-
const result = await this.executeBlock(fnDecl.body, methodCtx);
|
|
222
|
-
if (result instanceof ReturnSignal) {
|
|
223
|
-
return result.value;
|
|
224
|
-
}
|
|
225
|
-
return null;
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
// Call constructor if exists
|
|
230
|
-
if (instance.constructor && typeof instance.constructor === 'function') {
|
|
231
|
-
await instance.constructor(...args);
|
|
232
|
-
}
|
|
233
|
-
return instance;
|
|
234
|
-
};
|
|
235
|
-
ctx.variables.set(node.name, classConstructor);
|
|
236
|
-
return null;
|
|
237
|
-
}
|
|
238
|
-
async executeTestDeclaration(node, ctx) {
|
|
239
|
-
if (!this.config.verbose) {
|
|
240
|
-
// Skip test execution if not in verbose/test mode
|
|
241
|
-
return null;
|
|
242
|
-
}
|
|
243
|
-
try {
|
|
244
|
-
await this.executeBlock(node.body, ctx);
|
|
245
|
-
this.testResults.push({ name: node.name, passed: true });
|
|
246
|
-
this.output.push(`✓ ${node.name}`);
|
|
247
|
-
}
|
|
248
|
-
catch (err) {
|
|
249
|
-
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
250
|
-
this.testResults.push({ name: node.name, passed: false, error: errorMsg });
|
|
251
|
-
this.output.push(`✗ ${node.name}: ${errorMsg}`);
|
|
252
|
-
}
|
|
253
|
-
return null;
|
|
254
|
-
}
|
|
255
|
-
async executeBlock(node, ctx) {
|
|
256
|
-
for (const stmt of node.statements) {
|
|
257
|
-
const result = await this.executeNode(stmt, ctx);
|
|
258
|
-
if (result instanceof ReturnSignal ||
|
|
259
|
-
result instanceof BreakSignal ||
|
|
260
|
-
result instanceof ContinueSignal) {
|
|
261
|
-
return result;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
return null;
|
|
265
|
-
}
|
|
266
|
-
async executeIfStatement(node, ctx) {
|
|
267
|
-
const condition = await this.evaluate(node.condition, ctx);
|
|
268
|
-
if (this.isTruthy(condition)) {
|
|
269
|
-
return this.executeNode(node.thenBranch, ctx);
|
|
270
|
-
}
|
|
271
|
-
else if (node.elseBranch) {
|
|
272
|
-
return this.executeNode(node.elseBranch, ctx);
|
|
273
|
-
}
|
|
274
|
-
return null;
|
|
275
|
-
}
|
|
276
|
-
async executeWhileStatement(node, ctx) {
|
|
277
|
-
while (this.isTruthy(await this.evaluate(node.condition, ctx))) {
|
|
278
|
-
const result = await this.executeNode(node.body, ctx);
|
|
279
|
-
if (result instanceof ReturnSignal)
|
|
280
|
-
return result;
|
|
281
|
-
if (result instanceof BreakSignal)
|
|
282
|
-
break;
|
|
283
|
-
if (result instanceof ContinueSignal)
|
|
284
|
-
continue;
|
|
285
|
-
}
|
|
286
|
-
return null;
|
|
287
|
-
}
|
|
288
|
-
async executeForStatement(node, ctx) {
|
|
289
|
-
const iterable = await this.evaluate(node.iterable, ctx);
|
|
290
|
-
if (!Array.isArray(iterable) && typeof iterable !== 'object') {
|
|
291
|
-
throw new Error('for-in requires an iterable (array or object)');
|
|
292
|
-
}
|
|
293
|
-
const items = Array.isArray(iterable)
|
|
294
|
-
? iterable
|
|
295
|
-
: Object.entries(iterable);
|
|
296
|
-
const localCtx = {
|
|
297
|
-
variables: new Map(),
|
|
298
|
-
functions: ctx.functions,
|
|
299
|
-
parent: ctx,
|
|
300
|
-
};
|
|
301
|
-
for (const item of items) {
|
|
302
|
-
localCtx.variables.set(node.variable, item);
|
|
303
|
-
const result = await this.executeNode(node.body, localCtx);
|
|
304
|
-
if (result instanceof ReturnSignal)
|
|
305
|
-
return result;
|
|
306
|
-
if (result instanceof BreakSignal)
|
|
307
|
-
break;
|
|
308
|
-
if (result instanceof ContinueSignal)
|
|
309
|
-
continue;
|
|
310
|
-
}
|
|
311
|
-
return null;
|
|
312
|
-
}
|
|
313
|
-
async executeReturnStatement(node, ctx) {
|
|
314
|
-
const value = node.value ? await this.evaluate(node.value, ctx) : null;
|
|
315
|
-
return new ReturnSignal(value);
|
|
316
|
-
}
|
|
317
|
-
async executeTryStatement(node, ctx) {
|
|
318
|
-
try {
|
|
319
|
-
return await this.executeBlock(node.tryBlock, ctx);
|
|
320
|
-
}
|
|
321
|
-
catch (err) {
|
|
322
|
-
for (const clause of node.catchClauses) {
|
|
323
|
-
const localCtx = {
|
|
324
|
-
variables: new Map(ctx.variables),
|
|
325
|
-
functions: ctx.functions,
|
|
326
|
-
parent: ctx,
|
|
327
|
-
};
|
|
328
|
-
if (clause.variable) {
|
|
329
|
-
const errorValue = err instanceof Error
|
|
330
|
-
? { message: err.message, stack: err.stack }
|
|
331
|
-
: err;
|
|
332
|
-
localCtx.variables.set(clause.variable, errorValue);
|
|
333
|
-
}
|
|
334
|
-
return this.executeBlock(clause.body, localCtx);
|
|
335
|
-
}
|
|
336
|
-
throw err;
|
|
337
|
-
}
|
|
338
|
-
finally {
|
|
339
|
-
if (node.finallyBlock) {
|
|
340
|
-
await this.executeBlock(node.finallyBlock, ctx);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
async executeThrowStatement(node, ctx) {
|
|
345
|
-
const value = await this.evaluate(node.expression, ctx);
|
|
346
|
-
if (typeof value === 'string') {
|
|
347
|
-
throw new Error(value);
|
|
348
|
-
}
|
|
349
|
-
throw value;
|
|
350
|
-
}
|
|
351
|
-
async executeImportStatement(_node, _ctx) {
|
|
352
|
-
// Imports are handled at initialization or by module system
|
|
353
|
-
// For now, just skip
|
|
354
|
-
return null;
|
|
355
|
-
}
|
|
356
|
-
async executeAssertStatement(node, ctx) {
|
|
357
|
-
const condition = await this.evaluate(node.condition, ctx);
|
|
358
|
-
if (!this.isTruthy(condition)) {
|
|
359
|
-
const message = node.message || 'Assertion failed';
|
|
360
|
-
throw new Error(message);
|
|
361
|
-
}
|
|
362
|
-
return null;
|
|
363
|
-
}
|
|
364
|
-
// ============================================
|
|
365
|
-
// Expression Evaluation
|
|
366
|
-
// ============================================
|
|
367
|
-
async evaluate(node, ctx) {
|
|
368
|
-
switch (node.type) {
|
|
369
|
-
case 'Literal':
|
|
370
|
-
return node.value;
|
|
371
|
-
case 'Identifier':
|
|
372
|
-
return this.lookupVariable(node.name, ctx);
|
|
373
|
-
case 'Binary':
|
|
374
|
-
return this.evaluateBinary(node, ctx);
|
|
375
|
-
case 'Unary':
|
|
376
|
-
return this.evaluateUnary(node, ctx);
|
|
377
|
-
case 'Assignment':
|
|
378
|
-
return this.evaluateAssignment(node, ctx);
|
|
379
|
-
case 'Call':
|
|
380
|
-
return this.evaluateCall(node, ctx);
|
|
381
|
-
case 'Member':
|
|
382
|
-
return this.evaluateMember(node, ctx);
|
|
383
|
-
case 'Index':
|
|
384
|
-
return this.evaluateIndex(node, ctx);
|
|
385
|
-
case 'Array':
|
|
386
|
-
return this.evaluateArray(node, ctx);
|
|
387
|
-
case 'Dict':
|
|
388
|
-
return this.evaluateDict(node, ctx);
|
|
389
|
-
case 'Lambda':
|
|
390
|
-
return this.evaluateLambda(node, ctx);
|
|
391
|
-
case 'Interpolation':
|
|
392
|
-
return this.evaluateInterpolation(node, ctx);
|
|
393
|
-
case 'Ternary':
|
|
394
|
-
return this.evaluateTernary(node, ctx);
|
|
395
|
-
default:
|
|
396
|
-
throw new Error(`Unknown expression type: ${node.type}`);
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
lookupVariable(name, ctx) {
|
|
400
|
-
if (ctx.variables.has(name)) {
|
|
401
|
-
return ctx.variables.get(name);
|
|
402
|
-
}
|
|
403
|
-
if (ctx.functions.has(name)) {
|
|
404
|
-
return ctx.functions.get(name);
|
|
405
|
-
}
|
|
406
|
-
if (ctx.parent) {
|
|
407
|
-
return this.lookupVariable(name, ctx.parent);
|
|
408
|
-
}
|
|
409
|
-
throw new Error(`Undefined variable: ${name}`);
|
|
410
|
-
}
|
|
411
|
-
setVariable(name, value, ctx) {
|
|
412
|
-
let current = ctx;
|
|
413
|
-
while (current) {
|
|
414
|
-
if (current.variables.has(name)) {
|
|
415
|
-
current.variables.set(name, value);
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
current = current.parent;
|
|
419
|
-
}
|
|
420
|
-
ctx.variables.set(name, value);
|
|
421
|
-
}
|
|
422
|
-
async evaluateBinary(node, ctx) {
|
|
423
|
-
const left = await this.evaluate(node.left, ctx);
|
|
424
|
-
const right = await this.evaluate(node.right, ctx);
|
|
425
|
-
switch (node.operator) {
|
|
426
|
-
case TokenType.Plus:
|
|
427
|
-
if (typeof left === 'string' || typeof right === 'string') {
|
|
428
|
-
return String(left) + String(right);
|
|
429
|
-
}
|
|
430
|
-
return left + right;
|
|
431
|
-
case TokenType.Minus:
|
|
432
|
-
return left - right;
|
|
433
|
-
case TokenType.Multiply:
|
|
434
|
-
if (typeof left === 'string' && typeof right === 'number') {
|
|
435
|
-
return left.repeat(right);
|
|
436
|
-
}
|
|
437
|
-
return left * right;
|
|
438
|
-
case TokenType.Divide:
|
|
439
|
-
return left / right;
|
|
440
|
-
case TokenType.Modulo:
|
|
441
|
-
return left % right;
|
|
442
|
-
case TokenType.Power:
|
|
443
|
-
return Math.pow(left, right);
|
|
444
|
-
case TokenType.Equal:
|
|
445
|
-
return left === right;
|
|
446
|
-
case TokenType.NotEqual:
|
|
447
|
-
return left !== right;
|
|
448
|
-
case TokenType.Less:
|
|
449
|
-
return left < right;
|
|
450
|
-
case TokenType.LessEqual:
|
|
451
|
-
return left <= right;
|
|
452
|
-
case TokenType.Greater:
|
|
453
|
-
return left > right;
|
|
454
|
-
case TokenType.GreaterEqual:
|
|
455
|
-
return left >= right;
|
|
456
|
-
case TokenType.And:
|
|
457
|
-
return this.isTruthy(left) && this.isTruthy(right);
|
|
458
|
-
case TokenType.Or:
|
|
459
|
-
return this.isTruthy(left) || this.isTruthy(right);
|
|
460
|
-
default:
|
|
461
|
-
throw new Error(`Unknown binary operator: ${node.operator}`);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
async evaluateUnary(node, ctx) {
|
|
465
|
-
const operand = await this.evaluate(node.operand, ctx);
|
|
466
|
-
switch (node.operator) {
|
|
467
|
-
case TokenType.Minus:
|
|
468
|
-
return -operand;
|
|
469
|
-
case TokenType.Not:
|
|
470
|
-
return !this.isTruthy(operand);
|
|
471
|
-
default:
|
|
472
|
-
throw new Error(`Unknown unary operator: ${node.operator}`);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
async evaluateAssignment(node, ctx) {
|
|
476
|
-
let value = await this.evaluate(node.value, ctx);
|
|
477
|
-
// Handle compound assignment
|
|
478
|
-
if (node.operator !== TokenType.Assign) {
|
|
479
|
-
const current = await this.evaluate(node.target, ctx);
|
|
480
|
-
switch (node.operator) {
|
|
481
|
-
case TokenType.PlusAssign:
|
|
482
|
-
if (typeof current === 'string' || typeof value === 'string') {
|
|
483
|
-
value = String(current) + String(value);
|
|
484
|
-
}
|
|
485
|
-
else {
|
|
486
|
-
value = current + value;
|
|
487
|
-
}
|
|
488
|
-
break;
|
|
489
|
-
case TokenType.MinusAssign:
|
|
490
|
-
value = current - value;
|
|
491
|
-
break;
|
|
492
|
-
case TokenType.MultiplyAssign:
|
|
493
|
-
value = current * value;
|
|
494
|
-
break;
|
|
495
|
-
case TokenType.DivideAssign:
|
|
496
|
-
value = current / value;
|
|
497
|
-
break;
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
if (node.target.type === 'Identifier') {
|
|
501
|
-
this.setVariable(node.target.name, value, ctx);
|
|
502
|
-
}
|
|
503
|
-
else if (node.target.type === 'Member') {
|
|
504
|
-
const member = node.target;
|
|
505
|
-
const object = await this.evaluate(member.object, ctx);
|
|
506
|
-
object[member.member] = value;
|
|
507
|
-
}
|
|
508
|
-
else if (node.target.type === 'Index') {
|
|
509
|
-
const index = node.target;
|
|
510
|
-
const object = await this.evaluate(index.object, ctx);
|
|
511
|
-
const key = await this.evaluate(index.index, ctx);
|
|
512
|
-
object[key] = value;
|
|
513
|
-
}
|
|
514
|
-
return value;
|
|
515
|
-
}
|
|
516
|
-
async evaluateCall(node, ctx) {
|
|
517
|
-
const callee = await this.evaluate(node.callee, ctx);
|
|
518
|
-
if (typeof callee !== 'function') {
|
|
519
|
-
throw new Error(`${JSON.stringify(callee)} is not a function`);
|
|
520
|
-
}
|
|
521
|
-
const args = [];
|
|
522
|
-
for (const arg of node.arguments) {
|
|
523
|
-
args.push(await this.evaluate(arg, ctx));
|
|
524
|
-
}
|
|
525
|
-
// Handle named arguments
|
|
526
|
-
if (node.namedArgs && Object.keys(node.namedArgs).length > 0) {
|
|
527
|
-
const namedValues = {};
|
|
528
|
-
for (const [name, expr] of Object.entries(node.namedArgs)) {
|
|
529
|
-
namedValues[name] = await this.evaluate(expr, ctx);
|
|
530
|
-
}
|
|
531
|
-
args.push({ __namedArgs: namedValues });
|
|
532
|
-
}
|
|
533
|
-
// Await the result in case it's a Promise (async function)
|
|
534
|
-
const result = callee(...args);
|
|
535
|
-
return result instanceof Promise ? await result : result;
|
|
536
|
-
}
|
|
537
|
-
async evaluateMember(node, ctx) {
|
|
538
|
-
const object = await this.evaluate(node.object, ctx);
|
|
539
|
-
if (object === null || object === undefined) {
|
|
540
|
-
throw new Error('Cannot read property of null or undefined');
|
|
541
|
-
}
|
|
542
|
-
const obj = object;
|
|
543
|
-
const value = obj[node.member];
|
|
544
|
-
// Bind methods
|
|
545
|
-
if (typeof value === 'function') {
|
|
546
|
-
return value.bind(obj);
|
|
547
|
-
}
|
|
548
|
-
return value;
|
|
549
|
-
}
|
|
550
|
-
async evaluateIndex(node, ctx) {
|
|
551
|
-
const object = await this.evaluate(node.object, ctx);
|
|
552
|
-
const index = await this.evaluate(node.index, ctx);
|
|
553
|
-
if (object === null || object === undefined) {
|
|
554
|
-
throw new Error('Cannot index null or undefined');
|
|
555
|
-
}
|
|
556
|
-
return object[index];
|
|
557
|
-
}
|
|
558
|
-
async evaluateArray(node, ctx) {
|
|
559
|
-
const elements = [];
|
|
560
|
-
for (const element of node.elements) {
|
|
561
|
-
elements.push(await this.evaluate(element, ctx));
|
|
562
|
-
}
|
|
563
|
-
return elements;
|
|
564
|
-
}
|
|
565
|
-
async evaluateDict(node, ctx) {
|
|
566
|
-
const dict = {};
|
|
567
|
-
for (const [key, valueNode] of node.elements) {
|
|
568
|
-
dict[key] = await this.evaluate(valueNode, ctx);
|
|
569
|
-
}
|
|
570
|
-
return dict;
|
|
571
|
-
}
|
|
572
|
-
evaluateLambda(node, ctx) {
|
|
573
|
-
return async (...args) => {
|
|
574
|
-
const localCtx = {
|
|
575
|
-
variables: new Map(),
|
|
576
|
-
functions: ctx.functions,
|
|
577
|
-
parent: ctx,
|
|
578
|
-
};
|
|
579
|
-
for (let i = 0; i < node.parameters.length; i++) {
|
|
580
|
-
localCtx.variables.set(node.parameters[i], args[i]);
|
|
581
|
-
}
|
|
582
|
-
if (node.body.type === 'Block') {
|
|
583
|
-
const result = await this.executeBlock(node.body, localCtx);
|
|
584
|
-
if (result instanceof ReturnSignal) {
|
|
585
|
-
return result.value;
|
|
586
|
-
}
|
|
587
|
-
return null;
|
|
588
|
-
}
|
|
589
|
-
return this.evaluate(node.body, localCtx);
|
|
590
|
-
};
|
|
591
|
-
}
|
|
592
|
-
async evaluateInterpolation(node, ctx) {
|
|
593
|
-
let result = '';
|
|
594
|
-
for (const part of node.parts) {
|
|
595
|
-
const value = await this.evaluate(part, ctx);
|
|
596
|
-
result += String(value);
|
|
597
|
-
}
|
|
598
|
-
return result;
|
|
599
|
-
}
|
|
600
|
-
async evaluateTernary(node, ctx) {
|
|
601
|
-
const condition = await this.evaluate(node.condition, ctx);
|
|
602
|
-
if (this.isTruthy(condition)) {
|
|
603
|
-
return this.evaluate(node.consequent, ctx);
|
|
604
|
-
}
|
|
605
|
-
return this.evaluate(node.alternate, ctx);
|
|
606
|
-
}
|
|
607
|
-
// ============================================
|
|
608
|
-
// Helpers
|
|
609
|
-
// ============================================
|
|
610
|
-
isTruthy(value) {
|
|
611
|
-
if (value === null || value === undefined || value === false || value === 0 || value === '') {
|
|
612
|
-
return false;
|
|
613
|
-
}
|
|
614
|
-
return true;
|
|
615
|
-
}
|
|
616
|
-
getTestResults() {
|
|
617
|
-
return this.testResults;
|
|
618
|
-
}
|
|
619
|
-
getOutput() {
|
|
620
|
-
return this.output;
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
export function createRuntime(config = {}) {
|
|
624
|
-
return new FCSRuntime(config);
|
|
625
|
-
}
|
|
4
|
+
export { FCSRuntime, Runtime, createRuntime } from '../scripting/runtime.js';
|
|
626
5
|
//# sourceMappingURL=runtime.js.map
|
package/dist/fcs/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/fcs/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/fcs/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
|