SNAPKITTYWEST's picture
push from SNAPKITTYWEST/snapkitty-clojure-lisp-bridge
119e586 verified
Raw History Blame Contribute Delete
2.94 kB
var LispExpand = {
expansions: {
'(agent trust audit)': [
'(progn',
' (let ((agent-state (agent-status)))',
' (let ((trust-score (trust-score)))',
' (let ((audit-data (audit-log)))',
' (list agent-state trust-score audit-data)))))'
].join('\n'),
'(agent status)': '(agent-status)',
'(trust score)': '(trust-score)',
'(seal state)': '(seal-state)',
'(vault count)': '(woz-vault-count)',
'(boot system)': '(boot)',
'(run debate topic)': '(debate topic)',
'(export snapshot)': '(export-snapshot)',
'(draw agent)': '(draw-agent)',
'(eval expr)': '(eval expr)'
},
expand: function(exprStr) {
var key = exprStr.toLowerCase().trim();
var expansion = this.expansions[key];
if (expansion) {
return {
input: exprStr,
expansion: expansion,
steps: expansion.split('\n').length,
safe: true
};
}
// Try generic expansion
var parsed = SExprParser.parse(exprStr);
if (parsed && Array.isArray(parsed)) {
var expanded = this._expandForm(parsed);
return {
input: exprStr,
expansion: expanded,
steps: 1,
safe: true
};
}
return {
input: exprStr,
expansion: exprStr,
steps: 1,
safe: true
};
},
_expandForm: function(form) {
if (!Array.isArray(form) || form.length === 0) return SExprParser.toString(form);
var op = form[0];
var args = form.slice(1);
if (op === '+' || op === '-' || op === '*' || op === '/') {
return '(calc ' + op + ' ' + args.map(SExprParser.toString).join(' ') + ')';
}
if (op === 'agent-status' || op === 'trust-score' || op === 'seal-state' || op === 'woz-vault-count' || op === 'draw-agent') {
return '(' + op + ')';
}
return SExprParser.toString(form);
},
render: function(r) {
return [
'╔══════════════════════════════════════════════════════════╗',
'β•‘ LISP EXPAND β•‘',
'╠══════════════════════════════════════════════════════════╣',
'β•‘ INPUT: ' + r.input.padEnd(45) + 'β•‘',
'β•‘ EXPANSION: ' + r.expansion.substring(0, 45).padEnd(45) + 'β•‘',
'β•‘ STEPS: ' + String(r.steps).padEnd(45) + 'β•‘',
'β•‘ SAFE: ' + String(r.safe).padEnd(45) + 'β•‘',
'β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•'
].join('\n');
}
};