File size: 2,941 Bytes
119e586 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 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');
}
};
|