@elizaos/plugin-eliza-classic 2.0.0-alpha.7 → 2.0.3-beta.2

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.
Files changed (65) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/package.json +42 -50
  4. package/dist/actions/generateResponse.d.ts +0 -4
  5. package/dist/actions/generateResponse.d.ts.map +0 -1
  6. package/dist/actions/generateResponse.js +0 -50
  7. package/dist/actions/generateResponse.js.map +0 -1
  8. package/dist/actions/index.d.ts +0 -2
  9. package/dist/actions/index.d.ts.map +0 -1
  10. package/dist/actions/index.js +0 -2
  11. package/dist/actions/index.js.map +0 -1
  12. package/dist/browser/index.browser.js +0 -1382
  13. package/dist/browser/index.browser.js.map +0 -15
  14. package/dist/build.d.ts +0 -2
  15. package/dist/build.d.ts.map +0 -1
  16. package/dist/build.js +0 -60
  17. package/dist/build.js.map +0 -1
  18. package/dist/cjs/index.node.cjs +0 -1413
  19. package/dist/cjs/index.node.cjs.map +0 -15
  20. package/dist/generated/specs/spec-helpers.d.ts +0 -49
  21. package/dist/generated/specs/spec-helpers.d.ts.map +0 -1
  22. package/dist/generated/specs/spec-helpers.js +0 -79
  23. package/dist/generated/specs/spec-helpers.js.map +0 -1
  24. package/dist/generated/specs/specs.d.ts +0 -73
  25. package/dist/generated/specs/specs.d.ts.map +0 -1
  26. package/dist/generated/specs/specs.js +0 -61
  27. package/dist/generated/specs/specs.js.map +0 -1
  28. package/dist/index.browser.d.ts +0 -2
  29. package/dist/index.browser.d.ts.map +0 -1
  30. package/dist/index.browser.js +0 -2
  31. package/dist/index.browser.js.map +0 -1
  32. package/dist/index.d.ts +0 -5
  33. package/dist/index.d.ts.map +0 -1
  34. package/dist/index.js +0 -5
  35. package/dist/index.js.map +0 -1
  36. package/dist/index.node.d.ts +0 -2
  37. package/dist/index.node.d.ts.map +0 -1
  38. package/dist/index.node.js +0 -2
  39. package/dist/index.node.js.map +0 -1
  40. package/dist/models/index.d.ts +0 -2
  41. package/dist/models/index.d.ts.map +0 -1
  42. package/dist/models/index.js +0 -2
  43. package/dist/models/index.js.map +0 -1
  44. package/dist/models/text.d.ts +0 -8
  45. package/dist/models/text.d.ts.map +0 -1
  46. package/dist/models/text.js +0 -425
  47. package/dist/models/text.js.map +0 -1
  48. package/dist/node/index.node.js +0 -1382
  49. package/dist/node/index.node.js.map +0 -15
  50. package/dist/plugin.d.ts +0 -4
  51. package/dist/plugin.d.ts.map +0 -1
  52. package/dist/plugin.js +0 -91
  53. package/dist/plugin.js.map +0 -1
  54. package/dist/providers/elizaGreeting.d.ts +0 -4
  55. package/dist/providers/elizaGreeting.d.ts.map +0 -1
  56. package/dist/providers/elizaGreeting.js +0 -21
  57. package/dist/providers/elizaGreeting.js.map +0 -1
  58. package/dist/providers/index.d.ts +0 -2
  59. package/dist/providers/index.d.ts.map +0 -1
  60. package/dist/providers/index.js +0 -2
  61. package/dist/providers/index.js.map +0 -1
  62. package/dist/types/index.d.ts +0 -49
  63. package/dist/types/index.d.ts.map +0 -1
  64. package/dist/types/index.js +0 -6
  65. package/dist/types/index.js.map +0 -1
@@ -1,425 +0,0 @@
1
- import doctorScript from "../../shared/doctor.json";
2
- const script = doctorScript;
3
- const substitutions = script.substitutions ?? {};
4
- const sessionStateByRuntime = new WeakMap();
5
- const defaultStandaloneSession = {
6
- limit: 1,
7
- memories: [],
8
- reassemblyIndex: new Map(),
9
- };
10
- function getOrCreateSession(runtime) {
11
- const existing = sessionStateByRuntime.get(runtime);
12
- if (existing)
13
- return existing;
14
- const created = {
15
- limit: 1,
16
- memories: [],
17
- reassemblyIndex: new Map(),
18
- };
19
- sessionStateByRuntime.set(runtime, created);
20
- return created;
21
- }
22
- function normalizeRawInput(input) {
23
- return input
24
- .trim()
25
- .replace(/[!?;:]+/g, " ")
26
- .replace(/[\u2018\u2019]/g, "'")
27
- .replace(/\s+/g, " ");
28
- }
29
- function tokenizeWords(text) {
30
- const cleaned = normalizeRawInput(text)
31
- .replace(/[.,"()]/g, " ")
32
- .toLowerCase()
33
- .replace(/\s+/g, " ")
34
- .trim();
35
- if (!cleaned)
36
- return [];
37
- const canonicalizationKeys = new Set(["dont", "cant", "wont", "dreamed", "dreams", "mom", "dad"]);
38
- return cleaned
39
- .split(" ")
40
- .filter((w) => w.length > 0)
41
- .map((w) => canonicalizationKeys.has(w) ? (substitutions[w] ?? script.reflections[w] ?? w) : w);
42
- }
43
- function reflectWords(words) {
44
- return words.map((w) => script.reflections[w] ?? w);
45
- }
46
- function reflectText(text) {
47
- return reflectWords(tokenizeWords(text)).join(" ");
48
- }
49
- function substituteWordsForMatching(words) {
50
- // Approximate classic keyword substitutions. `doctor.json` encodes the script's "=" substitutions
51
- // via `reflections` values (e.g. "my" -> "your", "you're" -> "I am").
52
- // We apply these substitutions for matching (not for keyword scanning), and normalize to lowercase.
53
- const out = [];
54
- for (const w of words) {
55
- const mapped = substitutions[w] ?? script.reflections[w];
56
- if (!mapped) {
57
- out.push(w.toLowerCase());
58
- continue;
59
- }
60
- const parts = mapped
61
- .toLowerCase()
62
- .split(/\s+/g)
63
- .filter((p) => p.length > 0);
64
- if (parts.length === 0)
65
- out.push(w.toLowerCase());
66
- else
67
- out.push(...parts);
68
- }
69
- return out;
70
- }
71
- function tokenizeForScan(input) {
72
- // Keep ',' and '.' as clause delimiters, and treat 'but' as a delimiter word.
73
- const cleaned = normalizeRawInput(input)
74
- .replace(/[.,]/g, " | ")
75
- .replace(/["()]/g, " ")
76
- .toLowerCase()
77
- .replace(/\s+/g, " ")
78
- .trim();
79
- if (!cleaned)
80
- return [];
81
- const canonicalizationKeys = new Set(["dont", "cant", "wont", "dreamed", "dreams", "mom", "dad"]);
82
- return cleaned
83
- .split(" ")
84
- .filter((w) => w.length > 0)
85
- .map((w) => canonicalizationKeys.has(w) ? (substitutions[w] ?? script.reflections[w] ?? w) : w);
86
- }
87
- function splitIntoClauses(words) {
88
- const clauses = [];
89
- let current = [];
90
- for (const w of words) {
91
- if (w === "|" || w === "but") {
92
- if (current.length > 0)
93
- clauses.push(current);
94
- current = [];
95
- continue;
96
- }
97
- current.push(w);
98
- }
99
- if (current.length > 0)
100
- clauses.push(current);
101
- return clauses;
102
- }
103
- function buildKeywordIndex(keywords) {
104
- const map = new Map();
105
- for (const entry of keywords) {
106
- for (const k of entry.keyword) {
107
- map.set(k.toLowerCase(), entry);
108
- }
109
- }
110
- return map;
111
- }
112
- const keywordIndex = buildKeywordIndex(script.keywords);
113
- function findKeywordsInClause(words) {
114
- const found = [];
115
- for (let i = 0; i < words.length; i++) {
116
- const w = words[i];
117
- const entry = keywordIndex.get(w);
118
- if (!entry)
119
- continue;
120
- found.push({ entry, keyword: w, position: i });
121
- }
122
- return found;
123
- }
124
- function selectKeywordStack(words) {
125
- // Recreate keyword-stack behavior: choose best clause (left-to-right) that contains any keyword,
126
- // then order by precedence desc, tie-break by earliest position.
127
- const clauses = splitIntoClauses(words);
128
- for (const clause of clauses) {
129
- const found = findKeywordsInClause(clause);
130
- if (found.length === 0)
131
- continue;
132
- const stack = [...found].sort((a, b) => {
133
- if (b.entry.precedence !== a.entry.precedence)
134
- return b.entry.precedence - a.entry.precedence;
135
- return a.position - b.position;
136
- });
137
- return { stack, clauseWords: clause };
138
- }
139
- return { stack: [], clauseWords: [] };
140
- }
141
- function parseDecomposition(pattern) {
142
- // Pattern language used by doctor.json:
143
- // - "*" wildcard (matches 0+ words)
144
- // - "[a b c]" one-of alternatives
145
- // - "@group" group reference (e.g. @belief)
146
- // - otherwise: literal word
147
- const raw = pattern.trim().replace(/\s+/g, " ").toLowerCase();
148
- if (!raw)
149
- return [];
150
- const tokens = [];
151
- let i = 0;
152
- while (i < raw.length) {
153
- while (i < raw.length && raw[i] === " ")
154
- i++;
155
- if (i >= raw.length)
156
- break;
157
- const ch = raw[i];
158
- if (ch === "*") {
159
- tokens.push({ kind: "wildcard" });
160
- i++;
161
- continue;
162
- }
163
- if (ch === "@") {
164
- let j = i + 1;
165
- while (j < raw.length && raw[j] !== " ")
166
- j++;
167
- const groupName = raw.slice(i + 1, j).trim();
168
- if (groupName.length > 0)
169
- tokens.push({ kind: "group", groupName });
170
- i = j;
171
- continue;
172
- }
173
- if (ch === "[") {
174
- const close = raw.indexOf("]", i + 1);
175
- if (close === -1) {
176
- // Malformed; treat the rest as literal.
177
- const rest = raw.slice(i).trim();
178
- if (rest.length > 0)
179
- tokens.push({ kind: "literal", value: rest });
180
- break;
181
- }
182
- const inside = raw.slice(i + 1, close).trim();
183
- const options = inside.length > 0 ? inside.split(/\s+/g) : [];
184
- tokens.push({ kind: "alt", options });
185
- i = close + 1;
186
- continue;
187
- }
188
- // literal word
189
- let j = i;
190
- while (j < raw.length && raw[j] !== " ")
191
- j++;
192
- const word = raw.slice(i, j).trim();
193
- if (word.length > 0)
194
- tokens.push({ kind: "literal", value: word });
195
- i = j;
196
- }
197
- return tokens;
198
- }
199
- function tokenMatchesWord(token, word) {
200
- if (token.kind === "literal")
201
- return token.value === word;
202
- if (token.kind === "alt")
203
- return token.options.includes(word);
204
- if (token.kind === "group") {
205
- const groupWords = script.groups[token.groupName];
206
- if (!groupWords)
207
- return false;
208
- return groupWords.includes(word);
209
- }
210
- return false;
211
- }
212
- function matchDecomposition(tokens, words) {
213
- // Backtracking match for wildcard "*" tokens.
214
- // We produce `parts` array where parts[i] is the matched text for tokens[i].
215
- const parts = new Array(tokens.length).fill("");
216
- function backtrack(ti, wi) {
217
- if (ti === tokens.length)
218
- return wi === words.length;
219
- const token = tokens[ti];
220
- if (token.kind === "wildcard") {
221
- // Try minimal to maximal consumption.
222
- for (let end = wi; end <= words.length; end++) {
223
- parts[ti] = words.slice(wi, end).join(" ").trim();
224
- if (backtrack(ti + 1, end))
225
- return true;
226
- }
227
- return false;
228
- }
229
- if (wi >= words.length)
230
- return false;
231
- const w = words[wi];
232
- if (!tokenMatchesWord(token, w))
233
- return false;
234
- parts[ti] = w;
235
- return backtrack(ti + 1, wi + 1);
236
- }
237
- if (!backtrack(0, 0))
238
- return null;
239
- return { parts };
240
- }
241
- function applyReassembly(template, parts) {
242
- // Replace $N with reflected part N (1-indexed).
243
- return template.replace(/\$(\d+)/g, (_m, nRaw) => {
244
- const n = Number.parseInt(nRaw, 10);
245
- if (!Number.isFinite(n) || n <= 0)
246
- return "";
247
- const part = parts[n - 1] ?? "";
248
- return reflectText(part);
249
- });
250
- }
251
- function stableKeyForRule(keyword, rule, ruleIndex) {
252
- return `${keyword}::${ruleIndex}::${rule.decomposition}`;
253
- }
254
- function pickNextReassembly(session, keyword, rule, ruleIndex) {
255
- const key = stableKeyForRule(keyword, rule, ruleIndex);
256
- const current = session.reassemblyIndex.get(key) ?? 0;
257
- const idx = current % rule.reassembly.length;
258
- session.reassemblyIndex.set(key, (current + 1) % Math.max(1, rule.reassembly.length));
259
- return rule.reassembly[idx] ?? "";
260
- }
261
- function computeWordHash(word) {
262
- // Deterministic small hash (not SLIP HASH, but stable enough for memory rule selection).
263
- let h = 0;
264
- for (let i = 0; i < word.length; i++) {
265
- h = (h * 31 + word.charCodeAt(i)) >>> 0;
266
- }
267
- return h;
268
- }
269
- function chooseDefaultResponse(session) {
270
- if (session.limit === 4 && session.memories.length > 0) {
271
- const m = session.memories.shift();
272
- if (m)
273
- return m;
274
- }
275
- // Cycle through NONE/default like classic: doctor.json provides the NONE list as `default`.
276
- const idx = (session.reassemblyIndex.get("__default__") ?? 0) % script.default.length;
277
- session.reassemblyIndex.set("__default__", idx + 1);
278
- return script.default[idx] ?? script.default[0] ?? "Please go on.";
279
- }
280
- function isGoodbye(words) {
281
- if (words.length === 0)
282
- return false;
283
- const first = words[0];
284
- return script.goodbyes.some((g) => tokenizeWords(g)[0] === first);
285
- }
286
- function resolveRedirectKeyword(s) {
287
- const trimmed = s.trim();
288
- if (!trimmed.startsWith("="))
289
- return null;
290
- const k = trimmed.slice(1).trim().toLowerCase();
291
- return k.length > 0 ? k : null;
292
- }
293
- function parsePreDirective(s) {
294
- // Format: ":pre <text> (=keyword)"
295
- const m = s.trim().match(/^:pre\s+(.+?)\s+\(=\s*([^)]+)\s*\)\s*$/i);
296
- if (!m)
297
- return null;
298
- const preText = m[1]?.trim() ?? "";
299
- const redirect = m[2]?.trim().toLowerCase() ?? "";
300
- if (!preText || !redirect)
301
- return null;
302
- return { preText, redirect };
303
- }
304
- function isNewKeyDirective(s) {
305
- return s.trim().toLowerCase() === ":newkey" || s.trim().toLowerCase() === "newkey";
306
- }
307
- function tryRulesForKeyword(session, keyword, entry, words) {
308
- for (let i = 0; i < entry.rules.length; i++) {
309
- const rule = entry.rules[i];
310
- const tokens = parseDecomposition(rule.decomposition);
311
- const match = matchDecomposition(tokens, words);
312
- if (!match)
313
- continue;
314
- const picked = pickNextReassembly(session, keyword, rule, i);
315
- if (isNewKeyDirective(picked))
316
- return { kind: "newkey" };
317
- const pre = parsePreDirective(picked);
318
- if (pre)
319
- return {
320
- kind: "pre",
321
- preText: pre.preText,
322
- redirect: pre.redirect,
323
- parts: match.parts,
324
- };
325
- const redirect = resolveRedirectKeyword(picked);
326
- if (redirect)
327
- return { kind: "redirect", keyword: redirect };
328
- return {
329
- kind: "response",
330
- text: applyReassembly(picked, match.parts).replace(/\s+/g, " ").trim(),
331
- };
332
- }
333
- return { kind: "no_match" };
334
- }
335
- function maybeRecordMemory(session, entry, words) {
336
- const memoryRules = entry.memory;
337
- if (!memoryRules || memoryRules.length === 0)
338
- return;
339
- const last = words.length > 0 ? words[words.length - 1] : "";
340
- const chosenIdx = computeWordHash(last) % memoryRules.length;
341
- const chosen = memoryRules[chosenIdx];
342
- if (!chosen)
343
- return;
344
- const tokens = parseDecomposition(chosen.decomposition);
345
- const match = matchDecomposition(tokens, words);
346
- if (!match)
347
- return;
348
- // In the original script, MEMORY has 4 patterns; in doctor.json it's represented as one rule with 4 reassemblies.
349
- const responseIdx = computeWordHash(last) % Math.max(1, chosen.reassembly.length);
350
- const template = chosen.reassembly[responseIdx] ?? chosen.reassembly[0] ?? "";
351
- const response = applyReassembly(template, match.parts).replace(/\s+/g, " ").trim();
352
- if (response.length > 0)
353
- session.memories.push(response);
354
- }
355
- export function reflect(text) {
356
- return reflectText(text);
357
- }
358
- export function generateElizaResponse(arg1, arg2) {
359
- const runtime = typeof arg1 === "string" ? null : arg1;
360
- const input = typeof arg1 === "string" ? arg1 : (arg2 ?? "");
361
- const session = runtime ? getOrCreateSession(runtime) : defaultStandaloneSession;
362
- // LIMIT increments each user input (1..4 cycle).
363
- session.limit = session.limit === 4 ? 1 : (session.limit + 1);
364
- const scanWords = tokenizeForScan(input);
365
- const words = tokenizeWords(input);
366
- if (words.length === 0)
367
- return chooseDefaultResponse(session);
368
- if (isGoodbye(words)) {
369
- return script.goodbyes[0] ?? "Goodbye.";
370
- }
371
- const { stack: keywordStack, clauseWords } = selectKeywordStack(scanWords);
372
- if (keywordStack.length === 0 || clauseWords.length === 0) {
373
- return chooseDefaultResponse(session);
374
- }
375
- const matchWords = substituteWordsForMatching(clauseWords);
376
- // Try keywords in order; NEWKEY forces trying the next one.
377
- for (const found of keywordStack) {
378
- maybeRecordMemory(session, found.entry, matchWords);
379
- const result = tryRulesForKeyword(session, found.keyword, found.entry, matchWords);
380
- if (result.kind === "no_match")
381
- continue;
382
- if (result.kind === "newkey")
383
- continue;
384
- if (result.kind === "pre") {
385
- const preApplied = applyReassembly(result.preText, result.parts).replace(/\s+/g, " ").trim();
386
- // PRE constructs a new input phrase that should be fed directly into the target keyword's
387
- // decomposition rules (without additional global substitutions).
388
- const preWords = tokenizeWords(preApplied);
389
- const redirectedEntry = keywordIndex.get(result.redirect);
390
- if (!redirectedEntry)
391
- continue;
392
- const redirected = tryRulesForKeyword(session, result.redirect, redirectedEntry, preWords);
393
- if (redirected.kind === "response")
394
- return redirected.text;
395
- continue;
396
- }
397
- if (result.kind === "redirect") {
398
- const redirectedEntry = keywordIndex.get(result.keyword);
399
- if (!redirectedEntry)
400
- continue;
401
- const redirected = tryRulesForKeyword(session, result.keyword, redirectedEntry, matchWords);
402
- if (redirected.kind === "response")
403
- return redirected.text;
404
- continue;
405
- }
406
- if (result.kind === "response")
407
- return result.text;
408
- }
409
- return chooseDefaultResponse(session);
410
- }
411
- export function getElizaGreeting() {
412
- return (script.greetings[1] ?? script.greetings[0] ?? "How do you do. Please tell me your problem.");
413
- }
414
- function extractUserMessage(prompt) {
415
- const match = prompt.match(/(?:User|Human|You):\s*(.+?)(?:\n|$)/i);
416
- return match ? match[1].trim() : prompt.trim();
417
- }
418
- export async function handleTextLarge(_runtime, params) {
419
- const input = extractUserMessage(params.prompt);
420
- return generateElizaResponse(_runtime, input);
421
- }
422
- export async function handleTextSmall(runtime, params) {
423
- return handleTextLarge(runtime, params);
424
- }
425
- //# sourceMappingURL=text.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../models/text.ts"],"names":[],"mappings":"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"}